This commit is contained in:
Pavel 2025-05-28 17:51:04 +03:00
parent e5e82fbbbc
commit ec86a91b51
1 changed files with 46 additions and 1 deletions

View File

@ -2964,11 +2964,21 @@ begin
//GPU
byteSize:=node^.num_dw*SizeOf(DWORD);
if p_print_gpu_ops then
begin
Writeln('[1]WriteData:0x',HexStr(QWORD(node^.src),10),'->',HexStr(QWORD(node^.dst),10),':size=0x',HexStr(byteSize,5));
end;
ctx.Cmd.dmaData1(node^.src,node^.dst,byteSize,node^.wrConfirm);
end else
begin
//soft
if p_print_gpu_ops then
begin
Writeln('[2]WriteData:0x',HexStr(QWORD(node^.src),10),'->',HexStr(QWORD(node^.dst),10),':size=0x',HexStr(byteSize,5));
end;
src_dmem:=get_dmem_ptr(node^.src);
dst_dmem:=get_dmem_ptr(node^.dst);
@ -3241,6 +3251,8 @@ var
__end:DWORD;
size :DWORD;
begin
//if not ctx.WaitConfirmOrSwitch then Exit;
addr_dmem:=get_dmem_ptr(node^.addr);
start:=node^.offset;
@ -3258,6 +3270,11 @@ begin
size:=(__end-start);
if p_print_gpu_ops then
begin
Writeln('LoadConstRam:0x',HexStr(QWORD(addr_dmem),10),'->[0x',HexStr(start,4),']:size=0x',HexStr(size,6));
end;
Move(addr_dmem^,ctx.me^.CONST_RAM[start],size);
end;
@ -3269,6 +3286,8 @@ var
__end:DWORD;
size :DWORD;
begin
//if not ctx.WaitConfirmOrSwitch then Exit;
addr_dmem:=get_dmem_ptr(node^.addr);
start:=node^.offset;
@ -3286,6 +3305,11 @@ begin
size:=(__end-start);
if p_print_gpu_ops then
begin
Writeln('DumpConstRam:[0x',HexStr(start,4),']->0x',HexStr(QWORD(addr_dmem),10),':size=0x',HexStr(size,6));
end;
Move(ctx.me^.CONST_RAM[start],addr_dmem^,size);
ctx.BeginCmdBuffer;
@ -3308,7 +3332,17 @@ procedure pm4_WaitOnCECounter(var ctx:t_me_render_context;node:p_pm4_node);
begin
if (ctx.me^.CE_COUNT <= ctx.me^.DE_COUNT) then
begin
if p_print_gpu_ops then
begin
Writeln('WaitOnCECounter:(',ctx.me^.CE_COUNT,' <= ',ctx.me^.DE_COUNT,')');
end;
ctx.switch_task;
end else
begin
if p_print_gpu_ops then
begin
Writeln('WaitOnCECounter:(',ctx.me^.CE_COUNT,' > ',ctx.me^.DE_COUNT,')');
end;
end;
end;
@ -3317,9 +3351,20 @@ var
diff:DWORD;
begin
diff:=node^.diff;
if ((ctx.me^.DE_COUNT - ctx.me^.CE_COUNT) >= diff) then
//force unsigned compare
if (DWORD(ctx.me^.DE_COUNT - ctx.me^.CE_COUNT) >= diff) then
begin
if p_print_gpu_ops then
begin
Writeln('WaitOnDECounterDiff:(',ctx.me^.DE_COUNT,' - ',ctx.me^.CE_COUNT,') >= ',diff);
end;
ctx.switch_task;
end else
begin
if p_print_gpu_ops then
begin
Writeln('WaitOnDECounterDiff:(',ctx.me^.DE_COUNT,' - ',ctx.me^.CE_COUNT,') < ',diff);
end;
end;
end;