Mesa (main): tu: add "flushall" and "syncdraw" debug options
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Aug 10 20:28:13 UTC 2021
Module: Mesa
Branch: main
Commit: 4f9ac2f7374500619ac1b36c71bb162f1a5bb98b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4f9ac2f7374500619ac1b36c71bb162f1a5bb98b
Author: Danylo Piliaiev <dpiliaiev at igalia.com>
Date: Mon Aug 9 21:19:11 2021 +0300
tu: add "flushall" and "syncdraw" debug options
They will be useful to check whether some issue is due to the lack
of flushing or waiting.
Signed-off-by: Danylo Piliaiev <dpiliaiev at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12283>
---
src/freedreno/vulkan/tu_cmd_buffer.c | 11 ++++++++++-
src/freedreno/vulkan/tu_device.c | 2 ++
src/freedreno/vulkan/tu_private.h | 2 ++
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c
index 31100c54d88..017f0720e4a 100644
--- a/src/freedreno/vulkan/tu_cmd_buffer.c
+++ b/src/freedreno/vulkan/tu_cmd_buffer.c
@@ -67,6 +67,14 @@ tu6_emit_flushes(struct tu_cmd_buffer *cmd_buffer,
struct tu_cs *cs,
enum tu_cmd_flush_bits flushes)
{
+ if (unlikely(cmd_buffer->device->physical_device->instance->debug_flags & TU_DEBUG_FLUSHALL))
+ flushes |= TU_CMD_FLAG_ALL_FLUSH | TU_CMD_FLAG_GPU_INVALIDATE;
+
+ if (unlikely(cmd_buffer->device->physical_device->instance->debug_flags & TU_DEBUG_SYNCDRAW))
+ flushes |= TU_CMD_FLAG_WAIT_MEM_WRITES |
+ TU_CMD_FLAG_WAIT_FOR_IDLE |
+ TU_CMD_FLAG_WAIT_FOR_ME;
+
/* Experiments show that invalidating CCU while it still has data in it
* doesn't work, so make sure to always flush before invalidating in case
* any data remains that hasn't yet been made available through a barrier.
@@ -110,7 +118,8 @@ void
tu_emit_cache_flush_renderpass(struct tu_cmd_buffer *cmd_buffer,
struct tu_cs *cs)
{
- if (!cmd_buffer->state.renderpass_cache.flush_bits)
+ if (!cmd_buffer->state.renderpass_cache.flush_bits &&
+ likely(!cmd_buffer->device->physical_device->instance->debug_flags))
return;
tu6_emit_flushes(cmd_buffer, cs, cmd_buffer->state.renderpass_cache.flush_bits);
cmd_buffer->state.renderpass_cache.flush_bits = 0;
diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c
index 1c174a553cb..f8e45ac1b19 100644
--- a/src/freedreno/vulkan/tu_device.c
+++ b/src/freedreno/vulkan/tu_device.c
@@ -281,6 +281,8 @@ static const struct debug_control tu_debug_options[] = {
{ "nomultipos", TU_DEBUG_NOMULTIPOS },
{ "nolrz", TU_DEBUG_NOLRZ },
{ "perfc", TU_DEBUG_PERFC },
+ { "flushall", TU_DEBUG_FLUSHALL },
+ { "syncdraw", TU_DEBUG_SYNCDRAW },
{ NULL, 0 }
};
diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h
index d669595470f..16fc055b56f 100644
--- a/src/freedreno/vulkan/tu_private.h
+++ b/src/freedreno/vulkan/tu_private.h
@@ -234,6 +234,8 @@ enum tu_debug_flags
TU_DEBUG_NOMULTIPOS = 1 << 7,
TU_DEBUG_NOLRZ = 1 << 8,
TU_DEBUG_PERFC = 1 << 9,
+ TU_DEBUG_FLUSHALL = 1 << 10,
+ TU_DEBUG_SYNCDRAW = 1 << 11,
};
struct tu_instance
More information about the mesa-commit
mailing list