Compare commits

..

39 Commits

Author SHA1 Message Date
yuzubot
2950a7c6f2 Android #147 2023-12-01 00:57:44 +00:00
yuzubot
df02bf3daa Merge PR 12235 2023-12-01 00:57:44 +00:00
liamwhite
3c45ba1c22 Merge pull request #12234 from abouvier/unbundle-gamemode
cmake: prefer system gamemode library
2023-11-30 11:52:03 -05:00
Alexandre Bouvier
d2bb9e9729 cmake: prefer system gamemode library 2023-11-30 16:54:00 +01:00
liamwhite
127bfb81d5 Merge pull request #12229 from liamwhite/qcom-wtf
renderer_vulkan: exclude more qcom drivers from extensions
2023-11-30 09:21:27 -05:00
liamwhite
3a12fe5d13 Merge pull request #12227 from jbeich/gamemode
cmake: unbreak build on FreeBSD by re-enabling gamemode
2023-11-30 09:21:19 -05:00
liamwhite
5345ab40eb Merge pull request #12225 from liamwhite/mac-ci
Add mac workflow
2023-11-30 09:21:12 -05:00
liamwhite
57a391e71d Merge pull request #12074 from GPUCode/yuwu-on-the-metal
Implement Native Code Execution (NCE)
2023-11-30 09:20:55 -05:00
Liam
8f62e8e63f renderer_vulkan: exclude more qcom drivers from extensions 2023-11-29 21:06:06 -05:00
Jan Beich
df96caec79 cmake: sync gamemode conditionals with code after 5eec980a2d
FAILED: bin/yuzu
ld: error: unable to find library -lgamemode

FAILED: bin/yuzu-cmd
ld: error: undefined symbol: Common::Linux::StartGamemode()
>>> referenced by yuzu.cpp
>>>               src/yuzu_cmd/CMakeFiles/yuzu-cmd.dir/yuzu.cpp.o:(main)

ld: error: undefined symbol: Common::Linux::StopGamemode()
>>> referenced by yuzu.cpp
>>>               src/yuzu_cmd/CMakeFiles/yuzu-cmd.dir/yuzu.cpp.o:(main)
2023-11-30 00:05:11 +01:00
GPUCode
4a3abba16d core: Rename patcher file 2023-11-29 23:49:16 +02:00
Liam
d21305c2e7 add mac workflow 2023-11-29 16:02:37 -05:00
GPUCode
340548aba7 cmake: Move HAS_NCE to root cmake
* So we can use it in common
2023-11-29 01:35:06 +02:00
amazingfate
a76a8fb5fe qt: add cpu_backend configuration 2023-11-26 20:44:07 -05:00
Liam
15f35b8657 general: fix mac compile 2023-11-26 19:50:10 -05:00
Liam
7482e03c77 loader: fix gcc compile 2023-11-26 19:34:07 -05:00
GPUCode
6432508740 oaknut: Address warnings 2023-11-25 00:47:43 -05:00
GPUCode
5a9ffa81a6 host_memory: Simplify randomness generation 2023-11-25 00:47:43 -05:00
GPUCode
9ff8d0f3e6 Address more review comments 2023-11-25 00:47:43 -05:00
Liam
d040b27a35 loader: apply nso patch to offset program image 2023-11-25 00:47:36 -05:00
Liam
cf534f5149 arm_nce: skip data aborts for crash handling parity 2023-11-25 00:47:36 -05:00
Liam
20de0ddf1f android: show current backend in fps overlay 2023-11-25 00:47:36 -05:00
GPUCode
1cde01c8c8 arm: Print backtrace on data abort 2023-11-25 00:47:36 -05:00
Liam
f542a3bb7a patch: check offsets from first code word 2023-11-25 00:47:36 -05:00
GPUCode
3ec3cca4d8 core: Define HAS_NCE macro 2023-11-25 00:47:36 -05:00
GPUCode
c37b5f431f common: Enforce fastmem for nce usage 2023-11-25 00:47:36 -05:00
Liam
263b7a44f9 arm_nce: skip dc cvac on possibly write-protected areas 2023-11-25 00:47:36 -05:00
GPUCode
6de2edcca1 Address some review comments 2023-11-25 00:47:35 -05:00
GPUCode
8fab363237 android: Add cpu bakend gui toggle 2023-11-25 00:47:28 -05:00
Liam
9f91ba1f73 arm: Implement native code execution backend 2023-11-25 00:46:47 -05:00
GPUCode
4838837620 device_memory: Enable direct mapped addresses for nce 2023-11-25 00:46:47 -05:00
GPUCode
2e02efbdd0 externals: Add oaknut submodule 2023-11-25 00:46:47 -05:00
GPUCode
15331c2a60 settings: Add cpu backend setting 2023-11-25 00:46:15 -05:00
Liam
f2a8409083 kernel: Manually specify aslr region start 2023-11-25 00:46:15 -05:00
GPUCode
5938a9582a core: Respect memory permissions in Map 2023-11-25 00:46:15 -05:00
Liam
4766baddf3 host_memory: Switch to FreeRegionManager 2023-11-25 00:46:15 -05:00
Liam
448d4815de host_memory: ensure map base is between 36 and 39 bits 2023-11-25 00:46:15 -05:00
--author=Liam
29e7d79a86 common: Add free region manager
* Abstraction for placeholder region tracking in host_memory
2023-11-25 00:46:15 -05:00
GPUCode
20011dfeb8 common: Add libc sigaction hook 2023-11-25 00:46:15 -05:00
15 changed files with 205 additions and 283 deletions

