Mesa (main): radv: Add meta saving/restoring for predicating

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jul 22 07:50:27 UTC 2022


Module: Mesa
Branch: main
Commit: fdeca2ca0b50b3baf90db163b60339723edbfbb2
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fdeca2ca0b50b3baf90db163b60339723edbfbb2

Author: Konstantin Seurer <konstantin.seurer at gmail.com>
Date:   Tue Jul 19 14:11:15 2022 +0200

radv: Add meta saving/restoring for predicating

There are a bunch of places, where this is done manually.

Signed-off-by: Konstantin Seurer <konstantin.seurer at gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17625>

---

 src/amd/vulkan/radv_meta.c | 8 ++++++++
 src/amd/vulkan/radv_meta.h | 3 +++
 2 files changed, 11 insertions(+)

diff --git a/src/amd/vulkan/radv_meta.c b/src/amd/vulkan/radv_meta.c
index c0c27594481..a96835b1e02 100644
--- a/src/amd/vulkan/radv_meta.c
+++ b/src/amd/vulkan/radv_meta.c
@@ -213,6 +213,11 @@ radv_meta_save(struct radv_meta_saved_state *state, struct radv_cmd_buffer *cmd_
       state->render_area = cmd_buffer->state.render_area;
    }
 
+   if (state->flags & RADV_META_SUSPEND_PREDICATING) {
+      state->predicating = cmd_buffer->state.predicating;
+      cmd_buffer->state.predicating = false;
+   }
+
    radv_suspend_queries(state, cmd_buffer);
 }
 
@@ -364,6 +369,9 @@ radv_meta_restore(const struct radv_meta_saved_state *state, struct radv_cmd_buf
          cmd_buffer->state.dirty |= RADV_CMD_DIRTY_FRAMEBUFFER;
    }
 
+   if (state->flags & RADV_META_SUSPEND_PREDICATING)
+      cmd_buffer->state.predicating = state->predicating;
+
    radv_resume_queries(state, cmd_buffer);
 }
 
diff --git a/src/amd/vulkan/radv_meta.h b/src/amd/vulkan/radv_meta.h
index 7b50ed4400a..039e64b0bec 100644
--- a/src/amd/vulkan/radv_meta.h
+++ b/src/amd/vulkan/radv_meta.h
@@ -40,6 +40,7 @@ enum radv_meta_save_flags {
    RADV_META_SAVE_GRAPHICS_PIPELINE = (1 << 3),
    RADV_META_SAVE_COMPUTE_PIPELINE = (1 << 4),
    RADV_META_SAVE_SAMPLE_LOCATIONS = (1 << 5),
+   RADV_META_SUSPEND_PREDICATING = (1 << 6),
 };
 
 struct radv_meta_saved_state {
@@ -59,6 +60,8 @@ struct radv_meta_saved_state {
    VkRect2D render_area;
 
    unsigned active_pipeline_gds_queries;
+
+   bool predicating;
 };
 
 VkResult radv_device_init_meta_clear_state(struct radv_device *device, bool on_demand);



More information about the mesa-commit mailing list