1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-03-15 16:29:16 +01:00

[dxvk] Enable and require VK_KHR_dynamic_rendering

This commit is contained in:
Philip Rebohle 2022-07-01 12:49:39 +02:00
parent 4a0a9d6286
commit 38cf16a5be
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
4 changed files with 25 additions and 3 deletions

View File

@ -265,7 +265,7 @@ namespace dxvk {
DxvkDeviceFeatures enabledFeatures) { DxvkDeviceFeatures enabledFeatures) {
DxvkDeviceExtensions devExtensions; DxvkDeviceExtensions devExtensions;
std::array<DxvkExt*, 30> devExtensionList = {{ std::array<DxvkExt*, 31> devExtensionList = {{
&devExtensions.amdMemoryOverallocationBehaviour, &devExtensions.amdMemoryOverallocationBehaviour,
&devExtensions.amdShaderFragmentMask, &devExtensions.amdShaderFragmentMask,
&devExtensions.ext4444Formats, &devExtensions.ext4444Formats,
@ -289,6 +289,7 @@ namespace dxvk {
&devExtensions.khrDepthStencilResolve, &devExtensions.khrDepthStencilResolve,
&devExtensions.khrDrawIndirectCount, &devExtensions.khrDrawIndirectCount,
&devExtensions.khrDriverProperties, &devExtensions.khrDriverProperties,
&devExtensions.khrDynamicRendering,
&devExtensions.khrExternalMemoryWin32, &devExtensions.khrExternalMemoryWin32,
&devExtensions.khrImageFormatList, &devExtensions.khrImageFormatList,
&devExtensions.khrSamplerMirrorClampToEdge, &devExtensions.khrSamplerMirrorClampToEdge,
@ -334,6 +335,8 @@ namespace dxvk {
enabledFeatures.extRobustness2.nullDescriptor = VK_TRUE; enabledFeatures.extRobustness2.nullDescriptor = VK_TRUE;
enabledFeatures.khrDynamicRendering.dynamicRendering = VK_TRUE;
Logger::info(str::format("Device properties:" Logger::info(str::format("Device properties:"
"\n Device name: : ", m_deviceInfo.core.properties.deviceName, "\n Device name: : ", m_deviceInfo.core.properties.deviceName,
"\n Driver version : ", "\n Driver version : ",
@ -412,6 +415,11 @@ namespace dxvk {
enabledFeatures.khrBufferDeviceAddress.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.khrBufferDeviceAddress); enabledFeatures.khrBufferDeviceAddress.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.khrBufferDeviceAddress);
} }
if (devExtensions.khrDynamicRendering) {
enabledFeatures.khrDynamicRendering.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR;
enabledFeatures.khrDynamicRendering.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.khrDynamicRendering);
}
// Report the desired overallocation behaviour to the driver // Report the desired overallocation behaviour to the driver
VkDeviceMemoryOverallocationCreateInfoAMD overallocInfo; VkDeviceMemoryOverallocationCreateInfoAMD overallocInfo;
overallocInfo.sType = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD; overallocInfo.sType = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD;
@ -722,6 +730,11 @@ namespace dxvk {
m_deviceFeatures.khrBufferDeviceAddress.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.khrBufferDeviceAddress); m_deviceFeatures.khrBufferDeviceAddress.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.khrBufferDeviceAddress);
} }
if (m_deviceExtensions.supports(VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME)) {
m_deviceFeatures.khrDynamicRendering.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR;
m_deviceFeatures.khrDynamicRendering.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.khrDynamicRendering);
}
m_vki->vkGetPhysicalDeviceFeatures2(m_handle, &m_deviceFeatures.core); m_vki->vkGetPhysicalDeviceFeatures2(m_handle, &m_deviceFeatures.core);
} }
@ -817,7 +830,9 @@ namespace dxvk {
"\n vertexAttributeInstanceRateDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor ? "1" : "0", "\n vertexAttributeInstanceRateDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor ? "1" : "0",
"\n vertexAttributeInstanceRateZeroDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor ? "1" : "0", "\n vertexAttributeInstanceRateZeroDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor ? "1" : "0",
"\n", VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, "\n", VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME,
"\n bufferDeviceAddress : ", features.khrBufferDeviceAddress.bufferDeviceAddress)); "\n bufferDeviceAddress : ", features.khrBufferDeviceAddress.bufferDeviceAddress ? "1" : "0",
"\n", VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME,
"\n dynamicRendering : ", features.khrDynamicRendering.dynamicRendering ? "1" : "0"));
} }

View File

@ -49,6 +49,7 @@ namespace dxvk {
VkPhysicalDeviceTransformFeedbackFeaturesEXT extTransformFeedback; VkPhysicalDeviceTransformFeedbackFeaturesEXT extTransformFeedback;
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT extVertexAttributeDivisor; VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT extVertexAttributeDivisor;
VkPhysicalDeviceBufferDeviceAddressFeaturesKHR khrBufferDeviceAddress; VkPhysicalDeviceBufferDeviceAddressFeaturesKHR khrBufferDeviceAddress;
VkPhysicalDeviceDynamicRenderingFeaturesKHR khrDynamicRendering;
}; };
} }

View File

@ -296,9 +296,10 @@ namespace dxvk {
DxvkExt extVertexAttributeDivisor = { VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt extVertexAttributeDivisor = { VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt khrBufferDeviceAddress = { VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, DxvkExtMode::Disabled }; DxvkExt khrBufferDeviceAddress = { VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, DxvkExtMode::Disabled };
DxvkExt khrCreateRenderPass2 = { VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt khrCreateRenderPass2 = { VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt khrDepthStencilResolve = { VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt khrDepthStencilResolve = { VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, DxvkExtMode::Required };
DxvkExt khrDrawIndirectCount = { VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt khrDrawIndirectCount = { VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt khrDriverProperties = { VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt khrDriverProperties = { VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt khrDynamicRendering = { VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME, DxvkExtMode::Required };
DxvkExt khrExternalMemoryWin32 = { VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt khrExternalMemoryWin32 = { VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt khrImageFormatList = { VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME, DxvkExtMode::Required }; DxvkExt khrImageFormatList = { VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME, DxvkExtMode::Required };
DxvkExt khrSamplerMirrorClampToEdge = { VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt khrSamplerMirrorClampToEdge = { VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME, DxvkExtMode::Optional };

View File

@ -365,6 +365,11 @@ namespace dxvk::vk {
VULKAN_FN(vkGetBufferDeviceAddressKHR); VULKAN_FN(vkGetBufferDeviceAddressKHR);
#endif #endif
#ifdef VK_KHR_dynamic_rendering
VULKAN_FN(vkCmdBeginRenderingKHR);
VULKAN_FN(vkCmdEndRenderingKHR);
#endif
#ifdef VK_KHR_external_memory_win32 #ifdef VK_KHR_external_memory_win32
VULKAN_FN(vkGetMemoryWin32HandleKHR); VULKAN_FN(vkGetMemoryWin32HandleKHR);
VULKAN_FN(vkGetMemoryWin32HandlePropertiesKHR); VULKAN_FN(vkGetMemoryWin32HandlePropertiesKHR);