tgsi/ureg: add ureg_DECL_output_layout
For specifying an exact location/component. v2: change the order of parameters (Dave) Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net> (v1) Reviewed-by: Dave Airlie <airlied@redhat.com> (v1)
This commit is contained in:
parent
047a7c7a0b
commit
2b460c750a
|
@ -406,8 +406,9 @@ out:
|
|||
|
||||
|
||||
struct ureg_dst
|
||||
ureg_DECL_output_masked(struct ureg_program *ureg,
|
||||
unsigned name,
|
||||
ureg_DECL_output_layout(struct ureg_program *ureg,
|
||||
unsigned semantic_name,
|
||||
unsigned semantic_index,
|
||||
unsigned index,
|
||||
unsigned usage_mask,
|
||||
unsigned array_id,
|
||||
|
@ -418,22 +419,24 @@ ureg_DECL_output_masked(struct ureg_program *ureg,
|
|||
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) {
|
||||
assert(ureg->output[i].array_id == array_id);
|
||||
if (ureg->output[i].semantic_name == semantic_name &&
|
||||
ureg->output[i].semantic_index == semantic_index) {
|
||||
if (ureg->output[i].array_id == array_id) {
|
||||
ureg->output[i].usage_mask |= usage_mask;
|
||||
goto out;
|
||||
}
|
||||
assert((ureg->output[i].usage_mask & usage_mask) == 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (ureg->nr_outputs < UREG_MAX_OUTPUT) {
|
||||
ureg->output[i].semantic_name = name;
|
||||
ureg->output[i].semantic_index = index;
|
||||
ureg->output[i].semantic_name = semantic_name;
|
||||
ureg->output[i].semantic_index = semantic_index;
|
||||
ureg->output[i].usage_mask = usage_mask;
|
||||
ureg->output[i].first = ureg->nr_output_regs;
|
||||
ureg->output[i].last = ureg->nr_output_regs + array_size - 1;
|
||||
ureg->output[i].first = index;
|
||||
ureg->output[i].last = index + array_size - 1;
|
||||
ureg->output[i].array_id = array_id;
|
||||
ureg->nr_output_regs += array_size;
|
||||
ureg->nr_output_regs = MAX2(ureg->nr_output_regs, index + array_size);
|
||||
ureg->nr_outputs++;
|
||||
}
|
||||
else {
|
||||
|
@ -446,6 +449,19 @@ out:
|
|||
}
|
||||
|
||||
|
||||
struct ureg_dst
|
||||
ureg_DECL_output_masked(struct ureg_program *ureg,
|
||||
unsigned name,
|
||||
unsigned index,
|
||||
unsigned usage_mask,
|
||||
unsigned array_id,
|
||||
unsigned array_size)
|
||||
{
|
||||
return ureg_DECL_output_layout(ureg, name, index,
|
||||
ureg->nr_output_regs, usage_mask, array_id, array_size);
|
||||
}
|
||||
|
||||
|
||||
struct ureg_dst
|
||||
ureg_DECL_output(struct ureg_program *ureg,
|
||||
unsigned name,
|
||||
|
|
|
@ -247,6 +247,15 @@ ureg_DECL_system_value(struct ureg_program *,
|
|||
unsigned semantic_name,
|
||||
unsigned semantic_index);
|
||||
|
||||
struct ureg_dst
|
||||
ureg_DECL_output_layout(struct ureg_program *,
|
||||
unsigned semantic_name,
|
||||
unsigned semantic_index,
|
||||
unsigned index,
|
||||
unsigned usage_mask,
|
||||
unsigned array_id,
|
||||
unsigned array_size);
|
||||
|
||||
struct ureg_dst
|
||||
ureg_DECL_output_masked(struct ureg_program *,
|
||||
unsigned semantic_name,
|
||||
|
|
Loading…
Reference in New Issue