summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri
diff options
context:
space:
mode:
authorKristian Høgsberg <[email protected]>2014-10-27 19:40:47 -0700
committerKristian Høgsberg <[email protected]>2014-12-10 12:28:51 -0800
commit9a1af7b31824ca573b2609434cf8299bfc9bc5e2 (patch)
tree404ff2b02c0f331c41e3b7573832da1a0ba74032 /src/mesa/drivers/dri
parent7bb9d33b8d6ecc03670078c3f9623f188135abb7 (diff)
i965: Set shader name for generator from call site
fs_generator no longer knows what stage it's generating code for, so we have to set the debug name of the shader from the call site. Signed-off-by: Kristian Høgsberg <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp4
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.cpp17
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.h7
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_generator.cpp31
4 files changed, 35 insertions, 24 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp
index 86ed953e2ab..f6d0b68768d 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp
@@ -31,8 +31,10 @@ brw_blorp_eu_emitter::brw_blorp_eu_emitter(struct brw_context *brw,
: mem_ctx(ralloc_context(NULL)),
generator(brw, mem_ctx, (void *) rzalloc(mem_ctx, struct brw_wm_prog_key),
(struct brw_stage_prog_data *) rzalloc(mem_ctx, struct brw_wm_prog_data),
- NULL, NULL, false, debug_flag)
+ NULL, NULL, false)
{
+ if (debug_flag)
+ generator.enable_debug("blorp");
}
brw_blorp_eu_emitter::~brw_blorp_eu_emitter()
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index b4db1ca2ccd..feca1e7f7ab 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -3716,8 +3716,21 @@ brw_wm_fs_emit(struct brw_context *brw,
prog_data->no_8 = false;
}
- fs_generator g(brw, mem_ctx, (void *) key, &prog_data->base, prog, &fp->Base,
- v.runtime_check_aads_emit, INTEL_DEBUG & DEBUG_WM);
+ fs_generator g(brw, mem_ctx, (void *) key, &prog_data->base, prog,
+ &fp->Base, v.runtime_check_aads_emit);
+
+ if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
+ char *name;
+ if (prog)
+ name = ralloc_asprintf(mem_ctx, "%s fragment shader %d",
+ prog->Label ? prog->Label : "unnamed",
+ prog->Name);
+ else
+ name = ralloc_asprintf(mem_ctx, "fragment program %d", fp->Base.Id);
+
+ g.enable_debug(name);
+ }
+
if (simd8_cfg)
g.generate_code(simd8_cfg, 8);
if (simd16_cfg)
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index 5b33ad27fe1..ce9f3b8a662 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -693,10 +693,10 @@ public:
struct brw_stage_prog_data *prog_data,
struct gl_shader_program *shader_prog,
struct gl_program *fp,
- bool runtime_check_aads_emit,
- bool debug_flag);
+ bool runtime_check_aads_emit);
~fs_generator();
+ void enable_debug(const char *shader_name);
int generate_code(const cfg_t *cfg, int dispatch_width);
const unsigned *get_assembly(unsigned int *assembly_size);
@@ -804,7 +804,8 @@ private:
exec_list discard_halt_patches;
bool runtime_check_aads_emit;
- const bool debug_flag;
+ bool debug_flag;
+ const char *shader_name;
void *mem_ctx;
};
diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
index 6c528c6ba1e..1d88fda109c 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
@@ -126,13 +126,12 @@ fs_generator::fs_generator(struct brw_context *brw,
struct brw_stage_prog_data *prog_data,
struct gl_shader_program *shader_prog,
struct gl_program *prog,
- bool runtime_check_aads_emit,
- bool debug_flag)
+ bool runtime_check_aads_emit)
: brw(brw), key(key),
prog_data(prog_data), shader_prog(shader_prog),
prog(prog), runtime_check_aads_emit(runtime_check_aads_emit),
- debug_flag(debug_flag), mem_ctx(mem_ctx)
+ debug_flag(false), mem_ctx(mem_ctx)
{
ctx = &brw->ctx;
@@ -1512,6 +1511,13 @@ fs_generator::generate_untyped_surface_read(fs_inst *inst, struct brw_reg dst,
brw_mark_surface_used(prog_data, surf_index.dw1.ud);
}
+void
+fs_generator::enable_debug(const char *shader_name)
+{
+ debug_flag = true;
+ this->shader_name = shader_name;
+}
+
int
fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
{
@@ -2015,21 +2021,10 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
int after_size = p->next_insn_offset - start_offset;
if (unlikely(debug_flag)) {
- if (shader_prog) {
- fprintf(stderr,
- "Native code for %s fragment shader %d (SIMD%d dispatch):\n",
- shader_prog->Label ? shader_prog->Label : "unnamed",
- shader_prog->Name, dispatch_width);
- } else if (prog) {
- fprintf(stderr,
- "Native code for fragment program %d (SIMD%d dispatch):\n",
- prog->Id, dispatch_width);
- } else {
- fprintf(stderr, "Native code for blorp program (SIMD%d dispatch):\n",
- dispatch_width);
- }
- fprintf(stderr, "SIMD%d shader: %d instructions. %d loops. Compacted %d to %d"
- " bytes (%.0f%%)\n",
+ fprintf(stderr, "Native code for %s\n"
+ "SIMD%d shader: %d instructions. %d loops. Compacted %d to %d"
+ " bytes (%.0f%%)\n",
+ shader_name,
dispatch_width, before_size / 16, loop_count, before_size, after_size,
100.0f * (before_size - after_size) / before_size);