From: Jason Ekstrand Date: Thu, 22 Mar 2018 00:20:00 +0000 (-0700) Subject: spirv: Use the LOCAL_GROUP_SIZE system value X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=14e0a222d959523252a300aec8dc94abe7d64529;p=mesa.git spirv: Use the LOCAL_GROUP_SIZE system value Reviewed-by: Caio Marcelo de Oliveira Filho --- diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c index b2897407fb1..0673fe80675 100644 --- a/src/compiler/spirv/vtn_variables.c +++ b/src/compiler/spirv/vtn_variables.c @@ -1276,8 +1276,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; @@ -1407,19 +1407,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;