mirror of https://github.com/red-prig/fpPS4.git
This commit is contained in:
parent
3264287e64
commit
28fffc6fd9
|
@ -341,16 +341,16 @@ type
|
|||
PEVENTWRITEEOP=^TEVENTWRITEEOP;
|
||||
TEVENTWRITEEOP=packed record
|
||||
EVENT_CNTL:bitpacked record
|
||||
EVENT_TYPE:bit6; //6 ///< event type written to VGT_EVENT_INITIATOR
|
||||
Reserved1:bit2; //2
|
||||
EVENT_INDEX:bit4; //4 ///< event index
|
||||
EVENT_TYPE:bit6; //6 ///< event type written to VGT_EVENT_INITIATOR
|
||||
Reserved1:bit2; //2
|
||||
EVENT_INDEX:bit4; //4 ///< event index
|
||||
|
||||
tcl1VolActionEna__CI:bit1; //1
|
||||
tcVolActionEna__CI :bit1; //1
|
||||
reserved2:bit1; //1
|
||||
tcWbActionEna__CI:bit1; //1
|
||||
tcl1ActionEna__CI:bit1; //1
|
||||
tcActionEna__CI:bit1; //1
|
||||
tcl1VolActionEna__CI:bit1; //1 //cacheAction
|
||||
tcVolActionEna__CI :bit1; //1 //cacheAction
|
||||
reserved2:bit1; //1 //cacheAction
|
||||
tcWbActionEna__CI:bit1; //1 //cacheAction
|
||||
tcl1ActionEna__CI:bit1; //1 //cacheAction
|
||||
tcActionEna__CI:bit1; //1 //cacheAction
|
||||
|
||||
reserved3:bit2; //2
|
||||
invalidateL2__SI:bit1; //1
|
||||
|
@ -363,7 +363,8 @@ type
|
|||
ADDRESS_LO:DWORD; ///< low bits of address
|
||||
DATA_CNTL:bitpacked record
|
||||
addressHi:bit16; //16 ///< high bits of address
|
||||
reserved6:bit8; //24 ///< reserved (dstSelector & 1)
|
||||
destTcL2:bit1; //1 ///< (dstSelector & 1)
|
||||
reserved6:bit7; //24 ///< reserved
|
||||
intSel:bit2; //26 ///< selects interrupt action for end-of-pipe (25 bit is eop)
|
||||
reserved7:bit3; //29 ///< reserved
|
||||
dataSel:bit3; //32 ///< selects source of data (srcSelector)
|
||||
|
|
|
@ -623,7 +623,7 @@ var
|
|||
adr:PDWORD;
|
||||
begin
|
||||
QWORD(adr):=QWORD(Body^.ADDRES_LO) or (QWORD(Body^.ADDRES_HI) shl $20);
|
||||
{$ifdef ww}Writeln('adr:',HexStr(adr),' data:',Body^.DATA);{$endif}
|
||||
{$ifdef ww}Writeln('adr:',HexStr(adr),' data:',HexStr(Body^.DATA,8));{$endif}
|
||||
|
||||
GFXMicroEngine.PushCmd(GFXRing.CmdBuffer);
|
||||
GFXMicroEngine.PushFlip(GFXRing.Current^.Flip,Body^.DATA,adr,False);
|
||||
|
@ -634,7 +634,7 @@ begin
|
|||
{$ifdef ww}writeln;{$endif}
|
||||
|
||||
GFXMicroEngine.PushCmd(GFXRing.CmdBuffer);
|
||||
GFXMicroEngine.PushFlip(GFXRing.Current^.Flip,0,nil,True);
|
||||
GFXMicroEngine.PushFlip(GFXRing.Current^.Flip,0,nil,False{True});
|
||||
end;
|
||||
|
||||
procedure onPrepareFlipWithEopInterruptLabel(pm4Hdr:PM4_TYPE_3_HEADER;Body:PPM4PrepareFlipWithEopInterrupt);
|
||||
|
@ -642,10 +642,10 @@ var
|
|||
adr:PDWORD;
|
||||
begin
|
||||
QWORD(adr):=QWORD(Body^.ADDRES_LO) or (QWORD(Body^.ADDRES_HI) shl $20);
|
||||
{$ifdef ww}Writeln('adr:',HexStr(adr),' data:',Body^.DATA);{$endif}
|
||||
{$ifdef ww}Writeln('adr:',HexStr(adr),' data:',HexStr(Body^.DATA,8));{$endif}
|
||||
|
||||
GFXMicroEngine.PushCmd(GFXRing.CmdBuffer);
|
||||
GFXMicroEngine.PushFlip(GFXRing.Current^.Flip,Body^.DATA,adr,True);
|
||||
GFXMicroEngine.PushFlip(GFXRing.Current^.Flip,Body^.DATA,adr,False{True});
|
||||
end;
|
||||
|
||||
procedure onEventWriteEop(pm4Hdr:PM4_TYPE_3_HEADER;Body:PEVENTWRITEEOP);
|
||||
|
@ -664,7 +664,7 @@ begin
|
|||
end;
|
||||
{$endif}
|
||||
|
||||
if ((Body^.DATA_CNTL.reserved6 and 1)<>0) then
|
||||
if (Body^.DATA_CNTL.destTcL2<>0) then
|
||||
begin
|
||||
{$ifdef ww}Writeln('kEventWriteDestTcL2');{$endif}
|
||||
end else
|
||||
|
@ -674,8 +674,8 @@ begin
|
|||
|
||||
{$ifdef ww}
|
||||
Case Body^.DATA_CNTL.dataSel of
|
||||
kEventWriteSource32BitsImmediate :Writeln('kEventWriteSource32BitsImmediate adr:',HexStr(adr),' data:',Body^.DATA_LO);
|
||||
kEventWriteSource64BitsImmediate :Writeln('kEventWriteSource64BitsImmediate adr:',HexStr(adr),' data:',PQWORD(@Body^.DATA_LO)^);
|
||||
kEventWriteSource32BitsImmediate :Writeln('kEventWriteSource32BitsImmediate adr:',HexStr(adr),' data:',HexStr(Body^.DATA_LO,8));
|
||||
kEventWriteSource64BitsImmediate :Writeln('kEventWriteSource64BitsImmediate adr:',HexStr(adr),' data:',HexStr(PQWORD(@Body^.DATA_LO)^,16));
|
||||
kEventWriteSourceGlobalClockCounter :Writeln('kEventWriteSourceGlobalClockCounter adr:',HexStr(adr),' data:',GetTickCount64*1000);
|
||||
kEventWriteSourceGpuCoreClockCounter:Writeln('kEventWriteSourceGpuCoreClockCounter adr:',HexStr(adr),' data:',GetTickCount64*1000);
|
||||
else;
|
||||
|
@ -683,28 +683,7 @@ begin
|
|||
{$endif}
|
||||
|
||||
GFXMicroEngine.PushCmd(GFXRing.CmdBuffer);
|
||||
GFXMicroEngine.PushEop(adr,PQWORD(@Body^.DATA_LO)^,Body^.DATA_CNTL.dataSel,(Body^.DATA_CNTL.intSel<>0));
|
||||
|
||||
{
|
||||
Case Body^.DATA_CNTL.dataSel of
|
||||
EVENTWRITEEOP_DATA_SEL_DISCARD:;//nop
|
||||
kEventWriteSource32BitsImmediate :PDWORD(adr)^:=Body^.DATA_LO;
|
||||
kEventWriteSource64BitsImmediate :PQWORD(adr)^:=PQWORD(@Body^.DATA_LO)^;
|
||||
kEventWriteSourceGlobalClockCounter ,
|
||||
kEventWriteSourceGpuCoreClockCounter:PQWORD(adr)^:=GetTickCount64*1000;
|
||||
else
|
||||
Assert(False);
|
||||
end;
|
||||
|
||||
if (Body^.DATA_CNTL.intSel<>0) then
|
||||
begin
|
||||
{$ifdef ww}Writeln('Interrupt');{$endif}
|
||||
|
||||
vSubmitDone;
|
||||
|
||||
post_event_eop;
|
||||
end;
|
||||
}
|
||||
GFXMicroEngine.PushEop(adr,PQWORD(@Body^.DATA_LO)^,Body^.DATA_CNTL.dataSel,True{(Body^.DATA_CNTL.intSel<>0)});
|
||||
|
||||
end;
|
||||
|
||||
|
|
Loading…
Reference in New Issue