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];

Reply via email to