radv: tidy up radv_get_shader_name() and add NGG stages
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 11 Jul 2019 16:03:55 +0000 (18:03 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 12 Jul 2019 06:19:53 +0000 (08:19 +0200)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_debug.c
src/amd/vulkan/radv_shader.c
src/amd/vulkan/radv_shader.h

index 42296745543704d90bc32bebbe769ecc9d40fb97..49b7417e988f86d4dd655b71d81fe41fe36a34e4 100644 (file)
@@ -406,7 +406,7 @@ radv_dump_annotated_shader(struct radv_shader_variant *shader,
                            start_addr, &num_inst, instructions);
 
        fprintf(f, COLOR_YELLOW "%s - annotated disassembly:" COLOR_RESET "\n",
-               radv_get_shader_name(shader, stage));
+               radv_get_shader_name(&shader->info, stage));
 
        /* Print instructions with annotations. */
        for (i = 0; i < num_inst; i++) {
@@ -490,7 +490,7 @@ radv_dump_shader(struct radv_pipeline *pipeline,
        if (!shader)
                return;
 
-       fprintf(f, "%s:\n\n", radv_get_shader_name(shader, stage));
+       fprintf(f, "%s:\n\n", radv_get_shader_name(&shader->info, stage));
 
        if (shader->spirv) {
                unsigned char sha1[21];
index 4ec4e88349d16ccc69ec80a2c60822f2e0fef711..8f37c2bfb67577988c4c144e25e85918fd914fea 100644 (file)
@@ -1152,15 +1152,34 @@ radv_shader_variant_destroy(struct radv_device *device,
 }
 
 const char *
-radv_get_shader_name(struct radv_shader_variant *var, gl_shader_stage stage)
+radv_get_shader_name(struct radv_shader_variant_info *info,
+                    gl_shader_stage stage)
 {
        switch (stage) {
-       case MESA_SHADER_VERTEX: return var->info.vs.as_ls ? "Vertex Shader as LS" : var->info.vs.as_es ? "Vertex Shader as ES" : "Vertex Shader as VS";
-       case MESA_SHADER_GEOMETRY: return "Geometry Shader";
-       case MESA_SHADER_FRAGMENT: return "Pixel Shader";
-       case MESA_SHADER_COMPUTE: return "Compute Shader";
-       case MESA_SHADER_TESS_CTRL: return "Tessellation Control Shader";
-       case MESA_SHADER_TESS_EVAL: return var->info.tes.as_es ? "Tessellation Evaluation Shader as ES" : "Tessellation Evaluation Shader as VS";
+       case MESA_SHADER_VERTEX:
+               if (info->vs.as_ls)
+                       return "Vertex Shader as LS";
+               else if (info->vs.as_es)
+                       return "Vertex Shader as ES";
+               else if (info->is_ngg)
+                       return "Vertex Shader as ESGS";
+               else
+                       return "Vertex Shader as VS";
+       case MESA_SHADER_TESS_CTRL:
+               return "Tessellation Control Shader";
+       case MESA_SHADER_TESS_EVAL:
+               if (info->tes.as_es)
+                       return "Tessellation Evaluation Shader as ES";
+               else if (info->is_ngg)
+                       return "Tessellation Evaluation Shader as ESGS";
+               else
+                       return "Tessellation Evaluation Shader as VS";
+       case MESA_SHADER_GEOMETRY:
+               return "Geometry Shader";
+       case MESA_SHADER_FRAGMENT:
+               return "Pixel Shader";
+       case MESA_SHADER_COMPUTE:
+               return "Compute Shader";
        default:
                return "Unknown shader";
        };
@@ -1244,7 +1263,7 @@ radv_shader_dump_stats(struct radv_device *device,
 
        generate_shader_stats(device, variant, stage, buf);
 
-       fprintf(file, "\n%s:\n", radv_get_shader_name(variant, stage));
+       fprintf(file, "\n%s:\n", radv_get_shader_name(&variant->info, stage));
        fprintf(file, "%s", buf->buf);
 
        _mesa_string_buffer_destroy(buf);
@@ -1317,7 +1336,7 @@ radv_GetShaderInfoAMD(VkDevice _device,
        case VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD:
                buf = _mesa_string_buffer_create(NULL, 1024);
 
-               _mesa_string_buffer_printf(buf, "%s:\n", radv_get_shader_name(variant, stage));
+               _mesa_string_buffer_printf(buf, "%s:\n", radv_get_shader_name(&variant->info, stage));
                _mesa_string_buffer_printf(buf, "%s\n\n", variant->llvm_ir_string);
                _mesa_string_buffer_printf(buf, "%s\n\n", variant->disasm_string);
                generate_shader_stats(device, variant, stage, buf);
index 8506aa1d9f0257adbf8251747b3120e899af49d0..360591349a86935e191b7afc3e5291504a28a445 100644 (file)
@@ -421,7 +421,8 @@ radv_shader_variant_destroy(struct radv_device *device,
                            struct radv_shader_variant *variant);
 
 const char *
-radv_get_shader_name(struct radv_shader_variant *var, gl_shader_stage stage);
+radv_get_shader_name(struct radv_shader_variant_info *info,
+                    gl_shader_stage stage);
 
 void
 radv_shader_dump_stats(struct radv_device *device,