View File

@@ -6,10 +6,148 @@ name: 'yuzu verify'
on:
pull_request:
branches: [ master ]
env:
PR_NUMBER: pr${{ github.event.number }}
jobs:
format:
name: 'verify format'
runs-on: ubuntu-latest
container:
image: yuzuemu/build-environments:linux-clang-format
options: -u 1001
steps:
- uses: actions/checkout@v3
with:
submodules: false
- name: 'Verify Formatting'
run: bash -ex ./.ci/scripts/format/script.sh
build:
name: 'test build'
needs: format
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- type: clang
image: linux-fresh
- type: linux
image: linux-fresh
- type: windows
image: linux-mingw
container:
image: yuzuemu/build-environments:${{ matrix.image }}
options: -u 1001
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0
- name: Set up cache
uses: actions/cache@v3
id: ccache-restore
with:
path: ~/.ccache
key: ${{ runner.os }}-${{ matrix.type }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-${{ matrix.type }}-
- name: Create ccache directory
if: steps.ccache-restore.outputs.cache-hit != 'true'
run: mkdir -p ~/.ccache
- name: Build
run: ./.ci/scripts/${{ matrix.type }}/docker.sh
env:
ENABLE_COMPATIBILITY_REPORTING: "ON"
- name: Pack
run: ./.ci/scripts/${{ matrix.type }}/upload.sh
env:
NO_SOURCE_PACK: "YES"
- name: Upload
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.type }}
path: artifacts/
build-mac:
name: 'test build (macos)'
needs: format
runs-on: macos-13
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0
- name: Install dependencies
run: |
brew install autoconf automake boost@1.83 ccache ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@5 sdl2 speexdsp zlib zlib zstd
- name: Build
run: |
mkdir build
cd build
export Qt5_DIR="/usr/local/opt/qt@5/lib/cmake"
cmake .. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DYUZU_USE_BUNDLED_VCPKG=OFF -DYUZU_TESTS=OFF -DENABLE_WEB_SERVICE=OFF -DENABLE_LIBUSB=OFF
ninja
build-msvc:
name: 'test build (windows, msvc)'
needs: format
runs-on: windows-2022
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0
- name: Set up cache
uses: actions/cache@v3
with:
path: ~/.buildcache
key: ${{ runner.os }}-msvc-${{ github.sha }}
restore-keys: |
${{ runner.os }}-msvc-
- name: Install dependencies
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
$BuildCacheVer = "v0.28.4"
$File = "buildcache-windows.zip"
$Uri = "https://github.com/mbitsnbites/buildcache/releases/download/$BuildCacheVer/$File"
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($Uri, $File)
7z x $File
$CurrentDir = Convert-Path .
echo "$CurrentDir/buildcache/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Install Vulkan SDK
shell: pwsh
run: .\.ci\scripts\windows\install-vulkan-sdk.ps1
- name: Set up MSVC
uses: ilammy/msvc-dev-cmd@v1
- name: Configure
env:
CC: cl.exe
CXX: cl.exe
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 -DYUZU_CRASH_DUMPS=ON
- name: Build
run: cmake --build build
- name: Cache Summary
run: buildcache -s
- name: Pack
shell: pwsh
run: .\.ci\scripts\windows\upload.ps1
- name: Upload
uses: actions/upload-artifact@v3
with:
name: msvc
path: artifacts/
- name: Upload EXE
uses: actions/upload-artifact@v3
with:
name: ${{ env.INDIVIDUAL_EXE }}
path: ${{ env.INDIVIDUAL_EXE }}
android:
runs-on: ubuntu-latest
needs: format
steps:
- uses: actions/checkout@v3
with:

View File

