GLuint* data;
glBindBuffer(GL_SHADER_STORAGE_BUFFER, m_buffer);
glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT);
- data =
- static_cast<GLuint*>(glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, 512 * sizeof(GLuint), GL_MAP_READ_BIT));
+ data = static_cast<GLuint*>(
+ glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, 512 * sizeof(GLuint), GL_MAP_READ_BIT | GL_MAP_WRITE_BIT));
std::sort(data, data + 512);
for (int i = 0; i < 512; i += 2)
// validate
GLuint* data;
glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, xfb_buffer_[0]);
- data = static_cast<GLuint*>(glMapBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 32 * 4, GL_MAP_READ_BIT));
+ // CheckCounterValues will sort in place, so map buffer for both read and write
+ data = static_cast<GLuint*>(
+ glMapBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 32 * 4, GL_MAP_READ_BIT | GL_MAP_WRITE_BIT));
if (!CheckCounterValues(32, data, 7))
return ERROR;
glUnmapBuffer(GL_TRANSFORM_FEEDBACK_BUFFER);
glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, 0);
glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, xfb_buffer_[1]);
- data = static_cast<GLuint*>(glMapBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 32 * 4, GL_MAP_READ_BIT));
+ data = static_cast<GLuint*>(
+ glMapBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 32 * 4, GL_MAP_READ_BIT | GL_MAP_WRITE_BIT));
if (!CheckCounterValues(32, data, 45))
return ERROR;
glUnmapBuffer(GL_TRANSFORM_FEEDBACK_BUFFER);
GLuint* data;
glBindBuffer(GL_SHADER_STORAGE_BUFFER, m_buffer);
glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT);
- data =
- static_cast<GLuint*>(glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, 512 * sizeof(GLuint), GL_MAP_READ_BIT));
+ data = static_cast<GLuint*>(
+ glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, 512 * sizeof(GLuint), GL_MAP_READ_BIT | GL_MAP_WRITE_BIT));
std::sort(data, data + 512);
for (int i = 0; i < 512; i += 2)
glBindBuffer(GL_SHADER_STORAGE_BUFFER, m_ssbo);
glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT);
- data = static_cast<GLuint*>(glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, 100 * 4, GL_MAP_READ_BIT));
+ data = static_cast<GLuint*>(
+ glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, 100 * 4, GL_MAP_READ_BIT | GL_MAP_WRITE_BIT));
std::sort(data, data + 100);
for (GLuint i = 0; i < 100; ++i)
{
glBindBuffer(GL_SHADER_STORAGE_BUFFER, m_ssbo);
glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT);
- data = static_cast<GLuint*>(glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, 100 * 4, GL_MAP_READ_BIT));
+ data = static_cast<GLuint*>(
+ glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, 100 * 4, GL_MAP_READ_BIT | GL_MAP_WRITE_BIT));
std::sort(data, data + 100);
for (GLuint i = 0; i < 100; ++i)
{