mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-15 07:29:17 +01:00
[dxvk] Query device subgroup properties
Also query the device properites for this extension as well as support for subgroup operations on this device.
This commit is contained in:
parent
67e10246cb
commit
968a085f1e
@ -382,6 +382,14 @@ namespace dxvk {
|
|||||||
m_deviceInfo.core.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR;
|
m_deviceInfo.core.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR;
|
||||||
m_deviceInfo.core.pNext = nullptr;
|
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)) {
|
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.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT;
|
||||||
m_deviceInfo.extTransformFeedback.pNext = std::exchange(m_deviceInfo.core.pNext, &m_deviceInfo.extTransformFeedback);
|
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);
|
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);
|
m_vki->vkGetPhysicalDeviceProperties2KHR(m_handle, &m_deviceInfo.core);
|
||||||
|
|
||||||
// Nvidia reports the driver version in a slightly different format
|
// Nvidia reports the driver version in a slightly different format
|
||||||
|
@ -14,6 +14,7 @@ namespace dxvk {
|
|||||||
*/
|
*/
|
||||||
struct DxvkDeviceInfo {
|
struct DxvkDeviceInfo {
|
||||||
VkPhysicalDeviceProperties2KHR core;
|
VkPhysicalDeviceProperties2KHR core;
|
||||||
|
VkPhysicalDeviceSubgroupProperties coreSubgroup;
|
||||||
VkPhysicalDeviceTransformFeedbackPropertiesEXT extTransformFeedback;
|
VkPhysicalDeviceTransformFeedbackPropertiesEXT extTransformFeedback;
|
||||||
VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT extVertexAttributeDivisor;
|
VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT extVertexAttributeDivisor;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user