1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-04-01 00:25:17 +02:00

[dxvk] Replace VK_EXT_extended_dynamic_state with core feature

This commit is contained in:
Philip Rebohle 2022-07-14 20:56:56 +02:00
parent 3cfc3e7714
commit 7677db3371
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
11 changed files with 49 additions and 78 deletions

View File

@ -258,8 +258,6 @@ namespace dxvk {
|| !required.extCustomBorderColor.customBorderColorWithoutFormat) || !required.extCustomBorderColor.customBorderColorWithoutFormat)
&& (m_deviceFeatures.extDepthClipEnable.depthClipEnable && (m_deviceFeatures.extDepthClipEnable.depthClipEnable
|| !required.extDepthClipEnable.depthClipEnable) || !required.extDepthClipEnable.depthClipEnable)
&& (m_deviceFeatures.extExtendedDynamicState.extendedDynamicState
|| !required.extExtendedDynamicState.extendedDynamicState)
&& (m_deviceFeatures.extGraphicsPipelineLibrary.graphicsPipelineLibrary && (m_deviceFeatures.extGraphicsPipelineLibrary.graphicsPipelineLibrary
|| !required.extGraphicsPipelineLibrary.graphicsPipelineLibrary) || !required.extGraphicsPipelineLibrary.graphicsPipelineLibrary)
&& (m_deviceFeatures.extMemoryPriority.memoryPriority && (m_deviceFeatures.extMemoryPriority.memoryPriority
@ -295,14 +293,13 @@ namespace dxvk {
DxvkDeviceFeatures enabledFeatures) { DxvkDeviceFeatures enabledFeatures) {
DxvkDeviceExtensions devExtensions; DxvkDeviceExtensions devExtensions;
std::array<DxvkExt*, 24> devExtensionList = {{ std::array<DxvkExt*, 23> devExtensionList = {{
&devExtensions.amdMemoryOverallocationBehaviour, &devExtensions.amdMemoryOverallocationBehaviour,
&devExtensions.amdShaderFragmentMask, &devExtensions.amdShaderFragmentMask,
&devExtensions.ext4444Formats, &devExtensions.ext4444Formats,
&devExtensions.extConservativeRasterization, &devExtensions.extConservativeRasterization,
&devExtensions.extCustomBorderColor, &devExtensions.extCustomBorderColor,
&devExtensions.extDepthClipEnable, &devExtensions.extDepthClipEnable,
&devExtensions.extExtendedDynamicState,
&devExtensions.extFullScreenExclusive, &devExtensions.extFullScreenExclusive,
&devExtensions.extGraphicsPipelineLibrary, &devExtensions.extGraphicsPipelineLibrary,
&devExtensions.extMemoryBudget, &devExtensions.extMemoryBudget,
@ -360,8 +357,6 @@ namespace dxvk {
enabledFeatures.vk13.dynamicRendering = VK_TRUE; enabledFeatures.vk13.dynamicRendering = VK_TRUE;
enabledFeatures.vk13.maintenance4 = VK_TRUE; enabledFeatures.vk13.maintenance4 = VK_TRUE;
enabledFeatures.extExtendedDynamicState.extendedDynamicState = VK_TRUE;
enabledFeatures.extGraphicsPipelineLibrary.graphicsPipelineLibrary = enabledFeatures.extGraphicsPipelineLibrary.graphicsPipelineLibrary =
m_deviceFeatures.extGraphicsPipelineLibrary.graphicsPipelineLibrary; m_deviceFeatures.extGraphicsPipelineLibrary.graphicsPipelineLibrary;
@ -417,11 +412,6 @@ namespace dxvk {
enabledFeatures.extDepthClipEnable.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extDepthClipEnable); enabledFeatures.extDepthClipEnable.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extDepthClipEnable);
} }
if (devExtensions.extExtendedDynamicState) {
enabledFeatures.extExtendedDynamicState.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
enabledFeatures.extExtendedDynamicState.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extExtendedDynamicState);
}
if (devExtensions.extGraphicsPipelineLibrary) { if (devExtensions.extGraphicsPipelineLibrary) {
enabledFeatures.extGraphicsPipelineLibrary.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT; enabledFeatures.extGraphicsPipelineLibrary.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT;
enabledFeatures.extGraphicsPipelineLibrary.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extGraphicsPipelineLibrary); enabledFeatures.extGraphicsPipelineLibrary.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extGraphicsPipelineLibrary);
@ -722,11 +712,6 @@ namespace dxvk {
m_deviceFeatures.extDepthClipEnable.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extDepthClipEnable); m_deviceFeatures.extDepthClipEnable.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extDepthClipEnable);
} }
if (m_deviceExtensions.supports(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME)) {
m_deviceFeatures.extExtendedDynamicState.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
m_deviceFeatures.extExtendedDynamicState.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extExtendedDynamicState);
}
if (m_deviceExtensions.supports(VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME)) { if (m_deviceExtensions.supports(VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME)) {
m_deviceFeatures.extGraphicsPipelineLibrary.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT; m_deviceFeatures.extGraphicsPipelineLibrary.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT;
m_deviceFeatures.extGraphicsPipelineLibrary.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extGraphicsPipelineLibrary); m_deviceFeatures.extGraphicsPipelineLibrary.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extGraphicsPipelineLibrary);
@ -863,8 +848,6 @@ namespace dxvk {
"\n customBorderColorWithoutFormat : ", features.extCustomBorderColor.customBorderColorWithoutFormat ? "1" : "0", "\n customBorderColorWithoutFormat : ", features.extCustomBorderColor.customBorderColorWithoutFormat ? "1" : "0",
"\n", VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, "\n", VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME,
"\n depthClipEnable : ", features.extDepthClipEnable.depthClipEnable ? "1" : "0", "\n depthClipEnable : ", features.extDepthClipEnable.depthClipEnable ? "1" : "0",
"\n", VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME,
"\n extendedDynamicState : ", features.extExtendedDynamicState.extendedDynamicState ? "1" : "0",
"\n", VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, "\n", VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME,
"\n graphicsPipelineLibrary : ", features.extGraphicsPipelineLibrary.graphicsPipelineLibrary ? "1" : "0", "\n graphicsPipelineLibrary : ", features.extGraphicsPipelineLibrary.graphicsPipelineLibrary ? "1" : "0",
"\n", VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, "\n", VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME,

View File

@ -327,20 +327,10 @@ namespace dxvk {
uint32_t firstBinding, uint32_t firstBinding,
uint32_t bindingCount, uint32_t bindingCount,
const VkBuffer* pBuffers, const VkBuffer* pBuffers,
const VkDeviceSize* pOffsets) {
m_vkd->vkCmdBindVertexBuffers(m_execBuffer,
firstBinding, bindingCount, pBuffers, pOffsets);
}
void cmdBindVertexBuffers2(
uint32_t firstBinding,
uint32_t bindingCount,
const VkBuffer* pBuffers,
const VkDeviceSize* pOffsets, const VkDeviceSize* pOffsets,
const VkDeviceSize* pSizes, const VkDeviceSize* pSizes,
const VkDeviceSize* pStrides) { const VkDeviceSize* pStrides) {
m_vkd->vkCmdBindVertexBuffers2EXT(m_execBuffer, m_vkd->vkCmdBindVertexBuffers2(m_execBuffer,
firstBinding, bindingCount, pBuffers, pOffsets, firstBinding, bindingCount, pBuffers, pOffsets,
pSizes, pStrides); pSizes, pStrides);
} }
@ -701,7 +691,7 @@ namespace dxvk {
void cmdSetDepthBoundsState( void cmdSetDepthBoundsState(
VkBool32 depthBoundsTestEnable) { VkBool32 depthBoundsTestEnable) {
m_vkd->vkCmdSetDepthBoundsTestEnableEXT(m_execBuffer, depthBoundsTestEnable); m_vkd->vkCmdSetDepthBoundsTestEnable(m_execBuffer, depthBoundsTestEnable);
} }
@ -709,11 +699,11 @@ namespace dxvk {
VkBool32 depthTestEnable, VkBool32 depthTestEnable,
VkBool32 depthWriteEnable, VkBool32 depthWriteEnable,
VkCompareOp depthCompareOp) { VkCompareOp depthCompareOp) {
m_vkd->vkCmdSetDepthTestEnableEXT(m_execBuffer, depthTestEnable); m_vkd->vkCmdSetDepthTestEnable(m_execBuffer, depthTestEnable);
if (depthTestEnable) { if (depthTestEnable) {
m_vkd->vkCmdSetDepthWriteEnableEXT(m_execBuffer, depthWriteEnable); m_vkd->vkCmdSetDepthWriteEnable(m_execBuffer, depthWriteEnable);
m_vkd->vkCmdSetDepthCompareOpEXT(m_execBuffer, depthCompareOp); m_vkd->vkCmdSetDepthCompareOp(m_execBuffer, depthCompareOp);
} }
} }
@ -728,15 +718,15 @@ namespace dxvk {
void cmdSetRasterizerState( void cmdSetRasterizerState(
VkCullModeFlags cullMode, VkCullModeFlags cullMode,
VkFrontFace frontFace) { VkFrontFace frontFace) {
m_vkd->vkCmdSetCullModeEXT(m_execBuffer, cullMode); m_vkd->vkCmdSetCullMode(m_execBuffer, cullMode);
m_vkd->vkCmdSetFrontFaceEXT(m_execBuffer, frontFace); m_vkd->vkCmdSetFrontFace(m_execBuffer, frontFace);
} }
void cmdSetScissor( void cmdSetScissor(
uint32_t scissorCount, uint32_t scissorCount,
const VkRect2D* scissors) { const VkRect2D* scissors) {
m_vkd->vkCmdSetScissorWithCountEXT( m_vkd->vkCmdSetScissorWithCount(
m_execBuffer, scissorCount, scissors); m_execBuffer, scissorCount, scissors);
} }
@ -745,11 +735,11 @@ namespace dxvk {
VkBool32 enableStencilTest, VkBool32 enableStencilTest,
const VkStencilOpState& front, const VkStencilOpState& front,
const VkStencilOpState& back) { const VkStencilOpState& back) {
m_vkd->vkCmdSetStencilTestEnableEXT( m_vkd->vkCmdSetStencilTestEnable(
m_execBuffer, enableStencilTest); m_execBuffer, enableStencilTest);
if (enableStencilTest) { if (enableStencilTest) {
m_vkd->vkCmdSetStencilOpEXT(m_execBuffer, m_vkd->vkCmdSetStencilOp(m_execBuffer,
VK_STENCIL_FACE_FRONT_BIT, front.failOp, VK_STENCIL_FACE_FRONT_BIT, front.failOp,
front.passOp, front.depthFailOp, front.compareOp); front.passOp, front.depthFailOp, front.compareOp);
m_vkd->vkCmdSetStencilCompareMask(m_execBuffer, m_vkd->vkCmdSetStencilCompareMask(m_execBuffer,
@ -757,7 +747,7 @@ namespace dxvk {
m_vkd->vkCmdSetStencilWriteMask(m_execBuffer, m_vkd->vkCmdSetStencilWriteMask(m_execBuffer,
VK_STENCIL_FACE_FRONT_BIT, front.writeMask); VK_STENCIL_FACE_FRONT_BIT, front.writeMask);
m_vkd->vkCmdSetStencilOpEXT(m_execBuffer, m_vkd->vkCmdSetStencilOp(m_execBuffer,
VK_STENCIL_FACE_BACK_BIT, back.failOp, VK_STENCIL_FACE_BACK_BIT, back.failOp,
back.passOp, back.depthFailOp, back.compareOp); back.passOp, back.depthFailOp, back.compareOp);
m_vkd->vkCmdSetStencilCompareMask(m_execBuffer, m_vkd->vkCmdSetStencilCompareMask(m_execBuffer,
@ -779,7 +769,7 @@ namespace dxvk {
void cmdSetViewport( void cmdSetViewport(
uint32_t viewportCount, uint32_t viewportCount,
const VkViewport* viewports) { const VkViewport* viewports) {
m_vkd->vkCmdSetViewportWithCountEXT( m_vkd->vkCmdSetViewportWithCount(
m_execBuffer, viewportCount, viewports); m_execBuffer, viewportCount, viewports);
} }

View File

@ -5073,7 +5073,7 @@ namespace dxvk {
// Vertex bindigs get remapped when compiling the // Vertex bindigs get remapped when compiling the
// pipeline, so this actually does the right thing // pipeline, so this actually does the right thing
m_cmd->cmdBindVertexBuffers2(0, m_state.gp.state.il.bindingCount(), m_cmd->cmdBindVertexBuffers(0, m_state.gp.state.il.bindingCount(),
buffers.data(), offsets.data(), lengths.data(), nullptr); buffers.data(), offsets.data(), lengths.data(), nullptr);
} }

View File

@ -41,7 +41,6 @@ namespace dxvk {
VkPhysicalDevice4444FormatsFeaturesEXT ext4444Formats; VkPhysicalDevice4444FormatsFeaturesEXT ext4444Formats;
VkPhysicalDeviceCustomBorderColorFeaturesEXT extCustomBorderColor; VkPhysicalDeviceCustomBorderColorFeaturesEXT extCustomBorderColor;
VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable; VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable;
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extExtendedDynamicState;
VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT extGraphicsPipelineLibrary; VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT extGraphicsPipelineLibrary;
VkPhysicalDeviceMemoryPriorityFeaturesEXT extMemoryPriority; VkPhysicalDeviceMemoryPriorityFeaturesEXT extMemoryPriority;
VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT extNonSeamlessCubeMap; VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT extNonSeamlessCubeMap;

View File

@ -282,7 +282,6 @@ namespace dxvk {
DxvkExt extConservativeRasterization = { VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt extConservativeRasterization = { VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt extCustomBorderColor = { VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt extCustomBorderColor = { VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt extDepthClipEnable = { VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt extDepthClipEnable = { VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt extExtendedDynamicState = { VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, DxvkExtMode::Required };
DxvkExt extFullScreenExclusive = { VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt extFullScreenExclusive = { VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt extGraphicsPipelineLibrary = { VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, DxvkExtMode::Optional }; DxvkExt extGraphicsPipelineLibrary = { VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt extMemoryBudget = { VK_EXT_MEMORY_BUDGET_EXTENSION_NAME, DxvkExtMode::Passive }; DxvkExt extMemoryBudget = { VK_EXT_MEMORY_BUDGET_EXTENSION_NAME, DxvkExtMode::Passive };

View File

@ -769,8 +769,8 @@ namespace dxvk {
std::array<VkDynamicState, 8> dynamicStates; std::array<VkDynamicState, 8> dynamicStates;
uint32_t dynamicStateCount = 0; uint32_t dynamicStateCount = 0;
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT;
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT;
if (state.useDynamicDepthBias()) if (state.useDynamicDepthBias())
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_DEPTH_BIAS; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_DEPTH_BIAS;
@ -785,8 +785,8 @@ namespace dxvk {
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_REFERENCE; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_REFERENCE;
if (!m_flags.test(DxvkGraphicsPipelineFlag::HasRasterizerDiscard)) { if (!m_flags.test(DxvkGraphicsPipelineFlag::HasRasterizerDiscard)) {
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_CULL_MODE_EXT; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_CULL_MODE;
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_FRONT_FACE_EXT; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_FRONT_FACE;
} }
// Set up some specialization constants // Set up some specialization constants

View File

@ -307,8 +307,8 @@ namespace dxvk {
VK_SHADER_STAGE_FRAGMENT_BIT, psModule, "main" }; VK_SHADER_STAGE_FRAGMENT_BIT, psModule, "main" };
std::array<VkDynamicState, 2> dynStates = {{ std::array<VkDynamicState, 2> dynStates = {{
VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT, VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT,
VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT, VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT,
}}; }};
VkPipelineDynamicStateCreateInfo dynState = { VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO }; VkPipelineDynamicStateCreateInfo dynState = { VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO };

View File

@ -344,8 +344,8 @@ namespace dxvk {
VK_SHADER_STAGE_FRAGMENT_BIT, psModule, "main" }; VK_SHADER_STAGE_FRAGMENT_BIT, psModule, "main" };
std::array<VkDynamicState, 2> dynStates = {{ std::array<VkDynamicState, 2> dynStates = {{
VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT, VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT,
VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT, VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT,
}}; }};
VkPipelineDynamicStateCreateInfo dynState = { VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO }; VkPipelineDynamicStateCreateInfo dynState = { VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO };

View File

@ -257,8 +257,8 @@ namespace dxvk {
VK_SHADER_STAGE_FRAGMENT_BIT, psModule, "main", &specInfo }; VK_SHADER_STAGE_FRAGMENT_BIT, psModule, "main", &specInfo };
std::array<VkDynamicState, 2> dynStates = {{ std::array<VkDynamicState, 2> dynStates = {{
VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT, VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT,
VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT, VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT,
}}; }};
VkPipelineDynamicStateCreateInfo dynState = { VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO }; VkPipelineDynamicStateCreateInfo dynState = { VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO };

View File

@ -548,11 +548,11 @@ namespace dxvk {
// Set up dynamic state. We do not know any pipeline state // Set up dynamic state. We do not know any pipeline state
// at this time, so make as much state dynamic as we can. // at this time, so make as much state dynamic as we can.
std::array<VkDynamicState, 5> dynamicStates = {{ std::array<VkDynamicState, 5> dynamicStates = {{
VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT, VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT,
VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT, VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT,
VK_DYNAMIC_STATE_DEPTH_BIAS, VK_DYNAMIC_STATE_DEPTH_BIAS,
VK_DYNAMIC_STATE_CULL_MODE_EXT, VK_DYNAMIC_STATE_CULL_MODE,
VK_DYNAMIC_STATE_FRONT_FACE_EXT, VK_DYNAMIC_STATE_FRONT_FACE,
}}; }};
VkPipelineDynamicStateCreateInfo dyInfo = { VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO }; VkPipelineDynamicStateCreateInfo dyInfo = { VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO };
@ -622,17 +622,17 @@ namespace dxvk {
uint32_t dynamicStateCount = 0; uint32_t dynamicStateCount = 0;
std::array<VkDynamicState, 10> dynamicStates; std::array<VkDynamicState, 10> dynamicStates;
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE;
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE;
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP;
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK;
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK;
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_REFERENCE; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_REFERENCE;
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE;
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_OP_EXT; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_OP;
if (m_device->features().core.features.depthBounds) { if (m_device->features().core.features.depthBounds) {
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE;
dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_DEPTH_BOUNDS; dynamicStates[dynamicStateCount++] = VK_DYNAMIC_STATE_DEPTH_BOUNDS;
} }

View File

@ -257,6 +257,21 @@ namespace dxvk::vk {
VULKAN_FN(vkCmdSetStencilCompareMask); VULKAN_FN(vkCmdSetStencilCompareMask);
VULKAN_FN(vkCmdSetStencilWriteMask); VULKAN_FN(vkCmdSetStencilWriteMask);
VULKAN_FN(vkCmdSetStencilReference); VULKAN_FN(vkCmdSetStencilReference);
VULKAN_FN(vkCmdBindVertexBuffers2);
VULKAN_FN(vkCmdSetCullMode);
VULKAN_FN(vkCmdSetDepthBoundsTestEnable);
VULKAN_FN(vkCmdSetDepthCompareOp);
VULKAN_FN(vkCmdSetDepthTestEnable);
VULKAN_FN(vkCmdSetDepthWriteEnable);
VULKAN_FN(vkCmdSetFrontFace);
VULKAN_FN(vkCmdSetPrimitiveTopology);
VULKAN_FN(vkCmdSetScissorWithCount);
VULKAN_FN(vkCmdSetStencilOp);
VULKAN_FN(vkCmdSetStencilTestEnable);
VULKAN_FN(vkCmdSetViewportWithCount);
VULKAN_FN(vkCmdSetRasterizerDiscardEnable);
VULKAN_FN(vkCmdSetDepthBiasEnable);
VULKAN_FN(vkCmdSetPrimitiveRestartEnable);
VULKAN_FN(vkCmdBindDescriptorSets); VULKAN_FN(vkCmdBindDescriptorSets);
VULKAN_FN(vkCmdBindIndexBuffer); VULKAN_FN(vkCmdBindIndexBuffer);
VULKAN_FN(vkCmdBindVertexBuffers); VULKAN_FN(vkCmdBindVertexBuffers);
@ -312,21 +327,6 @@ namespace dxvk::vk {
VULKAN_FN(vkCmdEndConditionalRenderingEXT); VULKAN_FN(vkCmdEndConditionalRenderingEXT);
#endif #endif
#ifdef VK_EXT_extended_dynamic_state
VULKAN_FN(vkCmdBindVertexBuffers2EXT);
VULKAN_FN(vkCmdSetCullModeEXT);
VULKAN_FN(vkCmdSetDepthBoundsTestEnableEXT);
VULKAN_FN(vkCmdSetDepthCompareOpEXT);
VULKAN_FN(vkCmdSetDepthTestEnableEXT);
VULKAN_FN(vkCmdSetDepthWriteEnableEXT);
VULKAN_FN(vkCmdSetFrontFaceEXT);
VULKAN_FN(vkCmdSetPrimitiveTopologyEXT);
VULKAN_FN(vkCmdSetScissorWithCountEXT);
VULKAN_FN(vkCmdSetStencilOpEXT);
VULKAN_FN(vkCmdSetStencilTestEnableEXT);
VULKAN_FN(vkCmdSetViewportWithCountEXT);
#endif
#ifdef VK_EXT_full_screen_exclusive #ifdef VK_EXT_full_screen_exclusive
VULKAN_FN(vkAcquireFullScreenExclusiveModeEXT); VULKAN_FN(vkAcquireFullScreenExclusiveModeEXT);
VULKAN_FN(vkReleaseFullScreenExclusiveModeEXT); VULKAN_FN(vkReleaseFullScreenExclusiveModeEXT);