Module: Mesa Branch: main Commit: c264b1b6aba09e94a804e25785c081b2003f86de URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c264b1b6aba09e94a804e25785c081b2003f86de
Author: Mike Blumenkrantz <[email protected]> Date: Fri Mar 18 09:48:16 2022 -0400 lavapipe: save pipeline stages that push constants are active on Reviewed-by: Dave Airlie <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15457> --- src/gallium/frontends/lavapipe/lvp_descriptor_set.c | 1 + src/gallium/frontends/lavapipe/lvp_private.h | 1 + 2 files changed, 2 insertions(+) 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];
