diff --git a/src/gallium/frontends/lavapipe/lvp_descriptor_set.c b/src/gallium/frontends/lavapipe/lvp_descriptor_set.c index b09b9abbd04..175a9262bf0 100644 --- a/src/gallium/frontends/lavapipe/lvp_descriptor_set.c +++ b/src/gallium/frontends/lavapipe/lvp_descriptor_set.c @@ -301,6 +301,7 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_CreatePipelineLayout( const VkPushConstantRange *range = pCreateInfo->pPushConstantRanges + i; layout->push_constant_size = MAX2(layout->push_constant_size, range->offset + range->size); + layout->push_constant_stages |= (range->stageFlags & BITFIELD_MASK(MESA_SHADER_STAGES)); } layout->push_constant_size = align(layout->push_constant_size, 16); *pPipelineLayout = lvp_pipeline_layout_to_handle(layout); diff --git a/src/gallium/frontends/lavapipe/lvp_private.h b/src/gallium/frontends/lavapipe/lvp_private.h index 2efc496c9d8..61ddfa70b5f 100644 --- a/src/gallium/frontends/lavapipe/lvp_private.h +++ b/src/gallium/frontends/lavapipe/lvp_private.h @@ -459,6 +459,7 @@ struct lvp_pipeline_layout { uint32_t num_sets; uint32_t push_constant_size; + VkShaderStageFlags push_constant_stages; struct { bool has_dynamic_offsets; } stage[MESA_SHADER_STAGES];