mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 15:00:10 +01:00
svga: allow non-contiguous VS input declarations
This fixes a glDrawPixels regression since b63fe0552b. The new
quad-drawing utility code uses 3 vertex attributes (xyz, rgba, st).
For glDrawPixels path we don't use the rgba attribute so there's a
gap in the TGSI VS input declarations (INPUT[0] = pos, INPUT[2] =
texcoord). The TGSI->VGPU10 translations code did not handle this
correctly. I missed this because my VM was configured for HWv11
while testing.
Another way to fix this would be to change the tgsi_scan.c code so
that the tgsi_shader_info::num_inputs (and num_outputs) included
the unused inputs/outputs. These counts would then actually be
"max input register index + 1" rather than "number of used inputs".
But that change could impact all drivers so put it off for now.
No regressions found with piglit or typical GL apps.
v2: also update alloc_system_value_index() to use info.file_max[]
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
This commit is contained in:
parent
a3e3c3e621
commit
2f3d06d9f9
1 changed files with 2 additions and 2 deletions
|
|
@ -1782,7 +1782,7 @@ alloc_immediate_int4(struct svga_shader_emitter_v10 *emit,
|
|||
static unsigned
|
||||
alloc_system_value_index(struct svga_shader_emitter_v10 *emit, unsigned index)
|
||||
{
|
||||
const unsigned n = emit->info.num_inputs + index;
|
||||
const unsigned n = emit->info.file_max[TGSI_FILE_INPUT] + 1 + index;
|
||||
assert(index < Elements(emit->system_value_indexes));
|
||||
emit->system_value_indexes[index] = n;
|
||||
return n;
|
||||
|
|
@ -2446,7 +2446,7 @@ emit_input_declarations(struct svga_shader_emitter_v10 *emit)
|
|||
else {
|
||||
assert(emit->unit == PIPE_SHADER_VERTEX);
|
||||
|
||||
for (i = 0; i < emit->info.num_inputs; i++) {
|
||||
for (i = 0; i < emit->info.file_max[TGSI_FILE_INPUT] + 1; i++) {
|
||||
unsigned usage_mask = emit->info.input_usage_mask[i];
|
||||
unsigned index = i;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue