This commit is contained in:
red-prig 2021-12-16 23:29:40 +03:00
parent e41f788e2f
commit f6c5b50907
5 changed files with 43 additions and 34 deletions

2
.gitignore vendored
View File

@ -11,9 +11,9 @@
*.bat
*.prx
*.sprx
*.dump
link.res
lib/
backup/
shader_dump/*
spirv/*
savedata/*

View File

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

View File

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