1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-03-13 19:29:14 +01:00

[dxvk] Replace VK_KHR_dynamic_rendering with core feature

This commit is contained in:
Philip Rebohle 2022-07-14 20:51:00 +02:00
parent e79a2e8dfa
commit 3cfc3e7714
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
12 changed files with 35 additions and 55 deletions

View File

@ -295,7 +295,7 @@ namespace dxvk {
DxvkDeviceFeatures enabledFeatures) {
DxvkDeviceExtensions devExtensions;
std::array<DxvkExt*, 25> devExtensionList = {{
std::array<DxvkExt*, 24> devExtensionList = {{
&devExtensions.amdMemoryOverallocationBehaviour,
&devExtensions.amdShaderFragmentMask,
&devExtensions.ext4444Formats,
@ -315,7 +315,6 @@ namespace dxvk {
&devExtensions.extShaderStencilExport,
&devExtensions.extTransformFeedback,
&devExtensions.extVertexAttributeDivisor,
&devExtensions.khrDynamicRendering,
&devExtensions.khrExternalMemoryWin32,
&devExtensions.khrPipelineLibrary,
&devExtensions.khrSwapchain,
@ -379,8 +378,6 @@ namespace dxvk {
enabledFeatures.extShaderModuleIdentifier.shaderModuleIdentifier =
m_deviceFeatures.extShaderModuleIdentifier.shaderModuleIdentifier;
enabledFeatures.khrDynamicRendering.dynamicRendering = VK_TRUE;
Logger::info(str::format("Device properties:"
"\n Device name: : ", m_deviceInfo.core.properties.deviceName,
"\n Driver version : ",
@ -470,11 +467,6 @@ namespace dxvk {
enabledFeatures.extVertexAttributeDivisor.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extVertexAttributeDivisor);
}
if (devExtensions.khrDynamicRendering) {
enabledFeatures.khrDynamicRendering.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR;
enabledFeatures.khrDynamicRendering.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.khrDynamicRendering);
}
// Report the desired overallocation behaviour to the driver
VkDeviceMemoryOverallocationCreateInfoAMD overallocInfo;
overallocInfo.sType = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD;
@ -780,11 +772,6 @@ namespace dxvk {
m_deviceFeatures.extVertexAttributeDivisor.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extVertexAttributeDivisor);
}
if (m_deviceExtensions.supports(VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME)) {
m_deviceFeatures.khrDynamicRendering.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR;
m_deviceFeatures.khrDynamicRendering.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.khrDynamicRendering);
}
m_vki->vkGetPhysicalDeviceFeatures2(m_handle, &m_deviceFeatures.core);
}
@ -899,9 +886,7 @@ namespace dxvk {
"\n geometryStreams : ", features.extTransformFeedback.geometryStreams ? "1" : "0",
"\n", VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME,
"\n vertexAttributeInstanceRateDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateDivisor ? "1" : "0",
"\n vertexAttributeInstanceRateZeroDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor ? "1" : "0",
"\n", VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME,
"\n dynamicRendering : ", features.khrDynamicRendering.dynamicRendering ? "1" : "0"));
"\n vertexAttributeInstanceRateZeroDivisor : ", features.extVertexAttributeDivisor.vertexAttributeInstanceRateZeroDivisor ? "1" : "0"));
}

View File

