Mesa (master): mesa/es: Validate FBO attachment enum in Mesa code rather than the ES wrapper

Ian Romanick idr at kemper.freedesktop.org
Tue Oct 4 12:31:13 PDT 2011


Module: Mesa
Branch: master
Commit: 7e4cb32d05cdf948a60632270e75b5513e780b28
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7e4cb32d05cdf948a60632270e75b5513e780b28

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Sun Oct  2 14:50:21 2011 -0700

mesa/es: Validate FBO attachment enum in Mesa code rather than the ES wrapper

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Brian Paul <brianp at vmware.com>

---

 src/mesa/main/APIspec.xml |   27 ---------------------------
 src/mesa/main/fbobject.c  |    7 ++++++-
 2 files changed, 6 insertions(+), 28 deletions(-)

diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml
index 0f82d0a..2b277a0 100644
--- a/src/mesa/main/APIspec.xml
+++ b/src/mesa/main/APIspec.xml
@@ -3217,15 +3217,6 @@
 		<value name="GL_FRAMEBUFFER" category="GLES2.0"/>
 	</desc>
 
-	<desc name="attachment">
-		<value name="GL_COLOR_ATTACHMENT0_OES" category="OES_framebuffer_object"/>
-		<value name="GL_DEPTH_ATTACHMENT_OES" category="OES_framebuffer_object"/>
-		<value name="GL_STENCIL_ATTACHMENT_OES" category="OES_framebuffer_object"/>
-		<value name="GL_COLOR_ATTACHMENT0" category="GLES2.0"/>
-		<value name="GL_DEPTH_ATTACHMENT" category="GLES2.0"/>
-		<value name="GL_STENCIL_ATTACHMENT" category="GLES2.0"/>
-	</desc>
-
 	<desc name="renderbuffertarget">
 		<value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/>
 		<value name="GL_RENDERBUFFER" category="GLES2.0"/>
@@ -3247,15 +3238,6 @@
 		<value name="GL_FRAMEBUFFER" category="GLES2.0"/>
 	</desc>
 
-	<desc name="attachment">
-		<value name="GL_COLOR_ATTACHMENT0_OES" category="OES_framebuffer_object"/>
-		<value name="GL_DEPTH_ATTACHMENT_OES" category="OES_framebuffer_object"/>
-		<value name="GL_STENCIL_ATTACHMENT_OES" category="OES_framebuffer_object"/>
-		<value name="GL_COLOR_ATTACHMENT0" category="GLES2.0"/>
-		<value name="GL_DEPTH_ATTACHMENT" category="GLES2.0"/>
-		<value name="GL_STENCIL_ATTACHMENT" category="GLES2.0"/>
-	</desc>
-
 	<desc name="textarget" error="GL_INVALID_OPERATION">
 		<value name="GL_TEXTURE_2D"/>
 		<value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/>
@@ -3292,15 +3274,6 @@
 		<value name="GL_FRAMEBUFFER" category="GLES2.0"/>
 	</desc>
 
-	<desc name="attachment">
-		<value name="GL_COLOR_ATTACHMENT0_OES" category="OES_framebuffer_object"/>
-		<value name="GL_DEPTH_ATTACHMENT_OES" category="OES_framebuffer_object"/>
-		<value name="GL_STENCIL_ATTACHMENT_OES" category="OES_framebuffer_object"/>
-		<value name="GL_COLOR_ATTACHMENT0" category="GLES2.0"/>
-		<value name="GL_DEPTH_ATTACHMENT" category="GLES2.0"/>
-		<value name="GL_STENCIL_ATTACHMENT" category="GLES2.0"/>
-	</desc>
-
 	<desc name="textarget" error="GL_INVALID_OPERATION">
 		<value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/>
 	</desc>
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index 139ff03..2e0af97 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -239,17 +239,22 @@ _mesa_get_attachment(struct gl_context *ctx, struct gl_framebuffer *fb,
    case GL_COLOR_ATTACHMENT14_EXT:
    case GL_COLOR_ATTACHMENT15_EXT:
       i = attachment - GL_COLOR_ATTACHMENT0_EXT;
-      if (i >= ctx->Const.MaxColorAttachments) {
+      if (i >= ctx->Const.MaxColorAttachments
+	  || (i > 0 && ctx->API != API_OPENGL)) {
 	 return NULL;
       }
       return &fb->Attachment[BUFFER_COLOR0 + i];
    case GL_DEPTH_STENCIL_ATTACHMENT:
+      if (ctx->API != API_OPENGL)
+	 return NULL;
       /* fall-through */
    case GL_DEPTH_BUFFER:
       /* fall-through / new in GL 3.0 */
    case GL_DEPTH_ATTACHMENT_EXT:
       return &fb->Attachment[BUFFER_DEPTH];
    case GL_STENCIL_BUFFER:
+      if (ctx->API != API_OPENGL)
+	 return NULL;
       /* fall-through / new in GL 3.0 */
    case GL_STENCIL_ATTACHMENT_EXT:
       return &fb->Attachment[BUFFER_STENCIL];



More information about the mesa-commit mailing list