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++ (3,519 forks)batch import
GLgood first bughelp wanted

Repository metrics

Stars
 (27,361 stars)
PR merge metrics
 (Avg merge 19d 10h) (147 merged PRs in 30d)

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