[GPU] Reuse base+index*stride in vfetch_mini instead of reloading the index GPR

The wheel shader in 4D530910 does vfetch_full to r0 with the index from r0.x, and then vfetch_mini.
Thanks @Gliniak for the finding :3
Also small formatting cleanup in commented-out code.
This commit is contained in:
Triang3l
2022-01-09 14:58:38 +03:00
parent 600c14b3f0
commit d6188c5d7e
7 changed files with 103 additions and 66 deletions

View File

@@ -440,6 +440,13 @@ struct ParsedVertexFetchInstruction {
// Number of source operands.
size_t operand_count = 0;
// Describes each source operand.
// Note that for vfetch_mini, which inherits the operands from vfetch_full,
// the index operand register may been overwritten between the vfetch_full and
// the vfetch_mini (happens in 4D530910 for wheels), but that should have no
// effect on the index actually used for fetching. A copy of the index
// therefore must be stored by vfetch_full (the base address, stride and
// rounding may be pre-applied to it since they will be the same in the
// vfetch_full and all its vfetch_mini instructions).
InstructionOperand operands[2];
struct Attributes {