diff --git a/chip/pm4defs.pas b/chip/pm4defs.pas index b6fa6305..176e8ff9 100644 --- a/chip/pm4defs.pas +++ b/chip/pm4defs.pas @@ -592,6 +592,11 @@ type REG_DATA:packed record end; end; + PPM4CMDDRAWINDEXBUFFERSIZE=^TPM4CMDDRAWINDEXBUFFERSIZE; + TPM4CMDDRAWINDEXBUFFERSIZE=packed record + numIndices:DWORD; + end; + PPM4CMDDRAWINDEX2=^TPM4CMDDRAWINDEX2; TPM4CMDDRAWINDEX2=packed record maxSize :DWORD; // VGT_DMA_MAX_SIZE diff --git a/chip/ps4_videodrv.pas b/chip/ps4_videodrv.pas index 4bb09499..7f6332ad 100644 --- a/chip/ps4_videodrv.pas +++ b/chip/ps4_videodrv.pas @@ -1472,6 +1472,12 @@ begin end; +procedure onIndexBufferSize(pm4Hdr:PM4_TYPE_3_HEADER;Body:PPM4CMDDRAWINDEXBUFFERSIZE); +begin + GPU_REGS.VGT_DMA.SIZE :=Body^.numIndices; + GPU_REGS.VGT_DMA.INDICES :=Body^.numIndices; +end; + type PVGT_DMA_INDEX_TYPE=^TVGT_DMA_INDEX_TYPE; @@ -2563,6 +2569,12 @@ begin onSetUConfigReg(PM4_TYPE_3_HEADER(token),@PDWORD(P)[1]); end; + IT_INDEX_BUFFER_SIZE: + begin + {$ifdef ww}Writeln('IT_INDEX_BUFFER_SIZE');{$endif} + onIndexBufferSize(PM4_TYPE_3_HEADER(token),@PDWORD(P)[1]); + end; + IT_INDEX_TYPE: begin {$ifdef ww}Writeln('IT_INDEX_TYPE');{$endif}