ARB_fbo: Add missing GLX render opcode for glFramebufferTextureLayerEXT
authorIan Romanick <ian.d.romanick@intel.com>
Thu, 12 Nov 2009 21:22:12 +0000 (13:22 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 18 Nov 2009 00:25:38 +0000 (16:25 -0800)
Also regenerate the GLX protocol files from this change.

src/glx/x11/indirect.c
src/glx/x11/indirect.h
src/glx/x11/indirect_init.c
src/mesa/glapi/EXT_texture_array.xml

index 3ca71f56ff818b58c9ef54be297f5991fb6bde78..ea90ce44630d6ac66facc9c37a40d99b99767ff4 100644 (file)
@@ -10643,6 +10643,26 @@ __indirect_glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1,
     }
 }
 
+#define X_GLrop_FramebufferTextureLayerEXT 237
+void
+__indirect_glFramebufferTextureLayerEXT(GLenum target, GLenum attachment,
+                                        GLuint texture, GLint level,
+                                        GLint layer)
+{
+    __GLXcontext *const gc = __glXGetCurrentContext();
+    const GLuint cmdlen = 24;
+    emit_header(gc->pc, X_GLrop_FramebufferTextureLayerEXT, cmdlen);
+    (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
+    (void) memcpy((void *) (gc->pc + 8), (void *) (&attachment), 4);
+    (void) memcpy((void *) (gc->pc + 12), (void *) (&texture), 4);
+    (void) memcpy((void *) (gc->pc + 16), (void *) (&level), 4);
+    (void) memcpy((void *) (gc->pc + 20), (void *) (&layer), 4);
+    gc->pc += cmdlen;
+    if (__builtin_expect(gc->pc > gc->limit, 0)) {
+        (void) __glXFlushRenderBuffer(gc, gc->pc);
+    }
+}
+
 
 #  undef FASTCALL
 #  undef NOINLINE
index 4a1b81ca6e6a090da548870bd37d0793b5abd8d3..19a8c0d134aa34a82bcce54be91e45ef17a14f90 100644 (file)
@@ -712,6 +712,7 @@ extern HIDDEN GLboolean __indirect_glIsFramebufferEXT(GLuint framebuffer);
 extern HIDDEN GLboolean __indirect_glIsRenderbufferEXT(GLuint renderbuffer);
 extern HIDDEN void __indirect_glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
 extern HIDDEN void __indirect_glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+extern HIDDEN void __indirect_glFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
 
 #  undef HIDDEN
 #  undef FASTCALL
index aa9a6bb2b0e6f79779e644d1114293e06ebba179..73ca993027badc05fa252bc9372b7bd2a5c35c3a 100644 (file)
@@ -776,6 +776,10 @@ __GLapi * __glXNewIndirectAPI( void )
 
     glAPI->BlitFramebufferEXT = __indirect_glBlitFramebufferEXT;
 
+    /* 329. GL_EXT_texture_array */
+
+    glAPI->FramebufferTextureLayerEXT = __indirect_glFramebufferTextureLayerEXT;
+
     return glAPI;
 }
 
index e5bd9f3c6970b8e2f01b51d58ea442cce7e27c2d..b5b8bd406f7ca850627e77ca2c40ec0f134c8390 100644 (file)
@@ -35,6 +35,7 @@
         <param name="texture" type="GLuint"/>
         <param name="level" type="GLint"/>
         <param name="layer" type="GLint"/>
+       <glx rop="237"/>
     </function>
 </category>