@@ -151,3 +151,7 @@ License: GPL-3.0-or-later
Files: externals/stb/*
Copyright: Sean Barrett
License: MIT
Files: externals/gamemode/*
Copyright: Copyright 2017-2019 Feral Interactive
License: BSD-3-Clause

View File

@@ -343,6 +343,10 @@ if(ENABLE_OPENSSL)
find_package(OpenSSL 1.1.1 REQUIRED)
endif()
if (UNIX AND NOT APPLE)
find_package(gamemode 1.7 MODULE)
endif()
# Please consider this as a stub
if(ENABLE_QT6 AND Qt6_LOCATION)
list(APPEND CMAKE_PREFIX_PATH "${Qt6_LOCATION}")

View File

@@ -0,0 +1,15 @@
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
# SPDX-License-Identifier: GPL-2.0-or-later
find_package(PkgConfig QUIET)
pkg_search_module(GAMEMODE QUIET IMPORTED_TARGET gamemode)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(gamemode
REQUIRED_VARS GAMEMODE_INCLUDEDIR
VERSION_VAR GAMEMODE_VERSION
)
if (gamemode_FOUND AND NOT TARGET gamemode::headers)
add_library(gamemode::headers ALIAS PkgConfig::GAMEMODE)
endif()

View File

@@ -1,6 +1,6 @@
| Pull Request | Commit | Title | Author | Merged? |
|----|----|----|----|----|
| [12074](https://github.com/yuzu-emu/yuzu//pull/12074) | [`4a3abba16`](https://github.com/yuzu-emu/yuzu//pull/12074/files) | Implement Native Code Execution (NCE) | [GPUCode](https://github.com/GPUCode/) | Yes |
| [12235](https://github.com/yuzu-emu/yuzu//pull/12235) | [`e7dd968ac`](https://github.com/yuzu-emu/yuzu//pull/12235/files) | renderer_vulkan: adjust window origin and swizzle independently | [liamwhite](https://github.com/liamwhite/) | Yes |
End of merge log. You can find the original README.md below the break.

View File

@@ -193,8 +193,10 @@ if (ANDROID)
endif()
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
add_subdirectory(gamemode)
if (UNIX AND NOT APPLE AND NOT TARGET gamemode::headers)
add_library(gamemode INTERFACE)
target_include_directories(gamemode INTERFACE gamemode)
add_library(gamemode::headers ALIAS gamemode)
endif()
# Breakpad

View File

@@ -1,11 +0,0 @@
# SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
# SPDX-License-Identifier: GPL-3.0-or-later
project(gamemode LANGUAGES CXX C)
add_library(gamemode include/gamemode_client.h)
target_link_libraries(gamemode PRIVATE common)
target_include_directories(gamemode PUBLIC include)
set_target_properties(gamemode PROPERTIES LINKER_LANGUAGE C)

View File

@@ -1,6 +1,3 @@
// SPDX-FileCopyrightText: Copyright 2017-2019 Feral Interactive
// SPDX-License-Identifier: BSD-3-Clause
/*
Copyright (c) 2017-2019, Feral Interactive

View File

@@ -31,8 +31,6 @@ import com.google.android.material.navigation.NavigationBarView
import kotlinx.coroutines.CoroutineScope
import java.io.File
import java.io.FilenameFilter
import java.io.FileOutputStream
import java.io.IOException
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
@@ -72,28 +70,6 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
val savesFolderRoot get() = File(savesFolder).listFiles()?.firstOrNull()?.canonicalPath ?: ""
override fun onCreate(savedInstanceState: Bundle?) {
val keysDirPath = applicationContext.filesDir.absolutePath + "/keys/"
val keysDir = File(keysDirPath)
if (!keysDir.exists()) {
keysDir.mkdir()
try {
val inputStream = applicationContext.assets.open("prod.keys")
val outputStream = FileOutputStream(keysDirPath + "prod.keys")
val bufferedInputStream = BufferedInputStream(inputStream)
val bufferedOutputStream = BufferedOutputStream(outputStream)
val buffer = ByteArray(1024)
var length: Int
while (bufferedInputStream.read(buffer).also { length = it } != -1) {
bufferedOutputStream.write(buffer, 0, length)
}
bufferedInputStream.close()
bufferedOutputStream.close()
} catch (e: IOException) {
e.printStackTrace()
}
} else {
println("Keys directory already exists.")
}
val splashScreen = installSplashScreen()
splashScreen.setKeepOnScreenCondition { !DirectoryInitialization.areDirectoriesReady }

View File

@@ -1,215 +0,0 @@
aes_kek_generation_source = 4d870986c45d20722fba1053da92e8a9
aes_key_generation_source = 89615ee05c31b6805fe58f3da24f7aa8
bis_kek_source = 34c1a0c48258f8b4fa9e5e6adafc7e4f
bis_key_00 = 2b8bb16cfc902cadb2e04b63cb5ea0ec33cc49b3d74b1866090e06617fb2ad08
bis_key_01 = ae9cc3d720c0894fa9ed293ea0349c46a526dc11281200b8d853d2a25ab2a9fe
bis_key_02 = 0569dfd9e2f8d2d06235dba3b442a2450be9d10d22a7d9b0626bb43570cd9ebb
bis_key_03 = 0569dfd9e2f8d2d06235dba3b442a2450be9d10d22a7d9b0626bb43570cd9ebb
bis_key_source_00 = f83f386e2cd2ca32a89ab9aa29bfc7487d92b03aa8bfdee1a74c3b6e35cb7106
bis_key_source_01 = 41003049ddccc065647a7eb41eed9c5f44424edab49dfcd98777249adc9f7ca4
bis_key_source_02 = 52c2e9eb09e3ee2932a10c1fb6a0926c4d12e14b2a474c1c09cb0359f015f4e4
device_key = e6b9dc43da7e4d15f60443133f9c5c9f
device_key_4x = e2f0bcbf3a84a72dc9866aad9d3555bc
eticket_rsa_kek = 19c8b441d318802bad63a5beda283a84
eticket_rsa_kek_source = dba451124ca0a9836814f5ed95e3125b
eticket_rsa_kekek_source = 466e57b74a447f02f321cde58f2f5535
eticket_rsa_keypair = a1c4013b6b5d6965147020e80e5c917b06ad609d6681751ef9bbca91015b7f59a5d84902af4aae63a900f75ea1e8dcff633bdfefa70befbacc5dbd0dd138ab2f7781f8df3851aff9678b40af7f075780c1633727ee8d2d9e8a8925d36c07cd59a8cfa15cfff71f80c51399a8ab4b53010e2ce7e99ea7a83339d5ba272a2ae97b470adc0f64fb02c8d08d1cdf9e8a63b30c27f85bee9bc0faded0a27dfda73fe90a3e9afc9a9ab24e1519f5c222a0d7062771fc508c07cd8b99efe8e3ff9c76c36b8450ae5a3274f2da3e1ae964d9f67e5574b570c6352c0e13195684e50222b2ca57e9a9bbefec09578d9fd114882fb01c56b6014c8cd4aa57cf70bb105a94b1d30fd325ba4dc1c607ea7fd7cb6d57386b6ffcf4cb14ecafaec12e6f05e24d0665ad0ae95cd5ebd45ed1cbe9416818c00a16613d68873c687ad9a152f92c4fc068a122780f7f870b3d9476be4dceec41a5eefaf33762846d6f1d0ff9bb025224bf3ab6950cea5108e1935089828b0bb6bce8a3494026d9adaba053cff388c25c30f2c4ffe545663ab2a754d0e57a6d50c29e4c2a9f9788cbd903b051f2fc65ee998db48c703d4d89246b96001c6c99dd80d09be60de6c9829ae8cad18b5d8de02991834bab3e1ea7f9b2c731b89253b2873527c0103959ddc8e633f71fe320921349f7b80efa77a6e27e409eaf50e75a06f20288073b5d8955c35662c7b979af00010001000000000000000000000000
header_kek_source = 1f12913a4acbf00d4cde3af6d523882a
header_key = aeaab1ca08adf9bef12991f369e3c567d6881e4e4a6a47a51f6e4877062d542d
header_key_source = 5a3ed84fdec0d82631f7e25d197bf5d01c9b7bfaf628183d71f64d73f150b9d2
key_area_key_application_00 = ef979e289a132c23d39c4ec5a0bba969
key_area_key_application_01 = cdedbab97b69729073dfb2440bff2c13
key_area_key_application_02 = 75716ed3b524a01dfe21456ce26c7270
key_area_key_application_03 = f428306544cf5707c25eaa8bc0583fd1
key_area_key_application_04 = 798844ec099eb6a04b26c7c728a35a4d
key_area_key_application_05 = a57c6eecc5410ada22712eb3ccbf45f1
key_area_key_application_06 = 2a60f6c4275df1770651d5891b8e73ec
key_area_key_application_07 = 32221bd6ed19b938bec06b9d36ed9e51
key_area_key_application_08 = fb20aa9e3dbf67350e86479eb431a0b3
key_area_key_application_09 = ce8d5fa79e220d5f48470e9f21be018b
key_area_key_application_0a = 38b865725adcf568a81d2db3ceaa5bcc
key_area_key_application_0b = bbddfd40a59d0ff555c0954239972213
key_area_key_application_0c = 3fee7204e21c6b0ff1373226c0c3e055
key_area_key_application_0d = 7b05d214fa554bc3e91b044fb412fc0d
key_area_key_application_0e = 061667d7668b76a423e3f1aea52a8baa
key_area_key_application_0f = 7ee19b046987ba2588e852cc24bc2953
key_area_key_application_10 = fd8a4be923d9a464793cd2f3a27557ee
key_area_key_application_source = 7f59971e629f36a13098066f2144c30d
key_area_key_ocean_00 = b33813e4c9c4399c75fabc673ab4947b
key_area_key_ocean_01 = c54166efa8c9c0f6511fa8b580191677
key_area_key_ocean_02 = 3061ce73461e0b0409d6a33da85843c8
key_area_key_ocean_03 = 06f170025a64921c849df168e74d37f2
key_area_key_ocean_04 = dc857fd6dc1c6213076ec7b902ec5bb6
key_area_key_ocean_05 = 131d76b70bd8a60036d8218c15cb610f
key_area_key_ocean_06 = 17d565492ba819b0c19bed1b4297b659
key_area_key_ocean_07 = 37255186f7678324bf2b2d773ea2c412
key_area_key_ocean_08 = 4115c119b7bd8522ad63c831b6c816a6
key_area_key_ocean_09 = 792bfc652870cca7491d1685384be147
key_area_key_ocean_0a = dfcc9e87e61c9fba54a9b1c262d41e4d
key_area_key_ocean_0b = 66fe3107f5a6a8d8eda2459d920b07a1
key_area_key_ocean_0c = b79b6bf3d6cdc5ec10277fc07a4fec93
key_area_key_ocean_0d = 9a20ffbdcb03cfc5b8e88b058d27ae6c
key_area_key_ocean_0e = 1e8bba40c91ca4d55163cdfb779a2f4e
key_area_key_ocean_0f = 2a51262c614e175f22cb0bf7907418b0
key_area_key_ocean_10 = 97b66913f9683a9e7b733b96a35cabf3
key_area_key_ocean_source = 327d36085ad1758dab4e6fbaa555d882
key_area_key_system_00 = 6dd02aa15b440d6231236b6677de86bc
key_area_key_system_01 = 4ab155e7f29a292037fd147592770b12
key_area_key_system_02 = b7a74adeaf89c2a198c327bdff322d7d
key_area_key_system_03 = d5aab1acd23a8aec284a316df859d377
key_area_key_system_04 = 9b44b45b37de9d14754b1d22c2ca742c
key_area_key_system_05 = 0012e957530d3dc7af34fbbe6fd44559
key_area_key_system_06 = 01744e3b0818445cd54ee9f89da43192
key_area_key_system_07 = d0d30e46f5695b875f11522c375c5a80
key_area_key_system_08 = bd06cb1b86bd5c433667470a09eb63de
key_area_key_system_09 = e19f788f658eda8bbf34a1dd2a9503a9
key_area_key_system_0a = 7070e7ff5cfe448630143a9874903c38
key_area_key_system_0b = 3fa471d4483e58b8f7756fcb64f63890
key_area_key_system_0c = 7bfd381df3369407ab1c6bdd9fabf522
key_area_key_system_0d = 53ed531cd657edf443b551a964f44ecc
key_area_key_system_0e = fa9d4958e8f8f2c8c8ae33b1034a0a02
key_area_key_system_0f = 91eae4eeb5335cc5a706c4fe81d8d8af
key_area_key_system_10 = ae11fa6821b123419e0a54f3a89d9a8b
key_area_key_system_source = 8745f1bba6be79647d048ba67b5fda4a
keyblob_00 = f759024f8199101dddc1ef91e6eecf37e24b95ac9272f7ae441d5d8060c843a48322d21cdd06d4fc958c68d3800eb4db939ffbec930177f77d136144ff615aa8835e811bb958deda218f8486b5a10f531b30cb9d269645ac9fc25c53fc80525e56bd3602988a9fcf06bbf99ca910ad6530791d512c9d57e17abf49220de6419bf4eca1685c1e4df77f19db7b44a985ca
keyblob_01 = bd27264ae07e979756411d0c66e679e3c50851f3e902d9c2cd1a438b948159a517ec1566c10570326ea2697ee62da46f14bb5d581bfc06fd0c9387ea33d2d4dc63e7809ba90f03dd2c7112ffbfa548951b9b8c688b5e4f2951d24a73da29c668154a5d4838dba71ee068ace83fe720e8c2a495c596f73525dc3c05994b40ad27f8c60322f75cd548b821af9162e16f76
keyblob_02 = a3d4a8e153b8e6ae6e6aef3e8f219cb4b7790f47856accc76268f9afa99a1ff8b1a72f63d1f99f480a3c1532078bb59abdd25203cfb12a38b33e9ba6a09afb6f24283b3ba76a0161230a73669ddf5493c2b7919d094fd795b484794854f71e4f4c672245d7770e29397722444d111b4229cdbf35707b70634ea8f140766e884cc580cb1e2d9aa9866ffef920010fc409
keyblob_03 = 1558f525ae8c5be9243fb6d8a8b0a8ee0e886a59035668740a936619b7a5c83e821198b171d18e51445054df68688e45703b936818a827d8e540dd6bef2e11ec9ddc6cfe5fc736dd769b9f6e0a23a62e2e5f49e86143646a04ec3a23f828373a336a5c224a91f8a0c6c6a7b5844dd6415804209f83c943aeca9cfd856db6bd4ec32009c8cb268ed053052c9237dfd8bc
keyblob_04 = 9fbeb1957fc1629e08b753a9086d6e01ffb4f11466b7417e3fa7f5f1efb754406704fd75afaf91a408a0b524c1fc80d36c2046fa4757412efe4c11e382f72e8a10d90ed580017d9deb87af2549b6b02661af48ff94f6072c0fef7fc2833b8bdae503898e2e927ac0663e8b6391dd4f1d685313935e2c48ece7d177c88bc9c883ede36c3677495784b838d7265c6ba7a1
keyblob_05 = 94a92da1d73c2b3e165c891ced5607fc6628ca2a0654f3fbc05711c063377c6e9c96a9d0192e530dd510e4fd41aa62ef4213c5f6e059e7e21db098a9b22d1e6c29bee148aaef15c52549d9165de96e85b0d029ecdc5843e2f32cb18be707eec61909cf3385d45bc2a4c8d76e9bfad5a40c4b92dcb982aa50d474897ac9ebb5351a7015dcc277a08f1214ad41384d7941
keyblob_key_00 = d621a08fba5e3a11e5c8ae37560b8d01
keyblob_key_01 = 84e3303b6e4acd083fd73ca75be0d4a2
keyblob_key_02 = a7bf0d1e44d6f3f7cb010a35654e84b4
keyblob_key_03 = 4f11fd1e2ed8cc2ab8fe5c4f8adecfee
keyblob_key_04 = 59b204d1cc932c23e5a473bf0fa8af15
keyblob_key_05 = a9984e8f0ef40cd0ca9b86ab74188cf9
keyblob_key_source_00 = df206f594454efdc7074483b0ded9fd3
keyblob_key_source_01 = 0c25615d684ceb421c2379ea822512ac
keyblob_key_source_02 = 337685ee884aae0ac28afd7d63c0433b
keyblob_key_source_03 = 2d1f4880edeced3e3cf248b5657df7be
keyblob_key_source_04 = bb5a01f988aff5fc6cff079e133c3980
keyblob_key_source_05 = d8cce1266a353fcc20f32d3b517de9c0
keyblob_mac_key_00 = 782b915ab93552634fa142f8220e3cb5
keyblob_mac_key_01 = bdcaccca7c0f2ea5f9a0f6e065fa66f6
keyblob_mac_key_02 = 3e097bf16b5c24a8748c0498e998368e
keyblob_mac_key_03 = b48f35cb5b99f22315c69612c788b5f2
keyblob_mac_key_04 = 33e8ac5201ca946da82e5d5bf34d3c2f
keyblob_mac_key_05 = 7faed890e924d08d594636dd017086b6
keyblob_mac_key_source = 59c7fb6fbe9bbe87656b15c0537336a5
mariko_master_kek_source_05 = 77605ad2ee6ef83c3f72e2599dac5e56
mariko_master_kek_source_06 = 1e80b8173ec060aa11be1a4aa66fe4ae
mariko_master_kek_source_07 = 940867bd0a00388411d31adbdd8df18a
mariko_master_kek_source_08 = 5c24e3b8b4f700c23cfd0ace13c3dc23
mariko_master_kek_source_09 = 8669f00987c805aeb57b4874de62a613
mariko_master_kek_source_0a = 0e440cedb436c03faa1daebf62b10982
mariko_master_kek_source_0b = e541acecd1a7d1abed0377f127caf8f1
mariko_master_kek_source_0c = 52719bdfa78b61d8d58511e48e4f74c6
mariko_master_kek_source_0d = d268c6539d94f9a8a5a8a7c88f534b7a
mariko_master_kek_source_0e = ec61bc821e0f5ac32b643f9dd619222d
mariko_master_kek_source_0f = a5ec16391a3016082ecf096f5e7ceea9
mariko_master_kek_source_10 = 8dee9e11363a9b0a6ac7bbe9d103f780
master_kek_00 = f759024f8199101dddc1ef91e6eecf37
master_kek_01 = bd27264ae07e979756411d0c66e679e3
master_kek_02 = a3d4a8e153b8e6ae6e6aef3e8f219cb4
master_kek_03 = 1558f525ae8c5be9243fb6d8a8b0a8ee
master_kek_04 = 9fbeb1957fc1629e08b753a9086d6e01
master_kek_05 = 94a92da1d73c2b3e165c891ced5607fc
master_kek_08 = e42f1ec8002043d746575ae6dd9f283f
master_kek_09 = cec2885fbeef5f6a989db84a4cc4b393
master_kek_0a = dd1a730232522b5cb4590cd43869ab6a
master_kek_0b = fc6f0c891d42710180724ed9e112e72a
master_kek_0c = 43f7fc20fcec22a5b2a744790371b094
master_kek_0d = 8dc9a8223671daa73ccd8b93cdaaed9f
master_kek_0e = f3f857257c3f63ca63b9c9710b8f673e
master_kek_0f = 1e8f01c4927a76a66097df44c3bad27d
master_kek_10 = 8b523b9d476508daadc2036582ce5aa8
master_kek_source_06 = 374b772959b4043081f6e58c6d36179a
master_kek_source_07 = 9a3ea9abfd56461c9bf6487f5cfa095c
master_kek_source_08 = dedce339308816f8ae97adec642d4141
master_kek_source_09 = 1aec11822b32387a2bedba01477e3b67
master_kek_source_0a = 303f027ed838ecd7932534b530ebca7a
master_kek_source_0b = 8467b67f1311aee6589b19af136c807a
master_kek_source_0c = 683bca54b86f9248c305768788707923
master_kek_source_0d = f013379ad56351c3b49635bc9ce87681
master_kek_source_0e = 6e7786ac830a8d3e7db766a022b76e67
master_kek_source_0f = 99220957a7f95e94fe787f41d6e756e6
master_kek_source_10 = 71b9a6c0ff976b0cb440b9d5815d8190
master_key_00 = c2caaff089b9aed55694876055271c7d
master_key_01 = 54e1b8e999c2fd16cd07b66109acaaa6
master_key_02 = 4f6b10d33072af2f250562bff06b6da3
master_key_03 = 84e04ec20b9373818c540829cf147f3d
master_key_04 = cfa2176790a53ff74974bff2af180921
master_key_05 = c1dbedcebf0dd6956079e506cfa1af6e
master_key_06 = 0aa90e6330cdc12d819b3254d11a4e1e
master_key_07 = 929f86fbfe4ef7732892bf3462511b0e
master_key_08 = 23cfb792c3cb50cd715da0f84880c877
master_key_09 = 75c93b716255319b8e03e14c19dea64e
master_key_0a = 73767484c73088f629b0eeb605f64aa6
master_key_0b = 8500b14bf4766b855a26ffc614097a8f
master_key_0c = b3c503709135d4b35de31be4b0b9c0f7
master_key_0d = 6d2b26416ab030dc504cbfd6bb2977b7
master_key_0e = 3b995e3bf23207c3cacb07f8c57415e6
master_key_0f = ff22454d86237004c750e2dcb4b16c80
master_key_10 = 252c7d95f296d07f2369bdba6d42c615
master_key_source = d8a2410ac6c59001c61d6a267c513f3c
package1_key_00 = f4eca1685c1e4df77f19db7b44a985ca
package1_key_01 = f8c60322f75cd548b821af9162e16f76
package1_key_02 = c580cb1e2d9aa9866ffef920010fc409
package1_key_03 = c32009c8cb268ed053052c9237dfd8bc
package1_key_04 = ede36c3677495784b838d7265c6ba7a1
package1_key_05 = 1a7015dcc277a08f1214ad41384d7941
package2_key_00 = a35a19cb14404b2f4460d343d178638d
package2_key_01 = a0dd1eacd438610c85a191f02c1db8a8
package2_key_02 = 7e5ba2aafd57d47a85fd4a57f2076679
package2_key_03 = bf03e9889fa18f0d7a55e8e9f684323d
package2_key_04 = 09df6e361e28eb9c96c9fa0bfc897179
package2_key_05 = 444b1a4f9035178b9b1fe262462acb8e
package2_key_06 = 442cd9c21cfb8914587dc12e8e7ed608
package2_key_07 = 70c821e7d6716feb124acbac09f7b863
package2_key_08 = 8accebcc3d15a328a48365503f8369b6
package2_key_09 = f562a7c6c42e3d4d3d13ffd504d77346
package2_key_0a = 0803167ec7fc0bc753d8330e5592a289
package2_key_0b = 341db6796aa7bdb8092f7aae6554900a
package2_key_0c = 4e97dc4225d00c6ae33d49bddd17637d
package2_key_0d = db13c2de2c313540b18a32b4f106d4a1
package2_key_0e = 254d393b26e6d98963c1c8c4fa6d11e2
package2_key_0f = 1c87f9650cca54af03df3590021e457d
package2_key_10 = 2d64ee13cece88746b375f1a43b9fdf6
package2_key_source = fb8b6a9c7900c849efd24d854d30a0c7
per_console_key_source = 4f025f0eb66d110edc327d4186c2f478
retail_specific_aes_key_source = e2d6b87a119cb880e822888a46fba195
save_mac_kek_source = d89c236ec9124e43c82b038743f9cf1b
save_mac_key = f33d6c1a8b26c7f6ff96f3b3a7dcf5db
save_mac_key_source = e4cd3d4ad50f742845a487e5a063ea1f
save_mac_sd_card_kek_source = 0489ef5d326e1a59c4b7ab8c367aab17
save_mac_sd_card_key_source = 6f645947c56146f9ffa045d595332918
sd_card_custom_storage_key_source = 370c345e12e4cefe21b58e64db52af354f2ca5a3fc999a47c03ee004485b2fd0
sd_card_kek_source = 88358d9c629ba1a00147dbe0621b5432
sd_card_nca_key_source = 5841a284935b56278b8e1fc518e99f2b67c793f0f24fded075495dca006d99c2
sd_card_save_key_source = 2449b722726703a81965e6e3ea582fdd9a951517b16e8f7f1f68263152ea296a
sd_seed = a1bdc735db732a90004f7eb2c2f4c6f7
secure_boot_key = 461720644b2df9fd1b109745000af741
ssl_rsa_kek = b011100660d1dccbad1b1b733afa9f95
ssl_rsa_kek_source = 9a383bf431d0bd8132534ba964397de3
ssl_rsa_kekek_source = 7f5bb0847b25aa67fac84be23d7b6903
ssl_rsa_key = 6af57e8a0b394231df2fe6ec3dfff06d1c35119c3c9e58ed6ef452415a1d9d331422112a776f4c67ce8e00d3a4469ea62e8cf7f4b38285daed8e700b3af301a44d64740f34631549ee2645194cf47c4efae44e287abb80a2c99910c6309c7cba3be49ae46488d889987240ed36c54f294cb85e0b9a81cb79a3c2c1bf1b2beef3f5553d06dc6c2101e330e974052cf8fa55433f1a4f4468368961f4bc22dbee595ef6ec28f1dc1f2ddd33a8d49b24852d2ca1f80878c2f107d7542d96237a127cb15fecf64c93abb7b68d85315ff72319332b7d2fd61e772458e451b8901ab38b7027f4b045b6147c4bad806bb0fa1ec4649bc2b51c433081b75617c4ca234fb9
titlekek_00 = 62a24d6e6d0d0e0abf3554d259be3dc9
titlekek_01 = 8821f642176969b1a18021d2665c0111
titlekek_02 = 5d15b9b95a5739a0ac9b20f600283962
titlekek_03 = 1b3f63bcb67d4b06da5badc7d89acce1
titlekek_04 = e45c1789a69c7afbbf1a1e61f2499459
titlekek_05 = ddc67f7189f4527a37b519cb051eee21
titlekek_06 = b1532b9d38ab036068f074c0d78706ac
titlekek_07 = 81dc1b1783df268789a6a0edbf058343
titlekek_08 = 47dfe4bf0eeda88b17136b8005ab08ea
titlekek_09 = adaa785d90e1a9c182ac07bc276bf600
titlekek_0a = 42daa957c128f75bb1fda56a8387e17b
titlekek_0b = d08903363f2c8655d3de3ccf85d79406
titlekek_0c = be2682599db34caa9bc7ebb2cc7c654c
titlekek_0d = 41071f95beddc4114a03e0072e6ccab7
titlekek_0e = e342365a0fa0fa4a28a7bc00e45b3f68
titlekek_0f = 105999eaf8b71d199bf201f525b2c68d
titlekek_10 = 3796fcdb27351d58cc3f3379dda04202
titlekek_source = 1edc7b3b60e6b4d878b81715985e629b
tsec_key = fdb46027e6576babf0caf127980f4cae
tsec_root_key_02 = 4b4fbcf58e23cf4902d478b76c8048ec

View File

@@ -182,13 +182,13 @@ if(ANDROID)
)
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
if (UNIX AND NOT APPLE)
target_sources(common PRIVATE
linux/gamemode.cpp
linux/gamemode.h
)
target_link_libraries(common PRIVATE gamemode)
target_link_libraries(common PRIVATE gamemode::headers)
endif()
if(ARCHITECTURE_x86_64)

View File

@@ -75,14 +75,20 @@ VkViewport GetViewportState(const Device& device, const Maxwell& regs, size_t in
const float width = conv(src.scale_x * 2.0f);
float y = conv(src.translate_y - src.scale_y);
float height = conv(src.scale_y * 2.0f);
bool y_negate = regs.window_origin.mode != Maxwell::WindowOrigin::Mode::UpperLeft;
if (!device.IsNvViewportSwizzleSupported()) {
y_negate = y_negate != (src.swizzle.y == Maxwell::ViewportSwizzle::NegativeY);
const bool lower_left = regs.window_origin.mode != Maxwell::WindowOrigin::Mode::UpperLeft;
const bool y_negate = !device.IsNvViewportSwizzleSupported() &&
src.swizzle.y == Maxwell::ViewportSwizzle::NegativeY;
if (lower_left) {
// Flip by surface clip height
y += conv(static_cast<f32>(regs.surface_clip.height));
height = -height;
}
if (y_negate) {
y += conv(static_cast<f32>(regs.surface_clip.height));
// Flip by viewport height
y += height;
height = -height;
}
@@ -892,10 +898,6 @@ void RasterizerVulkan::UpdateDynamicStates() {
UpdateFrontFace(regs);
UpdateStencilOp(regs);
if (device.IsExtVertexInputDynamicStateSupported()) {
UpdateVertexInput(regs);
}
if (state_tracker.TouchStateEnable()) {
UpdateDepthBoundsTestEnable(regs);
UpdateDepthTestEnable(regs);
@@ -918,6 +920,9 @@ void RasterizerVulkan::UpdateDynamicStates() {
UpdateBlending(regs);
}
}
if (device.IsExtVertexInputDynamicStateSupported()) {
UpdateVertexInput(regs);
}
}
void RasterizerVulkan::HandleTransformFeedback() {

View File

@@ -519,10 +519,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state");
RemoveExtensionFeature(extensions.extended_dynamic_state, features.extended_dynamic_state,
VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME);
LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state2");
RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2,
VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
}
if (is_nvidia) {
@@ -611,17 +607,12 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
}
}
if (extensions.vertex_input_dynamic_state && is_qualcomm) {
const u32 version = (properties.properties.driverVersion << 3) >> 3;
if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0) &&
version < VK_MAKE_API_VERSION(0, 0, 680, 0)) {
// Qualcomm Adreno 7xx drivers do not properly support vertex_input_dynamic_state.
LOG_WARNING(
Render_Vulkan,
"Qualcomm Adreno 7xx drivers have broken VK_EXT_vertex_input_dynamic_state");
RemoveExtensionFeature(extensions.vertex_input_dynamic_state,
features.vertex_input_dynamic_state,
VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
}
// Qualcomm drivers do not properly support vertex_input_dynamic_state.
LOG_WARNING(Render_Vulkan,
"Qualcomm drivers have broken VK_EXT_vertex_input_dynamic_state");
RemoveExtensionFeature(extensions.vertex_input_dynamic_state,
features.vertex_input_dynamic_state,
VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
}
sets_per_pool = 64;
@@ -704,6 +695,22 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
std::min(properties.properties.limits.maxVertexInputBindings, 16U);
}
if (!extensions.extended_dynamic_state && extensions.extended_dynamic_state2) {
LOG_INFO(Render_Vulkan,
"Removing extendedDynamicState2 due to missing extendedDynamicState");
RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2,
VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
}
if (!extensions.extended_dynamic_state2 && extensions.extended_dynamic_state3) {
LOG_INFO(Render_Vulkan,
"Removing extendedDynamicState3 due to missing extendedDynamicState2");
RemoveExtensionFeature(extensions.extended_dynamic_state3, features.extended_dynamic_state3,
VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME);
dynamic_state3_blending = false;
dynamic_state3_enables = false;
}
logical = vk::Device::Create(physical, queue_cis, ExtensionListForVulkan(loaded_extensions),
first_next, dld);

View File

@@ -386,7 +386,7 @@ if (NOT WIN32)
target_include_directories(yuzu PRIVATE ${Qt${QT_MAJOR_VERSION}Gui_PRIVATE_INCLUDE_DIRS})
endif()
if (UNIX AND NOT APPLE)
target_link_libraries(yuzu PRIVATE Qt${QT_MAJOR_VERSION}::DBus gamemode)
target_link_libraries(yuzu PRIVATE Qt${QT_MAJOR_VERSION}::DBus)
endif()
target_compile_definitions(yuzu PRIVATE