Use flags from final linked pipeline with EXT_gpl if present

This commit is contained in:
baldurk
2025-04-07 16:49:00 +01:00
parent 26f2732268
commit 3a3e2c0540
3 changed files with 8 additions and 2 deletions
+1 -1
View File
@@ -1097,7 +1097,7 @@ void VulkanCreationInfo::Pipeline::Init(VulkanResourceManager *resourceMan,
if(graphicsLibraryCreate)
availStages = graphicsLibraryCreate->flags;
vertLayout = fragLayout = GetResID(pCreateInfo->layout);
ownLayout = vertLayout = fragLayout = GetResID(pCreateInfo->layout);
renderpass = GetResID(pCreateInfo->renderPass);
subpass = pCreateInfo->subpass;
+4
View File
@@ -269,6 +269,10 @@ struct VulkanCreationInfo
ResourceId compLayout;
// the pipeline's own specified layout, independent of vertLayout/fragLayout below when linking
// graphics pipeline libraries
ResourceId ownLayout;
// these will be the same in some cases, but can be different if the application is using
// INDEPENDENT_SETS_BIT_KHR
ResourceId vertLayout;
+3 -1
View File
@@ -977,7 +977,9 @@ void VulkanShaderCache::MakeGraphicsPipelineInfo(VkGraphicsPipelineCreateInfo &p
// don't have to handle separate vert/frag layouts as push constant ranges must be identical
const VulkanCreationInfo::PipelineLayout &pipeLayoutInfo =
m_pDriver->m_CreationInfo.m_PipelineLayout[pipeInfo.vertLayout];
m_pDriver->m_CreationInfo
.m_PipelineLayout[pipeInfo.ownLayout != ResourceId() ? pipeInfo.ownLayout
: pipeInfo.vertLayout];
const rdcarray<VkPushConstantRange> &push = pipeLayoutInfo.pushRanges;
VkPipelineLayoutCreateInfo pipeLayoutCreateInfo = {