diff --git a/chip/ps4_videodrv.pas b/chip/ps4_videodrv.pas index d8f313fc..7be1f489 100644 --- a/chip/ps4_videodrv.pas +++ b/chip/ps4_videodrv.pas @@ -1505,6 +1505,22 @@ begin Free; end; +//VK_IMAGE_USAGE_STORAGE_BIT + +const + VK_IMAGE_USAGE_DEFAULT= + ord(VK_IMAGE_USAGE_TRANSFER_SRC_BIT) or + ord(VK_IMAGE_USAGE_TRANSFER_DST_BIT) or + ord(VK_IMAGE_USAGE_SAMPLED_BIT); + + VK_IMAGE_USAGE_DEFAULT_COLOR= + VK_IMAGE_USAGE_DEFAULT or + ord(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT); + + VK_IMAGE_USAGE_DEFAULT_DEPTH= + VK_IMAGE_USAGE_DEFAULT or + ord(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT); + procedure ClearRenderTarget; var RT_INFO:TRT_INFO; @@ -1520,10 +1536,7 @@ begin ri:=FetchImage(GFXRing.CmdBuffer, RT_INFO.FImageInfo, - ord(VK_IMAGE_USAGE_SAMPLED_BIT) or - ord(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_SRC_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_DST_BIT), + VK_IMAGE_USAGE_DEFAULT_COLOR, TM_CLEAR ); @@ -1559,19 +1572,13 @@ begin ri_src:=FetchImage(GFXRing.CmdBuffer, RT_INFO_SRC.FImageInfo, - ord(VK_IMAGE_USAGE_SAMPLED_BIT) or - ord(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_SRC_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_DST_BIT), + VK_IMAGE_USAGE_DEFAULT_COLOR, {TM_READ}0 ); ri_dst:=FetchImage(GFXRing.CmdBuffer, RT_INFO_DST.FImageInfo, - ord(VK_IMAGE_USAGE_SAMPLED_BIT) or - ord(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_SRC_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_DST_BIT), + VK_IMAGE_USAGE_DEFAULT_COLOR, TM_WRITE ); @@ -1841,10 +1848,7 @@ begin ri:=FetchImage(GFXRing.CmdBuffer, RT_INFO.FImageInfo, - ord(VK_IMAGE_USAGE_SAMPLED_BIT) or - ord(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_SRC_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_DST_BIT), + VK_IMAGE_USAGE_DEFAULT_COLOR, RT_INFO.IMAGE_USAGE ); @@ -1928,9 +1932,7 @@ begin ri:=FetchImage(GFXRing.CmdBuffer, DB_INFO.FImageInfo, - ord(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_SRC_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_DST_BIT), + VK_IMAGE_USAGE_DEFAULT_DEPTH, DB_INFO.DEPTH_USAGE ); @@ -2045,9 +2047,7 @@ begin ri:=FetchImage(GFXRing.CmdBuffer, FImage, - ord(VK_IMAGE_USAGE_SAMPLED_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_SRC_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_DST_BIT), + VK_IMAGE_USAGE_DEFAULT_COLOR, TM_READ ); @@ -2150,9 +2150,7 @@ begin ri:=FetchImage(GFXRing.CmdBuffer, FImage, - ord(VK_IMAGE_USAGE_SAMPLED_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_SRC_BIT) or - ord(VK_IMAGE_USAGE_TRANSFER_DST_BIT), + VK_IMAGE_USAGE_DEFAULT_COLOR, TM_READ ); diff --git a/fpPS4.lpi b/fpPS4.lpi index 0f6bf8a4..a2481fc3 100644 --- a/fpPS4.lpi +++ b/fpPS4.lpi @@ -292,6 +292,7 @@ + @@ -354,6 +355,7 @@ + diff --git a/fpPS4.lpr b/fpPS4.lpr index 9588728f..4f80b19e 100644 --- a/fpPS4.lpr +++ b/fpPS4.lpr @@ -516,6 +516,9 @@ begin //ps4_app.app_path:='G:\Games\BLAZING_CHROME\CUSA14656\'; //ps4_app.app_file:='G:\Games\BLAZING_CHROME\CUSA14656\eboot.bin'; + //ps4_app.app_path:='C:\Users\User\Desktop\Games\BLAZING_CHROME\CUSA14656'; + //ps4_app.app_file:='C:\Users\User\Desktop\Games\BLAZING_CHROME\CUSA14656\eboot.bin'; + //ps4_app.app_path:='G:\Games\Sonic Mania\CUSA07023\'; //ps4_app.app_file:='G:\Games\Sonic Mania\CUSA07023\eboot.bin'; diff --git a/src/np/ps4_libscenpmanager.pas b/src/np/ps4_libscenpmanager.pas index 4b3d9ebd..1d11b4f3 100644 --- a/src/np/ps4_libscenpmanager.pas +++ b/src/np/ps4_libscenpmanager.pas @@ -250,6 +250,16 @@ begin Result:=0; end; +function ps4_sceNpPollAsync(reqId:Integer; + pResult:PInteger):Integer; SysV_ABI_CDecl; +begin + if (pResult<>nil) then + begin + pResult^:=0; + end; + Result:=0; //SCE_NP_POLL_ASYNC_RET_FINISHED +end; + // function ps4_sceNpCheckCallbackForLib():Integer; SysV_ABI_CDecl; @@ -362,6 +372,7 @@ begin lib^.set_proc($F19D897391AF1832,@ps4_sceNpCheckNpAvailabilityA); lib^.set_proc($29F199836CBBDE83,@ps4_sceNpCheckNpReachability); lib^.set_proc($AFA33260992BCB3F,@ps4_sceNpCheckPlus); + lib^.set_proc($BAA70F24B58BD3C3,@ps4_sceNpPollAsync); lib:=Result._add_lib('libSceNpManagerForToolkit'); lib^.set_proc($D1CEC76D744A52DE,@ps4_sceNpRegisterStateCallbackForToolkit); diff --git a/vulkan/vImageManager.pas b/vulkan/vImageManager.pas index 7a4a7d05..57aea408 100644 --- a/vulkan/vImageManager.pas +++ b/vulkan/vImageManager.pas @@ -535,6 +535,18 @@ begin end; end; +procedure print_img_usage(usage:TVkFlags); +begin + if (usage and ord(VK_IMAGE_USAGE_TRANSFER_SRC_BIT ))<>0 then Write(' TRANSFER_SRC'); + if (usage and ord(VK_IMAGE_USAGE_TRANSFER_DST_BIT ))<>0 then Write(' TRANSFER_DST'); + if (usage and ord(VK_IMAGE_USAGE_SAMPLED_BIT ))<>0 then Write(' SAMPLED'); + if (usage and ord(VK_IMAGE_USAGE_STORAGE_BIT ))<>0 then Write(' STORAGE'); + if (usage and ord(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT ))<>0 then Write(' COLOR_ATTACHMENT'); + if (usage and ord(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT))<>0 then Write(' DEPTH_STENCIL_ATTACHMENT'); + if (usage and ord(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT ))<>0 then Write(' TRANSIENT_ATTACHMENT'); + if (usage and ord(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT ))<>0 then Write(' INPUT_ATTACHMENT'); +end; + function _FetchImage(var F:TvImageKey;usage:TVkFlags):TvImage2; var t:TvImage2; @@ -548,6 +560,14 @@ begin if ((t.FUsage and usage)<>usage) then begin + Write('Current usage:'); + print_img_usage(t.FUsage); + Writeln; + + Write('Need usage:'); + print_img_usage(usage); + Writeln; + Assert(false,'TODO'); end; diff --git a/vulkan/vImageTiling.pas b/vulkan/vImageTiling.pas index 356ba4bc..ba04f763 100644 --- a/vulkan/vImageTiling.pas +++ b/vulkan/vImageTiling.pas @@ -365,6 +365,11 @@ begin tiler.m_paddedHeight:=(tiler.m_linearHeight+7) and (not 7); tiler.m_paddedDepth :=tiler.m_linearDepth; end; + 16:begin + tiler.m_paddedWidth :=(tiler.m_linearWidth +15) and (not 15); + tiler.m_paddedHeight:=(tiler.m_linearHeight+ 7) and (not 7); + tiler.m_paddedDepth :=tiler.m_linearDepth; + end; 8:begin tiler.m_paddedWidth :=(tiler.m_linearWidth +31) and (not 31); tiler.m_paddedHeight:=(tiler.m_linearHeight+ 7) and (not 7); @@ -557,6 +562,11 @@ begin tiler.m_paddedHeight:=(tiler.m_linearHeight+7) and (not 7); tiler.m_paddedDepth :=tiler.m_linearDepth; end; + 16:begin + tiler.m_paddedWidth :=(tiler.m_linearWidth +15) and (not 15); + tiler.m_paddedHeight:=(tiler.m_linearHeight+ 7) and (not 7); + tiler.m_paddedDepth :=tiler.m_linearDepth; + end; 8:begin tiler.m_paddedWidth :=(tiler.m_linearWidth +31) and (not 31); tiler.m_paddedHeight:=(tiler.m_linearHeight+ 7) and (not 7);