diff options
author | Ian Romanick <[email protected]> | 2012-07-25 15:29:48 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2012-08-24 19:13:18 -0700 |
commit | b0b6b76d5213587250c567d7ca62451813a10366 (patch) | |
tree | af65d2e69e43424148a406de46fb832478db5671 /src/mesa | |
parent | e2cf14d7b273657cce364236cd041c4ca3f94a6b (diff) |
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 <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/main/APIspec.xml | 35 | ||||
-rw-r--r-- | src/mesa/main/bufferobj.c | 9 |
2 files changed, 8 insertions, 36 deletions
diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index d19a2b02bd1..f15e8ee7879 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -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"/> diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index df559821cc1..6cdf2116723 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -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; |