From 758247de4da3b18d630b8550e6abbb5bed60f73c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B3zef=20Kucia?= Date: Mon, 17 Jul 2017 18:12:02 +0200 Subject: [PATCH] libs/vkd3d-shader: Avoid duplicated OpTypeSampledImage instructions. --- libs/vkd3d-shader/spirv.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index efe243a7..8436521e 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -711,6 +711,13 @@ static uint32_t vkd3d_spirv_build_op_type_sampled_image(struct vkd3d_spirv_build SpvOpTypeSampledImage, image_type_id); } +static uint32_t vkd3d_spirv_get_op_type_sampled_image(struct vkd3d_spirv_builder *builder, + uint32_t image_type_id) +{ + return vkd3d_spirv_build_once1(builder, SpvOpTypeSampledImage, image_type_id, + vkd3d_spirv_build_op_type_sampled_image); +} + static uint32_t vkd3d_spirv_build_op_type_function(struct vkd3d_spirv_builder *builder, uint32_t return_type, uint32_t *param_types, unsigned int param_count) { @@ -2933,8 +2940,7 @@ static uint32_t vkd3d_dxbc_compiler_prepare_sampled_image(struct vkd3d_dxbc_comp sampler_id = vkd3d_spirv_build_op_load(builder, vkd3d_spirv_get_op_type_sampler(builder), sampler_var_id, SpvMemoryAccessMaskNone); - /* FIXME: Avoid duplicated sampled image types. */ - sampled_image_type_id = vkd3d_spirv_build_op_type_sampled_image(builder, + sampled_image_type_id = vkd3d_spirv_get_op_type_sampled_image(builder, resource_symbol->info.resource.type_id); sampled_image_id = vkd3d_spirv_build_op_sampled_image(builder, sampled_image_type_id, image_id, sampler_id);