mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-27 13:54:16 +01:00
[dxvk] Enable device features for VK_EXT_vertex_attribute_divisor
This commit is contained in:
parent
ba65a1e36b
commit
d7441f274b
@ -1324,6 +1324,9 @@ namespace dxvk {
|
|||||||
|
|
||||||
enabled.core.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR;
|
enabled.core.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR;
|
||||||
enabled.core.pNext = nullptr;
|
enabled.core.pNext = nullptr;
|
||||||
|
|
||||||
|
enabled.extVertexAttributeDivisor.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT;
|
||||||
|
enabled.extVertexAttributeDivisor.pNext = nullptr;
|
||||||
|
|
||||||
if (featureLevel >= D3D_FEATURE_LEVEL_9_1) {
|
if (featureLevel >= D3D_FEATURE_LEVEL_9_1) {
|
||||||
enabled.core.features.depthClamp = VK_TRUE;
|
enabled.core.features.depthClamp = VK_TRUE;
|
||||||
@ -1376,6 +1379,12 @@ namespace dxvk {
|
|||||||
enabled.core.features.vertexPipelineStoresAndAtomics = VK_TRUE;
|
enabled.core.features.vertexPipelineStoresAndAtomics = VK_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (supported.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor
|
||||||
|
&& supported.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor) {
|
||||||
|
enabled.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor = VK_TRUE;
|
||||||
|
enabled.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor = VK_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
return enabled;
|
return enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,7 +182,11 @@ namespace dxvk {
|
|||||||
&& (m_deviceFeatures.core.features.variableMultisampleRate
|
&& (m_deviceFeatures.core.features.variableMultisampleRate
|
||||||
|| !required.core.features.variableMultisampleRate)
|
|| !required.core.features.variableMultisampleRate)
|
||||||
&& (m_deviceFeatures.core.features.inheritedQueries
|
&& (m_deviceFeatures.core.features.inheritedQueries
|
||||||
|| !required.core.features.inheritedQueries);
|
|| !required.core.features.inheritedQueries)
|
||||||
|
&& (m_deviceFeatures.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor
|
||||||
|
|| !required.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor)
|
||||||
|
&& (m_deviceFeatures.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor
|
||||||
|
|| !required.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -217,7 +221,16 @@ namespace dxvk {
|
|||||||
|
|
||||||
Logger::info("Enabled device extensions:");
|
Logger::info("Enabled device extensions:");
|
||||||
this->logNameList(extensionNameList);
|
this->logNameList(extensionNameList);
|
||||||
|
|
||||||
|
// Create pNext chain for additional device features
|
||||||
|
enabledFeatures.core.pNext = nullptr;
|
||||||
|
|
||||||
|
if (devExtensions.extVertexAttributeDivisor.revision() >= 3) {
|
||||||
|
enabledFeatures.extVertexAttributeDivisor.pNext = enabledFeatures.core.pNext;
|
||||||
|
enabledFeatures.core.pNext = &enabledFeatures.extVertexAttributeDivisor;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create one single queue for graphics and present
|
||||||
float queuePriority = 1.0f;
|
float queuePriority = 1.0f;
|
||||||
std::vector<VkDeviceQueueCreateInfo> queueInfos;
|
std::vector<VkDeviceQueueCreateInfo> queueInfos;
|
||||||
|
|
||||||
@ -241,7 +254,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
VkDeviceCreateInfo info;
|
VkDeviceCreateInfo info;
|
||||||
info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
|
info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
|
||||||
info.pNext = nullptr;
|
info.pNext = enabledFeatures.core.pNext;
|
||||||
info.flags = 0;
|
info.flags = 0;
|
||||||
info.queueCreateInfoCount = queueInfos.size();
|
info.queueCreateInfoCount = queueInfos.size();
|
||||||
info.pQueueCreateInfos = queueInfos.data();
|
info.pQueueCreateInfos = queueInfos.data();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user