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 <krh@bitplanet.net> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user