mesa: add EXT_dsa glClientAttribDefaultEXT / glPushClientAttribDefaultEXT
authorPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Tue, 28 May 2019 08:27:52 +0000 (10:27 +0200)
committerPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Fri, 18 Oct 2019 08:26:26 +0000 (10:26 +0200)
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mapi/glapi/gen/EXT_direct_state_access.xml
src/mapi/glapi/gen/static_data.py
src/mesa/main/attrib.c
src/mesa/main/attrib.h
src/mesa/main/tests/dispatch_sanity.cpp

index d01521b75d1a3f5f91d8dd26ecfdf74a18b35bd4..28cc9b91b0fab5de76754dc91bd4919f32fc8115 100644 (file)
 
    <!-- OpenGL 1.1 -->
 
 
    <!-- OpenGL 1.1 -->
 
+    <function name="ClientAttribDefaultEXT">
+       <param name="mask" type="GLbitfield" />
+    </function>
+
+    <function name="PushClientAttribDefaultEXT">
+       <param name="mask" type="GLbitfield" />
+    </function>
+
     <function name="GetTextureParameterivEXT">
        <param name="texture" type="GLuint" />
        <param name="target" type="GLenum" />
     <function name="GetTextureParameterivEXT">
        <param name="texture" type="GLuint" />
        <param name="target" type="GLenum" />
index bd37a34f6f606574d8fdf44240d59b124381cca5..141eb8ff7ffcf8d17a8b013ed4559ff6cdb71f0e 100644 (file)
@@ -1571,6 +1571,8 @@ offsets = {
     "GetFramebufferParameterivMESA": 1535,
     "NamedRenderbufferStorageEXT": 1536,
     "GetNamedRenderbufferParameterivEXT": 1537,
     "GetFramebufferParameterivMESA": 1535,
     "NamedRenderbufferStorageEXT": 1536,
     "GetNamedRenderbufferParameterivEXT": 1537,
+    "ClientAttribDefaultEXT": 1538,
+    "PushClientAttribDefaultEXT": 1539,
 }
 
 functions = [
 }
 
 functions = [
index fe6c5a00460ea189fdca0232d3c34e13b3fcb93f..b2756354f1f20d50068fa0faec9929b2d283c37f 100644 (file)
@@ -43,6 +43,7 @@
 #include "macros.h"
 #include "matrix.h"
 #include "multisample.h"
 #include "macros.h"
 #include "matrix.h"
 #include "multisample.h"
+#include "pixelstore.h"
 #include "points.h"
 #include "polygon.h"
 #include "shared.h"
 #include "points.h"
 #include "polygon.h"
 #include "shared.h"
@@ -1852,6 +1853,80 @@ _mesa_PopClientAttrib(void)
    }
 }
 
    }
 }
 
