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