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
|
enum shader_dump_type
|
||||||
{
|
{
|
||||||
SHADER_DUMP_TYPE_SOURCE,
|
SHADER_DUMP_TYPE_LOG,
|
||||||
SHADER_DUMP_TYPE_PREPROC,
|
SHADER_DUMP_TYPE_PREPROC,
|
||||||
|
SHADER_DUMP_TYPE_SOURCE,
|
||||||
SHADER_DUMP_TYPE_TARGET,
|
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)
|
if (dump_data->profile)
|
||||||
pos += snprintf(filename + pos, ARRAY_SIZE(filename) - pos, "-%s", dump_data->profile);
|
pos += snprintf(filename + pos, ARRAY_SIZE(filename) - pos, "-%s", dump_data->profile);
|
||||||
|
|
||||||
if (type == SHADER_DUMP_TYPE_SOURCE)
|
if (type == SHADER_DUMP_TYPE_LOG)
|
||||||
pos += snprintf(filename + pos, ARRAY_SIZE(filename) - pos, "-source.%s", dump_data->source_suffix);
|
pos += snprintf(filename + pos, ARRAY_SIZE(filename) - pos, ".log");
|
||||||
else if (type == SHADER_DUMP_TYPE_PREPROC)
|
else if (type == SHADER_DUMP_TYPE_PREPROC)
|
||||||
pos += snprintf(filename + pos, ARRAY_SIZE(filename) - pos, "-preproc.%s", dump_data->source_suffix);
|
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
|
else
|
||||||
pos += snprintf(filename + pos, ARRAY_SIZE(filename) - pos, "-target.%s", dump_data->target_suffix);
|
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)
|
static const char *shader_get_source_type_suffix(enum vkd3d_shader_source_type type)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
@@ -1770,6 +1784,7 @@ int vkd3d_shader_scan(const struct vkd3d_shader_compile_info *compile_info, char
|
|||||||
vsir_program_cleanup(&program);
|
vsir_program_cleanup(&program);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vkd3d_shader_dump_messages(&dump_data, &message_context);
|
||||||
vkd3d_shader_message_context_trace_messages(&message_context);
|
vkd3d_shader_message_context_trace_messages(&message_context);
|
||||||
vkd3d_shader_string_from_message_context(messages, &message_context);
|
vkd3d_shader_string_from_message_context(messages, &message_context);
|
||||||
vkd3d_shader_message_context_cleanup(&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)
|
if (ret >= 0)
|
||||||
vkd3d_shader_dump_shader(&dump_data, out->code, out->size, SHADER_DUMP_TYPE_TARGET);
|
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_message_context_trace_messages(&message_context);
|
||||||
vkd3d_shader_string_from_message_context(messages, &message_context);
|
vkd3d_shader_string_from_message_context(messages, &message_context);
|
||||||
vkd3d_shader_message_context_cleanup(&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)
|
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_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_message_context_trace_messages(&message_context);
|
||||||
vkd3d_shader_string_from_message_context(messages, &message_context);
|
vkd3d_shader_string_from_message_context(messages, &message_context);
|
||||||
vkd3d_shader_message_context_cleanup(&message_context);
|
vkd3d_shader_message_context_cleanup(&message_context);
|
||||||
|
|||||||
Reference in New Issue
Block a user