mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-21 14:10:37 +02:00
mesa/cs: Implement MAX_COMPUTE_WORK_GROUP_COUNT constant.
v2: Document that the 3-element array MaxComputeWorkGroupCount is indexed by dimension. Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
c85c50997f
commit
0398b69954
8 changed files with 25 additions and 0 deletions
|
|
@ -682,6 +682,10 @@ builtin_variable_generator::generate_constants()
|
|||
}
|
||||
|
||||
if (state->is_version(430, 0) || state->ARB_compute_shader_enable) {
|
||||
add_const_ivec3("gl_MaxComputeWorkGroupCount",
|
||||
state->Const.MaxComputeWorkGroupCount[0],
|
||||
state->Const.MaxComputeWorkGroupCount[1],
|
||||
state->Const.MaxComputeWorkGroupCount[2]);
|
||||
add_const_ivec3("gl_MaxComputeWorkGroupSize",
|
||||
state->Const.MaxComputeWorkGroupSize[0],
|
||||
state->Const.MaxComputeWorkGroupSize[1],
|
||||
|
|
|
|||
|
|
@ -124,6 +124,8 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx,
|
|||
this->Const.MaxAtomicBufferBindings = ctx->Const.MaxAtomicBufferBindings;
|
||||
|
||||
/* Compute shader constants */
|
||||
for (unsigned i = 0; i < Elements(this->Const.MaxComputeWorkGroupCount); i++)
|
||||
this->Const.MaxComputeWorkGroupCount[i] = ctx->Const.MaxComputeWorkGroupCount[i];
|
||||
for (unsigned i = 0; i < Elements(this->Const.MaxComputeWorkGroupSize); i++)
|
||||
this->Const.MaxComputeWorkGroupSize[i] = ctx->Const.MaxComputeWorkGroupSize[i];
|
||||
|
||||
|
|
|
|||
|
|
@ -252,6 +252,7 @@ struct _mesa_glsl_parse_state {
|
|||
unsigned MaxAtomicBufferBindings;
|
||||
|
||||
/* ARB_compute_shader */
|
||||
unsigned MaxComputeWorkGroupCount[3];
|
||||
unsigned MaxComputeWorkGroupSize[3];
|
||||
} Const;
|
||||
|
||||
|
|
|
|||
|
|
@ -50,6 +50,9 @@ initialize_context(struct gl_context *ctx, gl_api api)
|
|||
*/
|
||||
ctx->Const.GLSLVersion = glsl_version;
|
||||
ctx->Extensions.ARB_ES3_compatibility = true;
|
||||
ctx->Const.MaxComputeWorkGroupCount[0] = 65535;
|
||||
ctx->Const.MaxComputeWorkGroupCount[1] = 65535;
|
||||
ctx->Const.MaxComputeWorkGroupCount[2] = 65535;
|
||||
ctx->Const.MaxComputeWorkGroupSize[0] = 1024;
|
||||
ctx->Const.MaxComputeWorkGroupSize[1] = 1024;
|
||||
ctx->Const.MaxComputeWorkGroupSize[2] = 64;
|
||||
|
|
|
|||
|
|
@ -141,6 +141,9 @@ void initialize_context_to_defaults(struct gl_context *ctx, gl_api api)
|
|||
ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxInputComponents = 32;
|
||||
|
||||
ctx->Const.MaxDrawBuffers = 1;
|
||||
ctx->Const.MaxComputeWorkGroupCount[0] = 65535;
|
||||
ctx->Const.MaxComputeWorkGroupCount[1] = 65535;
|
||||
ctx->Const.MaxComputeWorkGroupCount[2] = 65535;
|
||||
ctx->Const.MaxComputeWorkGroupSize[0] = 1024;
|
||||
ctx->Const.MaxComputeWorkGroupSize[1] = 1024;
|
||||
ctx->Const.MaxComputeWorkGroupSize[2] = 64;
|
||||
|
|
|
|||
|
|
@ -702,6 +702,9 @@ _mesa_init_constants(struct gl_context *ctx)
|
|||
ctx->Const.MaxVertexAttribBindings = MAX_VERTEX_GENERIC_ATTRIBS;
|
||||
|
||||
/* GL_ARB_compute_shader */
|
||||
ctx->Const.MaxComputeWorkGroupCount[0] = 65535;
|
||||
ctx->Const.MaxComputeWorkGroupCount[1] = 65535;
|
||||
ctx->Const.MaxComputeWorkGroupCount[2] = 65535;
|
||||
ctx->Const.MaxComputeWorkGroupSize[0] = 1024;
|
||||
ctx->Const.MaxComputeWorkGroupSize[1] = 1024;
|
||||
ctx->Const.MaxComputeWorkGroupSize[2] = 64;
|
||||
|
|
|
|||
|
|
@ -1929,6 +1929,14 @@ find_value_indexed(const char *func, GLenum pname, GLuint index, union value *v)
|
|||
v->value_int = ctx->ImageUnits[index].Format;
|
||||
return TYPE_INT;
|
||||
|
||||
case GL_MAX_COMPUTE_WORK_GROUP_COUNT:
|
||||
if (!_mesa_is_desktop_gl(ctx) || !ctx->Extensions.ARB_compute_shader)
|
||||
goto invalid_enum;
|
||||
if (index >= 3)
|
||||
goto invalid_value;
|
||||
v->value_int = ctx->Const.MaxComputeWorkGroupCount[index];
|
||||
return TYPE_INT;
|
||||
|
||||
case GL_MAX_COMPUTE_WORK_GROUP_SIZE:
|
||||
if (!_mesa_is_desktop_gl(ctx) || !ctx->Extensions.ARB_compute_shader)
|
||||
goto invalid_enum;
|
||||
|
|
|
|||
|
|
@ -3380,6 +3380,7 @@ struct gl_constants
|
|||
GLuint MaxCombinedImageUniforms;
|
||||
|
||||
/** GL_ARB_compute_shader */
|
||||
GLuint MaxComputeWorkGroupCount[3]; /* Array of x, y, z dimensions */
|
||||
GLuint MaxComputeWorkGroupSize[3]; /* Array of x, y, z dimensions */
|
||||
GLuint MaxComputeWorkGroupInvocations;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue