diff --git a/src/mapi/glapi/gen/ARB_direct_state_access.xml b/src/mapi/glapi/gen/ARB_direct_state_access.xml
index f06adc4cfc2..bb12eed7b9b 100644
--- a/src/mapi/glapi/gen/ARB_direct_state_access.xml
+++ b/src/mapi/glapi/gen/ARB_direct_state_access.xml
@@ -374,7 +374,8 @@
-
+
@@ -384,7 +385,8 @@
-
+
@@ -396,7 +398,8 @@
-
+
@@ -410,7 +413,8 @@
-
+
@@ -420,7 +424,8 @@
-
+
@@ -432,7 +437,8 @@
-
+
@@ -523,7 +529,8 @@
-
+
@@ -532,7 +539,8 @@
-
+
diff --git a/src/mapi/glapi/gen/ARB_get_texture_sub_image.xml b/src/mapi/glapi/gen/ARB_get_texture_sub_image.xml
index 47e26abb28e..7a8df8bd9c1 100644
--- a/src/mapi/glapi/gen/ARB_get_texture_sub_image.xml
+++ b/src/mapi/glapi/gen/ARB_get_texture_sub_image.xml
@@ -7,7 +7,8 @@
-
+
@@ -22,7 +23,8 @@
-
+
diff --git a/src/mapi/glapi/gen/ARB_robustness.xml b/src/mapi/glapi/gen/ARB_robustness.xml
index 1f6ac4696b6..8a33bb8ac4b 100644
--- a/src/mapi/glapi/gen/ARB_robustness.xml
+++ b/src/mapi/glapi/gen/ARB_robustness.xml
@@ -68,12 +68,14 @@
-
+
-
+
@@ -82,7 +84,8 @@
-
+
@@ -142,7 +145,8 @@
-
+
diff --git a/src/mapi/glapi/gen/EXT_direct_state_access.xml b/src/mapi/glapi/gen/EXT_direct_state_access.xml
index 1a7ba6b2393..7918653d3c3 100644
--- a/src/mapi/glapi/gen/EXT_direct_state_access.xml
+++ b/src/mapi/glapi/gen/EXT_direct_state_access.xml
@@ -172,7 +172,8 @@
-
+
@@ -184,7 +185,8 @@
-
+
@@ -197,7 +199,8 @@
-
+
@@ -211,7 +214,8 @@
-
+
@@ -222,7 +226,8 @@
-
+
@@ -235,7 +240,8 @@
-
+
@@ -308,7 +314,8 @@
-
+
@@ -437,7 +444,8 @@
-
+
@@ -462,7 +470,8 @@
-
+
@@ -474,7 +483,8 @@
-
+
@@ -487,7 +497,8 @@
-
+
@@ -501,7 +512,8 @@
-
+
@@ -512,7 +524,8 @@
-
+
@@ -525,7 +538,8 @@
-
+
@@ -692,7 +706,8 @@
-
+
@@ -703,7 +718,8 @@
-
+
@@ -715,7 +731,8 @@
-
+
@@ -728,7 +745,8 @@
-
+
@@ -739,7 +757,8 @@
-
+
@@ -752,7 +771,8 @@
-
+
@@ -767,14 +787,16 @@
-
+
-
+
@@ -785,7 +807,8 @@
-
+
@@ -797,7 +820,8 @@
-
+
@@ -810,7 +834,8 @@
-
+
@@ -821,7 +846,8 @@
-
+
@@ -834,7 +860,8 @@
-
+
@@ -849,7 +876,8 @@
-
+
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index f97aea70061..a4d4f837add 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -1161,7 +1161,8 @@
-
+
@@ -2119,7 +2120,8 @@
-
+
@@ -2167,7 +2169,8 @@
-
+
@@ -2179,7 +2182,8 @@
-
+
@@ -2632,21 +2636,24 @@
-
+
-
+
-
+
@@ -2667,7 +2674,8 @@
-
+
@@ -2678,7 +2686,8 @@
-
+
@@ -2771,25 +2780,29 @@
-
+
-
+
-
+
-
+
@@ -2835,7 +2848,8 @@
-
+
@@ -3331,7 +3345,8 @@
-
+
@@ -3343,7 +3358,8 @@
-
+
@@ -4044,7 +4060,8 @@
-
+
@@ -4058,7 +4075,8 @@
-
+
@@ -4542,8 +4560,8 @@
-
+
@@ -4556,8 +4574,8 @@
-
+
@@ -4569,7 +4587,8 @@
-
+
@@ -4580,8 +4599,8 @@
-
+
@@ -4596,8 +4615,8 @@
-
+
@@ -4610,7 +4629,8 @@
-
+
@@ -4621,7 +4641,8 @@
-
+
diff --git a/src/mesa/main/glthread.h b/src/mesa/main/glthread.h
index a7893af364e..6388baeaf61 100644
--- a/src/mesa/main/glthread.h
+++ b/src/mesa/main/glthread.h
@@ -205,6 +205,8 @@ struct glthread_state
/** Currently-bound buffer object IDs. */
GLuint CurrentArrayBufferName;
GLuint CurrentDrawIndirectBufferName;
+ GLuint CurrentPixelPackBufferName;
+ GLuint CurrentPixelUnpackBufferName;
/**
* The batch index of the last occurence of glLinkProgram or
diff --git a/src/mesa/main/glthread_bufferobj.c b/src/mesa/main/glthread_bufferobj.c
index a3516cdb152..6413780a8a5 100644
--- a/src/mesa/main/glthread_bufferobj.c
+++ b/src/mesa/main/glthread_bufferobj.c
@@ -189,6 +189,12 @@ _mesa_glthread_BindBuffer(struct gl_context *ctx, GLenum target, GLuint buffer)
case GL_DRAW_INDIRECT_BUFFER:
glthread->CurrentDrawIndirectBufferName = buffer;
break;
+ case GL_PIXEL_PACK_BUFFER:
+ glthread->CurrentPixelPackBufferName = buffer;
+ break;
+ case GL_PIXEL_UNPACK_BUFFER:
+ glthread->CurrentPixelUnpackBufferName = buffer;
+ break;
}
}
@@ -210,6 +216,10 @@ _mesa_glthread_DeleteBuffers(struct gl_context *ctx, GLsizei n,
_mesa_glthread_BindBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER, 0);
if (id == glthread->CurrentDrawIndirectBufferName)
_mesa_glthread_BindBuffer(ctx, GL_DRAW_INDIRECT_BUFFER, 0);
+ if (id == glthread->CurrentPixelPackBufferName)
+ _mesa_glthread_BindBuffer(ctx, GL_PIXEL_PACK_BUFFER, 0);
+ if (id == glthread->CurrentPixelUnpackBufferName)
+ _mesa_glthread_BindBuffer(ctx, GL_PIXEL_UNPACK_BUFFER, 0);
}
}
diff --git a/src/mesa/main/glthread_marshal.h b/src/mesa/main/glthread_marshal.h
index 5d91095edeb..033056bda39 100644
--- a/src/mesa/main/glthread_marshal.h
+++ b/src/mesa/main/glthread_marshal.h
@@ -71,6 +71,18 @@ _mesa_glthread_allocate_command(struct gl_context *ctx,
return cmd_base;
}
+static inline bool
+_mesa_glthread_has_no_pack_buffer(const struct gl_context *ctx)
+{
+ return ctx->GLThread.CurrentPixelPackBufferName == 0;
+}
+
+static inline bool
+_mesa_glthread_has_no_unpack_buffer(const struct gl_context *ctx)
+{
+ return ctx->GLThread.CurrentPixelUnpackBufferName == 0;
+}
+
/**
* Instead of conditionally handling marshaling immediate index data in draw
* calls (deprecated and removed in GL core), we just disable threading.