Bladeren bron

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>
tags/mesa-9.0
Ian Romanick 13 jaren geleden
bovenliggende
commit
93d109645a
2 gewijzigde bestanden met toevoegingen van 9 en 4 verwijderingen
  1. 0
    4
      src/mesa/main/APIspec.xml
  2. 9
    0
      src/mesa/main/bufferobj.c

+ 0
- 4
src/mesa/main/APIspec.xml Bestand weergeven

@@ -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
- 0
src/mesa/main/bufferobj.c Bestand weergeven

@@ -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;
}

Laden…
Annuleren
Opslaan