From: Isabella Bosia Subject: [PATCH vkd3d 1/3] vkd3d-shader: Add shader_dump_to_buffer helper function. Message-Id: <20200923075239.3147512-1-ibosia@codeweavers.com> Date: Wed, 23 Sep 2020 08:52:37 +0100 Signed-off-by: Isabella Bosia --- libs/vkd3d-shader/trace.c | 30 ++++++++++++++---------- libs/vkd3d-shader/vkd3d_shader_private.h | 1 + 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/libs/vkd3d-shader/trace.c b/libs/vkd3d-shader/trace.c index d7495ee..b2512ac 100644 --- a/libs/vkd3d-shader/trace.c +++ b/libs/vkd3d-shader/trace.c @@ -1557,21 +1557,13 @@ static void shader_dump_instruction(struct vkd3d_string_buffer *buffer, shader_addline(buffer, "\n"); } -void vkd3d_shader_trace(void *data) +void vkd3d_shader_dump_to_buffer(void *data, struct vkd3d_string_buffer *buffer) { struct vkd3d_shader_version shader_version; - struct vkd3d_string_buffer buffer; - const char *p, *q; const DWORD *ptr; - if (!vkd3d_string_buffer_init(&buffer)) - { - ERR("Failed to initialize string buffer.\n"); - return; - } - shader_sm4_read_header(data, &ptr, &shader_version); - shader_addline(&buffer, "%s_%u_%u\n", + shader_addline(buffer, "%s_%u_%u\n", shader_get_type_prefix(shader_version.type), shader_version.major, shader_version.minor); while (!shader_sm4_is_end(data, &ptr)) @@ -1582,13 +1574,27 @@ void vkd3d_shader_trace(void *data) if (ins.handler_idx == VKD3DSIH_INVALID) { WARN("Skipping unrecognized instruction.\n"); - shader_addline(&buffer, "\n"); + shader_addline(buffer, "\n"); continue; } - shader_dump_instruction(&buffer, &ins, &shader_version); + shader_dump_instruction(buffer, &ins, &shader_version); + } +} + +void vkd3d_shader_trace(void *data) +{ + struct vkd3d_string_buffer buffer; + const char *p, *q; + + if (!vkd3d_string_buffer_init(&buffer)) + { + ERR("Failed to initialize string buffer.\n"); + return; } + vkd3d_shader_dump_to_buffer(data, &buffer); + for (p = buffer.buffer; *p; p = q) { if (!(q = strstr(p, "\n"))) diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index 00b2441..9ed8be2 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -830,6 +830,7 @@ struct vkd3d_string_buffer unsigned int content_size; }; +void vkd3d_shader_dump_to_buffer(void *data, struct vkd3d_string_buffer *buffer) DECLSPEC_HIDDEN; void vkd3d_string_buffer_cleanup(struct vkd3d_string_buffer *buffer) DECLSPEC_HIDDEN; bool vkd3d_string_buffer_init(struct vkd3d_string_buffer *buffer) DECLSPEC_HIDDEN; int vkd3d_string_buffer_vprintf(struct vkd3d_string_buffer *buffer, const char *format, va_list args) DECLSPEC_HIDDEN; -- 2.25.1