nir/spirv: Add support for more CS system values
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 22 Oct 2015 01:39:06 +0000 (18:39 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 22 Oct 2015 01:39:06 +0000 (18:39 -0700)
src/glsl/nir/spirv_to_nir.c

index 63f58bc2b2a4759ff3166d5d2ca33713b810f1b9..a3d38831267f48419e1ec9688c521781a689b48a 100644 (file)
@@ -708,18 +708,24 @@ vtn_get_builtin_location(SpvBuiltIn builtin, int *location,
       *location = FRAG_RESULT_DEPTH;
       *mode = nir_var_shader_out;
       break;
-   case SpvBuiltInHelperInvocation:
-      unreachable("unsupported builtin"); /* XXX */
-      break;
    case SpvBuiltInNumWorkgroups:
    case SpvBuiltInWorkgroupSize:
       /* these are constants, need to be handled specially */
       unreachable("unsupported builtin");
-   case SpvBuiltInWorkgroupId:
-   case SpvBuiltInLocalInvocationId:
+      break;
    case SpvBuiltInGlobalInvocationId:
    case SpvBuiltInLocalInvocationIndex:
-      unreachable("no compute shader support");
+      /* these are computed values, need to be handled specially */
+      unreachable("unsupported builtin");
+   case SpvBuiltInWorkgroupId:
+      *location = SYSTEM_VALUE_WORK_GROUP_ID;
+      *mode = nir_var_system_value;
+      break;
+   case SpvBuiltInLocalInvocationId:
+      *location = SYSTEM_VALUE_LOCAL_INVOCATION_ID;
+      *mode = nir_var_system_value;
+      break;
+   case SpvBuiltInHelperInvocation:
    default:
       unreachable("unsupported builtin");
    }