mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-15 07:29:17 +01:00
[dxvk] Don't enable VK_KHR_shader_draw_parameters
Core in Vulkan 1.1.
This commit is contained in:
parent
073669b7e7
commit
4923bc20f7
@ -1903,6 +1903,8 @@ namespace dxvk {
|
|||||||
enabled.core.features.shaderStorageImageWriteWithoutFormat = VK_TRUE;
|
enabled.core.features.shaderStorageImageWriteWithoutFormat = VK_TRUE;
|
||||||
enabled.core.features.depthBounds = supported.core.features.depthBounds;
|
enabled.core.features.depthBounds = supported.core.features.depthBounds;
|
||||||
|
|
||||||
|
enabled.shaderDrawParameters.shaderDrawParameters = VK_TRUE;
|
||||||
|
|
||||||
enabled.extMemoryPriority.memoryPriority = supported.extMemoryPriority.memoryPriority;
|
enabled.extMemoryPriority.memoryPriority = supported.extMemoryPriority.memoryPriority;
|
||||||
|
|
||||||
enabled.extShaderDemoteToHelperInvocation.shaderDemoteToHelperInvocation = supported.extShaderDemoteToHelperInvocation.shaderDemoteToHelperInvocation;
|
enabled.extShaderDemoteToHelperInvocation.shaderDemoteToHelperInvocation = supported.extShaderDemoteToHelperInvocation.shaderDemoteToHelperInvocation;
|
||||||
|
@ -213,6 +213,8 @@ namespace dxvk {
|
|||||||
|| !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.shaderDrawParameters.shaderDrawParameters
|
||||||
|
|| !required.shaderDrawParameters.shaderDrawParameters)
|
||||||
&& (m_deviceFeatures.extConditionalRendering.conditionalRendering
|
&& (m_deviceFeatures.extConditionalRendering.conditionalRendering
|
||||||
|| !required.extConditionalRendering.conditionalRendering)
|
|| !required.extConditionalRendering.conditionalRendering)
|
||||||
&& (m_deviceFeatures.extDepthClipEnable.depthClipEnable
|
&& (m_deviceFeatures.extDepthClipEnable.depthClipEnable
|
||||||
@ -241,7 +243,7 @@ namespace dxvk {
|
|||||||
DxvkDeviceFeatures enabledFeatures) {
|
DxvkDeviceFeatures enabledFeatures) {
|
||||||
DxvkDeviceExtensions devExtensions;
|
DxvkDeviceExtensions devExtensions;
|
||||||
|
|
||||||
std::array<DxvkExt*, 22> devExtensionList = {{
|
std::array<DxvkExt*, 21> devExtensionList = {{
|
||||||
&devExtensions.amdMemoryOverallocationBehaviour,
|
&devExtensions.amdMemoryOverallocationBehaviour,
|
||||||
&devExtensions.amdShaderFragmentMask,
|
&devExtensions.amdShaderFragmentMask,
|
||||||
&devExtensions.extConditionalRendering,
|
&devExtensions.extConditionalRendering,
|
||||||
@ -262,7 +264,6 @@ namespace dxvk {
|
|||||||
&devExtensions.khrDriverProperties,
|
&devExtensions.khrDriverProperties,
|
||||||
&devExtensions.khrImageFormatList,
|
&devExtensions.khrImageFormatList,
|
||||||
&devExtensions.khrSamplerMirrorClampToEdge,
|
&devExtensions.khrSamplerMirrorClampToEdge,
|
||||||
&devExtensions.khrShaderDrawParameters,
|
|
||||||
&devExtensions.khrSwapchain,
|
&devExtensions.khrSwapchain,
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@ -293,46 +294,42 @@ namespace dxvk {
|
|||||||
enabledFeatures.core.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR;
|
enabledFeatures.core.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR;
|
||||||
enabledFeatures.core.pNext = nullptr;
|
enabledFeatures.core.pNext = nullptr;
|
||||||
|
|
||||||
|
enabledFeatures.shaderDrawParameters.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
|
||||||
|
enabledFeatures.shaderDrawParameters.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.shaderDrawParameters);
|
||||||
|
|
||||||
if (devExtensions.extConditionalRendering) {
|
if (devExtensions.extConditionalRendering) {
|
||||||
enabledFeatures.extConditionalRendering.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
|
enabledFeatures.extConditionalRendering.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
|
||||||
enabledFeatures.extConditionalRendering.pNext = enabledFeatures.core.pNext;
|
enabledFeatures.extConditionalRendering.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extConditionalRendering);
|
||||||
enabledFeatures.core.pNext = &enabledFeatures.extConditionalRendering;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (devExtensions.extDepthClipEnable) {
|
if (devExtensions.extDepthClipEnable) {
|
||||||
enabledFeatures.extDepthClipEnable.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT;
|
enabledFeatures.extDepthClipEnable.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT;
|
||||||
enabledFeatures.extDepthClipEnable.pNext = enabledFeatures.core.pNext;
|
enabledFeatures.extDepthClipEnable.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extDepthClipEnable);
|
||||||
enabledFeatures.core.pNext = &enabledFeatures.extDepthClipEnable;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (devExtensions.extHostQueryReset) {
|
if (devExtensions.extHostQueryReset) {
|
||||||
enabledFeatures.extHostQueryReset.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT;
|
enabledFeatures.extHostQueryReset.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT;
|
||||||
enabledFeatures.extHostQueryReset.pNext = enabledFeatures.core.pNext;
|
enabledFeatures.extHostQueryReset.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extHostQueryReset);
|
||||||
enabledFeatures.core.pNext = &enabledFeatures.extHostQueryReset;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (devExtensions.extMemoryPriority) {
|
if (devExtensions.extMemoryPriority) {
|
||||||
enabledFeatures.extMemoryPriority.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
|
enabledFeatures.extMemoryPriority.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
|
||||||
enabledFeatures.extMemoryPriority.pNext = enabledFeatures.core.pNext;
|
enabledFeatures.extMemoryPriority.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extMemoryPriority);
|
||||||
enabledFeatures.core.pNext = &enabledFeatures.extMemoryPriority;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (devExtensions.extShaderDemoteToHelperInvocation) {
|
if (devExtensions.extShaderDemoteToHelperInvocation) {
|
||||||
enabledFeatures.extShaderDemoteToHelperInvocation.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT;
|
enabledFeatures.extShaderDemoteToHelperInvocation.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT;
|
||||||
enabledFeatures.extShaderDemoteToHelperInvocation.pNext = enabledFeatures.core.pNext;
|
enabledFeatures.extShaderDemoteToHelperInvocation.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extShaderDemoteToHelperInvocation);
|
||||||
enabledFeatures.core.pNext = &enabledFeatures.extShaderDemoteToHelperInvocation;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (devExtensions.extTransformFeedback) {
|
if (devExtensions.extTransformFeedback) {
|
||||||
enabledFeatures.extTransformFeedback.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
|
enabledFeatures.extTransformFeedback.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
|
||||||
enabledFeatures.extTransformFeedback.pNext = enabledFeatures.core.pNext;
|
enabledFeatures.extTransformFeedback.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extTransformFeedback);
|
||||||
enabledFeatures.core.pNext = &enabledFeatures.extTransformFeedback;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (devExtensions.extVertexAttributeDivisor.revision() >= 3) {
|
if (devExtensions.extVertexAttributeDivisor.revision() >= 3) {
|
||||||
enabledFeatures.extVertexAttributeDivisor.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT;
|
enabledFeatures.extVertexAttributeDivisor.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT;
|
||||||
enabledFeatures.extVertexAttributeDivisor.pNext = enabledFeatures.core.pNext;
|
enabledFeatures.extVertexAttributeDivisor.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extVertexAttributeDivisor);
|
||||||
enabledFeatures.core.pNext = &enabledFeatures.extVertexAttributeDivisor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Report the desired overallocation behaviour to the driver
|
// Report the desired overallocation behaviour to the driver
|
||||||
@ -518,6 +515,9 @@ namespace dxvk {
|
|||||||
m_deviceFeatures.core.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
|
m_deviceFeatures.core.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
|
||||||
m_deviceFeatures.core.pNext = nullptr;
|
m_deviceFeatures.core.pNext = nullptr;
|
||||||
|
|
||||||
|
m_deviceFeatures.shaderDrawParameters.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
|
||||||
|
m_deviceFeatures.shaderDrawParameters.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.shaderDrawParameters);
|
||||||
|
|
||||||
if (m_deviceExtensions.supports(VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME)) {
|
if (m_deviceExtensions.supports(VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME)) {
|
||||||
m_deviceFeatures.extConditionalRendering.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
|
m_deviceFeatures.extConditionalRendering.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
|
||||||
m_deviceFeatures.extConditionalRendering.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extConditionalRendering);
|
m_deviceFeatures.extConditionalRendering.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extConditionalRendering);
|
||||||
|
@ -32,6 +32,7 @@ namespace dxvk {
|
|||||||
*/
|
*/
|
||||||
struct DxvkDeviceFeatures {
|
struct DxvkDeviceFeatures {
|
||||||
VkPhysicalDeviceFeatures2 core;
|
VkPhysicalDeviceFeatures2 core;
|
||||||
|
VkPhysicalDeviceShaderDrawParametersFeatures shaderDrawParameters;
|
||||||
VkPhysicalDeviceConditionalRenderingFeaturesEXT extConditionalRendering;
|
VkPhysicalDeviceConditionalRenderingFeaturesEXT extConditionalRendering;
|
||||||
VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable;
|
VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable;
|
||||||
VkPhysicalDeviceHostQueryResetFeaturesEXT extHostQueryReset;
|
VkPhysicalDeviceHostQueryResetFeaturesEXT extHostQueryReset;
|
||||||
|
@ -278,7 +278,6 @@ namespace dxvk {
|
|||||||
DxvkExt khrDriverProperties = { VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, DxvkExtMode::Optional };
|
DxvkExt khrDriverProperties = { VK_KHR_DRIVER_PROPERTIES_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 };
|
||||||
DxvkExt khrShaderDrawParameters = { VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, DxvkExtMode::Required };
|
|
||||||
DxvkExt khrSwapchain = { VK_KHR_SWAPCHAIN_EXTENSION_NAME, DxvkExtMode::Required };
|
DxvkExt khrSwapchain = { VK_KHR_SWAPCHAIN_EXTENSION_NAME, DxvkExtMode::Required };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user