Mesa (master): aco: add ACO_DEBUG=novn,noopt,nosched for debugging purposes

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Aug 27 10:35:19 UTC 2020


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Wed Aug 26 14:24:45 2020 +0200

aco: add ACO_DEBUG=novn,noopt,nosched for debugging purposes

To disable value numbering, optimizations and scheduling.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6470>

---

 docs/envvars.rst                   | 6 ++++++
 src/amd/compiler/aco_interface.cpp | 9 ++++++---
 src/amd/compiler/aco_ir.cpp        | 3 +++
 src/amd/compiler/aco_ir.h          | 3 +++
 4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/docs/envvars.rst b/docs/envvars.rst
index cee45fb306d..6337a789559 100644
--- a/docs/envvars.rst
+++ b/docs/envvars.rst
@@ -614,6 +614,12 @@ RADV driver environment variables
       abort on some suboptimal code generation
    ``force-waitcnt``
       force emitting waitcnt states if there is something to wait for
+   ``novn``
+      disable value numbering
+   ``noopt``
+      disable various optimizations
+   ``noscheduling``
+      disable instructions scheduling
 
 radeonsi driver environment variables
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/src/amd/compiler/aco_interface.cpp b/src/amd/compiler/aco_interface.cpp
index 49379cb3169..4b0ea2ff5d0 100644
--- a/src/amd/compiler/aco_interface.cpp
+++ b/src/amd/compiler/aco_interface.cpp
@@ -89,8 +89,10 @@ void aco_compile_shader(unsigned shader_count,
       validate(program.get());
 
       /* Optimization */
-      aco::value_numbering(program.get());
-      aco::optimize(program.get());
+      if (!(aco::debug_flags & aco::DEBUG_NO_VN))
+         aco::value_numbering(program.get());
+      if (!(aco::debug_flags & aco::DEBUG_NO_OPT))
+         aco::optimize(program.get());
 
       /* cleanup and exec mask handling */
       aco::setup_reduce_temp(program.get());
@@ -121,7 +123,8 @@ void aco_compile_shader(unsigned shader_count,
       aco::collect_presched_stats(program.get());
 
    if (!args->is_trap_handler_shader) {
-      aco::schedule_program(program.get(), live_vars);
+      if (!(aco::debug_flags & aco::DEBUG_NO_SCHED))
+         aco::schedule_program(program.get(), live_vars);
       validate(program.get());
 
       /* Register Allocation */
diff --git a/src/amd/compiler/aco_ir.cpp b/src/amd/compiler/aco_ir.cpp
index b594b2824e9..c24356079f8 100644
--- a/src/amd/compiler/aco_ir.cpp
+++ b/src/amd/compiler/aco_ir.cpp
@@ -35,6 +35,9 @@ static const struct debug_control aco_debug_options[] = {
    {"validatera", DEBUG_VALIDATE_RA},
    {"perfwarn", DEBUG_PERFWARN},
    {"force-waitcnt", DEBUG_FORCE_WAITCNT},
+   {"novn", DEBUG_NO_VN},
+   {"noopt", DEBUG_NO_OPT},
+   {"nosched", DEBUG_NO_SCHED},
    {NULL, 0}
 };
 
diff --git a/src/amd/compiler/aco_ir.h b/src/amd/compiler/aco_ir.h
index 18bc9bdd844..d27726d7f73 100644
--- a/src/amd/compiler/aco_ir.h
+++ b/src/amd/compiler/aco_ir.h
@@ -52,6 +52,9 @@ enum {
    DEBUG_VALIDATE_RA = 0x2,
    DEBUG_PERFWARN = 0x4,
    DEBUG_FORCE_WAITCNT = 0x8,
+   DEBUG_NO_VN = 0x10,
+   DEBUG_NO_OPT = 0x20,
+   DEBUG_NO_SCHED = 0x40,
 };
 
 /**



More information about the mesa-commit mailing list