1
0
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:
Philip Rebohle 2020-01-16 20:37:41 +01:00 committed by Philip Rebohle
parent 073669b7e7
commit 4923bc20f7
4 changed files with 19 additions and 17 deletions

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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 };
}; };