@ -254,8 +254,8 @@ namespace dxvk {
void cmdBeginRendering(
const VkRenderingInfoKHR* pRenderingInfo) {
m_vkd->vkCmdBeginRenderingKHR(m_execBuffer, pRenderingInfo);
const VkRenderingInfo* pRenderingInfo) {
m_vkd->vkCmdBeginRendering(m_execBuffer, pRenderingInfo);
}
@ -588,7 +588,7 @@ namespace dxvk {
void cmdEndRendering() {
m_vkd->vkCmdEndRenderingKHR(m_execBuffer);
m_vkd->vkCmdEndRendering(m_execBuffer);
}

View File

@ -1620,12 +1620,12 @@ namespace dxvk {
descriptorWrite.pImageInfo = &descriptorImage;
// Common render pass info
VkRenderingAttachmentInfoKHR attachmentInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR };
VkRenderingAttachmentInfo attachmentInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO };
attachmentInfo.imageLayout = dstLayout;
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
attachmentInfo.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
VkRenderingInfoKHR renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO_KHR };
VkRenderingInfo renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO };
renderingInfo.colorAttachmentCount = 1;
renderingInfo.pColorAttachments = &attachmentInfo;
@ -1960,17 +1960,17 @@ namespace dxvk {
? imageView->pickLayout(VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)
: imageView->pickLayout(VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
VkRenderingAttachmentInfoKHR attachmentInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR };
VkRenderingAttachmentInfo attachmentInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO };
attachmentInfo.imageView = imageView->handle();
attachmentInfo.imageLayout = imageLayout;
attachmentInfo.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
attachmentInfo.clearValue = clearValue;
VkRenderingAttachmentInfoKHR stencilInfo = attachmentInfo;
VkRenderingAttachmentInfo stencilInfo = attachmentInfo;
VkExtent3D extent = imageView->mipLevelExtent(0);
VkRenderingInfoKHR renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO_KHR };
VkRenderingInfo renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO };
renderingInfo.renderArea.extent = { extent.width, extent.height };
renderingInfo.layerCount = imageView->info().numLayers;
@ -2704,13 +2704,13 @@ namespace dxvk {
VkExtent3D imageExtent = dstImage->mipLevelExtent(region.dstSubresource.mipLevel);
VkRenderingAttachmentInfoKHR attachmentInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR };
VkRenderingAttachmentInfo attachmentInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO };
attachmentInfo.imageView = pass->getDstView();
attachmentInfo.imageLayout = dstLayout;
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
attachmentInfo.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
VkRenderingInfoKHR renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO_KHR };
VkRenderingInfo renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO };
renderingInfo.renderArea = VkRect2D {
VkOffset2D { 0, 0 },
VkExtent2D { imageExtent.width, imageExtent.height } };
@ -3043,13 +3043,13 @@ namespace dxvk {
VkExtent3D extent = imageView->mipLevelExtent(0);
VkRenderingAttachmentInfoKHR attachmentInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR };
VkRenderingAttachmentInfo attachmentInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO };
attachmentInfo.imageView = imageView->handle();
attachmentInfo.imageLayout = clearLayout;
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
attachmentInfo.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
VkRenderingInfoKHR renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO_KHR };
VkRenderingInfo renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO };
renderingInfo.renderArea.extent = { extent.width, extent.height };
renderingInfo.layerCount = imageView->info().numLayers;
@ -3504,7 +3504,7 @@ namespace dxvk {
VkExtent3D mipExtent = dstImage->mipLevelExtent(dstSubresource.mipLevel);
VkRenderingAttachmentInfoKHR attachmentInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR };
VkRenderingAttachmentInfo attachmentInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO };
attachmentInfo.imageView = views->getDstView();
attachmentInfo.imageLayout = dstLayout;
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
@ -3513,7 +3513,7 @@ namespace dxvk {
if (doDiscard)
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
VkRenderingInfoKHR renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO_KHR };
VkRenderingInfo renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO };
renderingInfo.renderArea.offset = VkOffset2D { 0, 0 };
renderingInfo.renderArea.extent = VkExtent2D { mipExtent.width, mipExtent.height };
renderingInfo.layerCount = dstSubresource.layerCount;
@ -3755,7 +3755,7 @@ namespace dxvk {
dstImage, region.dstSubresource, srcImage, region.srcSubresource,
dstImage->info().format);
VkRenderingAttachmentInfoKHR depthAttachment = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR };
VkRenderingAttachmentInfo depthAttachment = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO };
depthAttachment.imageView = views->getSrcView();
depthAttachment.imageLayout = srcLayout;
depthAttachment.resolveMode = depthMode;
@ -3764,12 +3764,12 @@ namespace dxvk {
depthAttachment.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
depthAttachment.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
VkRenderingAttachmentInfoKHR stencilAttachment = depthAttachment;
VkRenderingAttachmentInfo stencilAttachment = depthAttachment;
stencilAttachment.resolveMode = stencilMode;
VkExtent3D extent = dstImage->mipLevelExtent(region.dstSubresource.mipLevel);
VkRenderingInfoKHR renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO_KHR };
VkRenderingInfo renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO };
renderingInfo.renderArea.offset = VkOffset2D { 0, 0 };
renderingInfo.renderArea.extent = VkExtent2D { extent.width, extent.height };
renderingInfo.layerCount = region.dstSubresource.layerCount;
@ -3934,7 +3934,7 @@ namespace dxvk {
scissor.offset = { region.dstOffset.x, region.dstOffset.y };
scissor.extent = { region.extent.width, region.extent.height };
VkRenderingAttachmentInfoKHR attachmentInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR };
VkRenderingAttachmentInfo attachmentInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO };
attachmentInfo.imageView = views->getDstView();
attachmentInfo.imageLayout = dstLayout;
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
@ -3943,7 +3943,7 @@ namespace dxvk {
if (doDiscard)
attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
VkRenderingInfoKHR renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO_KHR };
VkRenderingInfo renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO };
renderingInfo.renderArea.offset = VkOffset2D { 0, 0 };
renderingInfo.renderArea.extent = VkExtent2D { passExtent.width, passExtent.height };
renderingInfo.layerCount = region.dstSubresource.layerCount;
@ -4224,11 +4224,11 @@ namespace dxvk {
uint32_t colorInfoCount = 0;
std::array<VkRenderingAttachmentInfoKHR, MaxNumRenderTargets> colorInfos;
std::array<VkRenderingAttachmentInfo, MaxNumRenderTargets> colorInfos;
for (uint32_t i = 0; i < MaxNumRenderTargets; i++) {
const auto& colorTarget = framebufferInfo.getColorTarget(i);
colorInfos[i] = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR };
colorInfos[i] = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO };
if (colorTarget.view != nullptr) {
colorInfos[i].imageView = colorTarget.view->handle();
@ -4243,7 +4243,7 @@ namespace dxvk {
}
}
VkRenderingAttachmentInfoKHR depthInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR };
VkRenderingAttachmentInfo depthInfo = { VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO };
VkImageAspectFlags depthStencilAspects = 0;
if (framebufferInfo.getDepthTarget().view != nullptr) {
@ -4258,7 +4258,7 @@ namespace dxvk {
depthInfo.clearValue.depthStencil.depth = ops.depthOps.clearValue.depth;
}
VkRenderingAttachmentInfoKHR stencilInfo = depthInfo;
VkRenderingAttachmentInfo stencilInfo = depthInfo;
if (framebufferInfo.getDepthTarget().view != nullptr) {
stencilInfo.loadOp = ops.depthOps.loadOpS;
@ -4268,7 +4268,7 @@ namespace dxvk {
stencilInfo.clearValue.depthStencil.stencil = ops.depthOps.clearValue.stencil;
}
VkRenderingInfoKHR renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO_KHR };
VkRenderingInfo renderingInfo = { VK_STRUCTURE_TYPE_RENDERING_INFO };
renderingInfo.renderArea.offset = VkOffset2D { 0, 0 };
renderingInfo.renderArea.extent = VkExtent2D { fbSize.width, fbSize.height };
renderingInfo.layerCount = fbSize.layers;

View File

@ -51,7 +51,6 @@ namespace dxvk {
VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT extShaderModuleIdentifier;
VkPhysicalDeviceTransformFeedbackFeaturesEXT extTransformFeedback;
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT extVertexAttributeDivisor;
VkPhysicalDeviceDynamicRenderingFeaturesKHR khrDynamicRendering;
};
}

