Module: vkd3d Branch: master Commit: bf628f0c74ae839bb20266cd10e07d1504ebc1bf URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/bf628f0c74ae839bb20266cd10e07d...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Thu Jan 18 20:41:27 2024 +0100
vkd3d-shader/ir: Store block names in struct vsir_program.
---
libs/vkd3d-shader/dxbc.c | 5 ----- libs/vkd3d-shader/ir.c | 9 +++++++-- libs/vkd3d-shader/spirv.c | 4 ++-- libs/vkd3d-shader/vkd3d_shader_private.h | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c index edb65d2e..37ebc73c 100644 --- a/libs/vkd3d-shader/dxbc.c +++ b/libs/vkd3d-shader/dxbc.c @@ -552,14 +552,9 @@ static int shdr_handler(const struct vkd3d_shader_dxbc_section_desc *section,
void free_shader_desc(struct vkd3d_shader_desc *desc) { - size_t i; - shader_signature_cleanup(&desc->input_signature); shader_signature_cleanup(&desc->output_signature); shader_signature_cleanup(&desc->patch_constant_signature); - for (i = 0; i < desc->block_name_count; ++i) - vkd3d_free((void *)desc->block_names[i]); - vkd3d_free(desc->block_names); }
int shader_extract_from_dxbc(const struct vkd3d_shader_code *dxbc, diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c index 537cbe6f..865a292c 100644 --- a/libs/vkd3d-shader/ir.c +++ b/libs/vkd3d-shader/ir.c @@ -26,6 +26,11 @@ bool vsir_program_init(struct vsir_program *program, const struct vkd3d_shader_v
void vsir_program_cleanup(struct vsir_program *program) { + size_t i; + + for (i = 0; i < program->block_name_count; ++i) + vkd3d_free((void *)program->block_names[i]); + vkd3d_free(program->block_names); shader_instruction_array_destroy(&program->instructions); }
@@ -2235,8 +2240,8 @@ static enum vkd3d_result flatten_control_flow_constructs(struct vkd3d_shader_par
vkd3d_free(flattener.control_flow_info); /* Simpler to always free these in free_shader_desc(). */ - parser->shader_desc.block_names = flattener.block_names; - parser->shader_desc.block_name_count = flattener.block_name_count; + program->block_names = flattener.block_names; + program->block_name_count = flattener.block_name_count;
return result; } diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index 668f0c4e..2acf3b27 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -9803,8 +9803,8 @@ static int spirv_compiler_generate_spirv(struct spirv_compiler *compiler, memset(&shader_desc->output_signature, 0, sizeof(shader_desc->output_signature)); memset(&shader_desc->patch_constant_signature, 0, sizeof(shader_desc->patch_constant_signature)); compiler->use_vocp = program->use_vocp; - compiler->block_names = parser->shader_desc.block_names; - compiler->block_name_count = parser->shader_desc.block_name_count; + compiler->block_names = program->block_names; + compiler->block_name_count = program->block_name_count;
compiler->input_control_point_count = program->input_control_point_count; compiler->output_control_point_count = program->output_control_point_count; diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index 5bf40359..9a00b7bc 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -1024,9 +1024,6 @@ struct vkd3d_shader_desc { uint32_t used, external; } flat_constant_count[3]; - - const char **block_names; - size_t block_name_count; };
struct vkd3d_shader_register_semantic @@ -1272,6 +1269,9 @@ struct vsir_program unsigned int temp_count; unsigned int ssa_count; bool use_vocp; + + const char **block_names; + size_t block_name_count; };
bool vsir_program_init(struct vsir_program *program, const struct vkd3d_shader_version *version, unsigned int reserve);