draw/tgsi: fix geometry shader input/output swizzling
This commit is contained in:
parent
afd01366b0
commit
49155c3264
|
@ -210,6 +210,7 @@ static void draw_fetch_geometry_input(struct draw_geometry_shader *shader,
|
||||||
const float (*input)[4];
|
const float (*input)[4];
|
||||||
input = (const float (*)[4])(
|
input = (const float (*)[4])(
|
||||||
(const char *)prim_ptr + (k * input_vertex_stride));
|
(const char *)prim_ptr + (k * input_vertex_stride));
|
||||||
|
vidx = k * TGSI_EXEC_MAX_INPUT_ATTRIBS + slot;
|
||||||
debug_printf("\t%d)(%d) Input vert:\n", vidx, k);
|
debug_printf("\t%d)(%d) Input vert:\n", vidx, k);
|
||||||
#if 1
|
#if 1
|
||||||
assert(!util_is_inf_or_nan(input[vs_slot][0]));
|
assert(!util_is_inf_or_nan(input[vs_slot][0]));
|
||||||
|
|
|
@ -292,6 +292,14 @@ tgsi_exec_machine_bind_shader(
|
||||||
* sizeof(struct tgsi_full_declaration));
|
* sizeof(struct tgsi_full_declaration));
|
||||||
maxDeclarations += 10;
|
maxDeclarations += 10;
|
||||||
}
|
}
|
||||||
|
if (parse.FullToken.FullDeclaration.Declaration.File == TGSI_FILE_OUTPUT) {
|
||||||
|
unsigned reg;
|
||||||
|
for (reg = parse.FullToken.FullDeclaration.Range.First;
|
||||||
|
reg <= parse.FullToken.FullDeclaration.Range.Last;
|
||||||
|
++reg) {
|
||||||
|
++mach->NumOutputs;
|
||||||
|
}
|
||||||
|
}
|
||||||
memcpy(declarations + numDeclarations,
|
memcpy(declarations + numDeclarations,
|
||||||
&parse.FullToken.FullDeclaration,
|
&parse.FullToken.FullDeclaration,
|
||||||
sizeof(declarations[0]));
|
sizeof(declarations[0]));
|
||||||
|
@ -1471,7 +1479,7 @@ store_dest(
|
||||||
dst = &mach->Outputs[offset + index].xyzw[chan_index];
|
dst = &mach->Outputs[offset + index].xyzw[chan_index];
|
||||||
#if 0
|
#if 0
|
||||||
if (TGSI_PROCESSOR_GEOMETRY == mach->Processor) {
|
if (TGSI_PROCESSOR_GEOMETRY == mach->Processor) {
|
||||||
fprintf(stderr, "STORING OUT[%d] mask(%d), = (", index, execmask);
|
fprintf(stderr, "STORING OUT[%d] mask(%d), = (", offset + index, execmask);
|
||||||
for (i = 0; i < QUAD_SIZE; i++)
|
for (i = 0; i < QUAD_SIZE; i++)
|
||||||
if (execmask & (1 << i))
|
if (execmask & (1 << i))
|
||||||
fprintf(stderr, "%f, ", chan->f[i]);
|
fprintf(stderr, "%f, ", chan->f[i]);
|
||||||
|
|
Loading…
Reference in New Issue