glthread: handle GL_*_ARRAY in glEnable/Disable
authorMarek Olšák <marek.olsak@amd.com>
Mon, 26 Dec 2022 19:59:53 +0000 (14:59 -0500)
committerEric Engestrom <eric@engestrom.ch>
Thu, 26 Jan 2023 15:40:34 +0000 (15:40 +0000)
Surprisingly, the GL compatibility profile allows these in both
glEnableClientState and glEnable.

Fixes: 0b1dd185913 - glthread: track which vertex array attribs are enabled

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20824>
(cherry picked from commit 777166cc66c7330e66e493ee804d32d1f87d297a)

.pick_status.json
src/mesa/main/glthread_marshal.h

index 82f47c2..04c1413 100644 (file)
         "description": "glthread: handle GL_*_ARRAY in glEnable/Disable",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "0b1dd1859134e71b25ad1124535df96d435e9766"
     },
index 49eba08..69f4f2a 100644 (file)
@@ -488,6 +488,18 @@ _mesa_glthread_Enable(struct gl_context *ctx, GLenum cap)
    case GL_POLYGON_STIPPLE:
       ctx->GLThread.PolygonStipple = true;
       break;
+   case GL_VERTEX_ARRAY:
+   case GL_NORMAL_ARRAY:
+   case GL_COLOR_ARRAY:
+   case GL_TEXTURE_COORD_ARRAY:
+   case GL_INDEX_ARRAY:
+   case GL_EDGE_FLAG_ARRAY:
+   case GL_FOG_COORDINATE_ARRAY:
+   case GL_SECONDARY_COLOR_ARRAY:
+   case GL_POINT_SIZE_ARRAY_OES:
+      _mesa_glthread_ClientState(ctx, NULL, _mesa_array_to_attrib(ctx, cap),
+                                 true);
+      break;
    }
 }
 
@@ -517,6 +529,18 @@ _mesa_glthread_Disable(struct gl_context *ctx, GLenum cap)
    case GL_POLYGON_STIPPLE:
       ctx->GLThread.PolygonStipple = false;
       break;
+   case GL_VERTEX_ARRAY:
+   case GL_NORMAL_ARRAY:
+   case GL_COLOR_ARRAY:
+   case GL_TEXTURE_COORD_ARRAY:
+   case GL_INDEX_ARRAY:
+   case GL_EDGE_FLAG_ARRAY:
+   case GL_FOG_COORDINATE_ARRAY:
+   case GL_SECONDARY_COLOR_ARRAY:
+   case GL_POINT_SIZE_ARRAY_OES:
+      _mesa_glthread_ClientState(ctx, NULL, _mesa_array_to_attrib(ctx, cap),
+                                 false);
+      break;
    }
 }