From: Henri Verbeet hverbeet@codeweavers.com
--- libs/vkd3d-shader/dxbc.c | 8 ++++---- libs/vkd3d-shader/hlsl_sm4.c | 2 +- libs/vkd3d-shader/vkd3d_shader_private.h | 3 +-- 3 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c index 4041e0f5..a0be8d74 100644 --- a/libs/vkd3d-shader/dxbc.c +++ b/libs/vkd3d-shader/dxbc.c @@ -39,8 +39,8 @@ void dxbc_writer_add_section(struct dxbc_writer *dxbc, uint32_t tag, const void
section = &dxbc->sections[dxbc->section_count++]; section->tag = tag; - section->data = data; - section->size = size; + section->data.code = data; + section->data.size = size; }
int dxbc_writer_write(struct dxbc_writer *dxbc, struct vkd3d_shader_code *out) @@ -67,8 +67,8 @@ int dxbc_writer_write(struct dxbc_writer *dxbc, struct vkd3d_shader_code *out) { set_u32(&buffer, offsets_position + i * sizeof(uint32_t), bytecode_get_size(&buffer)); put_u32(&buffer, dxbc->sections[i].tag); - put_u32(&buffer, dxbc->sections[i].size); - bytecode_put_bytes(&buffer, dxbc->sections[i].data, dxbc->sections[i].size); + put_u32(&buffer, dxbc->sections[i].data.size); + bytecode_put_bytes(&buffer, dxbc->sections[i].data.code, dxbc->sections[i].data.size); } set_u32(&buffer, size_position, bytecode_get_size(&buffer));
diff --git a/libs/vkd3d-shader/hlsl_sm4.c b/libs/vkd3d-shader/hlsl_sm4.c index 10bb1e3d..bb03098a 100644 --- a/libs/vkd3d-shader/hlsl_sm4.c +++ b/libs/vkd3d-shader/hlsl_sm4.c @@ -2510,6 +2510,6 @@ int hlsl_sm4_write(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *entry_fun if (!(ret = ctx->result)) ret = dxbc_writer_write(&dxbc, out); for (i = 0; i < dxbc.section_count; ++i) - vkd3d_free((void *)dxbc.sections[i].data); + vkd3d_shader_free_shader_code(&dxbc.sections[i].data); return ret; } diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index 6c5a1917..56100e46 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -1311,8 +1311,7 @@ static inline void *vkd3d_find_struct_(const struct vkd3d_struct *chain, struct dxbc_writer_section { uint32_t tag; - const uint8_t *data; - size_t size; + struct vkd3d_shader_code data; };
#define DXBC_MAX_SECTION_COUNT 5