mirror of
https://git.suyu.dev/suyu/suyu
synced 2025-12-08 22:02:07 -06:00
Compare commits
1 Commits
ddutchie/c
...
ddutchie/c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9d1a850a9c |
@@ -12,6 +12,8 @@ mkdir build || true && cd build
|
|||||||
cmake .. \
|
cmake .. \
|
||||||
-DBoost_USE_STATIC_LIBS=ON \
|
-DBoost_USE_STATIC_LIBS=ON \
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
|
-DSUYU_USE_PRECOMPILED_HEADERS=OFF \
|
||||||
|
-DDYNARMIC_USE_PRECOMPILED_HEADERS=OFF \
|
||||||
-DCMAKE_CXX_FLAGS="-march=x86-64-v2" \
|
-DCMAKE_CXX_FLAGS="-march=x86-64-v2" \
|
||||||
-DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++ \
|
-DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++ \
|
||||||
-DCMAKE_C_COMPILER=/usr/lib/ccache/gcc \
|
-DCMAKE_C_COMPILER=/usr/lib/ccache/gcc \
|
||||||
@@ -24,6 +26,7 @@ cmake .. \
|
|||||||
-DSUYU_USE_BUNDLED_FFMPEG=ON \
|
-DSUYU_USE_BUNDLED_FFMPEG=ON \
|
||||||
-DSUYU_ENABLE_LTO=ON \
|
-DSUYU_ENABLE_LTO=ON \
|
||||||
-DSUYU_CRASH_DUMPS=ON \
|
-DSUYU_CRASH_DUMPS=ON \
|
||||||
|
-DSUYU_USE_FASTER_LD=ON \
|
||||||
-GNinja
|
-GNinja
|
||||||
|
|
||||||
ninja
|
ninja
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -14,6 +14,7 @@ dist/english_plurals/generated_en.ts
|
|||||||
.idea/
|
.idea/
|
||||||
.vs/
|
.vs/
|
||||||
.vscode/
|
.vscode/
|
||||||
|
.cache/
|
||||||
CMakeLists.txt.user*
|
CMakeLists.txt.user*
|
||||||
|
|
||||||
# *nix related
|
# *nix related
|
||||||
|
|||||||
@@ -1,6 +1,22 @@
|
|||||||
stages:
|
stages:
|
||||||
- format
|
- format
|
||||||
- build
|
- build
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# https://docs.gitlab.com/ee/ci/runners/configure_runners.html
|
||||||
|
TRANSFER_METER_FREQUENCY: "2s"
|
||||||
|
ARTIFACT_COMPRESSION_LEVEL: "fast"
|
||||||
|
CACHE_COMPRESSION_LEVEL: "fastest"
|
||||||
|
CACHE_REQUEST_TIMEOUT: 5
|
||||||
|
# Use FASTZIP for faster compression in cache and artifacts
|
||||||
|
# https://docs.gitlab.com/runner/configuration/feature-flags.html#available-feature-flags
|
||||||
|
FF_USE_FASTZIP: true
|
||||||
|
|
||||||
|
# Our Variables
|
||||||
|
CACHE_DIR: "$CI_PROJECT_DIR/ccache"
|
||||||
|
CCACHE_DIR: $CACHE_DIR
|
||||||
|
|
||||||
|
|
||||||
#CLANG FORMAT - CHECKS CODE FOR FORMATTING ISSUES
|
#CLANG FORMAT - CHECKS CODE FOR FORMATTING ISSUES
|
||||||
clang-format:
|
clang-format:
|
||||||
stage: format
|
stage: format
|
||||||
@@ -22,12 +38,22 @@ build-linux:
|
|||||||
stage: build
|
stage: build
|
||||||
image: suyuemu/cibuild:linux-x64
|
image: suyuemu/cibuild:linux-x64
|
||||||
resource_group: linux-ci
|
resource_group: linux-ci
|
||||||
|
cache:
|
||||||
|
key: "$CI_COMMIT_REF_NAME-ccache"
|
||||||
|
paths:
|
||||||
|
- $CACHE_DIR
|
||||||
|
before_script:
|
||||||
|
- mkdir -p $CACHE_DIR
|
||||||
|
- chmod -R 777 $CACHE_DIR
|
||||||
|
- ls -la $CACHE_DIR
|
||||||
variables:
|
variables:
|
||||||
GIT_SUBMODULE_STRATEGY: recursive
|
GIT_SUBMODULE_STRATEGY: recursive
|
||||||
GIT_SUBMODULE_DEPTH: 1
|
GIT_SUBMODULE_DEPTH: 1
|
||||||
RELEASE_NAME: mainline
|
RELEASE_NAME: mainline
|
||||||
script:
|
script:
|
||||||
|
- chmod -R 1027 ./
|
||||||
- bash .ci/scripts/linux/docker.sh
|
- bash .ci/scripts/linux/docker.sh
|
||||||
|
- chmod -R $UID ./
|
||||||
- bash .ci/scripts/linux/upload.sh
|
- bash .ci/scripts/linux/upload.sh
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
|
|||||||
@@ -11,8 +11,6 @@
|
|||||||
#include <dynarmic/frontend/A64/decoder/a64.h>
|
#include <dynarmic/frontend/A64/decoder/a64.h>
|
||||||
#include <dynarmic/frontend/imm.h>
|
#include <dynarmic/frontend/imm.h>
|
||||||
|
|
||||||
#include "common/common_types.h"
|
|
||||||
|
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|||||||
@@ -668,7 +668,7 @@ static bool ValidCryptoRevisionString(std::string_view base, size_t begin, size_
|
|||||||
|
|
||||||
void KeyManager::LoadFromFile(const std::filesystem::path& file_path, bool is_title_keys) {
|
void KeyManager::LoadFromFile(const std::filesystem::path& file_path, bool is_title_keys) {
|
||||||
if (!Common::FS::Exists(file_path)) {
|
if (!Common::FS::Exists(file_path)) {
|
||||||
LOG_ERROR(Crypto, "Cannot handle key file '{}': File not found",
|
LOG_ERROR(Crypto, "Failed to load key file at '{}': File not found",
|
||||||
file_path.generic_string());
|
file_path.generic_string());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -803,7 +803,8 @@ bool KeyManager::BaseDeriveNecessary() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!Common::FS::Exists(suyu_keys_dir / "title.keys")) {
|
if (!Common::FS::Exists(suyu_keys_dir / "title.keys")) {
|
||||||
LOG_WARNING(Crypto, "Could not locate a title.keys file");
|
LOG_ERROR(Crypto, "No title.keys found");
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (check_key_existence(S256KeyType::Header)) {
|
if (check_key_existence(S256KeyType::Header)) {
|
||||||
|
|||||||
@@ -55,6 +55,10 @@ AppLoader_NAX::LoadResult AppLoader_NAX::Load(Kernel::KProcess& process, Core::S
|
|||||||
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
|
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!Core::Crypto::KeyManager::KeyFileExists(true)) {
|
||||||
|
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
|
||||||
|
}
|
||||||
|
|
||||||
return {ResultStatus::ErrorNAXInconvertibleToNCA, {}};
|
return {ResultStatus::ErrorNAXInconvertibleToNCA, {}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -102,6 +102,10 @@ AppLoader_NSP::LoadResult AppLoader_NSP::Load(Kernel::KProcess& process, Core::S
|
|||||||
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
|
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!Core::Crypto::KeyManager::KeyFileExists(true)) {
|
||||||
|
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
|
||||||
|
}
|
||||||
|
|
||||||
return {ResultStatus::ErrorNSPMissingProgramNCA, {}};
|
return {ResultStatus::ErrorNSPMissingProgramNCA, {}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,10 @@ AppLoader_XCI::LoadResult AppLoader_XCI::Load(Kernel::KProcess& process, Core::S
|
|||||||
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
|
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!xci->HasProgramNCA() && !Core::Crypto::KeyManager::KeyFileExists(true)) {
|
||||||
|
return {ResultStatus::ErrorMissingProductionKeyFile, {}};
|
||||||
|
}
|
||||||
|
|
||||||
const auto result = nca_loader->Load(process, system);
|
const auto result = nca_loader->Load(process, system);
|
||||||
if (result.first != ResultStatus::Success) {
|
if (result.first != ResultStatus::Success) {
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -1755,9 +1755,9 @@ bool GMainWindow::LoadROM(const QString& filename, Service::AM::FrontendAppletPa
|
|||||||
if (!ContentManager::AreKeysPresent()) {
|
if (!ContentManager::AreKeysPresent()) {
|
||||||
QMessageBox::warning(this, tr("Derivation Components Missing"),
|
QMessageBox::warning(this, tr("Derivation Components Missing"),
|
||||||
tr("Encryption keys are missing. "
|
tr("Encryption keys are missing. "
|
||||||
"In order to use this emulator"
|
"You need to provide both your own title.keys "
|
||||||
"you need to provide your own encryption keys"
|
"and your own prod.keys "
|
||||||
"in order to play them."));
|
"in order to play games"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4630,9 +4630,9 @@ void GMainWindow::OnCheckFirmwareDecryption() {
|
|||||||
if (!ContentManager::AreKeysPresent()) {
|
if (!ContentManager::AreKeysPresent()) {
|
||||||
QMessageBox::warning(this, tr("Derivation Components Missing"),
|
QMessageBox::warning(this, tr("Derivation Components Missing"),
|
||||||
tr("Encryption keys are missing. "
|
tr("Encryption keys are missing. "
|
||||||
"In order to use this emulator"
|
"You need to provide both your own title.keys "
|
||||||
"you need to provide your own encryption keys"
|
"and your own prod.keys "
|
||||||
"in order to play them."));
|
"in order to play games"));
|
||||||
}
|
}
|
||||||
|
|
||||||
SetFirmwareVersion();
|
SetFirmwareVersion();
|
||||||
|
|||||||
@@ -408,7 +408,7 @@ if (MSVC)
|
|||||||
/we4244 # 'conversion': conversion from 'type1' to 'type2', possible loss of data
|
/we4244 # 'conversion': conversion from 'type1' to 'type2', possible loss of data
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
if (APPLE OR ARCHITECTURE_arm64)
|
if (APPLE)
|
||||||
# error: declaration shadows a typedef in 'interval_base_set<SubType, DomainT, Compare, Interval, Alloc>'
|
# error: declaration shadows a typedef in 'interval_base_set<SubType, DomainT, Compare, Interval, Alloc>'
|
||||||
# error: implicit conversion loses integer precision: 'int' to 'boost::icl::bound_type' (aka 'unsigned char')
|
# error: implicit conversion loses integer precision: 'int' to 'boost::icl::bound_type' (aka 'unsigned char')
|
||||||
target_compile_options(video_core PRIVATE -Wno-shadow -Wno-unused-local-typedef)
|
target_compile_options(video_core PRIVATE -Wno-shadow -Wno-unused-local-typedef)
|
||||||
|
|||||||
@@ -1364,7 +1364,6 @@ void Device::CollectToolingInfo() {
|
|||||||
LOG_INFO(Render_Vulkan, "Attached debugging tool: {}", name);
|
LOG_INFO(Render_Vulkan, "Attached debugging tool: {}", name);
|
||||||
has_renderdoc = has_renderdoc || name == "RenderDoc";
|
has_renderdoc = has_renderdoc || name == "RenderDoc";
|
||||||
has_nsight_graphics = has_nsight_graphics || name == "NVIDIA Nsight Graphics";
|
has_nsight_graphics = has_nsight_graphics || name == "NVIDIA Nsight Graphics";
|
||||||
has_radeon_gpu_profiler = has_radeon_gpu_profiler || name == "Radeon GPU Profiler";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -592,7 +592,7 @@ public:
|
|||||||
|
|
||||||
/// Returns true when a known debugging tool is attached.
|
/// Returns true when a known debugging tool is attached.
|
||||||
bool HasDebuggingToolAttached() const {
|
bool HasDebuggingToolAttached() const {
|
||||||
return has_renderdoc || has_nsight_graphics || has_radeon_gpu_profiler;
|
return has_renderdoc || has_nsight_graphics;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @returns True if compute pipelines can cause crashing.
|
/// @returns True if compute pipelines can cause crashing.
|
||||||
@@ -821,7 +821,6 @@ private:
|
|||||||
bool has_broken_parallel_compiling{}; ///< Has broken parallel shader compiling.
|
bool has_broken_parallel_compiling{}; ///< Has broken parallel shader compiling.
|
||||||
bool has_renderdoc{}; ///< Has RenderDoc attached
|
bool has_renderdoc{}; ///< Has RenderDoc attached
|
||||||
bool has_nsight_graphics{}; ///< Has Nsight Graphics attached
|
bool has_nsight_graphics{}; ///< Has Nsight Graphics attached
|
||||||
bool has_radeon_gpu_profiler{}; ///< Has Radeon GPU Profiler attached.
|
|
||||||
bool supports_d24_depth{}; ///< Supports D24 depth buffers.
|
bool supports_d24_depth{}; ///< Supports D24 depth buffers.
|
||||||
bool cant_blit_msaa{}; ///< Does not support MSAA<->MSAA blitting.
|
bool cant_blit_msaa{}; ///< Does not support MSAA<->MSAA blitting.
|
||||||
bool must_emulate_scaled_formats{}; ///< Requires scaled vertex format emulation
|
bool must_emulate_scaled_formats{}; ///< Requires scaled vertex format emulation
|
||||||
|
|||||||
Reference in New Issue
Block a user