[Mesa-dev] [PATCH v3 11/14] st/mesa: expose ARB_compute_variable_group_size
Marek Olšák
maraeo at gmail.com
Wed Sep 28 13:49:54 UTC 2016
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Marek
On Mon, Sep 26, 2016 at 7:23 PM, Samuel Pitoiset
<samuel.pitoiset at gmail.com> wrote:
> This extension is only exposed if the underlying driver supports
> ARB_compute_shader and if PIPE_COMPUTE_MAX_VARIABLE_THREADS_PER_BLOCK
> is set.
>
> v3: - initialize max_variable_threads_per_block to 0
> v2: - expose the ext based on that new cap
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
> src/mesa/state_tracker/st_extensions.c | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
> index ef17aba..024dba8 100644
> --- a/src/mesa/state_tracker/st_extensions.c
> +++ b/src/mesa/state_tracker/st_extensions.c
> @@ -1196,6 +1196,28 @@ void st_init_extensions(struct pipe_screen *screen,
> extensions->ARB_compute_shader =
> extensions->ARB_shader_image_load_store &&
> extensions->ARB_shader_atomic_counters;
> +
> + if (extensions->ARB_compute_shader) {
> + uint64_t max_variable_threads_per_block = 0;
> +
> + screen->get_compute_param(screen, PIPE_SHADER_IR_TGSI,
> + PIPE_COMPUTE_CAP_MAX_VARIABLE_THREADS_PER_BLOCK,
> + &max_variable_threads_per_block);
> +
> + for (i = 0; i < 3; i++) {
> + /* Clamp the values to avoid having a local work group size
> + * greater than the maximum number of invocations.
> + */
> + consts->MaxComputeVariableGroupSize[i] =
> + MIN2(consts->MaxComputeWorkGroupSize[i],
> + max_variable_threads_per_block);
> + }
> + consts->MaxComputeVariableGroupInvocations =
> + max_variable_threads_per_block;
> +
> + extensions->ARB_compute_variable_group_size =
> + max_variable_threads_per_block > 0;
> + }
> }
> }
>
> --
> 2.10.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list