Current workaround assumes that glMapBuffer and glMapBufferRange
'access' bitfield uses the same values, when it is not.
---
 .../shaders/shader_runner_gles_workarounds.h  | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/tests/shaders/shader_runner_gles_workarounds.h 
b/tests/shaders/shader_runner_gles_workarounds.h
index 77956f6b9..bbcdc9b4a 100644
--- a/tests/shaders/shader_runner_gles_workarounds.h
+++ b/tests/shaders/shader_runner_gles_workarounds.h
@@ -72,17 +72,32 @@ unsupported_function(const char *name, ...)
 #undef glMapBuffer
 
 static GLvoid*
-glMapBuffer(GLenum target, GLbitfield access)
+glMapBuffer(GLenum target, GLbitfield map_buffer_access)
 {
        /* Emulate with glMapBufferRange. */
 
        GLsizeiptr length = 0;
+       GLbitfield map_buffer_range_access;
 
        glGetBufferParameteri64v(target, GL_BUFFER_SIZE, (GLint64*) &length);
        if (!piglit_check_gl_error(GL_NO_ERROR))
                piglit_report_result(PIGLIT_FAIL);
 
-       return glMapBufferRange(target, 0, length, access);
+       switch (map_buffer_access) {
+       case GL_READ_ONLY:
+               map_buffer_range_access = GL_MAP_READ_BIT;
+               break;
+       case GL_WRITE_ONLY:
+               map_buffer_range_access = GL_MAP_WRITE_BIT;
+               break;
+       case GL_READ_WRITE:
+               map_buffer_range_access = GL_MAP_READ_BIT | GL_MAP_WRITE_BIT;
+               break;
+       default:
+               map_buffer_range_access = 0;
+               break;
+       }
+       return glMapBufferRange(target, 0, length, map_buffer_range_access);
 }
 #endif /* PIGLIT_USE_OPENGL_ES3 */
 
-- 
2.19.1

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to