diff --git a/.pick_status.json b/.pick_status.json index b54414b58e3..f488b4681a2 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -84,7 +84,7 @@ "description": "venus: fix to respect the final pipeline layout", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a65ac274acf250a8f4a5abb030c46b572c3552f4", "notes": null diff --git a/src/virtio/vulkan/vn_pipeline.c b/src/virtio/vulkan/vn_pipeline.c index 5095fcb7568..835b55852de 100644 --- a/src/virtio/vulkan/vn_pipeline.c +++ b/src/virtio/vulkan/vn_pipeline.c @@ -1221,6 +1221,19 @@ vn_graphics_pipeline_state_fill( state->gpl.fragment_output = true; } + /* After direct_gpl states collection, check the final state to validate + * VkPipelineLayout in case of being the final layout in linked pipeline. + * + * From the Vulkan 1.3.275 spec: + * VUID-VkGraphicsPipelineCreateInfo-layout-06602 + * + * If the pipeline requires fragment shader state or pre-rasterization + * shader state, layout must be a valid VkPipelineLayout handle + */ + if ((state->gpl.fragment_shader && !is_raster_statically_disabled) || + state->gpl.pre_raster_shaders) + valid.self.pipeline_layout = true; + /* Pipeline Derivatives * * VUID-VkGraphicsPipelineCreateInfo-flags-07984