Mesa (master): st/mesa: expose ARB_compute_variable_group_size
Samuel Pitoiset
hakzsam at kemper.freedesktop.org
Thu Oct 6 22:25:22 UTC 2016
Module: Mesa
Branch: master
Commit: 590734fa0d2c97035eae33278cce6065c98b880f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=590734fa0d2c97035eae33278cce6065c98b880f
Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date: Wed Sep 7 18:00:16 2016 +0200
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 at gmail.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.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 2282dc7..b9befa1 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;
+ }
}
}
More information about the mesa-commit
mailing list