[Mesa-dev] [PATCH 11/13] nir/vtn: implement BuiltInGlobalSize
Rob Clark
robdclark at gmail.com
Wed Feb 28 19:51:41 UTC 2018
From: Karol Herbst <kherbst at redhat.com>
Signed-off-by: Rob Clark <robdclark at gmail.com>
---
src/compiler/nir/nir_lower_system_values.c | 8 ++++++++
src/compiler/shader_enums.c | 1 +
src/compiler/shader_enums.h | 2 ++
src/compiler/spirv/vtn_variables.c | 4 ++++
4 files changed, 15 insertions(+)
diff --git a/src/compiler/nir/nir_lower_system_values.c b/src/compiler/nir/nir_lower_system_values.c
index 3594f4ae5ce..f458a87e5aa 100644
--- a/src/compiler/nir/nir_lower_system_values.c
+++ b/src/compiler/nir/nir_lower_system_values.c
@@ -133,6 +133,14 @@ convert_block(nir_block *block, nir_builder *b)
break;
}
+ case SYSTEM_VALUE_GLOBAL_SIZE: {
+ nir_ssa_def *group_size = nir_load_local_group_size(b);
+ nir_ssa_def *num_work_groups = nir_load_num_work_groups(b);
+ sysval = nir_imul(b, group_size, num_work_groups);
+
+ break;
+ }
+
default:
break;
}
diff --git a/src/compiler/shader_enums.c b/src/compiler/shader_enums.c
index 2179c475abd..aa80e1fb6cf 100644
--- a/src/compiler/shader_enums.c
+++ b/src/compiler/shader_enums.c
@@ -234,6 +234,7 @@ gl_system_value_name(gl_system_value sysval)
ENUM(SYSTEM_VALUE_NUM_WORK_GROUPS),
ENUM(SYSTEM_VALUE_VIEW_INDEX),
ENUM(SYSTEM_VALUE_VERTEX_CNT),
+ ENUM(SYSTEM_VALUE_GLOBAL_SIZE),
};
STATIC_ASSERT(ARRAY_SIZE(names) == SYSTEM_VALUE_MAX);
return NAME(sysval);
diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h
index ac83c65b30c..69afb7dfac4 100644
--- a/src/compiler/shader_enums.h
+++ b/src/compiler/shader_enums.h
@@ -567,6 +567,8 @@ typedef enum
*/
SYSTEM_VALUE_VERTEX_CNT,
+ SYSTEM_VALUE_GLOBAL_SIZE,
+
SYSTEM_VALUE_MAX /**< Number of values */
} gl_system_value;
diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index 62f0592690b..9680d074131 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -1294,6 +1294,10 @@ vtn_get_builtin_location(struct vtn_builder *b,
*location = SYSTEM_VALUE_VIEW_INDEX;
set_mode_system_value(b, mode);
break;
+ case SpvBuiltInGlobalSize:
+ *location = SYSTEM_VALUE_GLOBAL_SIZE;
+ set_mode_system_value(b, mode);
+ break;
default:
vtn_fail("unsupported builtin");
}
--
2.14.3
More information about the mesa-dev
mailing list