From f6c5b5090791a6cd1cd3587980d95d8cd3572746 Mon Sep 17 00:00:00 2001 From: red-prig Date: Thu, 16 Dec 2021 23:29:40 +0300 Subject: [PATCH] + --- .gitignore | 2 +- chip/ps4_videodrv.pas | 18 +++++- ...plet-single-triangle_debug_ps_FBCA196D.spv | Bin 0 -> 304 bytes ...plet-single-triangle_debug_vs_78EF9008.spv | Bin 0 -> 668 bytes vulkan/vFlip.pas | 57 +++++++++--------- 5 files changed, 43 insertions(+), 34 deletions(-) create mode 100644 shader_dump/simplet-single-triangle_debug_ps_FBCA196D.spv create mode 100644 shader_dump/simplet-single-triangle_debug_vs_78EF9008.spv diff --git a/.gitignore b/.gitignore index edfb5b5..e88d60e 100644 --- a/.gitignore +++ b/.gitignore @@ -11,9 +11,9 @@ *.bat *.prx *.sprx +*.dump link.res lib/ backup/ -shader_dump/* spirv/* savedata/* diff --git a/chip/ps4_videodrv.pas b/chip/ps4_videodrv.pas index bc1f277..7864188 100644 --- a/chip/ps4_videodrv.pas +++ b/chip/ps4_videodrv.pas @@ -855,6 +855,17 @@ begin ord(VK_IMAGE_USAGE_TRANSFER_DST_BIT) ); + vkImageMemoryBarrier( + FCmdBuffer.cmdbuf, + ri.FImage.FHandle, + ord(VK_ACCESS_NONE_KHR), + ord(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT), + VK_IMAGE_LAYOUT_UNDEFINED, + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + ord(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT), + ord(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT), + SubresColor); + FRenderCmd.FFramebuffer.AddImageView(ri.FImage.NewView); FRenderCmd.FRenderPass.AddColorRef(FRenderCmd.FRenderPass.subpass.colorAttachmentCount); @@ -911,13 +922,13 @@ begin if (FVSShader=nil) then begin FVSShader:=TvShader.Create; - FVSShader.LoadFromFile('spirv\vs_78EF9008.spv'); + FVSShader.LoadFromFile('shader_dump\simplet-single-triangle_debug_vs_78EF9008.spv'); end; if (FPSShader=nil) then begin FPSShader:=TvShader.Create; - FPSShader.LoadFromFile('spirv\ps_FBCA196D.spv'); + FPSShader.LoadFromFile('shader_dump\simplet-single-triangle_debug_ps_FBCA196D.spv'); end; FRenderCmd.FPipeline.SetVSShader(FVSShader); @@ -1138,8 +1149,9 @@ begin //need to moved submit_done + FCmdBuffer.FSignFence.Reset; FCmdBuffer.QueueSubmit; - //FCmdBuffer.FSignFence.Wait(High(uint64)); + FCmdBuffer.FSignFence.Wait(High(uint64)); FCmdBuffer.ClearRenderList; vkQueueWaitIdle(RenderQueue); diff --git a/shader_dump/simplet-single-triangle_debug_ps_FBCA196D.spv b/shader_dump/simplet-single-triangle_debug_ps_FBCA196D.spv new file mode 100644 index 0000000000000000000000000000000000000000..8687010fad5f866d74b793c4221099e88e6db17b GIT binary patch literal 304 zcmYL@%MJli5JcMybG?m7*a@*@M?^AW>pLth_);HaBXJIsOefWKtNL*}&o(LYRz##2 zk&S6&p(FR;apc-RZxThc>-Xb!f9hwTr02gS;!20!(jqZKxnWIq*7uy;flIK!Env0v z6*2J~2y5Mzaw72c6M)%Qij@U8n+yFRZpRiulyS>l-M>fmeZutM3dx!9aihb_+ H&~XA^(P9aL literal 0 HcmV?d00001 diff --git a/shader_dump/simplet-single-triangle_debug_vs_78EF9008.spv b/shader_dump/simplet-single-triangle_debug_vs_78EF9008.spv new file mode 100644 index 0000000000000000000000000000000000000000..70bbe5c70f41078da01df8a1487920079dff4171 GIT binary patch literal 668 zcmX|;NlpVn3`L!8pcxZFCc@Z=UBVh6A;^*~S76Bk&cHR`25<EtKZ-H6j=Hwpp>P{LK zF+jbFe@2Bhto{f^g{^^Sh{jjPXg07ln4sCj%B@%P^$p)LF5kv>fVJju?M{lxz1sy5 zFN>V-HN4fE-%b32+t%%;nDLBUYp>OQWj<(mQ`=fY@V#7q=KKi$_Bvf$r(WHg{mSz! z&Xc)w$}icHds6FhZ$Ip4jJ@Hmb54NuK2W;5{SC9uI(8d$ZphKg3sW tOihj-;j4ES&YR=M`0Cw>n)|dr|GPQsdB^?VGL>_g(|1ny{L6$_;18gc8V3LX literal 0 HcmV?d00001 diff --git a/vulkan/vFlip.pas b/vulkan/vFlip.pas index a000bad..fe366ae 100644 --- a/vulkan/vFlip.pas +++ b/vulkan/vFlip.pas @@ -554,15 +554,6 @@ begin end; Procedure TvFlip.Flip; -const - subresourceRange:TVkImageSubresourceRange=( - aspectMask:TVkImageAspectFlags(VK_IMAGE_ASPECT_COLOR_BIT); - baseMipLevel:0; - levelCount:1; - baseArrayLayer:0; - layerCount:1 - ); - var r:TVkResult; imageIndex:TVkUInt32; @@ -658,7 +649,7 @@ begin begin FBuffer.buffer:=buf^.HostBuf.FHandle; FBuffer.offset:=0; - FBuffer.range :=buf^.SIZE;//High(Int64); //size is wrong, but it worked + FBuffer.range :=buf^.SIZE; FCurSet:=buf^.FSet; @@ -672,9 +663,9 @@ begin ord(VK_ACCESS_SHADER_WRITE_BIT), VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_GENERAL, + ord(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT), ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), - ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), - subresourceRange); + SubresColor); if (buf^.DstImgSRGB<>nil) then vkImageMemoryBarrier( @@ -684,9 +675,9 @@ begin ord(VK_ACCESS_SHADER_WRITE_BIT), VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_GENERAL, + ord(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT), ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), - ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), - subresourceRange); + SubresColor); vkCmdBindPipeline(buf^.cmdbuf,VK_PIPELINE_BIND_POINT_COMPUTE,FPipelineFlip.FHandle); @@ -712,6 +703,16 @@ begin end else begin + vkImageMemoryBarrier( + buf^.cmdbuf, + buf^.ur.FImage.FHandle, + ord(VK_ACCESS_NONE_KHR), + ord(VK_ACCESS_TRANSFER_READ_BIT), + VK_IMAGE_LAYOUT_UNDEFINED, + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + ord(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT), + ord(VK_PIPELINE_STAGE_TRANSFER_BIT), + SubresColor); vkImageMemoryBarrier( buf^.cmdbuf, @@ -720,9 +721,9 @@ begin ord(VK_ACCESS_TRANSFER_WRITE_BIT), VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), + ord(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT), ord(VK_PIPELINE_STAGE_TRANSFER_BIT), - subresourceRange); + SubresColor); if (buf^.DstImgSRGB<>nil) then vkImageMemoryBarrier( @@ -732,9 +733,9 @@ begin ord(VK_ACCESS_TRANSFER_WRITE_BIT), VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), + ord(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT), ord(VK_PIPELINE_STAGE_TRANSFER_BIT), - subresourceRange); + SubresColor); img_reg:=Default(TVkImageCopy); @@ -814,7 +815,7 @@ begin VK_IMAGE_LAYOUT_GENERAL, ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), - subresourceRange); + SubresColor); if (buf^.DstImgSRGB<>nil) then vkImageMemoryBarrier( @@ -826,7 +827,7 @@ begin VK_IMAGE_LAYOUT_GENERAL, ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), - subresourceRange); + SubresColor); vkCmdPushConstants(buf^.cmdbuf, FLayout.FHandle, @@ -881,7 +882,7 @@ begin VK_IMAGE_LAYOUT_GENERAL, ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), - subresourceRange); + SubresColor); if (buf^.DstImgSRGB<>nil) then vkImageMemoryBarrier( @@ -893,7 +894,7 @@ begin VK_IMAGE_LAYOUT_GENERAL, ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), - subresourceRange); + SubresColor); vkCmdPushConstants(buf^.cmdbuf, FLayout.FHandle, @@ -926,28 +927,24 @@ begin buf^.cmdbuf, buf^.DstImgNORM.FHandle, ord(VK_ACCESS_NONE_KHR), - //ord(VK_ACCESS_SHADER_WRITE_BIT), ord(VK_ACCESS_TRANSFER_READ_BIT), VK_IMAGE_LAYOUT_UNDEFINED, - //VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), ord(VK_PIPELINE_STAGE_TRANSFER_BIT), - subresourceRange); + SubresColor); if (buf^.DstImgSRGB<>nil) then vkImageMemoryBarrier( buf^.cmdbuf, buf^.DstImgSRGB.FHandle, ord(VK_ACCESS_NONE_KHR), - //ord(VK_ACCESS_SHADER_WRITE_BIT), ord(VK_ACCESS_TRANSFER_READ_BIT), VK_IMAGE_LAYOUT_UNDEFINED, - //VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, ord(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT), ord(VK_PIPELINE_STAGE_TRANSFER_BIT), - subresourceRange); + SubresColor); vkImageMemoryBarrier( buf^.cmdbuf, @@ -958,7 +955,7 @@ begin VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, ord(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT), ord(VK_PIPELINE_STAGE_TRANSFER_BIT), - subresourceRange); + SubresColor); imgBlitRegion:=Default(TVkImageBlit); imgBlitRegion.srcSubresource.aspectMask:=ord(VK_IMAGE_ASPECT_COLOR_BIT); @@ -999,7 +996,7 @@ begin VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, ord(VK_PIPELINE_STAGE_TRANSFER_BIT), ord(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT), - subresourceRange); + SubresColor); vkEndCommandBuffer(buf^.cmdbuf);