clc: add clc_validate_spirv
authorKarol Herbst <kherbst@redhat.com>
Tue, 4 Apr 2023 02:35:09 +0000 (04:35 +0200)
committerMarge Bot <emma+marge@anholt.net>
Thu, 13 Apr 2023 02:54:21 +0000 (02:54 +0000)
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22280>

src/compiler/clc/clc_helpers.cpp
src/compiler/clc/clc_helpers.h

index 80bc84831e4e0ba8ac86edc7ee89e94deb85053a..7599141fb6635fe3b3cc28b0de5ce57e303849db 100644 (file)
@@ -1149,6 +1149,17 @@ clc_link_spirv_binaries(const struct clc_linker_args *args,
    return 0;
 }
 
+bool
+clc_validate_spirv(const struct clc_binary *spirv,
+                   const struct clc_logger *logger)
+{
+   SPIRVMessageConsumer msgconsumer(logger);
+   spvtools::SpirvTools tools(spirv_target);
+   tools.SetMessageConsumer(msgconsumer);
+   const uint32_t *data = static_cast<const uint32_t *>(spirv->data);
+   return tools.Validate(data, spirv->size / 4);
+}
+
 int
 clc_spirv_specialize(const struct clc_binary *in_spirv,
                      const struct clc_parsed_spirv *parsed_data,
index 0ad0990f0748c9bb9d41f6d07ed6a19e0b5f4dbe..0bfb90dec15cdabcd8e6cceceb48323e901e8e18 100644 (file)
@@ -73,6 +73,10 @@ clc_link_spirv_binaries(const struct clc_linker_args *args,
                         const struct clc_logger *logger,
                         struct clc_binary *out_spirv);
 
+bool
+clc_validate_spirv(const struct clc_binary *spirv,
+                   const struct clc_logger *logger);
+
 int
 clc_spirv_specialize(const struct clc_binary *in_spirv,
                      const struct clc_parsed_spirv *parsed_data,