ShaderVk, PipelineLayoutVk, PipelineStateVkImpl update, based on #729 #747
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Extends
PipelineStateVkImpl::ShaderStageInfowithShaderResourcesso shader reflection data can be reconstructed/updated after SPIR-V patching (e.g., UBO → push constants).Introduces
PushConstantInfoVkand stores push-constant metadata inPipelineLayoutVk;PipelineLayoutVk::Create(...)now configuresVkPipelineLayoutCreateInfo.pPushConstantRanges(and validates size vsmaxPushConstantsSize).Adds logic in Vulkan PSO creation to derive push-constant info from signatures and to patch shaders via
ConvertUBOToPushConstants, updating both SPIR-V and the associated shader resources.Tweaks validation so push constants are validated but skip descriptor-set resource cache checks; fixes descriptor counting to use
ResDesc.GetArraySize().Adds
ShaderVkImpl::CreateSPIRVShaderResources(const std::vector<uint32_t>&)to rebuildSPIRVShaderResourcesfrom SPIR-V afterShaderVkImpl::Initialize.Persists CI-derived state (
EntryPoint,LoadConstantBufferReflection) so reconstructed resources match the original reflection configuration.Changes
GetShaderResources()to return a null shared_ptr while compiling asynchronously instead of asserting.Updates
SerializedPipelineStateImpl::PatchShadersVkto also transferShaderResourcesintoPipelineStateVkImpl::ShaderStageInfo, ensuring archived/serialized Vulkan PSOs keep the per-stage reflection/resources alongside shaders and SPIR-V.