emscripten-core / emscripten-core/emscripten

glMapBufferData requires INVALIDATE_BUFFER?

Open
#6,692 2 comments 0 reactions 0 assignees View on GitHub
GL good first bug help wanted
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.