gallium/radeon: pass pipe_debug_callback into radeon_llvm_compile (v2)
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Wed, 30 Dec 2015 21:00:56 +0000 (16:00 -0500)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Sat, 2 Jan 2016 21:47:24 +0000 (16:47 -0500)
This will allow us to send shader debug info via the context's debug callback.

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com> (v1)
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/r600/evergreen_compute.c
src/gallium/drivers/r600/r600_llvm.c
src/gallium/drivers/r600/r600_llvm.h
src/gallium/drivers/r600/r600_shader.c
src/gallium/drivers/radeon/radeon_llvm_emit.c
src/gallium/drivers/radeon/radeon_llvm_emit.h
src/gallium/drivers/radeonsi/si_shader.c

index d83eb17..20945ec 100644 (file)
@@ -600,7 +600,7 @@ static void evergreen_launch_grid(
                            ctx->screen->has_compressed_msaa_texturing);
                 bc->type = TGSI_PROCESSOR_COMPUTE;
                 bc->isa = ctx->isa;
-                r600_llvm_compile(mod, ctx->b.family, bc, &use_kill, dump);
+                r600_llvm_compile(mod, ctx->b.family, bc, &use_kill, dump, &ctx->b.debug);
 
                 if (dump && !sb_disasm) {
                         r600_bytecode_disasm(bc);
index 1cc3031..ef2e2a2 100644 (file)
@@ -915,14 +915,15 @@ unsigned r600_llvm_compile(
        enum radeon_family family,
        struct r600_bytecode *bc,
        boolean *use_kill,
-       unsigned dump)
+       unsigned dump,
+       struct pipe_debug_callback *debug)
 {
        unsigned r;
        struct radeon_shader_binary binary;
        const char * gpu_family = r600_get_llvm_processor_name(family);
 
        memset(&binary, 0, sizeof(struct radeon_shader_binary));
-       r = radeon_llvm_compile(mod, &binary, gpu_family, dump, dump, NULL);
+       r = radeon_llvm_compile(mod, &binary, gpu_family, dump, dump, NULL, debug);
 
        r = r600_create_shader(bc, &binary, use_kill);
 
index 9b5304d..f570b73 100644 (file)
@@ -7,6 +7,7 @@
 #include "radeon/radeon_llvm.h"
 #include <llvm-c/Core.h>
 
+struct pipe_debug_callback;
 struct r600_bytecode;
 struct r600_shader_ctx;
 struct radeon_llvm_context;
@@ -22,7 +23,8 @@ unsigned r600_llvm_compile(
        enum radeon_family family,
        struct r600_bytecode *bc,
        boolean *use_kill,
-       unsigned dump);
+       unsigned dump,
+       struct pipe_debug_callback *debug);
 
 unsigned r600_create_shader(struct r600_bytecode *bc,
                const struct radeon_shader_binary *binary,
index d411b0b..9c040ae 100644 (file)
@@ -3259,7 +3259,8 @@ static int r600_shader_from_tgsi(struct r600_context *rctx,
                ctx.shader->has_txq_cube_array_z_comp = radeon_llvm_ctx.has_txq_cube_array_z_comp;
                ctx.shader->uses_tex_buffers = radeon_llvm_ctx.uses_tex_buffers;
 
-               if (r600_llvm_compile(mod, rscreen->b.family, ctx.bc, &use_kill, dump)) {
+               if (r600_llvm_compile(mod, rscreen->b.family, ctx.bc, &use_kill,
+                                     dump, &rctx->b.debug)) {
                        radeon_llvm_dispose(&radeon_llvm_ctx);
                        use_llvm = 0;
                        fprintf(stderr, "R600 LLVM backend failed to compile "
index 61ed940..9754fd9 100644 (file)
  * Authors: Tom Stellard <thomas.stellard@amd.com>
  *
  */
+
 #include "radeon_llvm_emit.h"
 #include "radeon_elf_util.h"
 #include "c11/threads.h"
 #include "gallivm/lp_bld_misc.h"
+#include "util/u_debug.h"
 #include "util/u_memory.h"
 #include "pipe/p_shader_tokens.h"
 
@@ -142,9 +144,9 @@ static void radeonDiagnosticHandler(LLVMDiagnosticInfoRef di, void *context)
  */
 unsigned radeon_llvm_compile(LLVMModuleRef M, struct radeon_shader_binary *binary,
                             const char *gpu_family, bool dump_ir, bool dump_asm,
-                            LLVMTargetMachineRef tm)
+                            LLVMTargetMachineRef tm,
+                            struct pipe_debug_callback *debug)
 {
-
        char cpu[CPU_STRING_LEN];
        char fs[FS_STRING_LEN];
        char *err;
index e20aed9..29e4dc0 100644 (file)
@@ -31,6 +31,7 @@
 #include <llvm-c/TargetMachine.h>
 #include <stdbool.h>
 
+struct pipe_debug_callback;
 struct radeon_shader_binary;
 
 void radeon_llvm_shader_type(LLVMValueRef F, unsigned type);
@@ -39,6 +40,7 @@ LLVMTargetRef radeon_llvm_get_r600_target(const char *triple);
 
 unsigned radeon_llvm_compile(LLVMModuleRef M, struct radeon_shader_binary *binary,
                             const char *gpu_family, bool dump_ir, bool dump_asm,
-                            LLVMTargetMachineRef tm);
+                            LLVMTargetMachineRef tm,
+                            struct pipe_debug_callback *debug);
 
 #endif /* RADEON_LLVM_EMIT_H */
index a34f7da..270cc20 100644 (file)
@@ -3934,7 +3934,8 @@ int si_compile_llvm(struct si_screen *sscreen, struct si_shader *shader,
 
        if (!si_replace_shader(count, &shader->binary)) {
                r = radeon_llvm_compile(mod, &shader->binary,
-                       r600_get_llvm_processor_name(sscreen->b.family), dump_ir, dump_asm, tm);
+                       r600_get_llvm_processor_name(sscreen->b.family), dump_ir, dump_asm, tm,
+                       debug);
                if (r)
                        return r;
        }