mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 15:20:17 +01:00
st/mesa: expose ARB_compute_variable_group_size
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@gmail.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
dfd7734cb7
commit
590734fa0d
1 changed files with 22 additions and 0 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue