mirror of
https://github.com/EduApps-CDG/OpenDX
synced 2024-12-30 09:45:37 +01:00
[dxvk] Don't enable VK_KHR_descriptor_update_template
Core in Vulkan 1.1.
This commit is contained in:
parent
4923bc20f7
commit
7150d2b7fb
@ -243,7 +243,7 @@ namespace dxvk {
|
|||||||
DxvkDeviceFeatures enabledFeatures) {
|
DxvkDeviceFeatures enabledFeatures) {
|
||||||
DxvkDeviceExtensions devExtensions;
|
DxvkDeviceExtensions devExtensions;
|
||||||
|
|
||||||
std::array<DxvkExt*, 21> devExtensionList = {{
|
std::array<DxvkExt*, 20> devExtensionList = {{
|
||||||
&devExtensions.amdMemoryOverallocationBehaviour,
|
&devExtensions.amdMemoryOverallocationBehaviour,
|
||||||
&devExtensions.amdShaderFragmentMask,
|
&devExtensions.amdShaderFragmentMask,
|
||||||
&devExtensions.extConditionalRendering,
|
&devExtensions.extConditionalRendering,
|
||||||
@ -259,7 +259,6 @@ namespace dxvk {
|
|||||||
&devExtensions.extVertexAttributeDivisor,
|
&devExtensions.extVertexAttributeDivisor,
|
||||||
&devExtensions.khrCreateRenderPass2,
|
&devExtensions.khrCreateRenderPass2,
|
||||||
&devExtensions.khrDepthStencilResolve,
|
&devExtensions.khrDepthStencilResolve,
|
||||||
&devExtensions.khrDescriptorUpdateTemplate,
|
|
||||||
&devExtensions.khrDrawIndirectCount,
|
&devExtensions.khrDrawIndirectCount,
|
||||||
&devExtensions.khrDriverProperties,
|
&devExtensions.khrDriverProperties,
|
||||||
&devExtensions.khrImageFormatList,
|
&devExtensions.khrImageFormatList,
|
||||||
|
@ -221,9 +221,9 @@ namespace dxvk {
|
|||||||
|
|
||||||
void updateDescriptorSetWithTemplate(
|
void updateDescriptorSetWithTemplate(
|
||||||
VkDescriptorSet descriptorSet,
|
VkDescriptorSet descriptorSet,
|
||||||
VkDescriptorUpdateTemplateKHR descriptorTemplate,
|
VkDescriptorUpdateTemplate descriptorTemplate,
|
||||||
const void* data) {
|
const void* data) {
|
||||||
m_vkd->vkUpdateDescriptorSetWithTemplateKHR(m_vkd->device(),
|
m_vkd->vkUpdateDescriptorSetWithTemplate(m_vkd->device(),
|
||||||
descriptorSet, descriptorTemplate, data);
|
descriptorSet, descriptorTemplate, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -273,7 +273,6 @@ namespace dxvk {
|
|||||||
DxvkExt extVertexAttributeDivisor = { VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, DxvkExtMode::Optional };
|
DxvkExt extVertexAttributeDivisor = { VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
DxvkExt khrCreateRenderPass2 = { VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, DxvkExtMode::Optional };
|
DxvkExt khrCreateRenderPass2 = { VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
DxvkExt khrDepthStencilResolve = { VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, DxvkExtMode::Optional };
|
DxvkExt khrDepthStencilResolve = { VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
DxvkExt khrDescriptorUpdateTemplate = { VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME, DxvkExtMode::Required };
|
|
||||||
DxvkExt khrDrawIndirectCount = { VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME, DxvkExtMode::Optional };
|
DxvkExt khrDrawIndirectCount = { VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
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 };
|
||||||
|
@ -36,8 +36,8 @@ namespace dxvk {
|
|||||||
m_vkd->vkDestroyPipeline(m_vkd->device(), m_pipePackD32S8, nullptr);
|
m_vkd->vkDestroyPipeline(m_vkd->device(), m_pipePackD32S8, nullptr);
|
||||||
m_vkd->vkDestroyPipeline(m_vkd->device(), m_pipePackD24S8, nullptr);
|
m_vkd->vkDestroyPipeline(m_vkd->device(), m_pipePackD24S8, nullptr);
|
||||||
|
|
||||||
m_vkd->vkDestroyDescriptorUpdateTemplateKHR(m_vkd->device(), m_templatePack, nullptr);
|
m_vkd->vkDestroyDescriptorUpdateTemplate(m_vkd->device(), m_templatePack, nullptr);
|
||||||
m_vkd->vkDestroyDescriptorUpdateTemplateKHR(m_vkd->device(), m_templateUnpack, nullptr);
|
m_vkd->vkDestroyDescriptorUpdateTemplate(m_vkd->device(), m_templateUnpack, nullptr);
|
||||||
|
|
||||||
m_vkd->vkDestroyPipelineLayout(m_vkd->device(), m_pipeLayoutPack, nullptr);
|
m_vkd->vkDestroyPipelineLayout(m_vkd->device(), m_pipeLayoutPack, nullptr);
|
||||||
m_vkd->vkDestroyPipelineLayout(m_vkd->device(), m_pipeLayoutUnpack, nullptr);
|
m_vkd->vkDestroyPipelineLayout(m_vkd->device(), m_pipeLayoutUnpack, nullptr);
|
||||||
@ -185,54 +185,54 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VkDescriptorUpdateTemplateKHR DxvkMetaPackObjects::createPackDescriptorUpdateTemplate() {
|
VkDescriptorUpdateTemplate DxvkMetaPackObjects::createPackDescriptorUpdateTemplate() {
|
||||||
std::array<VkDescriptorUpdateTemplateEntryKHR, 3> bindings = {{
|
std::array<VkDescriptorUpdateTemplateEntry, 3> bindings = {{
|
||||||
{ 0, 0, 1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, offsetof(DxvkMetaPackDescriptors, dstBuffer), 0 },
|
{ 0, 0, 1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, offsetof(DxvkMetaPackDescriptors, dstBuffer), 0 },
|
||||||
{ 1, 0, 1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, offsetof(DxvkMetaPackDescriptors, srcDepth), 0 },
|
{ 1, 0, 1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, offsetof(DxvkMetaPackDescriptors, srcDepth), 0 },
|
||||||
{ 2, 0, 1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, offsetof(DxvkMetaPackDescriptors, srcStencil), 0 },
|
{ 2, 0, 1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, offsetof(DxvkMetaPackDescriptors, srcStencil), 0 },
|
||||||
}};
|
}};
|
||||||
|
|
||||||
VkDescriptorUpdateTemplateCreateInfoKHR templateInfo;
|
VkDescriptorUpdateTemplateCreateInfo templateInfo;
|
||||||
templateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR;
|
templateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;
|
||||||
templateInfo.pNext = nullptr;
|
templateInfo.pNext = nullptr;
|
||||||
templateInfo.flags = 0;
|
templateInfo.flags = 0;
|
||||||
templateInfo.descriptorUpdateEntryCount = bindings.size();
|
templateInfo.descriptorUpdateEntryCount = bindings.size();
|
||||||
templateInfo.pDescriptorUpdateEntries = bindings.data();
|
templateInfo.pDescriptorUpdateEntries = bindings.data();
|
||||||
templateInfo.templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR;
|
templateInfo.templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET;
|
||||||
templateInfo.descriptorSetLayout = m_dsetLayoutPack;
|
templateInfo.descriptorSetLayout = m_dsetLayoutPack;
|
||||||
templateInfo.pipelineBindPoint = VK_PIPELINE_BIND_POINT_COMPUTE;
|
templateInfo.pipelineBindPoint = VK_PIPELINE_BIND_POINT_COMPUTE;
|
||||||
templateInfo.pipelineLayout = m_pipeLayoutPack;
|
templateInfo.pipelineLayout = m_pipeLayoutPack;
|
||||||
templateInfo.set = 0;
|
templateInfo.set = 0;
|
||||||
|
|
||||||
VkDescriptorUpdateTemplateKHR result = VK_NULL_HANDLE;
|
VkDescriptorUpdateTemplate result = VK_NULL_HANDLE;
|
||||||
if (m_vkd->vkCreateDescriptorUpdateTemplateKHR(m_vkd->device(),
|
if (m_vkd->vkCreateDescriptorUpdateTemplate(m_vkd->device(),
|
||||||
&templateInfo, nullptr, &result) != VK_SUCCESS)
|
&templateInfo, nullptr, &result) != VK_SUCCESS)
|
||||||
throw DxvkError("DxvkMetaPackObjects: Failed to create descriptor update template");
|
throw DxvkError("DxvkMetaPackObjects: Failed to create descriptor update template");
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VkDescriptorUpdateTemplateKHR DxvkMetaPackObjects::createUnpackDescriptorUpdateTemplate() {
|
VkDescriptorUpdateTemplate DxvkMetaPackObjects::createUnpackDescriptorUpdateTemplate() {
|
||||||
std::array<VkDescriptorUpdateTemplateEntryKHR, 3> bindings = {{
|
std::array<VkDescriptorUpdateTemplateEntry, 3> bindings = {{
|
||||||
{ 0, 0, 1, VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, offsetof(DxvkMetaUnpackDescriptors, dstDepth), 0 },
|
{ 0, 0, 1, VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, offsetof(DxvkMetaUnpackDescriptors, dstDepth), 0 },
|
||||||
{ 1, 0, 1, VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, offsetof(DxvkMetaUnpackDescriptors, dstStencil), 0 },
|
{ 1, 0, 1, VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, offsetof(DxvkMetaUnpackDescriptors, dstStencil), 0 },
|
||||||
{ 2, 0, 1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, offsetof(DxvkMetaUnpackDescriptors, srcBuffer), 0 },
|
{ 2, 0, 1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, offsetof(DxvkMetaUnpackDescriptors, srcBuffer), 0 },
|
||||||
}};
|
}};
|
||||||
|
|
||||||
VkDescriptorUpdateTemplateCreateInfoKHR templateInfo;
|
VkDescriptorUpdateTemplateCreateInfo templateInfo;
|
||||||
templateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR;
|
templateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;
|
||||||
templateInfo.pNext = nullptr;
|
templateInfo.pNext = nullptr;
|
||||||
templateInfo.flags = 0;
|
templateInfo.flags = 0;
|
||||||
templateInfo.descriptorUpdateEntryCount = bindings.size();
|
templateInfo.descriptorUpdateEntryCount = bindings.size();
|
||||||
templateInfo.pDescriptorUpdateEntries = bindings.data();
|
templateInfo.pDescriptorUpdateEntries = bindings.data();
|
||||||
templateInfo.templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR;
|
templateInfo.templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET;
|
||||||
templateInfo.descriptorSetLayout = m_dsetLayoutUnpack;
|
templateInfo.descriptorSetLayout = m_dsetLayoutUnpack;
|
||||||
templateInfo.pipelineBindPoint = VK_PIPELINE_BIND_POINT_COMPUTE;
|
templateInfo.pipelineBindPoint = VK_PIPELINE_BIND_POINT_COMPUTE;
|
||||||
templateInfo.pipelineLayout = m_pipeLayoutUnpack;
|
templateInfo.pipelineLayout = m_pipeLayoutUnpack;
|
||||||
templateInfo.set = 0;
|
templateInfo.set = 0;
|
||||||
|
|
||||||
VkDescriptorUpdateTemplateKHR result = VK_NULL_HANDLE;
|
VkDescriptorUpdateTemplate result = VK_NULL_HANDLE;
|
||||||
if (m_vkd->vkCreateDescriptorUpdateTemplateKHR(m_vkd->device(),
|
if (m_vkd->vkCreateDescriptorUpdateTemplate(m_vkd->device(),
|
||||||
&templateInfo, nullptr, &result) != VK_SUCCESS)
|
&templateInfo, nullptr, &result) != VK_SUCCESS)
|
||||||
throw DxvkError("DxvkMetaPackObjects: Failed to create descriptor update template");
|
throw DxvkError("DxvkMetaPackObjects: Failed to create descriptor update template");
|
||||||
return result;
|
return result;
|
||||||
|
@ -95,8 +95,8 @@ namespace dxvk {
|
|||||||
for (uint32_t i = 0; i < bindingCount; i++)
|
for (uint32_t i = 0; i < bindingCount; i++)
|
||||||
m_bindingSlots[i] = bindingInfos[i];
|
m_bindingSlots[i] = bindingInfos[i];
|
||||||
|
|
||||||
std::vector<VkDescriptorSetLayoutBinding> bindings(bindingCount);
|
std::vector<VkDescriptorSetLayoutBinding> bindings(bindingCount);
|
||||||
std::vector<VkDescriptorUpdateTemplateEntryKHR> tEntries(bindingCount);
|
std::vector<VkDescriptorUpdateTemplateEntry> tEntries(bindingCount);
|
||||||
|
|
||||||
for (uint32_t i = 0; i < bindingCount; i++) {
|
for (uint32_t i = 0; i < bindingCount; i++) {
|
||||||
bindings[i].binding = i;
|
bindings[i].binding = i;
|
||||||
@ -157,19 +157,19 @@ namespace dxvk {
|
|||||||
// Create descriptor update template. If there are no active
|
// Create descriptor update template. If there are no active
|
||||||
// resource bindings, there won't be any descriptors to update.
|
// resource bindings, there won't be any descriptors to update.
|
||||||
if (bindingCount > 0) {
|
if (bindingCount > 0) {
|
||||||
VkDescriptorUpdateTemplateCreateInfoKHR templateInfo;
|
VkDescriptorUpdateTemplateCreateInfo templateInfo;
|
||||||
templateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR;
|
templateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;
|
||||||
templateInfo.pNext = nullptr;
|
templateInfo.pNext = nullptr;
|
||||||
templateInfo.flags = 0;
|
templateInfo.flags = 0;
|
||||||
templateInfo.descriptorUpdateEntryCount = tEntries.size();
|
templateInfo.descriptorUpdateEntryCount = tEntries.size();
|
||||||
templateInfo.pDescriptorUpdateEntries = tEntries.data();
|
templateInfo.pDescriptorUpdateEntries = tEntries.data();
|
||||||
templateInfo.templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR;
|
templateInfo.templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET;
|
||||||
templateInfo.descriptorSetLayout = m_descriptorSetLayout;
|
templateInfo.descriptorSetLayout = m_descriptorSetLayout;
|
||||||
templateInfo.pipelineBindPoint = pipelineBindPoint;
|
templateInfo.pipelineBindPoint = pipelineBindPoint;
|
||||||
templateInfo.pipelineLayout = m_pipelineLayout;
|
templateInfo.pipelineLayout = m_pipelineLayout;
|
||||||
templateInfo.set = 0;
|
templateInfo.set = 0;
|
||||||
|
|
||||||
if (m_vkd->vkCreateDescriptorUpdateTemplateKHR(
|
if (m_vkd->vkCreateDescriptorUpdateTemplate(
|
||||||
m_vkd->device(), &templateInfo, nullptr, &m_descriptorTemplate) != VK_SUCCESS) {
|
m_vkd->device(), &templateInfo, nullptr, &m_descriptorTemplate) != VK_SUCCESS) {
|
||||||
m_vkd->vkDestroyDescriptorSetLayout(m_vkd->device(), m_descriptorSetLayout, nullptr);
|
m_vkd->vkDestroyDescriptorSetLayout(m_vkd->device(), m_descriptorSetLayout, nullptr);
|
||||||
m_vkd->vkDestroyPipelineLayout(m_vkd->device(), m_pipelineLayout, nullptr);
|
m_vkd->vkDestroyPipelineLayout(m_vkd->device(), m_pipelineLayout, nullptr);
|
||||||
@ -180,7 +180,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
|
|
||||||
DxvkPipelineLayout::~DxvkPipelineLayout() {
|
DxvkPipelineLayout::~DxvkPipelineLayout() {
|
||||||
m_vkd->vkDestroyDescriptorUpdateTemplateKHR(
|
m_vkd->vkDestroyDescriptorUpdateTemplate(
|
||||||
m_vkd->device(), m_descriptorTemplate, nullptr);
|
m_vkd->device(), m_descriptorTemplate, nullptr);
|
||||||
|
|
||||||
m_vkd->vkDestroyPipelineLayout(
|
m_vkd->vkDestroyPipelineLayout(
|
||||||
|
@ -231,6 +231,9 @@ namespace dxvk::vk {
|
|||||||
VULKAN_FN(vkBeginCommandBuffer);
|
VULKAN_FN(vkBeginCommandBuffer);
|
||||||
VULKAN_FN(vkEndCommandBuffer);
|
VULKAN_FN(vkEndCommandBuffer);
|
||||||
VULKAN_FN(vkResetCommandBuffer);
|
VULKAN_FN(vkResetCommandBuffer);
|
||||||
|
VULKAN_FN(vkCreateDescriptorUpdateTemplate);
|
||||||
|
VULKAN_FN(vkDestroyDescriptorUpdateTemplate);
|
||||||
|
VULKAN_FN(vkUpdateDescriptorSetWithTemplate);
|
||||||
VULKAN_FN(vkCmdBindPipeline);
|
VULKAN_FN(vkCmdBindPipeline);
|
||||||
VULKAN_FN(vkCmdSetViewport);
|
VULKAN_FN(vkCmdSetViewport);
|
||||||
VULKAN_FN(vkCmdSetScissor);
|
VULKAN_FN(vkCmdSetScissor);
|
||||||
@ -283,13 +286,6 @@ namespace dxvk::vk {
|
|||||||
VULKAN_FN(vkCmdEndRenderPass2KHR);
|
VULKAN_FN(vkCmdEndRenderPass2KHR);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef VK_KHR_descriptor_update_template
|
|
||||||
VULKAN_FN(vkCreateDescriptorUpdateTemplateKHR);
|
|
||||||
VULKAN_FN(vkDestroyDescriptorUpdateTemplateKHR);
|
|
||||||
VULKAN_FN(vkUpdateDescriptorSetWithTemplateKHR);
|
|
||||||
VULKAN_FN(vkCmdPushDescriptorSetWithTemplateKHR);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef VK_KHR_draw_indirect_count
|
#ifdef VK_KHR_draw_indirect_count
|
||||||
VULKAN_FN(vkCmdDrawIndirectCountKHR);
|
VULKAN_FN(vkCmdDrawIndirectCountKHR);
|
||||||
VULKAN_FN(vkCmdDrawIndexedIndirectCountKHR);
|
VULKAN_FN(vkCmdDrawIndexedIndirectCountKHR);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user