mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-13 19:29:14 +01:00
[dxvk] Replace VK_KHR_draw_indirect_count with core feature
And enable it optionally in the backend, since we provide the functionality.
This commit is contained in:
parent
eee4ac1e91
commit
f07ba07ad8
@ -2491,7 +2491,7 @@ namespace dxvk {
|
||||
|
||||
case D3D11_VK_EXT_MULTI_DRAW_INDIRECT_COUNT:
|
||||
return deviceFeatures.core.features.multiDrawIndirect
|
||||
&& deviceExtensions.khrDrawIndirectCount;
|
||||
&& deviceFeatures.vk12.drawIndirectCount;
|
||||
|
||||
case D3D11_VK_EXT_DEPTH_BOUNDS:
|
||||
return deviceFeatures.core.features.depthBounds;
|
||||
|
@ -285,7 +285,7 @@ namespace dxvk {
|
||||
DxvkDeviceFeatures enabledFeatures) {
|
||||
DxvkDeviceExtensions devExtensions;
|
||||
|
||||
std::array<DxvkExt*, 34> devExtensionList = {{
|
||||
std::array<DxvkExt*, 33> devExtensionList = {{
|
||||
&devExtensions.amdMemoryOverallocationBehaviour,
|
||||
&devExtensions.amdShaderFragmentMask,
|
||||
&devExtensions.ext4444Formats,
|
||||
@ -310,7 +310,6 @@ namespace dxvk {
|
||||
&devExtensions.khrBufferDeviceAddress,
|
||||
&devExtensions.khrCreateRenderPass2,
|
||||
&devExtensions.khrDepthStencilResolve,
|
||||
&devExtensions.khrDrawIndirectCount,
|
||||
&devExtensions.khrDriverProperties,
|
||||
&devExtensions.khrDynamicRendering,
|
||||
&devExtensions.khrExternalMemoryWin32,
|
||||
@ -351,6 +350,8 @@ namespace dxvk {
|
||||
DxvkNameList extensionNameList = extensionsEnabled.toNameList();
|
||||
|
||||
// Enable additional device features if supported
|
||||
enabledFeatures.vk12.drawIndirectCount = m_deviceFeatures.vk12.drawIndirectCount;
|
||||
|
||||
enabledFeatures.extExtendedDynamicState.extendedDynamicState = VK_TRUE;
|
||||
|
||||
enabledFeatures.extGraphicsPipelineLibrary.graphicsPipelineLibrary =
|
||||
|
@ -518,7 +518,7 @@ namespace dxvk {
|
||||
VkDeviceSize countOffset,
|
||||
uint32_t maxDrawCount,
|
||||
uint32_t stride) {
|
||||
m_vkd->vkCmdDrawIndirectCountKHR(m_execBuffer,
|
||||
m_vkd->vkCmdDrawIndirectCount(m_execBuffer,
|
||||
buffer, offset, countBuffer, countOffset, maxDrawCount, stride);
|
||||
}
|
||||
|
||||
@ -553,7 +553,7 @@ namespace dxvk {
|
||||
VkDeviceSize countOffset,
|
||||
uint32_t maxDrawCount,
|
||||
uint32_t stride) {
|
||||
m_vkd->vkCmdDrawIndexedIndirectCountKHR(m_execBuffer,
|
||||
m_vkd->vkCmdDrawIndexedIndirectCount(m_execBuffer,
|
||||
buffer, offset, countBuffer, countOffset, maxDrawCount, stride);
|
||||
}
|
||||
|
||||
|
@ -300,7 +300,6 @@ namespace dxvk {
|
||||
DxvkExt khrBufferDeviceAddress = { VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, DxvkExtMode::Disabled };
|
||||
DxvkExt khrCreateRenderPass2 = { VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, DxvkExtMode::Required };
|
||||
DxvkExt khrDepthStencilResolve = { VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, DxvkExtMode::Required };
|
||||
DxvkExt khrDrawIndirectCount = { VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt khrDriverProperties = { VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
DxvkExt khrDynamicRendering = { VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME, DxvkExtMode::Required };
|
||||
DxvkExt khrExternalMemoryWin32 = { VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||
|
@ -260,7 +260,9 @@ namespace dxvk::vk {
|
||||
VULKAN_FN(vkCmdDraw);
|
||||
VULKAN_FN(vkCmdDrawIndexed);
|
||||
VULKAN_FN(vkCmdDrawIndirect);
|
||||
VULKAN_FN(vkCmdDrawIndirectCount);
|
||||
VULKAN_FN(vkCmdDrawIndexedIndirect);
|
||||
VULKAN_FN(vkCmdDrawIndexedIndirectCount);
|
||||
VULKAN_FN(vkCmdDispatch);
|
||||
VULKAN_FN(vkCmdDispatchIndirect);
|
||||
VULKAN_FN(vkCmdCopyBuffer);
|
||||
@ -296,11 +298,6 @@ namespace dxvk::vk {
|
||||
VULKAN_FN(vkCmdEndRenderPass2KHR);
|
||||
#endif
|
||||
|
||||
#ifdef VK_KHR_draw_indirect_count
|
||||
VULKAN_FN(vkCmdDrawIndirectCountKHR);
|
||||
VULKAN_FN(vkCmdDrawIndexedIndirectCountKHR);
|
||||
#endif
|
||||
|
||||
#ifdef VK_KHR_swapchain
|
||||
VULKAN_FN(vkCreateSwapchainKHR);
|
||||
VULKAN_FN(vkDestroySwapchainKHR);
|
||||
|
Loading…
x
Reference in New Issue
Block a user