mesa/es: Validate glMapBuffer access in Mesa code rather than the ES wrapper

v2: Add proper core-profile and GLES3 filtering.

v3: *Really* add proper core-profile and GLES3 filtering based on review
feedback from Eric Anholt.  It looks like previously there was some
rebase / merge fail.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Ian Romanick
2012-07-25 16:17:25 -07:00
parent bd4e5dd355
commit 93d109645a
2 changed files with 9 additions and 4 deletions
-4
View File
@@ -1814,10 +1814,6 @@
<param name="target" type="GLenum"/>
<param name="access" type="GLenum"/>
</proto>
<desc name="access">
<value name="GL_WRITE_ONLY_OES"/>
</desc>
</template>
<template name="UnmapBuffer" direction="get">
+9
View File
@@ -1135,20 +1135,29 @@ _mesa_MapBufferARB(GLenum target, GLenum access)
struct gl_buffer_object * bufObj;
GLbitfield accessFlags;
void *map;
bool valid_access;
ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, NULL);
switch (access) {
case GL_READ_ONLY_ARB:
accessFlags = GL_MAP_READ_BIT;
valid_access = _mesa_is_desktop_gl(ctx);
break;
case GL_WRITE_ONLY_ARB:
accessFlags = GL_MAP_WRITE_BIT;
valid_access = true;
break;
case GL_READ_WRITE_ARB:
accessFlags = GL_MAP_READ_BIT | GL_MAP_WRITE_BIT;
valid_access = _mesa_is_desktop_gl(ctx);
break;
default:
valid_access = false;
break;
}
if (!valid_access) {
_mesa_error(ctx, GL_INVALID_ENUM, "glMapBufferARB(access)");
return NULL;
}