summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIlia Mirkin <[email protected]>2014-04-23 23:14:55 -0400
committerIlia Mirkin <[email protected]>2014-04-26 11:57:09 -0400
commit4be146b1088c33ca377a2cf8a01e73c7f66732f7 (patch)
tree46c2509f5628445b8107195e2b96efbca65388ff /src
parent76db20fc672dafd70d40cbb184ae8793e72c7f80 (diff)
gallium: add GS_INVOCATIONS property
Signed-off-by: Ilia Mirkin <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_ureg.c9
-rw-r--r--src/gallium/docs/source/tgsi.rst8
-rw-r--r--src/gallium/include/pipe/p_shader_tokens.h3
3 files changed, 19 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_ureg.c b/src/gallium/auxiliary/tgsi/tgsi_ureg.c
index 38cce584900..2bf93ee6adb 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_ureg.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.c
@@ -1468,6 +1468,14 @@ static void emit_decls( struct ureg_program *ureg )
ureg->property_gs_max_vertices);
}
+ if (ureg->property_gs_invocations != ~0) {
+ assert(ureg->processor == TGSI_PROCESSOR_GEOMETRY);
+
+ emit_property(ureg,
+ TGSI_PROPERTY_GS_INVOCATIONS,
+ ureg->property_gs_invocations);
+ }
+
if (ureg->property_fs_coord_origin) {
assert(ureg->processor == TGSI_PROCESSOR_FRAGMENT);
@@ -1757,6 +1765,7 @@ struct ureg_program *ureg_create( unsigned processor )
ureg->property_gs_input_prim = ~0;
ureg->property_gs_output_prim = ~0;
ureg->property_gs_max_vertices = ~0;
+ ureg->property_gs_invocations = ~0;
ureg->free_temps = util_bitmask_create();
if (ureg->free_temps == NULL)
diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst
index 170f83e20ac..0ea0759aa1c 100644
--- a/src/gallium/docs/source/tgsi.rst
+++ b/src/gallium/docs/source/tgsi.rst
@@ -2765,6 +2765,14 @@ distance outputs.
This is useful for APIs that don't have UCPs and where clip distances written
by a shader cannot be disabled.
+GS_INVOCATIONS
+""""""""""""""
+
+Specifies the number of times a geometry shader should be executed for each
+input primitive. Each invocation will have a different
+TGSI_SEMANTIC_INVOCATIONID system value set. If not specified, assumed to
+be 1.
+
Texture Sampling and Texture Formats
------------------------------------
diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h
index 1903d5318a1..b537166e93c 100644
--- a/src/gallium/include/pipe/p_shader_tokens.h
+++ b/src/gallium/include/pipe/p_shader_tokens.h
@@ -236,7 +236,8 @@ union tgsi_immediate_data
#define TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS 5
#define TGSI_PROPERTY_FS_DEPTH_LAYOUT 6
#define TGSI_PROPERTY_VS_PROHIBIT_UCPS 7
-#define TGSI_PROPERTY_COUNT 8
+#define TGSI_PROPERTY_GS_INVOCATIONS 8
+#define TGSI_PROPERTY_COUNT 9
struct tgsi_property {
unsigned Type : 4; /**< TGSI_TOKEN_TYPE_PROPERTY */