[Mesa-dev] [PATCH 16/17] st/mesa: implement limits for ARB_compute_shader
Marek Olšák
maraeo at gmail.com
Tue Jan 26 03:41:59 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:
> According to the spec, this also increases the following minimum values:
> - MAX_COMBINED_TEXTURE_IMAGE_UNITS 96 (6*16), was 80
> - MAX_UNIFORM_BUFFER_BINDINGS 72 (6*12), was 60
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
> src/mesa/state_tracker/st_extensions.c | 24 ++++++++++++++++++++++--
> 1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
> index bdb1fa1..2374dcc 100644
> --- a/src/mesa/state_tracker/st_extensions.c
> +++ b/src/mesa/state_tracker/st_extensions.c
> @@ -278,7 +278,8 @@ void st_init_limits(struct pipe_screen *screen,
> c->Program[MESA_SHADER_TESS_CTRL].MaxTextureImageUnits +
> c->Program[MESA_SHADER_TESS_EVAL].MaxTextureImageUnits +
> c->Program[MESA_SHADER_GEOMETRY].MaxTextureImageUnits +
> - c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits,
> + c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits +
> + c->Program[MESA_SHADER_COMPUTE].MaxTextureImageUnits,
> MAX_COMBINED_TEXTURE_IMAGE_UNITS);
>
> /* This depends on program constants. */
> @@ -338,7 +339,8 @@ void st_init_limits(struct pipe_screen *screen,
> c->Program[MESA_SHADER_TESS_CTRL].MaxUniformBlocks +
> c->Program[MESA_SHADER_TESS_EVAL].MaxUniformBlocks +
> c->Program[MESA_SHADER_GEOMETRY].MaxUniformBlocks +
> - c->Program[MESA_SHADER_FRAGMENT].MaxUniformBlocks;
> + c->Program[MESA_SHADER_FRAGMENT].MaxUniformBlocks +
> + c->Program[MESA_SHADER_COMPUTE].MaxUniformBlocks;
> assert(c->MaxCombinedUniformBlocks <= MAX_COMBINED_UNIFORM_BUFFERS);
> }
>
> @@ -1016,4 +1018,22 @@ void st_init_extensions(struct pipe_screen *screen,
> if ((ST_DEBUG & DEBUG_GREMEDY) &&
> screen->get_param(screen, PIPE_CAP_STRING_MARKER))
> extensions->GREMEDY_string_marker = GL_TRUE;
> +
> + if (extensions->ARB_compute_shader) {
> + uint64_t grid_size[3], block_size[3];
> +
> + screen->get_compute_param(screen, PIPE_COMPUTE_CAP_MAX_GRID_SIZE,
> + grid_size);
> + screen->get_compute_param(screen, PIPE_COMPUTE_CAP_MAX_BLOCK_SIZE,
> + block_size);
> + screen->get_compute_param(screen, PIPE_COMPUTE_CAP_MAX_THREADS_PER_BLOCK,
> + &consts->MaxComputeWorkGroupInvocations);
> + screen->get_compute_param(screen, PIPE_COMPUTE_CAP_MAX_LOCAL_SIZE,
> + &consts->MaxComputeSharedMemorySize);
> +
> + for (i = 0; i < 3; i++) {
> + consts->MaxComputeWorkGroupCount[i] = grid_size[i];
> + consts->MaxComputeWorkGroupSize[i] = block_size[i];
> + }
> + }
> }
> --
> 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