View File

@ -295,7 +295,6 @@ namespace dxvk {
DxvkExt extShaderStencilExport = { VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt extTransformFeedback = { VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt extVertexAttributeDivisor = { VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_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 };
DxvkExt khrPipelineLibrary = { VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME, DxvkExtMode::Optional };
DxvkExt khrSwapchain = { VK_KHR_SWAPCHAIN_EXTENSION_NAME, DxvkExtMode::Required };

View File

@ -355,7 +355,7 @@ namespace dxvk {
// pNext is non-const for some reason, but this is only an input
// structure, so we should be able to safely use const_cast.
VkGraphicsPipelineLibraryCreateInfoEXT libInfo = { VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT };
libInfo.pNext = const_cast<VkPipelineRenderingCreateInfoKHR*>(&state.rtInfo);
libInfo.pNext = const_cast<VkPipelineRenderingCreateInfo*>(&state.rtInfo);
libInfo.flags = VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT;
VkGraphicsPipelineCreateInfo info = { VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, &libInfo };

View File

@ -92,7 +92,7 @@ namespace dxvk {
const DxvkGraphicsPipelineStateInfo& state,
const DxvkShader* fs);
VkPipelineRenderingCreateInfoKHR rtInfo = { VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR };
VkPipelineRenderingCreateInfo rtInfo = { VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO };
VkPipelineColorBlendStateCreateInfo cbInfo = { VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO };
VkPipelineMultisampleStateCreateInfo msInfo = { VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO };

View File

@ -345,7 +345,7 @@ namespace dxvk {
cbState.attachmentCount = 1;
cbState.pAttachments = &cbAttachment;
VkPipelineRenderingCreateInfoKHR rtState = { VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR };
VkPipelineRenderingCreateInfo rtState = { VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO };
rtState.colorAttachmentCount = 1;
rtState.pColorAttachmentFormats = &format;

View File

@ -400,7 +400,7 @@ namespace dxvk {
dsState.front = stencilOp;
dsState.back = stencilOp;
VkPipelineRenderingCreateInfoKHR rtState = { VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR };
VkPipelineRenderingCreateInfo rtState = { VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO };
if (aspect & VK_IMAGE_ASPECT_COLOR_BIT) {
rtState.colorAttachmentCount = 1;

View File

@ -311,7 +311,7 @@ namespace dxvk {
dsState.front = stencilOp;
dsState.back = stencilOp;
VkPipelineRenderingCreateInfoKHR rtState = { VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR };
VkPipelineRenderingCreateInfo rtState = { VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO };
if (formatInfo->aspectMask & VK_IMAGE_ASPECT_COLOR_BIT) {
rtState.colorAttachmentCount = 1;

View File

@ -583,7 +583,7 @@ namespace dxvk {
}
// Only the view mask is used as input, and since we do not use MultiView, it is always 0
VkPipelineRenderingCreateInfo rtInfo = { VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR };
VkPipelineRenderingCreateInfo rtInfo = { VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO };
VkGraphicsPipelineLibraryCreateInfoEXT libInfo = { VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT, &rtInfo };
libInfo.flags = VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT;
@ -656,7 +656,7 @@ namespace dxvk {
VkPipelineDepthStencilStateCreateInfo dsInfo = { VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO };
// Only the view mask is used as input, and since we do not use MultiView, it is always 0
VkPipelineRenderingCreateInfo rtInfo = { VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR };
VkPipelineRenderingCreateInfo rtInfo = { VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO };
VkGraphicsPipelineLibraryCreateInfoEXT libInfo = { VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT, &rtInfo };
libInfo.flags = VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT;

View File

@ -295,6 +295,8 @@ namespace dxvk::vk {
VULKAN_FN(vkCmdNextSubpass2);
VULKAN_FN(vkCmdEndRenderPass);
VULKAN_FN(vkCmdEndRenderPass2);
VULKAN_FN(vkCmdBeginRendering);
VULKAN_FN(vkCmdEndRendering);
VULKAN_FN(vkCmdExecuteCommands);
#ifdef VK_KHR_swapchain
@ -358,11 +360,6 @@ namespace dxvk::vk {
VULKAN_FN(vkCmdCuLaunchKernelNVX);
#endif
#ifdef VK_KHR_dynamic_rendering
VULKAN_FN(vkCmdBeginRenderingKHR);
VULKAN_FN(vkCmdEndRenderingKHR);
#endif
#ifdef VK_KHR_external_memory_win32
VULKAN_FN(vkGetMemoryWin32HandleKHR);
VULKAN_FN(vkGetMemoryWin32HandlePropertiesKHR);