diff options
Diffstat (limited to 'src/shader_recompiler/backend/spirv/emit_spirv.cpp')
| -rw-r--r-- | src/shader_recompiler/backend/spirv/emit_spirv.cpp | 38 |
1 files changed, 3 insertions, 35 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv.cpp b/src/shader_recompiler/backend/spirv/emit_spirv.cpp index 313a1deb30..fc102cadac 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project @@ -9,7 +9,6 @@ #include <type_traits> #include <utility> #include <vector> -#include <spirv-tools/optimizer.hpp> #include "common/settings.h" #include "shader_recompiler/backend/spirv/emit_spirv.h" @@ -22,15 +21,7 @@ namespace Shader::Backend::SPIRV { namespace { template <class Func> struct FuncTraits {}; - thread_local std::unique_ptr<spvtools::Optimizer> thread_optimizer; - spvtools::Optimizer& GetThreadOptimizer() { - if (!thread_optimizer) { - thread_optimizer = std::make_unique<spvtools::Optimizer>(SPV_ENV_VULKAN_1_3); - thread_optimizer->RegisterPerformancePasses(); - } - return *thread_optimizer; - } template <class ReturnType_, class... Args> struct FuncTraits<ReturnType_ (*)(Args...)> { using ReturnType = ReturnType_; @@ -501,8 +492,7 @@ void PatchPhiNodes(IR::Program& program, EmitContext& ctx) { } } // Anonymous namespace -std::vector<u32> EmitSPIRV(const Profile& profile, const RuntimeInfo& runtime_info, - IR::Program& program, Bindings& bindings, bool optimize) { +std::vector<u32> EmitSPIRV(const Profile& profile, const RuntimeInfo& runtime_info, IR::Program& program, Bindings& bindings) { EmitContext ctx{profile, runtime_info, program, bindings}; const Id main{DefineMain(ctx, program)}; DefineEntryPoint(program, ctx, main); @@ -514,29 +504,7 @@ std::vector<u32> EmitSPIRV(const Profile& profile, const RuntimeInfo& runtime_in SetupCapabilities(profile, program.info, ctx); SetupTransformFeedbackCapabilities(ctx, main); PatchPhiNodes(program, ctx); - - if (!optimize) { - return ctx.Assemble(); - } else { - std::vector<u32> spirv = ctx.Assemble(); - - // Use thread-local optimizer instead of creating a new one - auto& spv_opt = GetThreadOptimizer(); - spv_opt.SetMessageConsumer([](spv_message_level_t, const char*, const spv_position_t&, const char* m) { - LOG_ERROR(HW_GPU, "spirv-opt: {}", m); - }); - - spvtools::OptimizerOptions opt_options; - opt_options.set_run_validator(false); - - std::vector<u32> result; - if (!spv_opt.Run(spirv.data(), spirv.size(), &result, opt_options)) { - LOG_ERROR(HW_GPU, - "Failed to optimize SPIRV shader output, continuing without optimization"); - result = std::move(spirv); - } - return result; - } + return ctx.Assemble(); } Id EmitPhi(EmitContext& ctx, IR::Inst* inst) { |
