mirror of https://github.com/doitsujin/dxvk
[dxvk] Enable VK_KHR_timeline_semaphore if supported
This commit is contained in:
parent
f5fe2596e3
commit
87b23ff9a0
|
@ -251,7 +251,9 @@ namespace dxvk {
|
|||
&& (m_deviceFeatures.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor
|
||||
|| !required.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor)
|
||||
&& (m_deviceFeatures.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor
|
||||
|| !required.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor);
|
||||
|| !required.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor)
|
||||
&& (m_deviceFeatures.khrTimelineSemaphore.timelineSemaphore
|
||||
|| !required.khrTimelineSemaphore.timelineSemaphore);
|
||||
}
|
||||
|
||||
|
||||
|
@ -265,7 +267,7 @@ namespace dxvk {
|
|||
DxvkDeviceFeatures enabledFeatures) {
|
||||
DxvkDeviceExtensions devExtensions;
|
||||
|
||||
std::array<DxvkExt*, 30> devExtensionList = {{
|
||||
std::array<DxvkExt*, 31> devExtensionList = {{
|
||||
&devExtensions.amdMemoryOverallocationBehaviour,
|
||||
&devExtensions.amdShaderFragmentMask,
|
||||
&devExtensions.ext4444Formats,
|
||||
|
@ -294,6 +296,7 @@ namespace dxvk {
|
|||
&devExtensions.khrSamplerMirrorClampToEdge,
|
||||
&devExtensions.khrShaderFloatControls,
|
||||
&devExtensions.khrSwapchain,
|
||||
&devExtensions.khrTimelineSemaphore,
|
||||
&devExtensions.nvxBinaryImport,
|
||||
&devExtensions.nvxImageViewHandle,
|
||||
}};
|
||||
|
@ -410,6 +413,11 @@ namespace dxvk {
|
|||
enabledFeatures.khrBufferDeviceAddress.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.khrBufferDeviceAddress);
|
||||
}
|
||||
|
||||
if (devExtensions.khrTimelineSemaphore) {
|
||||
enabledFeatures.khrTimelineSemaphore.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR;
|
||||
enabledFeatures.khrTimelineSemaphore.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.khrTimelineSemaphore);
|
||||
}
|
||||
|
||||
// Report the desired overallocation behaviour to the driver
|
||||
VkDeviceMemoryOverallocationCreateInfoAMD overallocInfo;
|
||||
overallocInfo.sType = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD;
|
||||
|
@ -629,6 +637,11 @@ namespace dxvk {
|
|||
m_deviceInfo.khrShaderFloatControls.pNext = std::exchange(m_deviceInfo.core.pNext, &m_deviceInfo.khrShaderFloatControls);
|
||||
}
|
||||
|
||||
if (m_deviceExtensions.supports(VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME)) {
|
||||
m_deviceInfo.khrTimelineSemaphore.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR;
|
||||
m_deviceInfo.khrTimelineSemaphore.pNext = std::exchange(m_deviceInfo.core.pNext, &m_deviceInfo.khrTimelineSemaphore);
|
||||
}
|
||||
|
||||
// Query full device properties for all enabled extensions
|
||||
m_vki->vkGetPhysicalDeviceProperties2(m_handle, &m_deviceInfo.core);
|
||||
|
||||
|
@ -720,6 +733,11 @@ namespace dxvk {
|
|||
m_deviceFeatures.khrBufferDeviceAddress.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.khrBufferDeviceAddress);
|
||||
}
|
||||
|
||||
if (m_deviceExtensions.supports(VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME)) {
|
||||
m_deviceFeatures.khrTimelineSemaphore.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR;
|
||||
m_deviceFeatures.khrTimelineSemaphore.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.khrTimelineSemaphore);
|
||||
}
|
||||
|
||||
m_vki->vkGetPhysicalDeviceFeatures2(m_handle, &m_deviceFeatures.core);
|
||||
}
|
||||
|
||||
|
@ -815,7 +833,9 @@ namespace dxvk {
|
|||
"\n vertexAttributeInstanceRateDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor ? "1" : "0",
|
||||
"\n vertexAttributeInstanceRateZeroDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor ? "1" : "0",
|
||||
"\n", VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME,
|
||||
"\n bufferDeviceAddress : ", features.khrBufferDeviceAddress.bufferDeviceAddress));
|
||||
"\n bufferDeviceAddress : ", features.khrBufferDeviceAddress.bufferDeviceAddress,
|
||||
"\n", VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME,
|
||||
"\n timelineSemaphore : ", features.khrTimelineSemaphore.timelineSemaphore));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ namespace dxvk {
|
|||
VkPhysicalDeviceDepthStencilResolvePropertiesKHR khrDepthStencilResolve;
|
||||
VkPhysicalDeviceDriverPropertiesKHR khrDeviceDriverProperties;
|
||||
VkPhysicalDeviceFloatControlsPropertiesKHR khrShaderFloatControls;
|
||||
VkPhysicalDeviceTimelineSemaphorePropertiesKHR khrTimelineSemaphore;
|
||||
};
|
||||
|
||||
|
||||
|
@ -49,6 +50,7 @@ namespace dxvk {
|
|||
VkPhysicalDeviceTransformFeedbackFeaturesEXT extTransformFeedback;
|
||||
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT extVertexAttributeDivisor;
|
||||
VkPhysicalDeviceBufferDeviceAddressFeaturesKHR khrBufferDeviceAddress;
|
||||
VkPhysicalDeviceTimelineSemaphoreFeaturesKHR khrTimelineSemaphore;
|
||||
};
|
||||
|
||||
}
|
|
@ -304,6 +304,7 @@ namespace dxvk {
|
|||
DxvkExt khrSamplerMirrorClampToEdge = { VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt khrShaderFloatControls = { VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt khrSwapchain = { VK_KHR_SWAPCHAIN_EXTENSION_NAME, DxvkExtMode::Required };
|
||||
DxvkExt khrTimelineSemaphore = { VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt nvxBinaryImport = { VK_NVX_BINARY_IMPORT_EXTENSION_NAME, DxvkExtMode::Disabled };
|
||||
DxvkExt nvxImageViewHandle = { VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME, DxvkExtMode::Disabled };
|
||||
};
|
||||
|
|
|
@ -309,6 +309,12 @@ namespace dxvk::vk {
|
|||
VULKAN_FN(vkQueuePresentKHR);
|
||||
#endif
|
||||
|
||||
#ifdef VK_KHR_timeline_semaphore
|
||||
VULKAN_FN(vkGetSemaphoreCounterValueKHR);
|
||||
VULKAN_FN(vkSignalSemaphoreKHR);
|
||||
VULKAN_FN(vkWaitSemaphoresKHR);
|
||||
#endif
|
||||
|
||||
#ifdef VK_EXT_conditional_rendering
|
||||
VULKAN_FN(vkCmdBeginConditionalRenderingEXT);
|
||||
VULKAN_FN(vkCmdEndConditionalRenderingEXT);
|
||||
|
|
Loading…
Reference in New Issue