mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-12-15 08:03:30 -08:00
vkd3d-shader: Dump compilation messages as well.
This commit is contained in:
Notes:
Henri Verbeet
2025-12-11 19:10:36 +01:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1863
@@ -563,8 +563,9 @@ struct shader_dump_data
|
||||
|
||||
enum shader_dump_type
|
||||
{
|
||||
SHADER_DUMP_TYPE_SOURCE,
|
||||
SHADER_DUMP_TYPE_LOG,
|
||||
SHADER_DUMP_TYPE_PREPROC,
|
||||
SHADER_DUMP_TYPE_SOURCE,
|
||||
SHADER_DUMP_TYPE_TARGET,
|
||||
};
|
||||
|
||||
@@ -594,10 +595,12 @@ static void vkd3d_shader_dump_shader(const struct shader_dump_data *dump_data,
|
||||
if (dump_data->profile)
|
||||
pos += snprintf(filename + pos, ARRAY_SIZE(filename) - pos, "-%s", dump_data->profile);
|
||||
|
||||
if (type == SHADER_DUMP_TYPE_SOURCE)
|
||||
pos += snprintf(filename + pos, ARRAY_SIZE(filename) - pos, "-source.%s", dump_data->source_suffix);
|
||||
if (type == SHADER_DUMP_TYPE_LOG)
|
||||
pos += snprintf(filename + pos, ARRAY_SIZE(filename) - pos, ".log");
|
||||
else if (type == SHADER_DUMP_TYPE_PREPROC)
|
||||
pos += snprintf(filename + pos, ARRAY_SIZE(filename) - pos, "-preproc.%s", dump_data->source_suffix);
|
||||
else if (type == SHADER_DUMP_TYPE_SOURCE)
|
||||
pos += snprintf(filename + pos, ARRAY_SIZE(filename) - pos, "-source.%s", dump_data->source_suffix);
|
||||
else
|
||||
pos += snprintf(filename + pos, ARRAY_SIZE(filename) - pos, "-target.%s", dump_data->target_suffix);
|
||||
|
||||
@@ -615,6 +618,17 @@ static void vkd3d_shader_dump_shader(const struct shader_dump_data *dump_data,
|
||||
}
|
||||
}
|
||||
|
||||
static void vkd3d_shader_dump_messages(const struct shader_dump_data *dump_data,
|
||||
const struct vkd3d_shader_message_context *message_context)
|
||||
{
|
||||
const struct vkd3d_string_buffer *messages = &message_context->messages;
|
||||
|
||||
if (!messages->content_size)
|
||||
return;
|
||||
|
||||
vkd3d_shader_dump_shader(dump_data, messages->buffer, messages->content_size, SHADER_DUMP_TYPE_LOG);
|
||||
}
|
||||
|
||||
static const char *shader_get_source_type_suffix(enum vkd3d_shader_source_type type)
|
||||
{
|
||||
switch (type)
|
||||
@@ -1770,6 +1784,7 @@ int vkd3d_shader_scan(const struct vkd3d_shader_compile_info *compile_info, char
|
||||
vsir_program_cleanup(&program);
|
||||
}
|
||||
|
||||
vkd3d_shader_dump_messages(&dump_data, &message_context);
|
||||
vkd3d_shader_message_context_trace_messages(&message_context);
|
||||
vkd3d_shader_string_from_message_context(messages, &message_context);
|
||||
vkd3d_shader_message_context_cleanup(&message_context);
|
||||
@@ -1917,6 +1932,7 @@ int vkd3d_shader_compile(const struct vkd3d_shader_compile_info *compile_info,
|
||||
if (ret >= 0)
|
||||
vkd3d_shader_dump_shader(&dump_data, out->code, out->size, SHADER_DUMP_TYPE_TARGET);
|
||||
|
||||
vkd3d_shader_dump_messages(&dump_data, &message_context);
|
||||
vkd3d_shader_message_context_trace_messages(&message_context);
|
||||
vkd3d_shader_string_from_message_context(messages, &message_context);
|
||||
vkd3d_shader_message_context_cleanup(&message_context);
|
||||
@@ -2240,6 +2256,7 @@ int vkd3d_shader_preprocess(const struct vkd3d_shader_compile_info *compile_info
|
||||
if ((ret = preproc_lexer_parse(compile_info, out, &message_context)) >= 0)
|
||||
vkd3d_shader_dump_shader(&dump_data, out->code, out->size, SHADER_DUMP_TYPE_PREPROC);
|
||||
|
||||
vkd3d_shader_dump_messages(&dump_data, &message_context);
|
||||
vkd3d_shader_message_context_trace_messages(&message_context);
|
||||
vkd3d_shader_string_from_message_context(messages, &message_context);
|
||||
vkd3d_shader_message_context_cleanup(&message_context);
|
||||
|
||||
Reference in New Issue
Block a user