Compare commits

...

17 Commits

Author SHA1 Message Date
Kyle Kienapfel
63673dcf98 Qt5 work around for suzhou numerals
When windows is told to display Standard digits as suzhou, it is showing
incorrect information in yuzu, file sizes and the CPU speed limiter are
effected by this. See #8698 for some screenshots.

Setting number format to Chinese (Simplified, Hong Kong SAR) is one
way to see this issue in action.

Fixes #8698
2022-08-03 21:49:23 -07:00
bunnei
5ae0e5ba67 Merge pull request #8678 from liamwhite/stop-waiting
video_core: stop waiting for shader compilation on user cancel
2022-07-31 14:47:43 -07:00
bunnei
3bbc1cf64c Merge pull request #8622 from liamwhite/progress
qt: reset progress bar after shader compilation
2022-07-31 14:46:38 -07:00
bunnei
3bd726798a Merge pull request #8692 from DCNick3/write-command-output-on-close
Properly write out the command buffer when serving close request
2022-07-31 14:42:33 -07:00
Nikita Strygin
1cf6f5c623 Properly write out the command buffer when serving close request 2022-07-31 23:17:45 +03:00
Morph
9dcfef744c Merge pull request #8684 from liamwhite/delete-shader
renderer_opengl: delete shader source after linking
2022-07-30 21:36:26 -04:00
Liam
b9360681df renderer_opengl: delete shader source after linking 2022-07-30 13:21:26 -04:00
Morph
69e04da537 Merge pull request #8640 from lat9nq/vcpkg-extra
cmake,ci: vcpkg leftovers
2022-07-30 07:27:52 -04:00
Morph
f8a005e26e Merge pull request #8664 from liamwhite/monkey-compiler-v12-1
common: move forwarded value into SPSCQueue
2022-07-30 03:24:23 -04:00
Morph
417580be2c Merge pull request #8677 from liamwhite/asan-wuninitialized
audio_core: fix -Wuninitialized when compiling with ASan
2022-07-30 03:24:12 -04:00
Liam
fc013d88cb video_core: stop waiting for shader compilation on user cancel 2022-07-29 23:33:40 -04:00
Liam
73a87edc45 audio_core: fix -Wuninitialized when compiling with ASan 2022-07-29 23:30:01 -04:00
Liam
ec64a94954 common: move forwarded value into SPSCQueue 2022-07-29 15:41:57 -04:00
Narr the Reg
250c3d555e Merge pull request #8665 from liamwhite/github-is-dumb
ci: use dep5 for GitHub issue template files
2022-07-29 13:14:31 -05:00
Liam
f490c15b0f ci: use dep5 for GitHub issue template files 2022-07-28 19:57:27 -04:00
lat9nq
dfc6dd0a2d cmake,ci: vcpkg for MSVC default, fix lz4 include, catch2, cleanup
vcpkg: Add Catch2 2.13.9

Catch2 >= 3.0 is not compatible with earlier versions, and for now we
must override the desired version in our vcpkg manifest. We can do this
programmatically by using VCPKG_MANIFEST_FEATURES.

CMakeLists: Search for lz4 CONFIG mode first

vcpkg's lz4 CONFIG cmake script works in Release mode but not in Debug
mode, failing to copy the correct DLLs at compile time.

We still need to search for the regular mode for system-installed
versions.

CMakeLists: Clean up boost exports

Remove some Conan-specific workarounds.

CMakeLists: Use vcpkg for MSVC by default

Not enabling it generally since it's much easier to have system
dependencies installed for Linux and MinGW.
2022-07-28 16:01:47 -04:00
Liam
862142213f qt: reset progress bar after shader compilation 2022-07-24 13:35:44 -04:00
13 changed files with 62 additions and 21 deletions

View File

@@ -9,7 +9,7 @@ parameters:
steps:
- script: choco install vulkan-sdk
displayName: 'Install vulkan-sdk'
- script: refreshenv && mkdir build && cd build && cmake -G "Visual Studio 16 2019" -A x64 -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DYUZU_TESTS=OFF -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DDISPLAY_VERSION=${{ parameters['version'] }} -DCMAKE_BUILD_TYPE=Release -DYUZU_TESTS=OFF -DYUZU_USE_BUNDLED_VCPKG=ON .. && cd ..
- script: refreshenv && mkdir build && cd build && cmake -G "Visual Studio 16 2019" -A x64 -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DYUZU_TESTS=OFF -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DDISPLAY_VERSION=${{ parameters['version'] }} -DCMAKE_BUILD_TYPE=Release .. && cd ..
displayName: 'Configure CMake'
- task: MSBuild@1
displayName: 'Build'

View File

@@ -104,7 +104,7 @@ jobs:
run: |
glslangValidator --version
mkdir build
cmake . -B build -GNinja -DCMAKE_TOOLCHAIN_FILE="CMakeModules/MSVCCache.cmake" -DUSE_CCACHE=ON -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DGIT_BRANCH=pr-verify -DCLANG_FORMAT_SUFFIX=discordplzdontclang -DYUZU_TESTS=OFF -DYUZU_USE_BUNDLED_VCPKG=ON
cmake . -B build -GNinja -DCMAKE_TOOLCHAIN_FILE="CMakeModules/MSVCCache.cmake" -DUSE_CCACHE=ON -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DGIT_BRANCH=pr-verify -DCLANG_FORMAT_SUFFIX=discordplzdontclang
- name: Build
run: cmake --build build
- name: Cache Summary

View File

@@ -104,3 +104,11 @@ License: GPL-2.0-or-later
Files: vcpkg.json
Copyright: 2022 yuzu Emulator Project
License: GPL-3.0-or-later
Files: .github/ISSUE_TEMPLATE/config.yml
Copyright: 2020 tgsm <doodrabbit@hotmail.com>
License: GPL-2.0-or-later
Files: .github/ISSUE_TEMPLATE/bug-report-feature-request.md
Copyright: 2016 MerryMage
License: GPL-2.0-or-later

View File

@@ -38,9 +38,13 @@ option(YUZU_USE_BUNDLED_OPUS "Compile bundled opus" ON)
option(YUZU_TESTS "Compile tests" ON)
option(YUZU_USE_BUNDLED_VCPKG "Use vcpkg for yuzu dependencies" OFF)
option(YUZU_USE_BUNDLED_VCPKG "Use vcpkg for yuzu dependencies" "${MSVC}")
if (YUZU_USE_BUNDLED_VCPKG)
if (YUZU_TESTS)
list(APPEND VCPKG_MANIFEST_FEATURES "yuzu-tests")
endif()
include(${CMAKE_SOURCE_DIR}/externals/vcpkg/scripts/buildsystems/vcpkg.cmake)
elseif(NOT "$ENV{VCPKG_TOOLCHAIN_FILE}" STREQUAL "")
# Disable manifest mode (use vcpkg classic mode) when using a custom vcpkg installation
@@ -160,7 +164,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
# =======================================================================
find_package(fmt 8.0.1 REQUIRED CONFIG)
find_package(lz4 1.8 REQUIRED)
find_package(nlohmann_json 3.8 REQUIRED CONFIG)
find_package(ZLIB 1.2 REQUIRED)
@@ -170,6 +173,12 @@ if (NOT zstd_FOUND)
find_package(zstd 1.5 REQUIRED)
endif()
# lz4 1.8 is required, but vcpkg's lz4-config.cmake does not have version info
find_package(lz4 CONFIG)
if (NOT lz4_FOUND)
find_package(lz4 1.8 REQUIRED)
endif()
if (YUZU_TESTS)
find_package(Catch2 2.13.7 REQUIRED CONFIG)
endif()
@@ -355,16 +364,10 @@ if (ENABLE_SDL2)
endif()
endif()
# TODO(lat9nq): Determine what if any of this we still need
#
# Reexport some targets that are named differently when using the upstream CmakeConfig vs the generated Conan config
# Reexport some targets that are named differently when using the upstream CmakeConfig
# In order to ALIAS targets to a new name, they first need to be IMPORTED_GLOBAL
# Dynarmic checks for target `boost` and so we want to make sure it can find it through our system instead of using their external
if (TARGET Boost::Boost)
set_target_properties(Boost::Boost PROPERTIES IMPORTED_GLOBAL TRUE)
add_library(Boost::boost ALIAS Boost::Boost)
add_library(boost ALIAS Boost::Boost)
elseif (TARGET Boost::boost)
if (TARGET Boost::boost)
set_target_properties(Boost::boost PROPERTIES IMPORTED_GLOBAL TRUE)
add_library(boost ALIAS Boost::boost)
endif()

View File

