--- src/mapi/glapi/gen/ARB_compute_shader.xml | 4 ++-- .../glapi/gen/ARB_compute_variable_group_size.xml | 2 +- src/mesa/main/compute.c | 26 ++++++++++++++++++++++ src/mesa/main/compute.h | 12 ++++++++++ 4 files changed, 41 insertions(+), 3 deletions(-)
diff --git a/src/mapi/glapi/gen/ARB_compute_shader.xml b/src/mapi/glapi/gen/ARB_compute_shader.xml index c2ec842..84cbdf3 100644 --- a/src/mapi/glapi/gen/ARB_compute_shader.xml +++ b/src/mapi/glapi/gen/ARB_compute_shader.xml @@ -19,22 +19,22 @@ <enum name="MAX_COMPUTE_WORK_GROUP_INVOCATIONS" value="0x90EB"/> <enum name="MAX_COMPUTE_WORK_GROUP_COUNT" value="0x91BE"/> <enum name="MAX_COMPUTE_WORK_GROUP_SIZE" value="0x91BF"/> <enum name="COMPUTE_WORK_GROUP_SIZE" value="0x8267"/> <enum name="UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER" value="0x90EC"/> <enum name="ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER" value="0x90ED"/> <enum name="DISPATCH_INDIRECT_BUFFER" value="0x90EE"/> <enum name="DISPATCH_INDIRECT_BUFFER_BINDING" value="0x90EF"/> <enum name="COMPUTE_SHADER_BIT" value="0x00000020"/> - <function name="DispatchCompute" es2="3.1"> + <function name="DispatchCompute" es2="3.1" no_error="true"> <param name="num_groups_x" type="GLuint"/> <param name="num_groups_y" type="GLuint"/> <param name="num_groups_z" type="GLuint"/> </function> - <function name="DispatchComputeIndirect" es2="3.1"> + <function name="DispatchComputeIndirect" es2="3.1" no_error="true"> <param name="indirect" type="GLintptr"/> </function> </category> </OpenGLAPI> diff --git a/src/mapi/glapi/gen/ARB_compute_variable_group_size.xml b/src/mapi/glapi/gen/ARB_compute_variable_group_size.xml index b21c52f..a54c591 100644 --- a/src/mapi/glapi/gen/ARB_compute_variable_group_size.xml +++ b/src/mapi/glapi/gen/ARB_compute_variable_group_size.xml @@ -5,21 +5,21 @@ <OpenGLAPI> <category name="GL_ARB_compute_variable_group_size" number="153"> <enum name="MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB" value="0x9344"/> <enum name="MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB" value="0x90EB"/> <enum name="MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB" value="0x9345"/> <enum name="MAX_COMPUTE_FIXED_GROUP_SIZE_ARB" value="0x91BF"/> - <function name="DispatchComputeGroupSizeARB"> + <function name="DispatchComputeGroupSizeARB" no_error="true"> <param name="num_groups_x" type="GLuint"/> <param name="num_groups_y" type="GLuint"/> <param name="num_groups_z" type="GLuint"/> <param name="group_size_x" type="GLuint"/> <param name="group_size_y" type="GLuint"/> <param name="group_size_z" type="GLuint"/> </function> </category> </OpenGLAPI> diff --git a/src/mesa/main/compute.c b/src/mesa/main/compute.c index 16bb11f..cbd166b 100644 --- a/src/mesa/main/compute.c +++ b/src/mesa/main/compute.c @@ -259,20 +259,27 @@ dispatch_compute(GLuint num_groups_x, GLuint num_groups_y, if (!no_error && !validate_DispatchCompute(ctx, num_groups)) return; if (num_groups_x == 0u || num_groups_y == 0u || num_groups_z == 0u) return; ctx->Driver.DispatchCompute(ctx, num_groups); } void GLAPIENTRY +_mesa_DispatchCompute_no_error(GLuint num_groups_x, GLuint num_groups_y, + GLuint num_groups_z) +{ + dispatch_compute(num_groups_x, num_groups_y, num_groups_z, true); +} + +void GLAPIENTRY _mesa_DispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) { dispatch_compute(num_groups_x, num_groups_y, num_groups_z, false); } static ALWAYS_INLINE void dispatch_compute_indirect(GLintptr indirect, bool no_error) { @@ -283,20 +290,26 @@ dispatch_compute_indirect(GLintptr indirect, bool no_error) if (MESA_VERBOSE & VERBOSE_API) _mesa_debug(ctx, "glDispatchComputeIndirect(%ld)\n", (long) indirect); if (!no_error && !valid_dispatch_indirect(ctx, indirect)) return; ctx->Driver.DispatchComputeIndirect(ctx, indirect); } extern void GLAPIENTRY +_mesa_DispatchComputeIndirect_no_error(GLintptr indirect) +{ + dispatch_compute_indirect(indirect, true); +} + +extern void GLAPIENTRY _mesa_DispatchComputeIndirect(GLintptr indirect) { dispatch_compute_indirect(indirect, false); } static ALWAYS_INLINE void dispatch_compute_group_size(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z, bool no_error) @@ -317,18 +330,31 @@ dispatch_compute_group_size(GLuint num_groups_x, GLuint num_groups_y, !validate_DispatchComputeGroupSizeARB(ctx, num_groups, group_size)) return; if (num_groups_x == 0u || num_groups_y == 0u || num_groups_z == 0u) return; ctx->Driver.DispatchComputeGroupSize(ctx, num_groups, group_size); } void GLAPIENTRY +_mesa_DispatchComputeGroupSizeARB_no_error(GLuint num_groups_x, + GLuint num_groups_y, + GLuint num_groups_z, + GLuint group_size_x, + GLuint group_size_y, + GLuint group_size_z) +{ + dispatch_compute_group_size(num_groups_x, num_groups_y, num_groups_z, + group_size_x, group_size_y, group_size_z, + true); +} + +void GLAPIENTRY _mesa_DispatchComputeGroupSizeARB(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z) { dispatch_compute_group_size(num_groups_x, num_groups_y, num_groups_z, group_size_x, group_size_y, group_size_z, false); } diff --git a/src/mesa/main/compute.h b/src/mesa/main/compute.h index 8018bbb..bfb3223 100644 --- a/src/mesa/main/compute.h +++ b/src/mesa/main/compute.h @@ -21,23 +21,35 @@ * DEALINGS IN THE SOFTWARE. */ #ifndef COMPUTE_H #define COMPUTE_H #include "glheader.h" extern void GLAPIENTRY +_mesa_DispatchCompute_no_error(GLuint num_groups_x, GLuint num_groups_y, + GLuint num_groups_z); +extern void GLAPIENTRY _mesa_DispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); extern void GLAPIENTRY +_mesa_DispatchComputeIndirect_no_error(GLintptr indirect); +extern void GLAPIENTRY _mesa_DispatchComputeIndirect(GLintptr indirect); extern void GLAPIENTRY +_mesa_DispatchComputeGroupSizeARB_no_error(GLuint num_groups_x, + GLuint num_groups_y, + GLuint num_groups_z, + GLuint group_size_x, + GLuint group_size_y, + GLuint group_size_z); +extern void GLAPIENTRY _mesa_DispatchComputeGroupSizeARB(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z); #endif -- 2.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev