aboutsummaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/spirv/emit_spirv.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend/spirv/emit_spirv.cpp')
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv.cpp38
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) {