From 968a085f1e01dfb98535343077597168c64507c6 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Wed, 7 Nov 2018 10:36:34 +0100 Subject: [PATCH] [dxvk] Query device subgroup properties Also query the device properites for this extension as well as support for subgroup operations on this device. --- src/dxvk/dxvk_adapter.cpp | 9 +++++++++ src/dxvk/dxvk_device_info.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/dxvk/dxvk_adapter.cpp b/src/dxvk/dxvk_adapter.cpp index adea2900..862f361b 100644 --- a/src/dxvk/dxvk_adapter.cpp +++ b/src/dxvk/dxvk_adapter.cpp @@ -382,6 +382,14 @@ namespace dxvk { m_deviceInfo.core.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR; m_deviceInfo.core.pNext = nullptr; + // Query info now so that we have basic device properties available + m_vki->vkGetPhysicalDeviceProperties2KHR(m_handle, &m_deviceInfo.core); + + if (m_deviceInfo.core.properties.apiVersion >= VK_MAKE_VERSION(1, 1, 0)) { + m_deviceInfo.coreSubgroup.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES; + m_deviceInfo.coreSubgroup.pNext = std::exchange(m_deviceInfo.core.pNext, &m_deviceInfo.coreSubgroup); + } + if (m_deviceExtensions.supports(VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME)) { m_deviceInfo.extTransformFeedback.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT; m_deviceInfo.extTransformFeedback.pNext = std::exchange(m_deviceInfo.core.pNext, &m_deviceInfo.extTransformFeedback); @@ -392,6 +400,7 @@ namespace dxvk { m_deviceInfo.extVertexAttributeDivisor.pNext = std::exchange(m_deviceInfo.core.pNext, &m_deviceInfo.extVertexAttributeDivisor); } + // Query full device properties for all enabled extensions m_vki->vkGetPhysicalDeviceProperties2KHR(m_handle, &m_deviceInfo.core); // Nvidia reports the driver version in a slightly different format diff --git a/src/dxvk/dxvk_device_info.h b/src/dxvk/dxvk_device_info.h index 5434c44c..2f387b8f 100644 --- a/src/dxvk/dxvk_device_info.h +++ b/src/dxvk/dxvk_device_info.h @@ -14,6 +14,7 @@ namespace dxvk { */ struct DxvkDeviceInfo { VkPhysicalDeviceProperties2KHR core; + VkPhysicalDeviceSubgroupProperties coreSubgroup; VkPhysicalDeviceTransformFeedbackPropertiesEXT extTransformFeedback; VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT extVertexAttributeDivisor; };