mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-10-29 07:52:55 +01:00
Rework dynamic rendering impl
This commit is contained in:
parent
be4bcbee85
commit
381d97639f
18 changed files with 458 additions and 668 deletions
|
|
@ -1411,7 +1411,9 @@ void Device::RemoveUnsuitableExtensions() {
|
|||
|
||||
|
||||
extensions.synchronization2 = features.synchronization2.synchronization2;
|
||||
if (!extensions.synchronization2 || !IsKhrCreateRenderPass2Supported()) {
|
||||
extensions.dynamic_rendering = features.dynamic_rendering.dynamicRendering;
|
||||
if (!extensions.synchronization2 || !extensions.dynamic_rendering ||
|
||||
!IsKhrCreateRenderPass2Supported()) {
|
||||
throw vk::Exception(VK_ERROR_FEATURE_NOT_PRESENT);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ VK_DEFINE_HANDLE(VmaAllocator)
|
|||
FEATURE(KHR, VulkanMemoryModel, VULKAN_MEMORY_MODEL, vulkan_memory_model)
|
||||
|
||||
#define FOR_EACH_VK_FEATURE_1_3(FEATURE) \
|
||||
FEATURE(KHR, DynamicRendering, DYNAMIC_RENDERING, dynamic_rendering) \
|
||||
FEATURE(EXT, ImageRobustness, IMAGE_ROBUSTNESS, robust_image_access) \
|
||||
FEATURE(EXT, ShaderDemoteToHelperInvocation, SHADER_DEMOTE_TO_HELPER_INVOCATION, \
|
||||
shader_demote_to_helper_invocation) \
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@ void Load(VkDevice device, DeviceDispatch& dld) noexcept {
|
|||
X(vkCmdBeginConditionalRenderingEXT);
|
||||
X(vkCmdBeginQuery);
|
||||
X(vkCmdBeginRenderPass);
|
||||
X(vkCmdBeginRendering);
|
||||
X(vkCmdBeginTransformFeedbackEXT);
|
||||
X(vkCmdBindDescriptorSets);
|
||||
X(vkCmdBindIndexBuffer);
|
||||
|
|
@ -116,6 +117,7 @@ void Load(VkDevice device, DeviceDispatch& dld) noexcept {
|
|||
X(vkCmdEndConditionalRenderingEXT);
|
||||
X(vkCmdEndQuery);
|
||||
X(vkCmdEndRenderPass);
|
||||
X(vkCmdEndRendering);
|
||||
X(vkCmdEndTransformFeedbackEXT);
|
||||
X(vkCmdFillBuffer);
|
||||
X(vkCmdPipelineBarrier2);
|
||||
|
|
@ -257,6 +259,13 @@ void Load(VkDevice device, DeviceDispatch& dld) noexcept {
|
|||
Proc(dld.vkQueueSubmit2, dld, "vkQueueSubmit2KHR", device);
|
||||
}
|
||||
|
||||
if (!dld.vkCmdBeginRendering) {
|
||||
Proc(dld.vkCmdBeginRendering, dld, "vkCmdBeginRenderingKHR", device);
|
||||
}
|
||||
if (!dld.vkCmdEndRendering) {
|
||||
Proc(dld.vkCmdEndRendering, dld, "vkCmdEndRenderingKHR", device);
|
||||
}
|
||||
|
||||
if (!dld.vkCreateRenderPass2) {
|
||||
Proc(dld.vkCreateRenderPass2, dld, "vkCreateRenderPass2KHR", device);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -238,6 +238,7 @@ struct DeviceDispatch : InstanceDispatch {
|
|||
PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT{};
|
||||
PFN_vkCmdBeginQuery vkCmdBeginQuery{};
|
||||
PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass{};
|
||||
PFN_vkCmdBeginRendering vkCmdBeginRendering{};
|
||||
PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT{};
|
||||
PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets{};
|
||||
PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer{};
|
||||
|
|
@ -266,6 +267,7 @@ struct DeviceDispatch : InstanceDispatch {
|
|||
PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT{};
|
||||
PFN_vkCmdEndQuery vkCmdEndQuery{};
|
||||
PFN_vkCmdEndRenderPass vkCmdEndRenderPass{};
|
||||
PFN_vkCmdEndRendering vkCmdEndRendering{};
|
||||
PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT{};
|
||||
PFN_vkCmdFillBuffer vkCmdFillBuffer{};
|
||||
PFN_vkCmdPipelineBarrier2 vkCmdPipelineBarrier2{};
|
||||
|
|
@ -1194,6 +1196,14 @@ public:
|
|||
dld->vkCmdEndRenderPass(handle);
|
||||
}
|
||||
|
||||
void BeginRendering(const VkRenderingInfo& rendering_info) const noexcept {
|
||||
dld->vkCmdBeginRendering(handle, &rendering_info);
|
||||
}
|
||||
|
||||
void EndRendering() const noexcept {
|
||||
dld->vkCmdEndRendering(handle);
|
||||
}
|
||||
|
||||
void BeginQuery(VkQueryPool query_pool, u32 query, VkQueryControlFlags flags) const noexcept {
|
||||
dld->vkCmdBeginQuery(handle, query_pool, query, flags);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue