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