diff options
author | Ilia Mirkin <[email protected]> | 2014-04-23 23:14:55 -0400 |
---|---|---|
committer | Ilia Mirkin <[email protected]> | 2014-04-26 11:57:09 -0400 |
commit | 4be146b1088c33ca377a2cf8a01e73c7f66732f7 (patch) | |
tree | 46c2509f5628445b8107195e2b96efbca65388ff | |
parent | 76db20fc672dafd70d40cbb184ae8793e72c7f80 (diff) |
gallium: add GS_INVOCATIONS property
Signed-off-by: Ilia Mirkin <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_ureg.c | 9 | ||||
-rw-r--r-- | src/gallium/docs/source/tgsi.rst | 8 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_shader_tokens.h | 3 |
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 */ |