radv: tidy up radv_get_shader_name() and add NGG stages
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
@@ -406,7 +406,7 @@ radv_dump_annotated_shader(struct radv_shader_variant *shader,
|
|||||||
start_addr, &num_inst, instructions);
|
start_addr, &num_inst, instructions);
|
||||||
|
|
||||||
fprintf(f, COLOR_YELLOW "%s - annotated disassembly:" COLOR_RESET "\n",
|
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. */
|
/* Print instructions with annotations. */
|
||||||
for (i = 0; i < num_inst; i++) {
|
for (i = 0; i < num_inst; i++) {
|
||||||
@@ -490,7 +490,7 @@ radv_dump_shader(struct radv_pipeline *pipeline,
|
|||||||
if (!shader)
|
if (!shader)
|
||||||
return;
|
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) {
|
if (shader->spirv) {
|
||||||
unsigned char sha1[21];
|
unsigned char sha1[21];
|
||||||
|
@@ -1152,15 +1152,34 @@ radv_shader_variant_destroy(struct radv_device *device,
|
|||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
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) {
|
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_VERTEX:
|
||||||
case MESA_SHADER_GEOMETRY: return "Geometry Shader";
|
if (info->vs.as_ls)
|
||||||
case MESA_SHADER_FRAGMENT: return "Pixel Shader";
|
return "Vertex Shader as LS";
|
||||||
case MESA_SHADER_COMPUTE: return "Compute Shader";
|
else if (info->vs.as_es)
|
||||||
case MESA_SHADER_TESS_CTRL: return "Tessellation Control Shader";
|
return "Vertex Shader as ES";
|
||||||
case MESA_SHADER_TESS_EVAL: return var->info.tes.as_es ? "Tessellation Evaluation Shader as ES" : "Tessellation Evaluation Shader as VS";
|
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:
|
default:
|
||||||
return "Unknown shader";
|
return "Unknown shader";
|
||||||
};
|
};
|
||||||
@@ -1244,7 +1263,7 @@ radv_shader_dump_stats(struct radv_device *device,
|
|||||||
|
|
||||||
generate_shader_stats(device, variant, stage, buf);
|
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);
|
fprintf(file, "%s", buf->buf);
|
||||||
|
|
||||||
_mesa_string_buffer_destroy(buf);
|
_mesa_string_buffer_destroy(buf);
|
||||||
@@ -1317,7 +1336,7 @@ radv_GetShaderInfoAMD(VkDevice _device,
|
|||||||
case VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD:
|
case VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD:
|
||||||
buf = _mesa_string_buffer_create(NULL, 1024);
|
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->llvm_ir_string);
|
||||||
_mesa_string_buffer_printf(buf, "%s\n\n", variant->disasm_string);
|
_mesa_string_buffer_printf(buf, "%s\n\n", variant->disasm_string);
|
||||||
generate_shader_stats(device, variant, stage, buf);
|
generate_shader_stats(device, variant, stage, buf);
|
||||||
|
@@ -421,7 +421,8 @@ radv_shader_variant_destroy(struct radv_device *device,
|
|||||||
struct radv_shader_variant *variant);
|
struct radv_shader_variant *variant);
|
||||||
|
|
||||||
const char *
|
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
|
void
|
||||||
radv_shader_dump_stats(struct radv_device *device,
|
radv_shader_dump_stats(struct radv_device *device,
|
||||||
|
Reference in New Issue
Block a user