From: Francisco Casas Subject: [PATCH vkd3d 03/12] vkd3d-shader/hlsl: Introduce hlsl_free_deref(). Message-Id: <20220701212435.76394-3-fcasas@codeweavers.com> Date: Fri, 1 Jul 2022 17:24:26 -0400 Signed-off-by: Francisco Casas --- libs/vkd3d-shader/hlsl.c | 13 +++++++++---- libs/vkd3d-shader/hlsl.h | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/libs/vkd3d-shader/hlsl.c b/libs/vkd3d-shader/hlsl.c index b349eb15..23136aeb 100644 --- a/libs/vkd3d-shader/hlsl.c +++ b/libs/vkd3d-shader/hlsl.c @@ -1539,6 +1539,11 @@ void hlsl_free_instr_list(struct list *list) hlsl_free_instr(node); } +void hlsl_free_deref(struct hlsl_deref *deref) +{ + hlsl_src_remove(&deref->offset); +} + static void free_ir_constant(struct hlsl_ir_constant *constant) { vkd3d_free(constant); @@ -1568,7 +1573,7 @@ static void free_ir_jump(struct hlsl_ir_jump *jump) static void free_ir_load(struct hlsl_ir_load *load) { - hlsl_src_remove(&load->src.offset); + hlsl_free_deref(&load->src); vkd3d_free(load); } @@ -1581,8 +1586,8 @@ static void free_ir_loop(struct hlsl_ir_loop *loop) static void free_ir_resource_load(struct hlsl_ir_resource_load *load) { hlsl_src_remove(&load->coords); - hlsl_src_remove(&load->sampler.offset); - hlsl_src_remove(&load->resource.offset); + hlsl_free_deref(&load->sampler); + hlsl_free_deref(&load->resource); hlsl_src_remove(&load->texel_offset); vkd3d_free(load); } @@ -1590,7 +1595,7 @@ static void free_ir_resource_load(struct hlsl_ir_resource_load *load) static void free_ir_store(struct hlsl_ir_store *store) { hlsl_src_remove(&store->rhs); - hlsl_src_remove(&store->lhs.offset); + hlsl_free_deref(&store->lhs); vkd3d_free(store); } diff --git a/libs/vkd3d-shader/hlsl.h b/libs/vkd3d-shader/hlsl.h index ce1f69df..5bfbc5a7 100644 --- a/libs/vkd3d-shader/hlsl.h +++ b/libs/vkd3d-shader/hlsl.h @@ -717,6 +717,8 @@ void hlsl_dump_function(struct hlsl_ctx *ctx, const struct hlsl_ir_function_decl int hlsl_emit_bytecode(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *entry_func, enum vkd3d_shader_target_type target_type, struct vkd3d_shader_code *out); +void hlsl_free_deref(struct hlsl_deref *deref); + void hlsl_replace_node(struct hlsl_ir_node *old, struct hlsl_ir_node *new); void hlsl_free_instr(struct hlsl_ir_node *node); -- 2.34.1