mesa/es: Validate buffer object targets in Mesa code rather than the ES wrapper
v2: Add proper core-profile and GLES3 filtering. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
@@ -1806,11 +1806,6 @@
|
||||
<param name="pname" type="GLenum"/>
|
||||
<vector name="params" type="GLvoid **" size="dynamic"/>
|
||||
</proto>
|
||||
|
||||
<desc name="target">
|
||||
<value name="GL_ARRAY_BUFFER"/>
|
||||
<value name="GL_ELEMENT_ARRAY_BUFFER"/>
|
||||
</desc>
|
||||
</template>
|
||||
|
||||
<template name="MapBuffer" direction="get">
|
||||
@@ -1820,11 +1815,6 @@
|
||||
<param name="access" type="GLenum"/>
|
||||
</proto>
|
||||
|
||||
<desc name="target">
|
||||
<value name="GL_ARRAY_BUFFER"/>
|
||||
<value name="GL_ELEMENT_ARRAY_BUFFER"/>
|
||||
</desc>
|
||||
|
||||
<desc name="access">
|
||||
<value name="GL_WRITE_ONLY_OES"/>
|
||||
</desc>
|
||||
@@ -1835,11 +1825,6 @@
|
||||
<return type="GLboolean"/>
|
||||
<param name="target" type="GLenum"/>
|
||||
</proto>
|
||||
|
||||
<desc name="target">
|
||||
<value name="GL_ARRAY_BUFFER"/>
|
||||
<value name="GL_ELEMENT_ARRAY_BUFFER"/>
|
||||
</desc>
|
||||
</template>
|
||||
|
||||
<template name="BindBuffer">
|
||||
@@ -1848,11 +1833,6 @@
|
||||
<param name="target" type="GLenum"/>
|
||||
<param name="buffer" type="GLuint"/>
|
||||
</proto>
|
||||
|
||||
<desc name="target">
|
||||
<value name="GL_ARRAY_BUFFER"/>
|
||||
<value name="GL_ELEMENT_ARRAY_BUFFER"/>
|
||||
</desc>
|
||||
</template>
|
||||
|
||||
<template name="BufferData">
|
||||
@@ -1864,11 +1844,6 @@
|
||||
<param name="usage" type="GLenum"/>
|
||||
</proto>
|
||||
|
||||
<desc name="target">
|
||||
<value name="GL_ARRAY_BUFFER"/>
|
||||
<value name="GL_ELEMENT_ARRAY_BUFFER"/>
|
||||
</desc>
|
||||
|
||||
<desc name="usage">
|
||||
<value name="GL_STATIC_DRAW"/>
|
||||
<value name="GL_DYNAMIC_DRAW"/>
|
||||
@@ -1884,11 +1859,6 @@
|
||||
<param name="size" type="GLsizeiptr"/>
|
||||
<param name="data" type="const GLvoid *"/>
|
||||
</proto>
|
||||
|
||||
<desc name="target">
|
||||
<value name="GL_ARRAY_BUFFER"/>
|
||||
<value name="GL_ELEMENT_ARRAY_BUFFER"/>
|
||||
</desc>
|
||||
</template>
|
||||
|
||||
<template name="DeleteBuffers">
|
||||
@@ -1915,11 +1885,6 @@
|
||||
<vector name="params" type="GLtype *" size="dynamic"/>
|
||||
</proto>
|
||||
|
||||
<desc name="target">
|
||||
<value name="GL_ARRAY_BUFFER"/>
|
||||
<value name="GL_ELEMENT_ARRAY_BUFFER"/>
|
||||
</desc>
|
||||
|
||||
<desc name="pname">
|
||||
<value name="GL_BUFFER_SIZE"/>
|
||||
<value name="GL_BUFFER_USAGE"/>
|
||||
|
||||
@@ -68,6 +68,12 @@ static struct gl_buffer_object DummyBufferObject;
|
||||
static inline struct gl_buffer_object **
|
||||
get_buffer_target(struct gl_context *ctx, GLenum target)
|
||||
{
|
||||
/* Other targets are only supported in desktop OpenGL and OpenGL ES 3.0.
|
||||
*/
|
||||
if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx)
|
||||
&& target != GL_ARRAY_BUFFER && target != GL_ELEMENT_ARRAY_BUFFER)
|
||||
return NULL;
|
||||
|
||||
switch (target) {
|
||||
case GL_ARRAY_BUFFER_ARB:
|
||||
return &ctx->Array.ArrayBufferObj;
|
||||
@@ -89,7 +95,8 @@ get_buffer_target(struct gl_context *ctx, GLenum target)
|
||||
break;
|
||||
#endif
|
||||
case GL_TEXTURE_BUFFER:
|
||||
if (ctx->Extensions.ARB_texture_buffer_object) {
|
||||
if (_mesa_is_desktop_gl(ctx)
|
||||
&& ctx->Extensions.ARB_texture_buffer_object) {
|
||||
return &ctx->Texture.BufferObject;
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user