gallium: add GS_INVOCATIONS property

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Ilia Mirkin
2014-04-23 23:14:55 -04:00
parent 76db20fc67
commit 4be146b108
3 changed files with 19 additions and 1 deletions

View File

@@ -1468,6 +1468,14 @@ static void emit_decls( struct ureg_program *ureg )
ureg->property_gs_max_vertices); 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) { if (ureg->property_fs_coord_origin) {
assert(ureg->processor == TGSI_PROCESSOR_FRAGMENT); 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_input_prim = ~0;
ureg->property_gs_output_prim = ~0; ureg->property_gs_output_prim = ~0;
ureg->property_gs_max_vertices = ~0; ureg->property_gs_max_vertices = ~0;
ureg->property_gs_invocations = ~0;
ureg->free_temps = util_bitmask_create(); ureg->free_temps = util_bitmask_create();
if (ureg->free_temps == NULL) if (ureg->free_temps == NULL)

View File

@@ -2765,6 +2765,14 @@ distance outputs.
This is useful for APIs that don't have UCPs and where clip distances written This is useful for APIs that don't have UCPs and where clip distances written
by a shader cannot be disabled. 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 Texture Sampling and Texture Formats
------------------------------------ ------------------------------------

View File

@@ -236,7 +236,8 @@ union tgsi_immediate_data
#define TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS 5 #define TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS 5
#define TGSI_PROPERTY_FS_DEPTH_LAYOUT 6 #define TGSI_PROPERTY_FS_DEPTH_LAYOUT 6
#define TGSI_PROPERTY_VS_PROHIBIT_UCPS 7 #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 { struct tgsi_property {
unsigned Type : 4; /**< TGSI_TOKEN_TYPE_PROPERTY */ unsigned Type : 4; /**< TGSI_TOKEN_TYPE_PROPERTY */