mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 17:58:26 +02:00
tgsi: Support system values in ureg.
This commit is contained in:
parent
6481f40eec
commit
5754185d39
2 changed files with 42 additions and 0 deletions
|
|
@ -64,6 +64,7 @@ struct ureg_tokens {
|
|||
};
|
||||
|
||||
#define UREG_MAX_INPUT PIPE_MAX_ATTRIBS
|
||||
#define UREG_MAX_SYSTEM_VALUE PIPE_MAX_ATTRIBS
|
||||
#define UREG_MAX_OUTPUT PIPE_MAX_ATTRIBS
|
||||
#define UREG_MAX_CONSTANT_RANGE 32
|
||||
#define UREG_MAX_IMMEDIATE 32
|
||||
|
|
@ -94,6 +95,13 @@ struct ureg_program
|
|||
} gs_input[UREG_MAX_INPUT];
|
||||
unsigned nr_gs_inputs;
|
||||
|
||||
struct {
|
||||
unsigned index;
|
||||
unsigned semantic_name;
|
||||
unsigned semantic_index;
|
||||
} system_value[UREG_MAX_SYSTEM_VALUE];
|
||||
unsigned nr_system_values;
|
||||
|
||||
struct {
|
||||
unsigned semantic_name;
|
||||
unsigned semantic_index;
|
||||
|
|
@ -299,6 +307,25 @@ ureg_DECL_gs_input(struct ureg_program *ureg,
|
|||
}
|
||||
|
||||
|
||||
struct ureg_src
|
||||
ureg_DECL_system_value(struct ureg_program *ureg,
|
||||
unsigned index,
|
||||
unsigned semantic_name,
|
||||
unsigned semantic_index)
|
||||
{
|
||||
if (ureg->nr_system_values < UREG_MAX_SYSTEM_VALUE) {
|
||||
ureg->system_value[ureg->nr_system_values].index = index;
|
||||
ureg->system_value[ureg->nr_system_values].semantic_name = semantic_name;
|
||||
ureg->system_value[ureg->nr_system_values].semantic_index = semantic_index;
|
||||
ureg->nr_system_values++;
|
||||
} else {
|
||||
set_bad(ureg);
|
||||
}
|
||||
|
||||
return ureg_src_register(TGSI_FILE_SYSTEM_VALUE, index);
|
||||
}
|
||||
|
||||
|
||||
struct ureg_dst
|
||||
ureg_DECL_output( struct ureg_program *ureg,
|
||||
unsigned name,
|
||||
|
|
@ -1003,6 +1030,15 @@ static void emit_decls( struct ureg_program *ureg )
|
|||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < ureg->nr_system_values; i++) {
|
||||
emit_decl(ureg,
|
||||
TGSI_FILE_SYSTEM_VALUE,
|
||||
ureg->system_value[i].index,
|
||||
ureg->system_value[i].semantic_name,
|
||||
ureg->system_value[i].semantic_index,
|
||||
TGSI_INTERPOLATE_CONSTANT);
|
||||
}
|
||||
|
||||
for (i = 0; i < ureg->nr_outputs; i++) {
|
||||
emit_decl( ureg,
|
||||
TGSI_FILE_OUTPUT,
|
||||
|
|
|
|||
|
|
@ -137,6 +137,12 @@ struct ureg_src
|
|||
ureg_DECL_gs_input(struct ureg_program *,
|
||||
unsigned index);
|
||||
|
||||
struct ureg_src
|
||||
ureg_DECL_system_value(struct ureg_program *,
|
||||
unsigned index,
|
||||
unsigned semantic_name,
|
||||
unsigned semantic_index);
|
||||
|
||||
struct ureg_dst
|
||||
ureg_DECL_output( struct ureg_program *,
|
||||
unsigned semantic_name,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue