use dynamic rendering instead of render passes
This commit is contained in:
parent
c9aca769b2
commit
2f8929d5fb
@ -831,22 +831,41 @@ BeginRendering()
|
|||||||
{ color: { float32: g_vk.depth_clear } },
|
{ color: { float32: g_vk.depth_clear } },
|
||||||
];
|
];
|
||||||
|
|
||||||
VkRenderPassBeginInfo pass_info = {
|
VkRenderingAttachmentInfo[2] attach_descriptions = [
|
||||||
sType: VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
|
{
|
||||||
renderPass: g_vk.render_pass,
|
sType: VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,
|
||||||
framebuffer: g_vk.framebuffer,
|
imageView: g_vk.draw_image.image.view,
|
||||||
|
imageLayout: VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
|
||||||
|
loadOp: VK_ATTACHMENT_LOAD_OP_CLEAR,
|
||||||
|
storeOp: VK_ATTACHMENT_STORE_OP_STORE,
|
||||||
|
clearValue: { color: { float32: g_vk.color_clear } },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
sType: VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,
|
||||||
|
imageView: g_vk.depth_image.image.view,
|
||||||
|
imageLayout: VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
|
||||||
|
loadOp: VK_ATTACHMENT_LOAD_OP_CLEAR,
|
||||||
|
storeOp: VK_ATTACHMENT_STORE_OP_STORE,
|
||||||
|
clearValue: { color: { float32: g_vk.depth_clear } },
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
VkRenderingInfo render_info = {
|
||||||
|
sType: VK_STRUCTURE_TYPE_RENDERING_INFO,
|
||||||
|
layerCount: 1,
|
||||||
|
colorAttachmentCount: 1,
|
||||||
|
pColorAttachments: &attach_descriptions[0],
|
||||||
|
pDepthAttachment: &attach_descriptions[1],
|
||||||
renderArea: {
|
renderArea: {
|
||||||
offset: { x: 0, y: 0 },
|
offset: { x: 0, y: 0 },
|
||||||
extent: {
|
extent: {
|
||||||
width: g_vk.swapchain_extent.width,
|
width: g_vk.swapchain_extent.width,
|
||||||
height: g_vk.swapchain_extent.height,
|
height: g_vk.swapchain_extent.height,
|
||||||
},
|
},
|
||||||
},
|
}
|
||||||
clearValueCount: cast(u32)clear_color.length,
|
|
||||||
pClearValues: clear_color.ptr,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
vkCmdBeginRenderPass(g_vk.cmd, &pass_info, VK_SUBPASS_CONTENTS_INLINE);
|
vkCmdBeginRendering(g_vk.cmd, &render_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32[2]
|
u32[2]
|
||||||
@ -883,7 +902,7 @@ CopyToPresentImage(Descriptor* descriptor, UVec2 extent)
|
|||||||
void
|
void
|
||||||
FinishRendering()
|
FinishRendering()
|
||||||
{
|
{
|
||||||
vkCmdEndRenderPass(g_vk.cmd);
|
vkCmdEndRendering(g_vk.cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -3105,9 +3124,15 @@ Init(VulkanBuildInfo build_info, u64 permanent_mem, u64 frame_mem)
|
|||||||
count += 1;
|
count += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VkPhysicalDeviceDynamicRenderingFeaturesKHR dynamic_rendering = {
|
||||||
|
sType: VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
|
||||||
|
pNext: null,
|
||||||
|
dynamicRendering: VK_TRUE,
|
||||||
|
};
|
||||||
|
|
||||||
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extended_dynamic_state = {
|
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extended_dynamic_state = {
|
||||||
sType: VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,
|
sType: VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT,
|
||||||
pNext: null,
|
pNext: &dynamic_rendering,
|
||||||
extendedDynamicState: VK_TRUE,
|
extendedDynamicState: VK_TRUE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -125,11 +125,15 @@ PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT;
|
|||||||
PFN_vkCmdSetStencilReference vkCmdSetStencilReference;
|
PFN_vkCmdSetStencilReference vkCmdSetStencilReference;
|
||||||
PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask;
|
PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask;
|
||||||
PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask;
|
PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask;
|
||||||
|
PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR;
|
||||||
|
PFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR;
|
||||||
|
|
||||||
alias vkQueueSubmit2 = vkQueueSubmit2KHR;
|
alias vkQueueSubmit2 = vkQueueSubmit2KHR;
|
||||||
alias vkCmdPipelineBarrier2 = vkCmdPipelineBarrier2KHR;
|
alias vkCmdPipelineBarrier2 = vkCmdPipelineBarrier2KHR;
|
||||||
alias vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnableEXT;
|
alias vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnableEXT;
|
||||||
alias vkCmdSetStencilOp = vkCmdSetStencilOpEXT;
|
alias vkCmdSetStencilOp = vkCmdSetStencilOpEXT;
|
||||||
|
alias vkCmdBeginRendering = vkCmdBeginRenderingKHR;
|
||||||
|
alias vkCmdEndRendering = vkCmdEndRenderingKHR;
|
||||||
|
|
||||||
static string
|
static string
|
||||||
LoadDeviceFunc(alias fn)()
|
LoadDeviceFunc(alias fn)()
|
||||||
@ -228,6 +232,8 @@ LoadDeviceFunctions()
|
|||||||
mixin(LoadDeviceFunc!(vkCmdSetStencilReference));
|
mixin(LoadDeviceFunc!(vkCmdSetStencilReference));
|
||||||
mixin(LoadDeviceFunc!(vkCmdSetStencilCompareMask));
|
mixin(LoadDeviceFunc!(vkCmdSetStencilCompareMask));
|
||||||
mixin(LoadDeviceFunc!(vkCmdSetStencilWriteMask));
|
mixin(LoadDeviceFunc!(vkCmdSetStencilWriteMask));
|
||||||
|
mixin(LoadDeviceFunc!(vkCmdBeginRenderingKHR));
|
||||||
|
mixin(LoadDeviceFunc!(vkCmdEndRenderingKHR));
|
||||||
|
|
||||||
version(AMD_GPU) version(VULKAN_DEBUG)
|
version(AMD_GPU) version(VULKAN_DEBUG)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user