Mesa (master): radv: add an option that allows to dump pre-optimization ir

Samuel Pitoiset hakzsam at kemper.freedesktop.org
Mon Jan 22 11:28:46 UTC 2018


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Fri Jan 19 12:12:02 2018 +0100

radv: add an option that allows to dump pre-optimization ir

With RADV_DEBUG=preoptir.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

---

 src/amd/common/ac_nir_to_llvm.c | 3 +++
 src/amd/common/ac_nir_to_llvm.h | 1 +
 src/amd/vulkan/radv_debug.h     | 1 +
 src/amd/vulkan/radv_device.c    | 1 +
 src/amd/vulkan/radv_shader.c    | 2 ++
 5 files changed, 8 insertions(+)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 2aef51be85..3d9cb249ad 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -6848,6 +6848,9 @@ LLVMModuleRef ac_translate_nir_to_llvm(LLVMTargetMachineRef tm,
 
 	LLVMBuildRetVoid(ctx.builder);
 
+	if (options->dump_preoptir)
+		ac_dump_module(ctx.module);
+
 	ac_llvm_finalize_module(&ctx);
 
 	if (shader_count == 1)
diff --git a/src/amd/common/ac_nir_to_llvm.h b/src/amd/common/ac_nir_to_llvm.h
index 1737866166..62ea38be37 100644
--- a/src/amd/common/ac_nir_to_llvm.h
+++ b/src/amd/common/ac_nir_to_llvm.h
@@ -81,6 +81,7 @@ struct ac_nir_compiler_options {
 	bool unsafe_math;
 	bool supports_spill;
 	bool clamp_shadow_reference;
+	bool dump_preoptir;
 	enum radeon_family family;
 	enum chip_class chip_class;
 };
diff --git a/src/amd/vulkan/radv_debug.h b/src/amd/vulkan/radv_debug.h
index 5b37bfe084..804f620690 100644
--- a/src/amd/vulkan/radv_debug.h
+++ b/src/amd/vulkan/radv_debug.h
@@ -42,6 +42,7 @@ enum {
 	RADV_DEBUG_ZERO_VRAM         = 0x1000,
 	RADV_DEBUG_SYNC_SHADERS      = 0x2000,
 	RADV_DEBUG_NO_SISCHED        = 0x4000,
+	RADV_DEBUG_PREOPTIR          = 0x8000,
 };
 
 enum {
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index b5ae103239..4463e6945e 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -336,6 +336,7 @@ static const struct debug_control radv_debug_options[] = {
 	{"zerovram", RADV_DEBUG_ZERO_VRAM},
 	{"syncshaders", RADV_DEBUG_SYNC_SHADERS},
 	{"nosisched", RADV_DEBUG_NO_SISCHED},
+	{"preoptir", RADV_DEBUG_PREOPTIR},
 	{NULL, 0}
 };
 
diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index 3bcaac168a..620effe50e 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -476,6 +476,8 @@ shader_variant_create(struct radv_device *device,
 
 	options->family = chip_family;
 	options->chip_class = device->physical_device->rad_info.chip_class;
+	options->dump_preoptir = radv_can_dump_shader(device, module) &&
+				 device->instance->debug_flags & RADV_DEBUG_PREOPTIR;
 
 	if (options->supports_spill)
 		tm_options |= AC_TM_SUPPORTS_SPILL;




More information about the mesa-commit mailing list