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);