mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d-shader/dxbc: Pass a vkd3d_shader_code structure to parse_dxbc().
This commit is contained in:
parent
2f762465a6
commit
a06320c1fc
Notes:
Alexandre Julliard
2023-02-23 22:20:24 +01:00
Approved-by: Zebediah Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/103
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user