[Mesa-dev] [PATCH 01/17] mesa: make compute maximums reflect driver-provided values

Marek Olšák maraeo at gmail.com
Tue Jan 26 02:20:06 PST 2016


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Sun, Jan 24, 2016 at 10:09 PM, Samuel Pitoiset
<samuel.pitoiset at gmail.com> wrote:
> From: Ilia Mirkin <imirkin at alum.mit.edu>
>
> Looks like the various max's were never plumbed through.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/glsl/builtin_variables.cpp   | 15 ++++++++++-----
>  src/glsl/glsl_parser_extras.cpp  |  7 +++++++
>  src/glsl/glsl_parser_extras.h    |  5 +++++
>  src/glsl/main.cpp                |  4 ++++
>  src/mesa/main/config.h           |  6 ------
>  src/mesa/main/get_hash_params.py | 12 ++++++------
>  6 files changed, 32 insertions(+), 17 deletions(-)
>
> diff --git a/src/glsl/builtin_variables.cpp b/src/glsl/builtin_variables.cpp
> index 70facd0..abf0eea 100644
> --- a/src/glsl/builtin_variables.cpp
> +++ b/src/glsl/builtin_variables.cpp
> @@ -770,11 +770,16 @@ builtin_variable_generator::generate_constants()
>     }
>
>     if (state->is_version(430, 310) || state->ARB_compute_shader_enable) {
> -      add_const("gl_MaxComputeAtomicCounterBuffers", MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS);
> -      add_const("gl_MaxComputeAtomicCounters", MAX_COMPUTE_ATOMIC_COUNTERS);
> -      add_const("gl_MaxComputeImageUniforms", MAX_COMPUTE_IMAGE_UNIFORMS);
> -      add_const("gl_MaxComputeTextureImageUnits", MAX_COMPUTE_TEXTURE_IMAGE_UNITS);
> -      add_const("gl_MaxComputeUniformComponents", MAX_COMPUTE_UNIFORM_COMPONENTS);
> +      add_const("gl_MaxComputeAtomicCounterBuffers",
> +                state->Const.MaxComputeAtomicCounterBuffers);
> +      add_const("gl_MaxComputeAtomicCounters",
> +                state->Const.MaxComputeAtomicCounters);
> +      add_const("gl_MaxComputeImageUniforms",
> +                state->Const.MaxComputeImageUniforms);
> +      add_const("gl_MaxComputeTextureImageUnits",
> +                state->Const.MaxComputeTextureImageUnits);
> +      add_const("gl_MaxComputeUniformComponents",
> +                state->Const.MaxComputeUniformComponents);
>
>        add_const_ivec3("gl_MaxComputeWorkGroupCount",
>                        state->Const.MaxComputeWorkGroupCount[0],
> diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp
> index 6038954..cce9a68 100644
> --- a/src/glsl/glsl_parser_extras.cpp
> +++ b/src/glsl/glsl_parser_extras.cpp
> @@ -119,6 +119,7 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx,
>     this->Const.MaxTessEvaluationAtomicCounters = ctx->Const.Program[MESA_SHADER_TESS_EVAL].MaxAtomicCounters;
>     this->Const.MaxGeometryAtomicCounters = ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxAtomicCounters;
>     this->Const.MaxFragmentAtomicCounters = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxAtomicCounters;
> +   this->Const.MaxComputeAtomicCounters = ctx->Const.Program[MESA_SHADER_COMPUTE].MaxAtomicCounters;
>     this->Const.MaxCombinedAtomicCounters = ctx->Const.MaxCombinedAtomicCounters;
>     this->Const.MaxAtomicBufferBindings = ctx->Const.MaxAtomicBufferBindings;
>     this->Const.MaxVertexAtomicCounterBuffers =
> @@ -131,6 +132,8 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx,
>        ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxAtomicBuffers;
>     this->Const.MaxFragmentAtomicCounterBuffers =
>        ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxAtomicBuffers;
> +   this->Const.MaxComputeAtomicCounterBuffers =
> +      ctx->Const.Program[MESA_SHADER_COMPUTE].MaxAtomicBuffers;
>     this->Const.MaxCombinedAtomicCounterBuffers =
>        ctx->Const.MaxCombinedAtomicBuffers;
>     this->Const.MaxAtomicCounterBufferSize =
> @@ -142,6 +145,9 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx,
>     for (unsigned i = 0; i < ARRAY_SIZE(this->Const.MaxComputeWorkGroupSize); i++)
>        this->Const.MaxComputeWorkGroupSize[i] = ctx->Const.MaxComputeWorkGroupSize[i];
>
> +   this->Const.MaxComputeTextureImageUnits = ctx->Const.Program[MESA_SHADER_COMPUTE].MaxTextureImageUnits;
> +   this->Const.MaxComputeUniformComponents = ctx->Const.Program[MESA_SHADER_COMPUTE].MaxUniformComponents;
> +
>     this->Const.MaxImageUnits = ctx->Const.MaxImageUnits;
>     this->Const.MaxCombinedShaderOutputResources = ctx->Const.MaxCombinedShaderOutputResources;
>     this->Const.MaxImageSamples = ctx->Const.MaxImageSamples;
> @@ -150,6 +156,7 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx,
>     this->Const.MaxTessEvaluationImageUniforms = ctx->Const.Program[MESA_SHADER_TESS_EVAL].MaxImageUniforms;
>     this->Const.MaxGeometryImageUniforms = ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxImageUniforms;
>     this->Const.MaxFragmentImageUniforms = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxImageUniforms;
> +   this->Const.MaxComputeImageUniforms = ctx->Const.Program[MESA_SHADER_COMPUTE].MaxImageUniforms;
>     this->Const.MaxCombinedImageUniforms = ctx->Const.MaxCombinedImageUniforms;
>
>     /* ARB_viewport_array */
> diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h
> index 3f88e01..45a2999 100644
> --- a/src/glsl/glsl_parser_extras.h
> +++ b/src/glsl/glsl_parser_extras.h
> @@ -429,6 +429,11 @@ struct _mesa_glsl_parse_state {
>        unsigned MaxAtomicCounterBufferSize;
>
>        /* ARB_compute_shader */
> +      unsigned MaxComputeAtomicCounterBuffers;
> +      unsigned MaxComputeAtomicCounters;
> +      unsigned MaxComputeImageUniforms;
> +      unsigned MaxComputeTextureImageUnits;
> +      unsigned MaxComputeUniformComponents;
>        unsigned MaxComputeWorkGroupCount[3];
>        unsigned MaxComputeWorkGroupSize[3];
>
> diff --git a/src/glsl/main.cpp b/src/glsl/main.cpp
> index df93a01..ff705dc 100644
> --- a/src/glsl/main.cpp
> +++ b/src/glsl/main.cpp
> @@ -62,6 +62,10 @@ initialize_context(struct gl_context *ctx, gl_api api)
>     ctx->Const.Program[MESA_SHADER_COMPUTE].MaxUniformComponents = 1024;
>     ctx->Const.Program[MESA_SHADER_COMPUTE].MaxInputComponents = 0; /* not used */
>     ctx->Const.Program[MESA_SHADER_COMPUTE].MaxOutputComponents = 0; /* not used */
> +   ctx->Const.Program[MESA_SHADER_COMPUTE].MaxAtomicBuffers = 8;
> +   ctx->Const.Program[MESA_SHADER_COMPUTE].MaxAtomicCounters = 8;
> +   ctx->Const.Program[MESA_SHADER_COMPUTE].MaxImageUniforms = 8;
> +   ctx->Const.Program[MESA_SHADER_COMPUTE].MaxUniformBlocks = 12;
>
>     switch (ctx->Const.GLSLVersion) {
>     case 100:
> diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h
> index 2d53e2f..1261b7b 100644
> --- a/src/mesa/main/config.h
> +++ b/src/mesa/main/config.h
> @@ -290,13 +290,7 @@
>
>  /** For GL_ARB_compute_shader */
>  /*@{*/
> -#define MAX_COMPUTE_UNIFORM_BLOCKS          12
> -#define MAX_COMPUTE_TEXTURE_IMAGE_UNITS     16
> -#define MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS  8
> -#define MAX_COMPUTE_ATOMIC_COUNTERS         8
>  #define MAX_COMPUTE_SHARED_MEMORY_SIZE      32768
> -#define MAX_COMPUTE_UNIFORM_COMPONENTS      512
> -#define MAX_COMPUTE_IMAGE_UNIFORMS          8
>  /*@}*/
>
>  /** For GL_ARB_pipeline_statistics_query */
> diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
> index af7a8f4..9bf0ac6 100644
> --- a/src/mesa/main/get_hash_params.py
> +++ b/src/mesa/main/get_hash_params.py
> @@ -455,13 +455,13 @@ descriptor=[
>
>  # GL_ARB_compute_shader / GLES 3.1
>    [ "MAX_COMPUTE_WORK_GROUP_INVOCATIONS", "CONTEXT_INT(Const.MaxComputeWorkGroupInvocations), extra_ARB_compute_shader_es31" ],
> -  [ "MAX_COMPUTE_UNIFORM_BLOCKS", "CONST(MAX_COMPUTE_UNIFORM_BLOCKS), extra_ARB_compute_shader_es31" ],
> -  [ "MAX_COMPUTE_TEXTURE_IMAGE_UNITS", "CONST(MAX_COMPUTE_TEXTURE_IMAGE_UNITS), extra_ARB_compute_shader_es31" ],
> -  [ "MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS", "CONST(MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS), extra_ARB_compute_shader_es31" ],
> -  [ "MAX_COMPUTE_ATOMIC_COUNTERS", "CONST(MAX_COMPUTE_ATOMIC_COUNTERS), extra_ARB_compute_shader_es31" ],
> +  [ "MAX_COMPUTE_UNIFORM_BLOCKS", "CONTEXT_INT(Const.Program[MESA_SHADER_COMPUTE].MaxUniformBlocks), extra_ARB_compute_shader_es31" ],
> +  [ "MAX_COMPUTE_TEXTURE_IMAGE_UNITS", "CONTEXT_INT(Const.Program[MESA_SHADER_COMPUTE].MaxTextureImageUnits), extra_ARB_compute_shader_es31" ],
> +  [ "MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS", "CONTEXT_INT(Const.Program[MESA_SHADER_COMPUTE].MaxAtomicBuffers), extra_ARB_compute_shader_es31" ],
> +  [ "MAX_COMPUTE_ATOMIC_COUNTERS", "CONTEXT_INT(Const.Program[MESA_SHADER_COMPUTE].MaxAtomicCounters), extra_ARB_compute_shader_es31" ],
>    [ "MAX_COMPUTE_SHARED_MEMORY_SIZE", "CONST(MAX_COMPUTE_SHARED_MEMORY_SIZE), extra_ARB_compute_shader_es31" ],
> -  [ "MAX_COMPUTE_UNIFORM_COMPONENTS", "CONST(MAX_COMPUTE_UNIFORM_COMPONENTS), extra_ARB_compute_shader_es31" ],
> -  [ "MAX_COMPUTE_IMAGE_UNIFORMS", "CONST(MAX_COMPUTE_IMAGE_UNIFORMS), extra_ARB_compute_shader_es31" ],
> +  [ "MAX_COMPUTE_UNIFORM_COMPONENTS", "CONTEXT_INT(Const.Program[MESA_SHADER_COMPUTE].MaxUniformComponents), extra_ARB_compute_shader_es31" ],
> +  [ "MAX_COMPUTE_IMAGE_UNIFORMS", "CONTEXT_INT(Const.Program[MESA_SHADER_COMPUTE].MaxImageUniforms), extra_ARB_compute_shader_es31" ],
>    [ "DISPATCH_INDIRECT_BUFFER_BINDING", "LOC_CUSTOM, TYPE_INT, 0, extra_ARB_compute_shader_es31" ],
>    [ "MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS", "CONTEXT_INT(Const.Program[MESA_SHADER_COMPUTE].MaxCombinedUniformComponents), extra_ARB_compute_shader_es31" ],
>
> --
> 2.6.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list