[Mesa-dev] [PATCH 44/61] spirv: Use the LOCAL_GROUP_SIZE system value
Jason Ekstrand
jason at jlekstrand.net
Fri Mar 23 21:42:50 UTC 2018
---
src/compiler/spirv/vtn_variables.c | 17 ++---------------
1 file changed, 2 insertions(+), 15 deletions(-)
diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index aeb09dd..26b2adf 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -1261,8 +1261,8 @@ vtn_get_builtin_location(struct vtn_builder *b,
set_mode_system_value(b, mode);
break;
case SpvBuiltInWorkgroupSize:
- /* This should already be handled */
- vtn_fail("unsupported builtin");
+ *location = SYSTEM_VALUE_LOCAL_GROUP_SIZE;
+ set_mode_system_value(b, mode);
break;
case SpvBuiltInWorkgroupId:
*location = SYSTEM_VALUE_WORK_GROUP_ID;
@@ -1392,19 +1392,6 @@ apply_var_decoration(struct vtn_builder *b, nir_variable *nir_var,
case SpvDecorationBuiltIn: {
SpvBuiltIn builtin = dec->literals[0];
- if (builtin == SpvBuiltInWorkgroupSize) {
- /* This shouldn't be a builtin. It's actually a constant. */
- nir_var->data.mode = nir_var_global;
- nir_var->data.read_only = true;
-
- nir_constant *c = rzalloc(nir_var, nir_constant);
- c->values[0].u32[0] = b->shader->info.cs.local_size[0];
- c->values[0].u32[1] = b->shader->info.cs.local_size[1];
- c->values[0].u32[2] = b->shader->info.cs.local_size[2];
- nir_var->constant_initializer = c;
- break;
- }
-
nir_variable_mode mode = nir_var->data.mode;
vtn_get_builtin_location(b, builtin, &nir_var->data.location, &mode);
nir_var->data.mode = mode;
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list