Mesa (master): glthread: don't sync when using pixel buffer objects
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Feb 17 12:20:50 UTC 2021
Module: Mesa
Branch: master
Commit: 638a18484907203e04c2bcd88b1fb4794b1db3f3
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=638a18484907203e04c2bcd88b1fb4794b1db3f3
Author: Marek Olšák <marek.olsak at amd.com>
Date: Thu Feb 11 19:06:40 2021 -0500
glthread: don't sync when using pixel buffer objects
The pointer is a GPU offset if a PBO is bound.
Reviewed-by: Zoltán Böszörményi <zboszor at gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9029>
---
src/mapi/glapi/gen/ARB_direct_state_access.xml | 24 ++++---
src/mapi/glapi/gen/ARB_get_texture_sub_image.xml | 6 +-
src/mapi/glapi/gen/ARB_robustness.xml | 12 ++--
src/mapi/glapi/gen/EXT_direct_state_access.xml | 84 ++++++++++++++++--------
src/mapi/glapi/gen/gl_API.xml | 79 ++++++++++++++--------
src/mesa/main/glthread.h | 2 +
src/mesa/main/glthread_bufferobj.c | 10 +++
src/mesa/main/glthread_marshal.h | 12 ++++
8 files changed, 158 insertions(+), 71 deletions(-)
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 @@
<param name="fixedsamplelocations" type="GLboolean" />
</function>
- <function name="TextureSubImage1D" no_error="true">
+ <function name="TextureSubImage1D" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="xoffset" type="GLint" />
@@ -384,7 +385,8 @@
<param name="pixels" type="const GLvoid *" />
</function>
- <function name="TextureSubImage2D" no_error="true">
+ <function name="TextureSubImage2D" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="xoffset" type="GLint" />
@@ -396,7 +398,8 @@
<param name="pixels" type="const GLvoid *" />
</function>
- <function name="TextureSubImage3D" no_error="true">
+ <function name="TextureSubImage3D" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="xoffset" type="GLint" />
@@ -410,7 +413,8 @@
<param name="pixels" type="const GLvoid *" />
</function>
- <function name="CompressedTextureSubImage1D" no_error="true">
+ <function name="CompressedTextureSubImage1D" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="xoffset" type="GLint" />
@@ -420,7 +424,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedTextureSubImage2D" no_error="true">
+ <function name="CompressedTextureSubImage2D" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="xoffset" type="GLint" />
@@ -432,7 +437,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedTextureSubImage3D" no_error="true">
+ <function name="CompressedTextureSubImage3D" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="xoffset" type="GLint" />
@@ -523,7 +529,8 @@
<param name="texture" type="GLuint" />
</function>
- <function name="GetTextureImage">
+ <function name="GetTextureImage"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="format" type="GLenum" />
@@ -532,7 +539,8 @@
<param name="pixels" type="GLvoid *" />
</function>
- <function name="GetCompressedTextureImage">
+ <function name="GetCompressedTextureImage"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
<param name="bufSize" type="GLsizei" />
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 @@
<category name="GL_ARB_get_texture_sub_image" number="165">
- <function name="GetTextureSubImage">
+ <function name="GetTextureSubImage"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="texture" type="GLuint"/>
<param name="level" type="GLint"/>
<param name="xoffset" type="GLint"/>
@@ -22,7 +23,8 @@
<param name="pixels" type="GLvoid *"/>
</function>
- <function name="GetCompressedTextureSubImage">
+ <function name="GetCompressedTextureSubImage"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="texture" type="GLuint"/>
<param name="level" type="GLint"/>
<param name="xoffset" type="GLint"/>
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 @@
- <function name="GetnPolygonStippleARB">
+ <function name="GetnPolygonStippleARB"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="bufSize" type="GLsizei"/>
<param name="pattern" type="GLubyte *" output="true"/>
</function>
- <function name="GetnTexImageARB">
+ <function name="GetnTexImageARB"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="format" type="GLenum"/>
@@ -82,7 +84,8 @@
<param name="img" type="GLvoid *" output="true"/>
</function>
- <function name="ReadnPixelsARB" no_error="true">
+ <function name="ReadnPixelsARB" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="x" type="GLint"/>
<param name="y" type="GLint"/>
<param name="width" type="GLsizei"/>
@@ -142,7 +145,8 @@
<!-- OpenGL 1.3 sized buffer queries -->
- <function name="GetnCompressedTexImageARB">
+ <function name="GetnCompressedTexImageARB"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="lod" type="GLint"/>
<param name="bufSize" type="GLsizei"/>
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 @@
<param name="params" type="const float *" count="_mesa_tex_param_enum_to_count(pname)"/>
</function>
- <function name="TextureImage1DEXT">
+ <function name="TextureImage1DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -184,7 +185,8 @@
<param name="pixels" type="const GLvoid *" />
</function>
- <function name="TextureImage2DEXT">
+ <function name="TextureImage2DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -197,7 +199,8 @@
<param name="pixels" type="const GLvoid *" />
</function>
- <function name="TextureImage3DEXT">
+ <function name="TextureImage3DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -211,7 +214,8 @@
<param name="pixels" type="const GLvoid *" />
</function>
- <function name="TextureSubImage1DEXT">
+ <function name="TextureSubImage1DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -222,7 +226,8 @@
<param name="pixels" type="const GLvoid *" />
</function>
- <function name="TextureSubImage2DEXT">
+ <function name="TextureSubImage2DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -235,7 +240,8 @@
<param name="pixels" type="const GLvoid *" />
</function>
- <function name="TextureSubImage3DEXT">
+ <function name="TextureSubImage3DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -308,7 +314,8 @@
<param name="height" type="GLsizei" />
</function>
- <function name="GetTextureImageEXT">
+ <function name="GetTextureImageEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -437,7 +444,8 @@
<param name="params" type="GLfloat*" />
</function>
- <function name="GetMultiTexImageEXT">
+ <function name="GetMultiTexImageEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -462,7 +470,8 @@
<param name="params" type="GLfloat*" />
</function>
- <function name="MultiTexImage1DEXT">
+ <function name="MultiTexImage1DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -474,7 +483,8 @@
<param name="pixels" type="const GLvoid*" />
</function>
- <function name="MultiTexImage2DEXT">
+ <function name="MultiTexImage2DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -487,7 +497,8 @@
<param name="pixels" type="const GLvoid*" />
</function>
- <function name="MultiTexImage3DEXT">
+ <function name="MultiTexImage3DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -501,7 +512,8 @@
<param name="pixels" type="const GLvoid*" />
</function>
- <function name="MultiTexSubImage1DEXT">
+ <function name="MultiTexSubImage1DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -512,7 +524,8 @@
<param name="pixels" type="const GLvoid*" />
</function>
- <function name="MultiTexSubImage2DEXT">
+ <function name="MultiTexSubImage2DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -525,7 +538,8 @@
<param name="pixels" type="const GLvoid*" />
</function>
- <function name="MultiTexSubImage3DEXT">
+ <function name="MultiTexSubImage3DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -692,7 +706,8 @@
<param name="m" type="const GLdouble *" count="16"/>
</function>
- <function name="CompressedTextureImage1DEXT">
+ <function name="CompressedTextureImage1DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -703,7 +718,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedTextureImage2DEXT">
+ <function name="CompressedTextureImage2DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -715,7 +731,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedTextureImage3DEXT">
+ <function name="CompressedTextureImage3DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -728,7 +745,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedTextureSubImage1DEXT">
+ <function name="CompressedTextureSubImage1DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -739,7 +757,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedTextureSubImage2DEXT">
+ <function name="CompressedTextureSubImage2DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -752,7 +771,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedTextureSubImage3DEXT">
+ <function name="CompressedTextureSubImage3DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -767,14 +787,16 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="GetCompressedTextureImageEXT">
+ <function name="GetCompressedTextureImageEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="texture" type="GLuint" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
<param name="img" type="GLvoid *" />
</function>
- <function name="CompressedMultiTexImage1DEXT">
+ <function name="CompressedMultiTexImage1DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -785,7 +807,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedMultiTexImage2DEXT">
+ <function name="CompressedMultiTexImage2DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -797,7 +820,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedMultiTexImage3DEXT">
+ <function name="CompressedMultiTexImage3DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -810,7 +834,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedMultiTexSubImage1DEXT">
+ <function name="CompressedMultiTexSubImage1DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -821,7 +846,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedMultiTexSubImage2DEXT">
+ <function name="CompressedMultiTexSubImage2DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -834,7 +860,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="CompressedMultiTexSubImage3DEXT">
+ <function name="CompressedMultiTexSubImage3DEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
@@ -849,7 +876,8 @@
<param name="data" type="const GLvoid *" />
</function>
- <function name="GetCompressedMultiTexImageEXT">
+ <function name="GetCompressedMultiTexImageEXT"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="texunit" type="GLenum" />
<param name="target" type="GLenum" />
<param name="level" type="GLint" />
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 @@
<glx rop="4"/>
</function>
- <function name="Bitmap" deprecated="3.1">
+ <function name="Bitmap" deprecated="3.1"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="width" type="GLsizei"/>
<param name="height" type="GLsizei"/>
<param name="xorig" type="GLfloat"/>
@@ -2119,7 +2120,8 @@
<glx rop="101"/>
</function>
- <function name="PolygonStipple" deprecated="3.1">
+ <function name="PolygonStipple" deprecated="3.1"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="mask" type="const GLubyte *" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/>
<glx rop="102"/>
</function>
@@ -2167,7 +2169,8 @@
<glx rop="108"/>
</function>
- <function name="TexImage1D" no_error="true">
+ <function name="TexImage1D" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="internalformat" type="GLint"/>
@@ -2179,7 +2182,8 @@
<glx rop="109" large="true"/>
</function>
- <function name="TexImage2D" es1="1.0" es2="2.0" no_error="true">
+ <function name="TexImage2D" es1="1.0" es2="2.0" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="internalformat" type="GLint"/>
@@ -2632,21 +2636,24 @@
<glx sop="110" handcode="client"/>
</function>
- <function name="PixelMapfv" deprecated="3.1" marshal="sync">
+ <function name="PixelMapfv" deprecated="3.1"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="map" type="GLenum"/>
<param name="mapsize" type="GLsizei" counter="true"/>
<param name="values" type="const GLfloat *" count="mapsize"/>
<glx rop="168" large="true"/>
</function>
- <function name="PixelMapuiv" deprecated="3.1" marshal="sync">
+ <function name="PixelMapuiv" deprecated="3.1"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="map" type="GLenum"/>
<param name="mapsize" type="GLsizei" counter="true"/>
<param name="values" type="const GLuint *" count="mapsize"/>
<glx rop="169" large="true"/>
</function>
- <function name="PixelMapusv" deprecated="3.1" marshal="sync">
+ <function name="PixelMapusv" deprecated="3.1"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="map" type="GLenum"/>
<param name="mapsize" type="GLsizei" counter="true"/>
<param name="values" type="const GLushort *" count="mapsize"/>
@@ -2667,7 +2674,8 @@
<glx rop="172"/>
</function>
- <function name="ReadPixels" es1="1.0" es2="2.0" no_error="true">
+ <function name="ReadPixels" es1="1.0" es2="2.0" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="x" type="GLint"/>
<param name="y" type="GLint"/>
<param name="width" type="GLsizei"/>
@@ -2678,7 +2686,8 @@
<glx sop="111"/>
</function>
- <function name="DrawPixels" deprecated="3.1">
+ <function name="DrawPixels" deprecated="3.1"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="width" type="GLsizei"/>
<param name="height" type="GLsizei"/>
<param name="format" type="GLenum"/>
@@ -2771,25 +2780,29 @@
<glx sop="124"/>
</function>
- <function name="GetPixelMapfv" deprecated="3.1">
+ <function name="GetPixelMapfv" deprecated="3.1"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="map" type="GLenum"/>
<param name="values" type="GLfloat *" output="true" variable_param="map"/>
<glx sop="125"/>
</function>
- <function name="GetPixelMapuiv" deprecated="3.1">
+ <function name="GetPixelMapuiv" deprecated="3.1"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="map" type="GLenum"/>
<param name="values" type="GLuint *" output="true" variable_param="map"/>
<glx sop="126"/>
</function>
- <function name="GetPixelMapusv" deprecated="3.1">
+ <function name="GetPixelMapusv" deprecated="3.1"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="map" type="GLenum"/>
<param name="values" type="GLushort *" output="true" variable_param="map"/>
<glx sop="127"/>
</function>
- <function name="GetPolygonStipple" deprecated="3.1">
+ <function name="GetPolygonStipple" deprecated="3.1"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="mask" type="GLubyte *" output="true" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP"/>
<glx sop="128"/>
</function>
@@ -2835,7 +2848,8 @@
<glx sop="134"/>
</function>
- <function name="GetTexImage">
+ <function name="GetTexImage"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="format" type="GLenum"/>
@@ -3331,7 +3345,8 @@
<glx rop="4122"/>
</function>
- <function name="TexSubImage1D" no_error="true">
+ <function name="TexSubImage1D" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="xoffset" type="GLint"/>
@@ -3343,7 +3358,8 @@
<glx rop="4099" large="true"/>
</function>
- <function name="TexSubImage2D" es1="1.0" es2="2.0" no_error="true">
+ <function name="TexSubImage2D" es1="1.0" es2="2.0" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="xoffset" type="GLint"/>
@@ -4044,7 +4060,8 @@
<glx rop="4113"/>
</function>
- <function name="TexImage3D" es2="3.0" no_error="true">
+ <function name="TexImage3D" es2="3.0" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="internalformat" type="GLint"/>
@@ -4058,7 +4075,8 @@
<glx rop="4114" large="true"/>
</function>
- <function name="TexSubImage3D" es2="3.0" no_error="true">
+ <function name="TexSubImage3D" es2="3.0" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="xoffset" type="GLint"/>
@@ -4542,8 +4560,8 @@
<glx rop="229"/>
</function>
- <function name="CompressedTexImage3D" es2="3.0" marshal="sync"
- no_error="true">
+ <function name="CompressedTexImage3D" es2="3.0" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="internalformat" type="GLenum"/>
@@ -4556,8 +4574,8 @@
<glx rop="216" handcode="client"/>
</function>
- <function name="CompressedTexImage2D" es1="1.0" es2="2.0" marshal="sync"
- no_error="true">
+ <function name="CompressedTexImage2D" es1="1.0" es2="2.0" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="internalformat" type="GLenum"/>
@@ -4569,7 +4587,8 @@
<glx rop="215" handcode="client"/>
</function>
- <function name="CompressedTexImage1D" marshal="sync" no_error="true">
+ <function name="CompressedTexImage1D" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="internalformat" type="GLenum"/>
@@ -4580,8 +4599,8 @@
<glx rop="214" handcode="client"/>
</function>
- <function name="CompressedTexSubImage3D" es2="3.0" marshal="sync"
- no_error="true">
+ <function name="CompressedTexSubImage3D" es2="3.0" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="xoffset" type="GLint"/>
@@ -4596,8 +4615,8 @@
<glx rop="219" handcode="client"/>
</function>
- <function name="CompressedTexSubImage2D" es1="1.0" es2="2.0" marshal="sync"
- no_error="true">
+ <function name="CompressedTexSubImage2D" es1="1.0" es2="2.0" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="xoffset" type="GLint"/>
@@ -4610,7 +4629,8 @@
<glx rop="218" handcode="client"/>
</function>
- <function name="CompressedTexSubImage1D" marshal="sync" no_error="true">
+ <function name="CompressedTexSubImage1D" no_error="true"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_unpack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="xoffset" type="GLint"/>
@@ -4621,7 +4641,8 @@
<glx rop="217" handcode="client"/>
</function>
- <function name="GetCompressedTexImage">
+ <function name="GetCompressedTexImage"
+ marshal="async" marshal_sync="_mesa_glthread_has_no_pack_buffer(ctx)">
<param name="target" type="GLenum"/>
<param name="level" type="GLint"/>
<param name="img" type="GLvoid *" output="true"/>
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.
More information about the mesa-commit
mailing list