@@ -419,13 +419,13 @@ protected:
/// Workbuffers assigned to this effect
std::array<AddressInfo, 2> workbuffers{AddressInfo(CpuAddr(0), 0), AddressInfo(CpuAddr(0), 0)};
/// Aux/Capture buffer info for reading
CpuAddr send_buffer_info;
CpuAddr send_buffer_info{};
/// Aux/Capture buffer for reading
CpuAddr send_buffer;
CpuAddr send_buffer{};
/// Aux/Capture buffer info for writing
CpuAddr return_buffer_info;
CpuAddr return_buffer_info{};
/// Aux/Capture buffer for writing
CpuAddr return_buffer;
CpuAddr return_buffer{};
/// Parameters of this effect
std::array<u8, sizeof(InParameterVersion2)> parameter{};
/// State of this effect used by the AudioRenderer across calls

View File

@@ -39,7 +39,7 @@ public:
template <typename Arg>
void Push(Arg&& t) {
// create the element, add it to the queue
write_ptr->current = std::forward<Arg>(t);
write_ptr->current = std::move(t);
// set the next pointer to a new element ptr
// then advance the write pointer
ElementPtr* new_ptr = new ElementPtr();

View File

@@ -194,13 +194,16 @@ Result ServiceFrameworkBase::HandleSyncRequest(Kernel::KServerSession& session,
Kernel::HLERequestContext& ctx) {
const auto guard = LockService();
Result result = ResultSuccess;
switch (ctx.GetCommandType()) {
case IPC::CommandType::Close:
case IPC::CommandType::TIPC_Close: {
session.Close();
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
return IPC::ERR_REMOTE_PROCESS_DEAD;
result = IPC::ERR_REMOTE_PROCESS_DEAD;
break;
}
case IPC::CommandType::ControlWithContext:
case IPC::CommandType::Control: {
@@ -227,7 +230,7 @@ Result ServiceFrameworkBase::HandleSyncRequest(Kernel::KServerSession& session,
ctx.WriteToOutgoingCommandBuffer(ctx.GetThread());
}
return ResultSuccess;
return result;
}
/// Initialize Services

View File

@@ -299,7 +299,7 @@ void ShaderCache::LoadDiskResources(u64 title_id, std::stop_token stop_loading,
state.has_loaded = true;
lock.unlock();
workers->WaitForRequests();
workers->WaitForRequests(stop_loading);
if (!use_asynchronous_shaders) {
workers.reset();
}

View File

@@ -17,6 +17,7 @@ static OGLProgram LinkSeparableProgram(GLuint shader) {
glProgramParameteri(program.handle, GL_PROGRAM_SEPARABLE, GL_TRUE);
glAttachShader(program.handle, shader);
glLinkProgram(program.handle);
glDetachShader(program.handle, shader);
if (!Settings::values.renderer_debug) {
return program;
}

View File

@@ -452,7 +452,7 @@ void PipelineCache::LoadDiskResources(u64 title_id, std::stop_token stop_loading
state.has_loaded = true;
lock.unlock();
workers.WaitForRequests();
workers.WaitForRequests(stop_loading);
if (state.statistics) {
state.statistics->Report();

View File

@@ -147,6 +147,10 @@ void LoadingScreen::OnLoadProgress(VideoCore::LoadCallbackStage stage, std::size
ui->progress_bar->setMaximum(static_cast<int>(total));
previous_total = total;
}
// Reset the progress bar ranges if compilation is done
if (stage == VideoCore::LoadCallbackStage::Complete) {
ui->progress_bar->setRange(0, 0);
}
QString estimate;
// If theres a drastic slowdown in the rate, then display an estimate

View File

@@ -4067,6 +4067,15 @@ int main(int argc, char* argv[]) {
QCoreApplication::setAttribute(Qt::AA_DontCheckOpenGLContextThreadAffinity);
QApplication app(argc, argv);
// Workaround for QTBUG-85409, for Suzhou numerals the number 1 is actually \u3021
// so we can see if we get \u3008 instead
// TL;DR all other number formats are consecutive in unicode code points
// This bug is fixed in Qt6, specifically 6.0.0-alpha1
const QLocale locale = QLocale::system();
if (QStringLiteral("\u3008") == locale.toString(1)) {
QLocale::setDefault(QLocale::system().name());
}
// Qt changes the locale and causes issues in float conversion using std::to_string() when
// generating shaders
setlocale(LC_ALL, "C");

View File

@@ -1,6 +1,7 @@
{
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
"name": "yuzu",
"builtin-baseline": "cef0b3ec767df6e83806899fe9525f6cf8d7bc91",
"version": "1.0",
"dependencies": [
"boost-algorithm",
@@ -25,5 +26,17 @@
"nlohmann-json",
"zlib",
"zstd"
],
"features": {
"yuzu-tests": {
"description": "Compile tests",
"dependencies": [ "catch2" ]
}
},
"overrides": [
{
"name": "catch2",
"version": "2.13.9"
}
]
}