Mesa (master): lavapipe: constify state pointers into command buffers.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Nov 3 21:46:13 UTC 2020


Module: Mesa
Branch: master
Commit: 6dabb8065abd8a5036ac84876f56a76d7b1eec32
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6dabb8065abd8a5036ac84876f56a76d7b1eec32

Author: Dave Airlie <airlied at redhat.com>
Date:   Fri Oct 30 13:33:45 2020 +1000

lavapipe: constify state pointers into command buffers.

for render pass information pointers into the command buffer are stored,
but command buffers are immutable content so make sure to use const ptrs
to avoid problems like was seen with clears.

Reviewed-by: Adam Jackson <ajax at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7416>

---

 src/gallium/frontends/lavapipe/lvp_execute.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/gallium/frontends/lavapipe/lvp_execute.c b/src/gallium/frontends/lavapipe/lvp_execute.c
index 681fce6383d..30fe031c06b 100644
--- a/src/gallium/frontends/lavapipe/lvp_execute.c
+++ b/src/gallium/frontends/lavapipe/lvp_execute.c
@@ -111,15 +111,15 @@ struct rendering_state {
 
    uint8_t push_constants[128 * 4];
 
-   struct lvp_render_pass *pass;
+   const struct lvp_render_pass *pass;
    uint32_t subpass;
-   struct lvp_framebuffer *vk_framebuffer;
+   const struct lvp_framebuffer *vk_framebuffer;
    VkRect2D render_area;
 
    uint32_t sample_mask;
    unsigned min_samples;
 
-   struct lvp_attachment_state *attachments;
+   const struct lvp_attachment_state *attachments;
    VkImageAspectFlags *pending_clear_aspects;
    int num_pending_aspects;
 };
@@ -1091,7 +1091,7 @@ static bool
 subpass_needs_clear(struct rendering_state *state)
 {
    uint32_t a;
-   struct lvp_subpass *subpass = &state->pass->subpasses[state->subpass];
+   const struct lvp_subpass *subpass = &state->pass->subpasses[state->subpass];
    for (uint32_t i = 0; i < subpass->color_count; i++) {
       a = subpass->color_attachments[i].attachment;
       if (attachment_needs_clear(state, a))
@@ -1107,7 +1107,7 @@ subpass_needs_clear(struct rendering_state *state)
 
 static void render_subpass_clear(struct rendering_state *state)
 {
-   struct lvp_subpass *subpass = &state->pass->subpasses[state->subpass];
+   const struct lvp_subpass *subpass = &state->pass->subpasses[state->subpass];
 
    if (!subpass_needs_clear(state))
       return;
@@ -1181,7 +1181,7 @@ static void render_subpass_clear(struct rendering_state *state)
 
 static void render_pass_resolve(struct rendering_state *state)
 {
-   struct lvp_subpass *subpass = &state->pass->subpasses[state->subpass];
+   const struct lvp_subpass *subpass = &state->pass->subpasses[state->subpass];
    if (!subpass->has_color_resolve)
       return;
    for (uint32_t i = 0; i < subpass->color_count; i++) {
@@ -1224,7 +1224,7 @@ static void begin_render_subpass(struct rendering_state *state,
 
    state->framebuffer.nr_cbufs = 0;
 
-   struct lvp_subpass *subpass = &state->pass->subpasses[subpass_idx];
+   const struct lvp_subpass *subpass = &state->pass->subpasses[subpass_idx];
    for (unsigned i = 0; i < subpass->color_count; i++) {
       struct lvp_subpass_attachment *color_att = &subpass->color_attachments[i];
       if (color_att->attachment != VK_ATTACHMENT_UNUSED) {
@@ -2187,7 +2187,7 @@ static void handle_clear_attachments(struct lvp_cmd_buffer_entry *cmd,
 {
    for (uint32_t a = 0; a < cmd->u.clear_attachments.attachment_count; a++) {
       VkClearAttachment *att = &cmd->u.clear_attachments.attachments[a];
-      struct lvp_subpass *subpass = &state->pass->subpasses[state->subpass];
+      const struct lvp_subpass *subpass = &state->pass->subpasses[state->subpass];
       struct lvp_image_view *imgv;
 
       if (att->aspectMask == VK_IMAGE_ASPECT_COLOR_BIT) {



More information about the mesa-commit mailing list