emscripten-core / emscripten-core/emscripten
glMapBufferData requires INVALIDATE_BUFFER?
- Dominant language
- C++
- Stars
- 27.6k
- Forks
- 3.6k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 105
Description
The emulation for `glMapBufferRange` requires `MAP_WRITE` and `INVALIDATE_BUFFER` here:
https://github.com/kripken/emscripten/blob/a4d732f3094cfb2377609e1661044679f9c79734/src/library_gl.js#L1744
Under the hood, in `glUnmapBufferData`, the call is translated into a `glBufferSubData`. I don't think requiring `INVALIDATE_BUFFER` is correct here -- that means that the entire buffer should be discarded, not just the range that's mapped (which is `INVALIDATE_RANGE`). I think that:
1. The requirement should be changed to `INVALIDATE_RANGE`
2. A check should be done that there isn't an existing mapping for that buffer (additional restriction of only one range mapping per buffer, which GL doesn't have -- this could be relaxed with additional code, but probably not necessary in practice)
(Note I haven't tested any of this, this is just by code inspection from a question someone asked)
Contributor guide
Assessment
This issue has not been assessed yet.