Module: vkd3d Branch: master Commit: a06320c1fcfc2b9e83827493a0fc83ed1f8d3961 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/a06320c1fcfc2b9e83827493a0fc83...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Mon Feb 20 15:57:29 2023 +0100
vkd3d-shader/dxbc: Pass a vkd3d_shader_code structure to parse_dxbc().
---
libs/vkd3d-shader/dxbc.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c index 03ebc38f..a3e79503 100644 --- a/libs/vkd3d-shader/dxbc.c +++ b/libs/vkd3d-shader/dxbc.c @@ -1725,12 +1725,14 @@ static const char *shader_get_string(const char *data, size_t data_size, DWORD o return data + offset; }
-static int parse_dxbc(const char *data, size_t data_size, +static int parse_dxbc(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context, const char *source_name, int (*section_handler)(const struct vkd3d_shader_dxbc_section_desc *section, void *ctx), void *ctx) { const struct vkd3d_shader_location location = {.source_name = source_name}; uint32_t checksum[4], calculated_checksum[4]; + const char *data = dxbc->code; + size_t data_size = dxbc->size; const char *ptr = data; int ret = VKD3D_OK; uint32_t chunk_count; @@ -1941,7 +1943,7 @@ int shader_parse_input_signature(const struct vkd3d_shader_code *dxbc, int ret;
memset(signature, 0, sizeof(*signature)); - if ((ret = parse_dxbc(dxbc->code, dxbc->size, message_context, NULL, isgn_handler, signature)) < 0) + if ((ret = parse_dxbc(dxbc, message_context, NULL, isgn_handler, signature)) < 0) ERR("Failed to parse input signature.\n");
return ret; @@ -2030,7 +2032,7 @@ static int shader_extract_from_dxbc(const struct vkd3d_shader_code *dxbc, memset(&desc->output_signature, 0, sizeof(desc->output_signature)); memset(&desc->patch_constant_signature, 0, sizeof(desc->patch_constant_signature));
- ret = parse_dxbc(dxbc->code, dxbc->size, message_context, source_name, shdr_handler, desc); + ret = parse_dxbc(dxbc, message_context, source_name, shdr_handler, desc); if (!desc->byte_code) ret = VKD3D_ERROR_INVALID_ARGUMENT;
@@ -2559,7 +2561,7 @@ int vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc, *messages = NULL; vkd3d_shader_message_context_init(&message_context, VKD3D_SHADER_LOG_INFO);
- ret = parse_dxbc(dxbc->code, dxbc->size, &message_context, NULL, rts0_handler, root_signature); + ret = parse_dxbc(dxbc, &message_context, NULL, rts0_handler, root_signature); vkd3d_shader_message_context_trace_messages(&message_context); if (!vkd3d_shader_message_context_copy_messages(&message_context, messages)) ret = VKD3D_ERROR_OUT_OF_MEMORY;