nir: Add gl_WorkGroupID system variable
authorJordan Justen <jordan.l.justen@intel.com>
Fri, 13 Mar 2015 18:37:03 +0000 (11:37 -0700)
committerJordan Justen <jordan.l.justen@intel.com>
Sun, 13 Sep 2015 16:53:16 +0000 (09:53 -0700)
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
src/glsl/nir/nir.c
src/glsl/nir/nir_intrinsics.h
src/glsl/nir/nir_lower_system_values.c

index 1774e1c13f477649ea5b411f0391519869afff8f..96cf94c11d5ad086d8ea394605cf648508a18ac9 100644 (file)
@@ -1459,6 +1459,8 @@ nir_system_value_from_intrinsic(nir_intrinsic_op intrin)
       return SYSTEM_VALUE_SAMPLE_MASK_IN;
    case nir_intrinsic_load_local_invocation_id:
       return SYSTEM_VALUE_LOCAL_INVOCATION_ID;
+   case nir_intrinsic_load_work_group_id:
+      return SYSTEM_VALUE_WORK_GROUP_ID;
    /* FINISHME: Add tessellation intrinsics.
       return SYSTEM_VALUE_TESS_COORD;
       return SYSTEM_VALUE_VERTICES_IN;
index 8396612946234889fc62477d480b90a03fd32b9d..b981df1a71b3f19bbe8fed77493a8c0b829cc5df 100644 (file)
@@ -142,6 +142,7 @@ SYSTEM_VALUE(sample_pos, 2)
 SYSTEM_VALUE(sample_mask_in, 1)
 SYSTEM_VALUE(invocation_id, 1)
 SYSTEM_VALUE(local_invocation_id, 3)
+SYSTEM_VALUE(work_group_id, 3)
 
 /*
  * The format of the indices depends on the type of the load.  For uniforms,
index 91228e367a4bd57985c96b5e174a6f2e611fb673..a656b27a72a8f4f45346401a1ec97dbec8136b27 100644 (file)
@@ -73,6 +73,9 @@ convert_instr(nir_intrinsic_instr *instr)
    case SYSTEM_VALUE_LOCAL_INVOCATION_ID:
       op = nir_intrinsic_load_local_invocation_id;
       break;
+   case SYSTEM_VALUE_WORK_GROUP_ID:
+      op = nir_intrinsic_load_work_group_id;
+      break;
    default:
       unreachable("not reached");
    }