summaryrefslogtreecommitdiffstats
path: root/src/intel/compiler/brw_compiler.h
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2019-02-22 10:48:39 -0600
committerJason Ekstrand <[email protected]>2019-07-24 12:55:40 -0500
commitc84b8eeeac30ec033847a3e13d05d1162e78daf3 (patch)
tree2fba023f049627a457343e8664566852f6baee9f /src/intel/compiler/brw_compiler.h
parent1981460af2c17d55c17be2475a28bbf711a80c79 (diff)
intel/compiler: Be more conservative about subgroup sizes in GL
The rules for gl_SubgroupSize in Vulkan require that it be a constant that can be queried through the API. However, all GL requires is that it's a uniform. Instead of always claiming that the subgroup size in the shader is 32 in GL like we have to do for Vulkan, claim 8 for geometry stages, the maximum for fragment shaders, and the actual size for compute. Reviewed-by: Caio Marcelo de Oliveira Filho <[email protected]>
Diffstat (limited to 'src/intel/compiler/brw_compiler.h')
-rw-r--r--src/intel/compiler/brw_compiler.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/intel/compiler/brw_compiler.h b/src/intel/compiler/brw_compiler.h
index 8f8cca79deb..ba95df5b7dc 100644
--- a/src/intel/compiler/brw_compiler.h
+++ b/src/intel/compiler/brw_compiler.h
@@ -203,9 +203,18 @@ struct brw_sampler_prog_key_data {
float scale_factors[32];
};
+/** An enum representing what kind of input gl_SubgroupSize is. */
+enum PACKED brw_subgroup_size_type
+{
+ BRW_SUBGROUP_SIZE_API_CONSTANT, /**< Vulkan behavior */
+ BRW_SUBGROUP_SIZE_UNIFORM, /**< OpenGL behavior */
+};
+
struct brw_base_prog_key {
unsigned program_string_id;
+ enum brw_subgroup_size_type subgroup_size_type;
+
struct brw_sampler_prog_key_data tex;
};