compiler: auto-stage file ext for SPIR-V capture

Reviewed-by: Natalie Vock <natalie.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36472>
This commit is contained in:
Caleb Callaway
2025-07-29 17:59:45 +00:00
committed by Marge Bot
parent df2f7bda4f
commit 72a43c76c2
3 changed files with 38 additions and 3 deletions

View File

@@ -113,6 +113,33 @@ _mesa_shader_stage_to_abbrev(unsigned stage)
UNREACHABLE("Unknown shader stage.");
}
/**
* Translate a gl_shader_stage to a shader stage file extension
* that's easily consumed by glslang.
*/
const char *
_mesa_shader_stage_to_file_ext(unsigned stage)
{
switch (stage) {
case MESA_SHADER_VERTEX: return "vert";
case MESA_SHADER_FRAGMENT: return "frag";
case MESA_SHADER_GEOMETRY: return "geom";
case MESA_SHADER_COMPUTE: return "comp";
case MESA_SHADER_TESS_CTRL: return "tesc";
case MESA_SHADER_TESS_EVAL: return "tese";
case MESA_SHADER_TASK: return "task";
case MESA_SHADER_MESH: return "mesh";
case MESA_SHADER_RAYGEN: return "rgen";
case MESA_SHADER_ANY_HIT: return "rahit";
case MESA_SHADER_CLOSEST_HIT: return "rchit";
case MESA_SHADER_MISS: return "rmiss";
case MESA_SHADER_INTERSECTION: return "rint";
case MESA_SHADER_CALLABLE: return "rcall";
}
UNREACHABLE("Unknown shader stage.");
}
const char *
gl_vert_attrib_name(gl_vert_attrib attrib)
{

View File

@@ -163,6 +163,13 @@ const char *_mesa_shader_stage_to_string(unsigned stage);
*/
const char *_mesa_shader_stage_to_abbrev(unsigned stage);
/**
* Translate a gl_shader_stage to a shader stage file extension
* that's easily consumed by glslang.
*/
const char *_mesa_shader_stage_to_file_ext(unsigned stage);
/**
* GL related stages (not including CL)
*/
@@ -1530,7 +1537,7 @@ enum float_controls
FLOAT_CONTROLS_SIGNED_ZERO_PRESERVE_FP64 |
FLOAT_CONTROLS_INF_PRESERVE_FP64 |
FLOAT_CONTROLS_NAN_PRESERVE_FP64,
FLOAT_CONTROLS_SIGNED_ZERO_PRESERVE =
FLOAT_CONTROLS_SIGNED_ZERO_PRESERVE_FP16 |
FLOAT_CONTROLS_SIGNED_ZERO_PRESERVE_FP32 |

View File

@@ -346,8 +346,9 @@ static void
vtn_dump_shader(struct vtn_builder *b, const char *path, const char *name)
{
char filename[PATH_MAX];
int len = snprintf(filename, sizeof(filename), "%s/0x%s.spirv",
path, name);
const char* stage_ext = _mesa_shader_stage_to_file_ext(b->entry_point_stage);
int len = snprintf(filename, sizeof(filename), "%s/0x%s.%s",
path, name, stage_ext);
if (len < 0 || len >= sizeof(filename))
return;