From e758b6519d691cc2becd0d940d1c131634549bf2 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Wed, 12 Jul 2017 12:34:00 -0700 Subject: [PATCH] anv/pipeline: Dump shader immedately after spirv_to_nir Reviewed-by: Lionel Landwerlin --- src/intel/vulkan/anv_pipeline.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index 51788928af8..20609248d67 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -83,6 +83,15 @@ void anv_DestroyShaderModule( #define SPIR_V_MAGIC_NUMBER 0x07230203 +static const uint64_t stage_to_debug[] = { + [MESA_SHADER_VERTEX] = DEBUG_VS, + [MESA_SHADER_TESS_CTRL] = DEBUG_TCS, + [MESA_SHADER_TESS_EVAL] = DEBUG_TES, + [MESA_SHADER_GEOMETRY] = DEBUG_GS, + [MESA_SHADER_FRAGMENT] = DEBUG_WM, + [MESA_SHADER_COMPUTE] = DEBUG_CS, +}; + /* Eventually, this will become part of anv_CreateShader. Unfortunately, * we can't do that yet because we don't have the ability to copy nir. */ @@ -144,6 +153,12 @@ anv_shader_compile_to_nir(struct anv_pipeline *pipeline, free(spec_entries); + if (unlikely(INTEL_DEBUG & stage_to_debug[stage])) { + fprintf(stderr, "NIR (from SPIR-V) for %s shader:\n", + gl_shader_stage_name(stage)); + nir_print_shader(nir, stderr); + } + /* We have to lower away local constant initializers right before we * inline functions. That way they get properly initialized at the top * of the function and not at the top of its caller. -- 2.30.2