diff --git a/src/gallium/drivers/iris/iris_program_cache.c b/src/gallium/drivers/iris/iris_program_cache.c index 9912199b0b1..cc250e23a36 100644 --- a/src/gallium/drivers/iris/iris_program_cache.c +++ b/src/gallium/drivers/iris/iris_program_cache.c @@ -36,6 +36,7 @@ #include "pipe/p_screen.h" #include "util/u_atomic.h" #include "util/u_upload_mgr.h" +#include "compiler/brw_disasm.h" #include "compiler/nir/nir.h" #include "compiler/nir/nir_builder.h" #include "intel/compiler/brw_compiler.h" @@ -217,6 +218,19 @@ iris_upload_shader(struct iris_screen *screen, struct keybox *keybox = make_keybox(shader, cache_id, key, key_size); _mesa_hash_table_insert(driver_shaders, keybox, shader); } + + if (INTEL_DEBUG(DEBUG_SHADERS_LINENO) && screen->brw) { + int start = 0; + /* dump each simd variant of shader */ + while (start < shader->brw_prog_data->program_size) { + brw_disassemble_with_lineno(&screen->brw->isa, shader->stage, -1, + ish ? ish->source_hash : 0, assembly, start, + res->bo->address + shader->assembly.offset, + stderr); + start += align64(brw_disassemble_find_end(&screen->brw->isa, + assembly, start), 64); + } + } } bool