mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-10-18 11:10:05 +00:00
For WebGPU<->Vulkan optimization, set correct execution environment (#2834)
Fixes #2833
This commit is contained in:
parent
1dfb5fc12e
commit
19b256616d
@ -68,6 +68,11 @@ class Optimizer {
|
||||
// The constructed instance will have an empty message consumer, which just
|
||||
// ignores all messages from the library. Use SetMessageConsumer() to supply
|
||||
// one if messages are of concern.
|
||||
//
|
||||
// For collections of passes that are meant to transform the input into
|
||||
// another execution environment, then the source environment should be
|
||||
// supplied. e.g. for VulkanToWebGPUPasses the environment should be
|
||||
// SPV_ENV_VULKAN_1_1 not SPV_ENV_WEBGPU_0.
|
||||
explicit Optimizer(spv_target_env env);
|
||||
|
||||
// Disables copy/move constructor/assignment operations.
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "spirv-tools/optimizer.hpp"
|
||||
|
||||
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
|
||||
spvtools::Optimizer optimizer(SPV_ENV_WEBGPU_0);
|
||||
spvtools::Optimizer optimizer(SPV_ENV_VULKAN_1_1);
|
||||
optimizer.SetMessageConsumer([](spv_message_level_t, const char*,
|
||||
const spv_position_t&, const char*) {});
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "spirv-tools/optimizer.hpp"
|
||||
|
||||
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
|
||||
spvtools::Optimizer optimizer(SPV_ENV_VULKAN_1_1);
|
||||
spvtools::Optimizer optimizer(SPV_ENV_WEBGPU_0);
|
||||
optimizer.SetMessageConsumer([](spv_message_level_t, const char*,
|
||||
const spv_position_t&, const char*) {});
|
||||
|
||||
|
@ -222,7 +222,7 @@ TEST(Optimizer, CanRegisterPassesFromFlags) {
|
||||
}
|
||||
|
||||
TEST(Optimizer, VulkanToWebGPUSetsCorrectPasses) {
|
||||
Optimizer opt(SPV_ENV_WEBGPU_0);
|
||||
Optimizer opt(SPV_ENV_VULKAN_1_1);
|
||||
opt.RegisterVulkanToWebGPUPasses();
|
||||
std::vector<const char*> pass_names = opt.GetPassNames();
|
||||
|
||||
@ -267,7 +267,7 @@ TEST_P(VulkanToWebGPUPassTest, Ran) {
|
||||
tools.Assemble(GetParam().input, &binary);
|
||||
}
|
||||
|
||||
Optimizer opt(SPV_ENV_WEBGPU_0);
|
||||
Optimizer opt(SPV_ENV_VULKAN_1_1);
|
||||
opt.RegisterVulkanToWebGPUPasses();
|
||||
|
||||
std::vector<uint32_t> optimized;
|
||||
@ -622,7 +622,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
"compact-ids"}}));
|
||||
|
||||
TEST(Optimizer, WebGPUToVulkanSetsCorrectPasses) {
|
||||
Optimizer opt(SPV_ENV_VULKAN_1_1);
|
||||
Optimizer opt(SPV_ENV_WEBGPU_0);
|
||||
opt.RegisterWebGPUToVulkanPasses();
|
||||
std::vector<const char*> pass_names = opt.GetPassNames();
|
||||
|
||||
@ -659,7 +659,7 @@ TEST_P(WebGPUToVulkanPassTest, Ran) {
|
||||
tools.Assemble(GetParam().input, &binary);
|
||||
}
|
||||
|
||||
Optimizer opt(SPV_ENV_VULKAN_1_1);
|
||||
Optimizer opt(SPV_ENV_WEBGPU_0);
|
||||
opt.RegisterWebGPUToVulkanPasses();
|
||||
|
||||
std::vector<uint32_t> optimized;
|
||||
|
@ -80,13 +80,13 @@ std::string GetSizePasses() {
|
||||
}
|
||||
|
||||
std::string GetVulkanToWebGPUPasses() {
|
||||
spvtools::Optimizer optimizer(SPV_ENV_WEBGPU_0);
|
||||
spvtools::Optimizer optimizer(SPV_ENV_VULKAN_1_1);
|
||||
optimizer.RegisterVulkanToWebGPUPasses();
|
||||
return GetListOfPassesAsString(optimizer);
|
||||
}
|
||||
|
||||
std::string GetWebGPUToVulkanPasses() {
|
||||
spvtools::Optimizer optimizer(SPV_ENV_VULKAN_1_1);
|
||||
spvtools::Optimizer optimizer(SPV_ENV_WEBGPU_0);
|
||||
optimizer.RegisterWebGPUToVulkanPasses();
|
||||
return GetListOfPassesAsString(optimizer);
|
||||
}
|
||||
@ -792,7 +792,7 @@ OptStatus ParseFlags(int argc, const char** argv,
|
||||
return {OPT_STOP, 1};
|
||||
}
|
||||
|
||||
optimizer->SetTargetEnv(SPV_ENV_WEBGPU_0);
|
||||
optimizer->SetTargetEnv(SPV_ENV_VULKAN_1_1);
|
||||
optimizer->RegisterVulkanToWebGPUPasses();
|
||||
} else if (0 == strcmp(cur_arg, "--webgpu-to-vulkan")) {
|
||||
webgpu_to_vulkan_set = true;
|
||||
@ -810,7 +810,7 @@ OptStatus ParseFlags(int argc, const char** argv,
|
||||
return {OPT_STOP, 1};
|
||||
}
|
||||
|
||||
optimizer->SetTargetEnv(SPV_ENV_VULKAN_1_1);
|
||||
optimizer->SetTargetEnv(SPV_ENV_WEBGPU_0);
|
||||
optimizer->RegisterWebGPUToVulkanPasses();
|
||||
} else if (0 == strcmp(cur_arg, "--validate-after-all")) {
|
||||
optimizer->SetValidateAfterAll(true);
|
||||
|
Loading…
Reference in New Issue
Block a user