summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-09-30 14:50:40 -0700
committerJason Ekstrand <[email protected]>2018-03-07 12:13:47 -0800
commit752e9697030389e5b09553d55f9c4fc68edf08a2 (patch)
tree4215327bffba6e63fda9c056a8b707cf33b176c3
parent34c60ea02bdcb5ebea1459b71bc94eea3b7b6ac3 (diff)
compiler: Add two new system values for subgroups
This will be required for SPIR-V subgroup support Reviewed-by: Lionel Landwerlin <[email protected]> Reviewed-by: Samuel Iglesias Gonsálvez <[email protected]> Reviewed-by: Iago Toral Quiroga <[email protected]>
-rw-r--r--src/compiler/nir/nir.c8
-rw-r--r--src/compiler/nir/nir_intrinsics.h1
-rw-r--r--src/compiler/shader_enums.c2
-rw-r--r--src/compiler/shader_enums.h8
4 files changed, 19 insertions, 0 deletions
diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c
index bdd8960403c..f5fd1dc586b 100644
--- a/src/compiler/nir/nir.c
+++ b/src/compiler/nir/nir.c
@@ -1969,6 +1969,10 @@ nir_intrinsic_from_system_value(gl_system_value val)
return nir_intrinsic_load_subgroup_le_mask;
case SYSTEM_VALUE_SUBGROUP_LT_MASK:
return nir_intrinsic_load_subgroup_lt_mask;
+ case SYSTEM_VALUE_NUM_SUBGROUPS:
+ return nir_intrinsic_load_num_subgroups;
+ case SYSTEM_VALUE_SUBGROUP_ID:
+ return nir_intrinsic_load_subgroup_id;
case SYSTEM_VALUE_LOCAL_GROUP_SIZE:
return nir_intrinsic_load_local_group_size;
default:
@@ -2040,6 +2044,10 @@ nir_system_value_from_intrinsic(nir_intrinsic_op intrin)
return SYSTEM_VALUE_SUBGROUP_LE_MASK;
case nir_intrinsic_load_subgroup_lt_mask:
return SYSTEM_VALUE_SUBGROUP_LT_MASK;
+ case nir_intrinsic_load_num_subgroups:
+ return SYSTEM_VALUE_NUM_SUBGROUPS;
+ case nir_intrinsic_load_subgroup_id:
+ return SYSTEM_VALUE_SUBGROUP_ID;
case nir_intrinsic_load_local_group_size:
return SYSTEM_VALUE_LOCAL_GROUP_SIZE;
default:
diff --git a/src/compiler/nir/nir_intrinsics.h b/src/compiler/nir/nir_intrinsics.h
index b8a67355900..1a816b46792 100644
--- a/src/compiler/nir/nir_intrinsics.h
+++ b/src/compiler/nir/nir_intrinsics.h
@@ -381,6 +381,7 @@ SYSTEM_VALUE(subgroup_ge_mask, 0, 0, xx, xx, xx)
SYSTEM_VALUE(subgroup_gt_mask, 0, 0, xx, xx, xx)
SYSTEM_VALUE(subgroup_le_mask, 0, 0, xx, xx, xx)
SYSTEM_VALUE(subgroup_lt_mask, 0, 0, xx, xx, xx)
+SYSTEM_VALUE(num_subgroups, 1, 0, xx, xx, xx)
SYSTEM_VALUE(subgroup_id, 1, 0, xx, xx, xx)
SYSTEM_VALUE(local_group_size, 3, 0, xx, xx, xx)
diff --git a/src/compiler/shader_enums.c b/src/compiler/shader_enums.c
index 62c1ac1f073..d0ff11b41e2 100644
--- a/src/compiler/shader_enums.c
+++ b/src/compiler/shader_enums.c
@@ -210,6 +210,8 @@ gl_system_value_name(gl_system_value sysval)
ENUM(SYSTEM_VALUE_SUBGROUP_GT_MASK),
ENUM(SYSTEM_VALUE_SUBGROUP_LE_MASK),
ENUM(SYSTEM_VALUE_SUBGROUP_LT_MASK),
+ ENUM(SYSTEM_VALUE_NUM_SUBGROUPS),
+ ENUM(SYSTEM_VALUE_SUBGROUP_ID),
ENUM(SYSTEM_VALUE_VERTEX_ID),
ENUM(SYSTEM_VALUE_INSTANCE_ID),
ENUM(SYSTEM_VALUE_INSTANCE_INDEX),
diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h
index 64fb68828ed..2aedbb9b3fa 100644
--- a/src/compiler/shader_enums.h
+++ b/src/compiler/shader_enums.h
@@ -397,6 +397,14 @@ typedef enum
SYSTEM_VALUE_SUBGROUP_LT_MASK,
/*@}*/
+ /**
+ * Builtin variables added by VK_KHR_subgroups
+ */
+ /*@{*/
+ SYSTEM_VALUE_NUM_SUBGROUPS,
+ SYSTEM_VALUE_SUBGROUP_ID,
+ /*@}*/
+
/*@}*/
/**