Martin Storsjö : vkd3d-shader/spirv: Fix the signature of vkd3d_spirv_build_op_type_image.

Alexandre Julliard julliard at winehq.org
Mon Aug 15 15:20:02 CDT 2022


Module: vkd3d
Branch: master
Commit: 1c61b20616dad50fd33d3acd3d63991767c87864
URL:    https://gitlab.winehq.org/wine/vkd3d/-/commit/1c61b20616dad50fd33d3acd3d63991767c87864

Author: Martin Storsjö <martin at martin.st>
Date:   Mon Aug 15 13:08:14 2022 +0300

vkd3d-shader/spirv: Fix the signature of vkd3d_spirv_build_op_type_image.

Don't assume that enums and uint32_t parameters are identical. Clang
16 changes the diagonstic for incompatible function pointer types
from a warning into an error by default.

This fixes the following error, when built (for aarch64, but probably
also for other architectures) in MSVC mode:

../src/libs/vkd3d/libs/vkd3d-shader/spirv.c:1083:13: error: incompatible function pointer types passing 'uint32_t (struct vkd3d_spirv_builder *, uint32_t, SpvDim, uint32_t, uint32_t, uint32_t, uint32_t, SpvImageFormat)' (aka 'unsigned int (struct vkd3d_spirv_builder *, unsigned int, enum SpvDim_, unsigned int, unsigned int, unsigned int, unsigned int, enum SpvImageFormat_)') to parameter of type 'vkd3d_spirv_build7_pfn' (aka 'unsigned int (*)(struct vkd3d_spirv_builder *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)') [-Wincompatible-function-pointer-types]
            vkd3d_spirv_build_op_type_image);
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/libs/vkd3d/libs/vkd3d-shader/spirv.c:612:68: note: passing argument to parameter 'build_pfn' here
        SpvOp op, const uint32_t *operands, vkd3d_spirv_build7_pfn build_pfn)
                                                                   ^

Signed-off-by: Martin Storsjö <martin at martin.st>

---

 libs/vkd3d-shader/spirv.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c
index a3ad02aa..04dd133f 100644
--- a/libs/vkd3d-shader/spirv.c
+++ b/libs/vkd3d-shader/spirv.c
@@ -1066,8 +1066,8 @@ static uint32_t vkd3d_spirv_get_op_type_sampler(struct vkd3d_spirv_builder *buil
 
 /* Access qualifiers are not supported. */
 static uint32_t vkd3d_spirv_build_op_type_image(struct vkd3d_spirv_builder *builder,
-        uint32_t sampled_type_id, SpvDim dim, uint32_t depth, uint32_t arrayed,
-        uint32_t ms, uint32_t sampled, SpvImageFormat format)
+        uint32_t sampled_type_id, uint32_t dim, uint32_t depth, uint32_t arrayed,
+        uint32_t ms, uint32_t sampled, uint32_t format)
 {
     uint32_t operands[] = {sampled_type_id, dim, depth, arrayed, ms, sampled, format};
     return vkd3d_spirv_build_op_rv(builder, &builder->global_stream,




More information about the wine-cvs mailing list