mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-28 13:56:59 +01:00
vulkan: enable VK_EXT_extended_dynamic_state when available (#1906)
This commit is contained in:
@@ -733,6 +733,15 @@ static vk::Device VulkanCreateDevice(GraphicContext& graphics,
|
|||||||
conditional_rendering.pNext = const_cast<void*>(create_info.pNext);
|
conditional_rendering.pNext = const_cast<void*>(create_info.pNext);
|
||||||
create_info.pNext = &conditional_rendering;
|
create_info.pNext = &conditional_rendering;
|
||||||
}
|
}
|
||||||
|
// The renderer only uses the Vulkan 1.3 core dynamic states, but RADV (Mesa 26.3) creates its
|
||||||
|
// PS epilog cache only when this EXT feature is enabled and crashes in vkCmdDraw when a
|
||||||
|
// depth- or stencil-writing fragment shader needs an epilog.
|
||||||
|
vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT extended_dynamic_state {};
|
||||||
|
extended_dynamic_state.extendedDynamicState = VK_TRUE;
|
||||||
|
if (HasExtension(device_extensions, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME)) {
|
||||||
|
extended_dynamic_state.pNext = const_cast<void*>(create_info.pNext);
|
||||||
|
create_info.pNext = &extended_dynamic_state;
|
||||||
|
}
|
||||||
create_info.pQueueCreateInfos = &queue_create_info;
|
create_info.pQueueCreateInfos = &queue_create_info;
|
||||||
create_info.queueCreateInfoCount = 1;
|
create_info.queueCreateInfoCount = 1;
|
||||||
create_info.enabledExtensionCount = static_cast<uint32_t>(device_extensions.size());
|
create_info.enabledExtensionCount = static_cast<uint32_t>(device_extensions.size());
|
||||||
@@ -1111,7 +1120,8 @@ void WindowContext::CreateVulkan() {
|
|||||||
VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME,
|
VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME,
|
||||||
VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME,
|
VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME,
|
||||||
VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME,
|
VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME,
|
||||||
VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME}) {
|
VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME,
|
||||||
|
VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME}) {
|
||||||
if (HasExtension(available_extensions, extension)) {
|
if (HasExtension(available_extensions, extension)) {
|
||||||
device_extensions.push_back(extension);
|
device_extensions.push_back(extension);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user