gallium: add support for clip distances
This commit is contained in:
parent
f82d40d4b1
commit
6951870e57
|
@ -70,7 +70,8 @@ const char *tgsi_semantic_names[TGSI_SEMANTIC_COUNT] =
|
|||
"PRIM_ID",
|
||||
"INSTANCEID",
|
||||
"VERTEXID",
|
||||
"STENCIL"
|
||||
"STENCIL",
|
||||
"CLIPDIST"
|
||||
};
|
||||
|
||||
const char *tgsi_texture_names[TGSI_TEXTURE_COUNT] =
|
||||
|
|
|
@ -122,6 +122,7 @@ struct ureg_program
|
|||
struct {
|
||||
unsigned semantic_name;
|
||||
unsigned semantic_index;
|
||||
unsigned usage_mask; /* = TGSI_WRITEMASK_* */
|
||||
} output[UREG_MAX_OUTPUT];
|
||||
unsigned nr_outputs;
|
||||
|
||||
|
@ -396,21 +397,27 @@ ureg_DECL_system_value(struct ureg_program *ureg,
|
|||
|
||||
|
||||
struct ureg_dst
|
||||
ureg_DECL_output( struct ureg_program *ureg,
|
||||
unsigned name,
|
||||
unsigned index )
|
||||
ureg_DECL_output_masked( struct ureg_program *ureg,
|
||||
unsigned name,
|
||||
unsigned index,
|
||||
unsigned usage_mask )
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
assert(usage_mask != 0);
|
||||
|
||||
for (i = 0; i < ureg->nr_outputs; i++) {
|
||||
if (ureg->output[i].semantic_name == name &&
|
||||
ureg->output[i].semantic_index == index)
|
||||
ureg->output[i].semantic_index == index) {
|
||||
ureg->output[i].usage_mask |= usage_mask;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
if (ureg->nr_outputs < UREG_MAX_OUTPUT) {
|
||||
ureg->output[i].semantic_name = name;
|
||||
ureg->output[i].semantic_index = index;
|
||||
ureg->output[i].usage_mask = usage_mask;
|
||||
ureg->nr_outputs++;
|
||||
}
|
||||
else {
|
||||
|
@ -422,6 +429,15 @@ out:
|
|||
}
|
||||
|
||||
|
||||
struct ureg_dst
|
||||
ureg_DECL_output( struct ureg_program *ureg,
|
||||
unsigned name,
|
||||
unsigned index )
|
||||
{
|
||||
return ureg_DECL_output_masked(ureg, name, index, TGSI_WRITEMASK_XYZW);
|
||||
}
|
||||
|
||||
|
||||
/* Returns a new constant register. Keep track of which have been
|
||||
* referred to so that we can emit decls later.
|
||||
*
|
||||
|
@ -1181,7 +1197,8 @@ emit_decl_semantic(struct ureg_program *ureg,
|
|||
unsigned file,
|
||||
unsigned index,
|
||||
unsigned semantic_name,
|
||||
unsigned semantic_index)
|
||||
unsigned semantic_index,
|
||||
unsigned usage_mask)
|
||||
{
|
||||
union tgsi_any_token *out = get_tokens(ureg, DOMAIN_DECL, 3);
|
||||
|
||||
|
@ -1189,7 +1206,7 @@ emit_decl_semantic(struct ureg_program *ureg,
|
|||
out[0].decl.Type = TGSI_TOKEN_TYPE_DECLARATION;
|
||||
out[0].decl.NrTokens = 3;
|
||||
out[0].decl.File = file;
|
||||
out[0].decl.UsageMask = TGSI_WRITEMASK_XYZW; /* FIXME! */
|
||||
out[0].decl.UsageMask = usage_mask;
|
||||
out[0].decl.Semantic = 1;
|
||||
|
||||
out[1].value = 0;
|
||||
|
@ -1427,7 +1444,8 @@ static void emit_decls( struct ureg_program *ureg )
|
|||
TGSI_FILE_INPUT,
|
||||
ureg->gs_input[i].index,
|
||||
ureg->gs_input[i].semantic_name,
|
||||
ureg->gs_input[i].semantic_index);
|
||||
ureg->gs_input[i].semantic_index,
|
||||
TGSI_WRITEMASK_XYZW);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1436,7 +1454,8 @@ static void emit_decls( struct ureg_program *ureg )
|
|||
TGSI_FILE_SYSTEM_VALUE,
|
||||
ureg->system_value[i].index,
|
||||
ureg->system_value[i].semantic_name,
|
||||
ureg->system_value[i].semantic_index);
|
||||
ureg->system_value[i].semantic_index,
|
||||
TGSI_WRITEMASK_XYZW);
|
||||
}
|
||||
|
||||
for (i = 0; i < ureg->nr_outputs; i++) {
|
||||
|
@ -1444,7 +1463,8 @@ static void emit_decls( struct ureg_program *ureg )
|
|||
TGSI_FILE_OUTPUT,
|
||||
i,
|
||||
ureg->output[i].semantic_name,
|
||||
ureg->output[i].semantic_index);
|
||||
ureg->output[i].semantic_index,
|
||||
ureg->output[i].usage_mask);
|
||||
}
|
||||
|
||||
for (i = 0; i < ureg->nr_samplers; i++) {
|
||||
|
|
|
@ -228,6 +228,12 @@ ureg_DECL_system_value(struct ureg_program *,
|
|||
unsigned semantic_name,
|
||||
unsigned semantic_index);
|
||||
|
||||
struct ureg_dst
|
||||
ureg_DECL_output_masked( struct ureg_program *,
|
||||
unsigned semantic_name,
|
||||
unsigned semantic_index,
|
||||
unsigned usage_mask );
|
||||
|
||||
struct ureg_dst
|
||||
ureg_DECL_output( struct ureg_program *,
|
||||
unsigned semantic_name,
|
||||
|
|
|
@ -146,7 +146,8 @@ struct tgsi_declaration_dimension
|
|||
#define TGSI_SEMANTIC_INSTANCEID 10
|
||||
#define TGSI_SEMANTIC_VERTEXID 11
|
||||
#define TGSI_SEMANTIC_STENCIL 12
|
||||
#define TGSI_SEMANTIC_COUNT 13 /**< number of semantic values */
|
||||
#define TGSI_SEMANTIC_CLIPDIST 13
|
||||
#define TGSI_SEMANTIC_COUNT 14 /**< number of semantic values */
|
||||
|
||||
struct tgsi_declaration_semantic
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue