mirror of
https://git.suyu.dev/suyu/suyu
synced 2025-12-13 06:45:13 -06:00
Compare commits
7 Commits
optimize-s
...
4eb41467f8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4eb41467f8 | ||
|
|
daf2c1f496 | ||
|
|
5f351bf2b3 | ||
|
|
7b13512b41 | ||
|
|
e1f809079e | ||
|
|
b95cfe6483 | ||
|
|
433bcabb72 |
@@ -7,6 +7,8 @@
|
|||||||
export NDK_CCACHE="$(which ccache)"
|
export NDK_CCACHE="$(which ccache)"
|
||||||
ccache -s
|
ccache -s
|
||||||
|
|
||||||
|
git submodule update --init --recursive
|
||||||
|
|
||||||
BUILD_FLAVOR="mainline"
|
BUILD_FLAVOR="mainline"
|
||||||
|
|
||||||
BUILD_TYPE="release"
|
BUILD_TYPE="release"
|
||||||
|
|||||||
@@ -7,7 +7,9 @@
|
|||||||
# Exit on error, rather than continuing with the rest of the script.
|
# Exit on error, rather than continuing with the rest of the script.
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ccache -sv
|
ccache -s
|
||||||
|
|
||||||
|
git submodule update --init --recursive
|
||||||
|
|
||||||
mkdir build || true && cd build
|
mkdir build || true && cd build
|
||||||
cmake .. \
|
cmake .. \
|
||||||
|
|||||||
@@ -6,7 +6,9 @@
|
|||||||
# Exit on error, rather than continuing with the rest of the script.
|
# Exit on error, rather than continuing with the rest of the script.
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ccache -sv
|
ccache -s
|
||||||
|
|
||||||
|
git submodule update --init --recursive
|
||||||
|
|
||||||
mkdir build || true && cd build
|
mkdir build || true && cd build
|
||||||
cmake .. \
|
cmake .. \
|
||||||
@@ -52,9 +54,9 @@ DESTDIR="$PWD/AppDir" ninja install
|
|||||||
rm -vf AppDir/usr/bin/suyu-cmd AppDir/usr/bin/suyu-tester
|
rm -vf AppDir/usr/bin/suyu-cmd AppDir/usr/bin/suyu-tester
|
||||||
|
|
||||||
# Download tools needed to build an AppImage
|
# Download tools needed to build an AppImage
|
||||||
wget -nc https://gitlab.com/suyu-emu/ext-linux-bin/-/raw/main/appimage/deploy-linux.sh
|
wget -nc https://git.suyu.dev/suyu/ext-linux-bin/raw/branch/main/appimage/deploy-linux.sh
|
||||||
wget -nc https://gitlab.com/suyu-emu/ext-linux-bin/-/raw/main/appimage/exec-x86_64.so
|
wget -nc https://git.suyu.dev/suyu/ext-linux-bin/raw/branch/main/appimage/exec-x86_64.so
|
||||||
wget -nc https://gitlab.com/suyu-emu/AppImageKit-checkrt/-/raw/old/AppRun.sh
|
wget -nc https://git.suyu.dev/suyu/AppImageKit-checkrt/raw/branch/gh-workflow/AppRun
|
||||||
|
|
||||||
# Set executable bit
|
# Set executable bit
|
||||||
chmod 755 \
|
chmod 755 \
|
||||||
|
|||||||
@@ -8,7 +8,9 @@ set -e
|
|||||||
|
|
||||||
#cd /suyu
|
#cd /suyu
|
||||||
|
|
||||||
ccache -sv
|
ccache -s
|
||||||
|
|
||||||
|
git submodule update --init --recursive
|
||||||
|
|
||||||
rm -rf build
|
rm -rf build
|
||||||
mkdir -p build && cd build
|
mkdir -p build && cd build
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ name: 'suyu verify'
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "dev" ]
|
# branches: [ "dev" ]
|
||||||
paths:
|
paths:
|
||||||
- 'src/**'
|
- 'src/**'
|
||||||
- 'CMakeModules/**'
|
- 'CMakeModules/**'
|
||||||
@@ -19,7 +19,7 @@ on:
|
|||||||
# paths-ignore:
|
# paths-ignore:
|
||||||
# - 'src/android/**'
|
# - 'src/android/**'
|
||||||
push:
|
push:
|
||||||
branches: [ "dev" ]
|
# branches: [ "dev" ]
|
||||||
paths:
|
paths:
|
||||||
- 'src/**'
|
- 'src/**'
|
||||||
- 'CMakeModules/**'
|
- 'CMakeModules/**'
|
||||||
|
|||||||
5
.gitmodules
vendored
5
.gitmodules
vendored
@@ -1,6 +1,4 @@
|
|||||||
# SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
# SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
||||||
# SPDX-FileCopyrightText: Copyright 2024 suyu Emulator Project
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2024 Torzu Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
[submodule "enet"]
|
[submodule "enet"]
|
||||||
@@ -69,6 +67,3 @@
|
|||||||
[submodule "Vulkan-Utility-Libraries"]
|
[submodule "Vulkan-Utility-Libraries"]
|
||||||
path = externals/Vulkan-Utility-Libraries
|
path = externals/Vulkan-Utility-Libraries
|
||||||
url = https://github.com/KhronosGroup/Vulkan-Utility-Libraries.git
|
url = https://github.com/KhronosGroup/Vulkan-Utility-Libraries.git
|
||||||
[submodule "externals/SPIRV-Tools"]
|
|
||||||
path = externals/SPIRV-Tools
|
|
||||||
url = https://github.com/KhronosGroup/SPIRV-Tools.git
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
||||||
# SPDX-FileCopyrightText: 2024 suyu Emulator Project
|
# SPDX-FileCopyrightText: 2024 suyu Emulator Project
|
||||||
# SPDX-FileCopyrightText: Copyright 2024 Torzu Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.22)
|
cmake_minimum_required(VERSION 3.22)
|
||||||
@@ -41,8 +40,6 @@ option(SUYU_USE_BUNDLED_FFMPEG "Download/Build bundled FFmpeg" "${WIN32}")
|
|||||||
|
|
||||||
option(SUYU_USE_EXTERNAL_VULKAN_HEADERS "Use Vulkan-Headers from externals" ON)
|
option(SUYU_USE_EXTERNAL_VULKAN_HEADERS "Use Vulkan-Headers from externals" ON)
|
||||||
|
|
||||||
option(SUYU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS "Use SPIRV-Tools from externals" ON)
|
|
||||||
|
|
||||||
option(SUYU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES "Use Vulkan-Utility-Libraries from externals" ON)
|
option(SUYU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES "Use Vulkan-Utility-Libraries from externals" ON)
|
||||||
|
|
||||||
option(SUYU_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF)
|
option(SUYU_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF)
|
||||||
@@ -323,11 +320,6 @@ if (NOT SUYU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES)
|
|||||||
find_package(VulkanUtilityLibraries REQUIRED)
|
find_package(VulkanUtilityLibraries REQUIRED)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT SUYU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS)
|
|
||||||
find_package(PkgConfig REQUIRED)
|
|
||||||
pkg_check_modules(SPIRV-Tools REQUIRED SPIRV-Tools)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (ENABLE_LIBUSB)
|
if (ENABLE_LIBUSB)
|
||||||
find_package(libusb 1.0.24 MODULE)
|
find_package(libusb 1.0.24 MODULE)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
**Note**: We do not support or condone piracy in any form. In order to use suyu, you'll need keys from your real Switch system, and games which you have legally obtained and paid for. We do not intend to make money or profit from this project.
|
**Note**: We do not support or condone piracy in any form. In order to use suyu, you'll need keys from your real Switch system, and games which you have legally obtained and paid for. We do not intend to make money or profit from this project.
|
||||||
|
|
||||||
We're in need of developers. Please join our chat below if you want to contribute!
|
We're in need of developers. Please join our chat below if you want to contribute!
|
||||||
This repo was based on Yuzu EA 4176 but the code is being rewritten from the ground up for legal and performance reasons.
|
This repo was based on Yuzu EA 4176
|
||||||
|
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|||||||
7
externals/CMakeLists.txt
vendored
7
externals/CMakeLists.txt
vendored
@@ -1,6 +1,4 @@
|
|||||||
# SPDX-FileCopyrightText: 2016 Citra Emulator Project
|
# SPDX-FileCopyrightText: 2016 Citra Emulator Project
|
||||||
# SPDX-FileCopyrightText: Copyright 2024 suyu Emulator Project
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2024 Torzu Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
# Dynarmic has cmake_minimum_required(3.12) and we may want to override
|
# Dynarmic has cmake_minimum_required(3.12) and we may want to override
|
||||||
@@ -162,11 +160,6 @@ if (SUYU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES)
|
|||||||
add_subdirectory(Vulkan-Utility-Libraries)
|
add_subdirectory(Vulkan-Utility-Libraries)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# SPIRV-Tools
|
|
||||||
if (YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS)
|
|
||||||
add_subdirectory(SPIRV-Tools)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# TZDB (Time Zone Database)
|
# TZDB (Time Zone Database)
|
||||||
add_subdirectory(nx_tzdb)
|
add_subdirectory(nx_tzdb)
|
||||||
|
|
||||||
|
|||||||
1
externals/SPIRV-Tools
vendored
1
externals/SPIRV-Tools
vendored
Submodule externals/SPIRV-Tools deleted from dd4b663e13
@@ -1,6 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 suyu Emulator Project
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 Torzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
@@ -279,8 +277,6 @@ struct Values {
|
|||||||
|
|
||||||
SwitchableSetting<bool> use_disk_shader_cache{linkage, true, "use_disk_shader_cache",
|
SwitchableSetting<bool> use_disk_shader_cache{linkage, true, "use_disk_shader_cache",
|
||||||
Category::Renderer};
|
Category::Renderer};
|
||||||
SwitchableSetting<bool> optimize_spirv_output{linkage, false, "optimize_spirv_output",
|
|
||||||
Category::Renderer};
|
|
||||||
SwitchableSetting<bool> use_asynchronous_gpu_emulation{
|
SwitchableSetting<bool> use_asynchronous_gpu_emulation{
|
||||||
linkage, true, "use_asynchronous_gpu_emulation", Category::Renderer};
|
linkage, true, "use_asynchronous_gpu_emulation", Category::Renderer};
|
||||||
SwitchableSetting<AstcDecodeMode, true> accelerate_astc{linkage,
|
SwitchableSetting<AstcDecodeMode, true> accelerate_astc{linkage,
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
||||||
# SPDX-FileCopyrightText: Copyright 2024 suyu Emulator Project
|
|
||||||
# SPDX-FileCopyrightText: Copyright 2024 Torzu Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
add_library(shader_recompiler STATIC
|
add_library(shader_recompiler STATIC
|
||||||
@@ -244,13 +242,7 @@ add_library(shader_recompiler STATIC
|
|||||||
varying_state.h
|
varying_state.h
|
||||||
)
|
)
|
||||||
|
|
||||||
if (SUYU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS)
|
target_link_libraries(shader_recompiler PUBLIC common fmt::fmt sirit)
|
||||||
set(SPIRV_TOOLS_LIBRARY SPIRV-Tools-opt)
|
|
||||||
else()
|
|
||||||
set(SPIRV_TOOLS_LIBRARY SPIRV-Tools-opt SPIRV-Tools SPIRV-Tools-link)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries(shader_recompiler PUBLIC common fmt::fmt sirit ${SPIRV_TOOLS_LIBRARY})
|
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
target_compile_options(shader_recompiler PRIVATE
|
target_compile_options(shader_recompiler PRIVATE
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 suyu Emulator Project
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 Torzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <span>
|
#include <span>
|
||||||
@@ -8,7 +6,6 @@
|
|||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <spirv-tools/optimizer.hpp>
|
|
||||||
|
|
||||||
#include "common/settings.h"
|
#include "common/settings.h"
|
||||||
#include "shader_recompiler/backend/spirv/emit_spirv.h"
|
#include "shader_recompiler/backend/spirv/emit_spirv.h"
|
||||||
@@ -484,7 +481,7 @@ void PatchPhiNodes(IR::Program& program, EmitContext& ctx) {
|
|||||||
} // Anonymous namespace
|
} // Anonymous namespace
|
||||||
|
|
||||||
std::vector<u32> EmitSPIRV(const Profile& profile, const RuntimeInfo& runtime_info,
|
std::vector<u32> EmitSPIRV(const Profile& profile, const RuntimeInfo& runtime_info,
|
||||||
IR::Program& program, Bindings& bindings, bool optimize) {
|
IR::Program& program, Bindings& bindings) {
|
||||||
EmitContext ctx{profile, runtime_info, program, bindings};
|
EmitContext ctx{profile, runtime_info, program, bindings};
|
||||||
const Id main{DefineMain(ctx, program)};
|
const Id main{DefineMain(ctx, program)};
|
||||||
DefineEntryPoint(program, ctx, main);
|
DefineEntryPoint(program, ctx, main);
|
||||||
@@ -496,28 +493,7 @@ std::vector<u32> EmitSPIRV(const Profile& profile, const RuntimeInfo& runtime_in
|
|||||||
SetupCapabilities(profile, program.info, ctx);
|
SetupCapabilities(profile, program.info, ctx);
|
||||||
SetupTransformFeedbackCapabilities(ctx, main);
|
SetupTransformFeedbackCapabilities(ctx, main);
|
||||||
PatchPhiNodes(program, ctx);
|
PatchPhiNodes(program, ctx);
|
||||||
|
return ctx.Assemble();
|
||||||
if (!optimize) {
|
|
||||||
return ctx.Assemble();
|
|
||||||
} else {
|
|
||||||
std::vector<u32> spirv = ctx.Assemble();
|
|
||||||
|
|
||||||
spvtools::Optimizer spv_opt(SPV_ENV_VULKAN_1_3);
|
|
||||||
spv_opt.SetMessageConsumer([](spv_message_level_t, const char*, const spv_position_t&,
|
|
||||||
const char* m) { LOG_ERROR(HW_GPU, "spirv-opt: {}", m); });
|
|
||||||
spv_opt.RegisterPerformancePasses();
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id EmitPhi(EmitContext& ctx, IR::Inst* inst) {
|
Id EmitPhi(EmitContext& ctx, IR::Inst* inst) {
|
||||||
@@ -580,4 +556,4 @@ void EmitGetInBoundsFromOp(EmitContext&) {
|
|||||||
throw LogicError("Unreachable instruction");
|
throw LogicError("Unreachable instruction");
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Shader::Backend::SPIRV
|
} // namespace Shader::Backend::SPIRV
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 suyu Emulator Project
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 Torzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
@@ -33,12 +31,11 @@ constexpr u32 RESCALING_LAYOUT_DOWN_FACTOR_OFFSET = offsetof(RescalingLayout, do
|
|||||||
constexpr u32 RENDERAREA_LAYOUT_OFFSET = offsetof(RenderAreaLayout, render_area);
|
constexpr u32 RENDERAREA_LAYOUT_OFFSET = offsetof(RenderAreaLayout, render_area);
|
||||||
|
|
||||||
[[nodiscard]] std::vector<u32> EmitSPIRV(const Profile& profile, const RuntimeInfo& runtime_info,
|
[[nodiscard]] std::vector<u32> EmitSPIRV(const Profile& profile, const RuntimeInfo& runtime_info,
|
||||||
IR::Program& program, Bindings& bindingss, bool optimize);
|
IR::Program& program, Bindings& bindings);
|
||||||
|
|
||||||
[[nodiscard]] inline std::vector<u32> EmitSPIRV(const Profile& profile, IR::Program& program,
|
[[nodiscard]] inline std::vector<u32> EmitSPIRV(const Profile& profile, IR::Program& program) {
|
||||||
bool optimize) {
|
|
||||||
Bindings binding;
|
Bindings binding;
|
||||||
return EmitSPIRV(profile, {}, program, binding, optimize);
|
return EmitSPIRV(profile, {}, program, binding);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Shader::Backend::SPIRV
|
} // namespace Shader::Backend::SPIRV
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 suyu Emulator Project
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 Torzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "suyu/configuration/shared_translation.h"
|
#include "suyu/configuration/shared_translation.h"
|
||||||
@@ -145,10 +143,6 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent) {
|
|||||||
tr("Allows saving shaders to storage for faster loading on following game "
|
tr("Allows saving shaders to storage for faster loading on following game "
|
||||||
"boots.\nDisabling "
|
"boots.\nDisabling "
|
||||||
"it is only intended for debugging."));
|
"it is only intended for debugging."));
|
||||||
INSERT(Settings, optimize_spirv_output, tr("Optimize SPIRV output shader"),
|
|
||||||
tr("Runs an additional optimization pass over generated SPIRV shaders.\n"
|
|
||||||
"Will increase time required for shader compilation.\nMay slightly improve "
|
|
||||||
"performance.\nThis feature is experimental."));
|
|
||||||
INSERT(
|
INSERT(
|
||||||
Settings, use_asynchronous_gpu_emulation, tr("Use asynchronous GPU emulation"),
|
Settings, use_asynchronous_gpu_emulation, tr("Use asynchronous GPU emulation"),
|
||||||
tr("Uses an extra CPU thread for rendering.\nThis option should always remain enabled."));
|
tr("Uses an extra CPU thread for rendering.\nThis option should always remain enabled."));
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 suyu Emulator Project
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 Torzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
@@ -539,9 +537,7 @@ std::unique_ptr<GraphicsPipeline> ShaderCache::CreateGraphicsPipeline(
|
|||||||
break;
|
break;
|
||||||
case Settings::ShaderBackend::SpirV:
|
case Settings::ShaderBackend::SpirV:
|
||||||
ConvertLegacyToGeneric(program, runtime_info);
|
ConvertLegacyToGeneric(program, runtime_info);
|
||||||
sources_spirv[stage_index] =
|
sources_spirv[stage_index] = EmitSPIRV(profile, runtime_info, program, binding);
|
||||||
EmitSPIRV(profile, runtime_info, program, binding,
|
|
||||||
Settings::values.optimize_spirv_output.GetValue());
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
previous_program = &program;
|
previous_program = &program;
|
||||||
@@ -600,7 +596,7 @@ std::unique_ptr<ComputePipeline> ShaderCache::CreateComputePipeline(
|
|||||||
code = EmitGLASM(profile, info, program);
|
code = EmitGLASM(profile, info, program);
|
||||||
break;
|
break;
|
||||||
case Settings::ShaderBackend::SpirV:
|
case Settings::ShaderBackend::SpirV:
|
||||||
code_spirv = EmitSPIRV(profile, program, Settings::values.optimize_spirv_output.GetValue());
|
code_spirv = EmitSPIRV(profile, program);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 suyu Emulator Project
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 Torzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@@ -675,8 +673,7 @@ std::unique_ptr<GraphicsPipeline> PipelineCache::CreateGraphicsPipeline(
|
|||||||
|
|
||||||
const auto runtime_info{MakeRuntimeInfo(programs, key, program, previous_stage)};
|
const auto runtime_info{MakeRuntimeInfo(programs, key, program, previous_stage)};
|
||||||
ConvertLegacyToGeneric(program, runtime_info);
|
ConvertLegacyToGeneric(program, runtime_info);
|
||||||
const std::vector<u32> code{EmitSPIRV(profile, runtime_info, program, binding,
|
const std::vector<u32> code{EmitSPIRV(profile, runtime_info, program, binding)};
|
||||||
Settings::values.optimize_spirv_output.GetValue())};
|
|
||||||
device.SaveShader(code);
|
device.SaveShader(code);
|
||||||
modules[stage_index] = BuildShader(device, code);
|
modules[stage_index] = BuildShader(device, code);
|
||||||
if (device.HasDebuggingToolAttached()) {
|
if (device.HasDebuggingToolAttached()) {
|
||||||
@@ -770,8 +767,7 @@ std::unique_ptr<ComputePipeline> PipelineCache::CreateComputePipeline(
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto program{TranslateProgram(pools.inst, pools.block, env, cfg, host_info)};
|
auto program{TranslateProgram(pools.inst, pools.block, env, cfg, host_info)};
|
||||||
const std::vector<u32> code{
|
const std::vector<u32> code{EmitSPIRV(profile, program)};
|
||||||
EmitSPIRV(profile, program, Settings::values.optimize_spirv_output.GetValue())};
|
|
||||||
device.SaveShader(code);
|
device.SaveShader(code);
|
||||||
vk::ShaderModule spv_module{BuildShader(device, code)};
|
vk::ShaderModule spv_module{BuildShader(device, code)};
|
||||||
if (device.HasDebuggingToolAttached()) {
|
if (device.HasDebuggingToolAttached()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user