tgsi: Support system values in ureg.

This commit is contained in:
Michal Krol 2009-12-30 21:52:01 +01:00
parent 6481f40eec
commit 5754185d39
2 changed files with 42 additions and 0 deletions

View file

@ -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,

View file

@ -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,