+void GLAPIENTRY
+_mesa_ClientAttribDefaultEXT( GLbitfield mask )
+{
+   if (mask & GL_CLIENT_PIXEL_STORE_BIT) {
+      _mesa_PixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE);
+      _mesa_PixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE);
+      _mesa_PixelStorei(GL_UNPACK_IMAGE_HEIGHT, 0);
+      _mesa_PixelStorei(GL_UNPACK_SKIP_IMAGES, 0);
+      _mesa_PixelStorei(GL_UNPACK_ROW_LENGTH, 0);
+      _mesa_PixelStorei(GL_UNPACK_SKIP_ROWS, 0);
+      _mesa_PixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
+      _mesa_PixelStorei(GL_UNPACK_ALIGNMENT, 4);
+      _mesa_PixelStorei(GL_PACK_SWAP_BYTES, GL_FALSE);
+      _mesa_PixelStorei(GL_PACK_LSB_FIRST, GL_FALSE);
+      _mesa_PixelStorei(GL_PACK_IMAGE_HEIGHT, 0);
+      _mesa_PixelStorei(GL_PACK_SKIP_IMAGES, 0);
+      _mesa_PixelStorei(GL_PACK_ROW_LENGTH, 0);
+      _mesa_PixelStorei(GL_PACK_SKIP_ROWS, 0);
+      _mesa_PixelStorei(GL_PACK_SKIP_PIXELS, 0);
+      _mesa_PixelStorei(GL_PACK_ALIGNMENT, 4);
+
+      _mesa_BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
+      _mesa_BindBuffer(GL_PIXEL_PACK_BUFFER, 0);
+   }
+   if (mask & GL_CLIENT_VERTEX_ARRAY_BIT) {
+      GET_CURRENT_CONTEXT(ctx);
+      int i;
+
+      _mesa_BindBuffer(GL_ARRAY_BUFFER, 0);
+      _mesa_BindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+
+      _mesa_DisableClientState(GL_EDGE_FLAG_ARRAY);
+      _mesa_EdgeFlagPointer(0, 0);
+
+      _mesa_DisableClientState(GL_INDEX_ARRAY);
+      _mesa_IndexPointer(GL_FLOAT, 0, 0);
+
+      _mesa_DisableClientState(GL_SECONDARY_COLOR_ARRAY);
+      _mesa_SecondaryColorPointer(4, GL_FLOAT, 0, 0);
+
+      _mesa_DisableClientState(GL_FOG_COORD_ARRAY);
+      _mesa_FogCoordPointer(GL_FLOAT, 0, 0);
+
+      for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) {
+         _mesa_ClientActiveTexture(GL_TEXTURE0 + i);
+         _mesa_DisableClientState(GL_TEXTURE_COORD_ARRAY);
+         _mesa_TexCoordPointer(4, GL_FLOAT, 0, 0);
+      }
+
+      _mesa_DisableClientState(GL_COLOR_ARRAY);
+      _mesa_ColorPointer(4, GL_FLOAT, 0, 0);
+
+      _mesa_DisableClientState(GL_NORMAL_ARRAY);
+      _mesa_NormalPointer(GL_FLOAT, 0, 0);
+
+      _mesa_DisableClientState(GL_VERTEX_ARRAY);
+      _mesa_VertexPointer(4, GL_FLOAT, 0, 0);
+
+      for (i = 0; i < ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs; i++) {
+         _mesa_DisableVertexAttribArray(i);
+         _mesa_VertexAttribPointer(i, 4, GL_FLOAT, GL_FALSE, 0, 0);
+      }
+
+      _mesa_ClientActiveTexture(GL_TEXTURE0);
+   }
+}
+
+void GLAPIENTRY
+_mesa_PushClientAttribDefaultEXT( GLbitfield mask )
+{
+   _mesa_PushClientAttrib(mask);
+   _mesa_ClientAttribDefaultEXT(mask);
+}
+
 
 /**
  * Free any attribute state data that might be attached to the context.
 
 /**
  * Free any attribute state data that might be attached to the context.
index f4fd4929f733fc4ee7bedfa74713cdc18cec143e..90951306fd5c60b8a0a93793f687ecfee637133a 100644 (file)
@@ -43,6 +43,12 @@ _mesa_PushClientAttrib( GLbitfield mask );
 extern void GLAPIENTRY
 _mesa_PopClientAttrib( void );
 
 extern void GLAPIENTRY
 _mesa_PopClientAttrib( void );
 
+extern void GLAPIENTRY
+_mesa_ClientAttribDefaultEXT( GLbitfield mask );
+
+extern void GLAPIENTRY
+_mesa_PushClientAttribDefaultEXT( GLbitfield mask );
+
 extern void 
 _mesa_init_attrib( struct gl_context *ctx );
 
 extern void 
 _mesa_init_attrib( struct gl_context *ctx );
 
index cbd65d7ba637ff4b5eb046216dd408fb58217eba..be322aa792e65f6e63b745884be7466a1c3031ff 100644 (file)
@@ -1031,8 +1031,8 @@ const struct function common_desktop_functions_possible[] = {
    { "glMatrixPushEXT", 10, -1 },
    { "glMatrixPopEXT", 10, -1 },
    /* GL_EXT_direct_state_access - GL 1.1 */
    { "glMatrixPushEXT", 10, -1 },
    { "glMatrixPopEXT", 10, -1 },
    /* GL_EXT_direct_state_access - GL 1.1 */
-   //{ "glClientAttribDefaultEXT", 11, -1 },
-   //{ "glPushClientAttribDefaultEXT", 11, -1 },
+   { "glClientAttribDefaultEXT", 11, -1 },
+   { "glPushClientAttribDefaultEXT", 11, -1 },
    { "glTextureParameteriEXT", 11, -1 },
    { "glTextureParameterivEXT", 11, -1 },
    { "glTextureParameterfEXT", 11, -1 },
    { "glTextureParameteriEXT", 11, -1 },
    { "glTextureParameterivEXT", 11, -1 },
    { "glTextureParameterfEXT", 11, -1 },