emscripten-core/emscripten

glMapBufferData requires INVALIDATE_BUFFER?

Open

#6,692 opened on Jun 13, 2018

View on GitHub
 (2 comments) (0 reactions) (0 assignees)C++ (27,361 stars) (3,519 forks)batch import
GLgood first bughelp wanted

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

glMapBufferData requires INVALIDATE_BUFFER? · emscripten-core/emscripten#6692 | Good First Issue