Compare commits

...

61 Commits

Author SHA1 Message Date
Xphalnos c9a70cab65 [d3d12] Optimize shaders 2025-01-17 10:54:27 +01:00
Marco Rodolfi 55bbb28a80 [threading] Linux fixes on setting an incorrect priority
This call was failing since SCHED_FIFO doesn't support negative priorities, but only positive ones, see third paragraph of scheduling policies: https://man7.org/linux/man-pages/man7/sched.7.html.

Additionally Linux do provice up to 99 levels, but I've limited myself to the required UNIX standard of 32, and split the priority levels evenly from that.

I've also added a couple of rows to debug additional issues in the future like this.
2025-01-17 09:56:43 +01:00
The-Little-Wolf 4d7b30e844 [Xam/XamUser] - Stub XamUserGetOnlineLanguageFromXUID
- Stubs XamUserGetOnlineLanguageFromXUID and have it return cvars::user_language
- Leave notes for future implementation once we have proper profile support
2025-01-17 08:32:46 +01:00
Adrian ae23222ba8 [Emulator] Validate module is an executable before launching 2025-01-17 08:04:49 +01:00
Adrian d99d053408 [Patcher] Replace stoi with from_string for parsing plugin title id 2025-01-16 15:08:20 +01:00
Gliniak 1688ea5d69 [Kernel] Replaced TranslateAnsiString with TranslateAnsiPath for file paths.
This removes paths that starts or ends with whitespace characters
2025-01-14 22:45:43 +01:00
Gliniak e80d4effa1 [Kernel] IsValidPath: Removed ; and = from invalid characters list
Path like: fxprefabs;scale=fx_dropship_02_fade.* is processed as a proper one internally and it expects no file error instead of invalid parameter
2025-01-14 21:05:00 +01:00
Gliniak 57da74814b [XAM] Fixed issue with missing DLCs due to invalid XUID 2025-01-12 17:01:20 +01:00
The-Little-Wolf a77213dcdb [Xam/Xam_Profile] - Stub XamProfileCreate and more
- Move XamProfileFindAccount
- Leave notes for XamProfileOpen
- Stub XamProfileCreate
2025-01-12 16:31:39 +01:00
Adrian e134bbccd1 [App] Fixed RunTitle crash via hotkey 2025-01-12 16:11:16 +01:00
Marco Rodolfi 1822bca890 [BUILD] Fix build test generation for Linux systems
This allows a Linux system to generate all the PPC tests just by running ./xb gentests as on a Windows system. Tested locally.
2025-01-12 13:45:50 +01:00
Gliniak 09be7e874a [All] Fixed multiple issues during build on Linux
- Added some fixes introduced by RodoMa92 in PR198

- Lack of AVX2 extension (should be done differently in the future)
- Disable deprecated-volatile warning
- Added missing override in posix EventInfo, ImGui notification class and XContent class
- Removed not used XAudio2.h include in XMP
- Fixed missing switch-case in XObject
- Added fugly template in native_list.h
- Fixed multiple smaller issues
2025-01-10 21:41:45 +01:00
Gliniak cdd3f161fa [XAM] Fixed invalid param count in XNetUnregisterKey 2025-01-10 21:20:06 +01:00
Gliniak ccf4d6d5f8 [Emulator] Added logging file extension and magic value 2025-01-10 21:19:58 +01:00
Gliniak 2253cb978d [XAM] Added stub for: Refresh 2025-01-10 13:34:10 +01:00
Gliniak b50e32ab45 [XAM] Removed Windows specific code from xam_info.cc 2025-01-09 19:43:15 +01:00
Gliniak 4620fa93d8 [XAM] Added XamProfileOpen support and xam_profile.cc dedicated file for XamProfile exports
- Modified implementation of MountProfile to allow custom mount paths
2025-01-08 22:12:41 +01:00
Gliniak 7e51efeec5 [3PP] ZLib: Ignore warnings-errors 2025-01-08 21:36:30 +01:00
marko1616 34da168284 [XEX] Check if header exists during XexInfoCache init 2025-01-08 11:22:26 +01:00
Margen67 762145687b Update to Premake 5.0-beta3 2025-01-07 23:02:48 -08:00
Margen67 6f1cb9e253 Fix clang not building with C++20 2025-01-07 23:02:48 -08:00
Gliniak 7437c020d6 [Misc] Fixed some issues during compilation process on Linux 2025-01-07 22:54:16 +01:00
The-Little-Wolf 57eeed86b7 [XboxKrnl/xconfig.cc] - Stub ExSetXConfigSetting and ExReadModifyWriteXConfigSettingUlong
- Stubbing ExSetXConfigSetting and ExReadModifyWriteXConfigSettingUlong
- ExSetXConfigSetting is a simple value swap from buffer_ptr
- ExReadModifyWriteXConfigSettingUlong handles combined values with buffer_ptr holding the replacement values
- added log to show what the new setting should be and what is being replaced
- To Implement would need to convert settings to strucs
2025-01-07 19:52:11 +01:00
Margen67 3b49054d6b [CI] Only build release 2025-01-06 13:28:07 -08:00
Margen67 72df2129a0 [Readme] Add Linux 2025-01-06 12:14:07 -08:00
Margen67 fff79eb41d xenia-build improvements
Add -j to speed up getting submodules.
Add newer clang-format.
2025-01-06 12:14:07 -08:00
Margen67 affb2fb7af CI: Add debug/checked configuration 2025-01-06 12:14:07 -08:00
Margen67 26bf95d50f CI: Add Linux
Also fix build error.
2025-01-06 12:14:07 -08:00
The-Little-Wolf b5d319834e [XboxKrnl/xconfig.cc] - Fixes and logging changes
- Adding more information in logs for easier debugging
- XamSetDashContext correction
- XCONFIG_USER_VIDEO_FLAGS reports widescreen when set in config by user
- XCONFIG_SECURED_AV_REGION reports proper values when set in config by user
- Added missing \n
2025-01-06 19:49:48 +01:00
Xphalnos bb20ada9bf 3PP: Bump submodules 2025-01-06 18:01:45 +01:00
Gliniak 13badbb4c0 [XAM] Fixed issue with savefile removal via XamContentDeleteInternal
Removed all lpunknown_t in xam_content.cc file and replaced with lpvoid_t
2025-01-06 12:14:55 +01:00
Gliniak d660a82997 [XContent] Aggregate license mask from all licenses while installing package
This should fix issues with some DLCs
2025-01-05 17:59:15 +01:00
Gliniak ad323dd9d8 [HID] Fixed lack of controller input introduced in previous commit 2025-01-05 10:09:32 +01:00
Gliniak 4584794e24 [HID] Added drivers filter for GetState 2025-01-04 21:42:54 +01:00
The-Little-Wolf d6ed8af4e7 [Xam/Avatar] - Stubbing Avatar Functions
Stubbing avatar functions and leaving notes for future reference
2025-01-02 20:38:56 +01:00
The-Little-Wolf 95df198d8a [Xbox] kXNotification Additions
- Discovered new unknown kXNotificationID use by XNotifyBroadcast together and wanted to record them before I forget them.
- Changed kXNotificationID  to kXNotification
- Added kXNotificationSystemPXLiveSystemUpdate
2025-01-02 18:19:21 +01:00
Gliniak b757601f01 [XAM] XamUserGetName: Fixed issue introduced in previous commit 2025-01-01 18:43:52 +01:00
Gliniak 3f0a7f171f [XAM] XamUserGetName: Prevent false-positive in MS defender 2025-01-01 14:14:57 +01:00
Adrian ceb94e019a [XAM/UI] Implemented profile passcode UI 2025-01-01 00:26:13 +01:00
Gliniak fe85be8817 [XAM] Fixed possible crash caused by printing invalid characters in XamUserGetGamerTag and XamUserGetName 2024-12-30 19:47:10 +01:00
Gliniak c3301d9281 [Base] Fixed issue with initialization deadlock on Proton
For whatever reason Proton doesn't like it when Xenia is compiled with 2022 MSVC
2024-12-30 16:41:47 +01:00
Gliniak 1ba30c519c [HID] Fixed issues with double input in specific config HID configuration.
This was the case in hid set to "any" or to "winkey" and game that requires input from any user
2024-12-30 15:43:40 +01:00
Adrian 3dac88113f [XBDM] Implemented DmSetMemory and DmGetMemory 2024-12-29 18:35:44 +01:00
The-Little-Wolf 160d80d5cc [Xam/Enum] Implement EnumerateMediaObjects Functions
According to xam versions 8955 and 12611 all EnumerateMediaObjects are the same function and only return 0x80004001
2024-12-29 17:08:43 +01:00
Gliniak 580b1f4345 [XAM] Fixed nullptr crash in XamShowMessageBoxUI 2024-12-27 10:25:20 +01:00
Gliniak 9dfb0d0b68 [Base] Moved IsUseNexusForGameBarEnabled from emulator_window to system.h
This will remove direct usage of system specific code from emulator_window
2024-12-26 23:42:31 +01:00
Gliniak bcc3c3172d [Base] Added NtSystemClock to_local for quick time conversion to current timezone
- Changed achievement reward time to local time (in UI)
2024-12-26 23:42:31 +01:00
Gliniak c3586bc165 [C++] Uplift version to C++20 2024-12-26 23:42:31 +01:00
Gliniak a6e3d77504 [HID] Report passthrough as keyboard type and subtype device.
- Added enums for: X_INPUT_DEVTYPE and X_INPUT_DEVSUBTYPE
- Fixed issue with xinput failure with keyboard flag received
2024-12-23 15:50:00 +01:00
Gliniak 2e521383c2 [HID] Fixed some issues with controller/passthrough visibility.
- Moved X_INPUT flags from kernel to HID
- Added ability to return input type from driver
2024-12-23 10:43:27 +01:00
Gliniak 11f14e8488 [HID] Fixed spam caused by incorrect controller visibility
- Little cleanup in HID related code
2024-12-21 19:51:01 +01:00
Adrian 3d79874828 [XAM] Fixed profile setting for preferred color
Fixes Supreme Commander from crashing.
2024-12-21 14:58:16 +01:00
The-Little-Wolf 919f7403e2 [Xam/UI] - Implement XamShowMarketplaceUIEx & XamShowForcedNameChangeUI
Xam version 4548 and up XamShowMarketplaceUI transfers its params to XamShowMarketplaceUIEx.
2024-12-20 08:00:43 +01:00
Gliniak 263c722a40 [XAM] Added X_ACHIEVEMENT_UNLOCK_TIME ctor to support unix timestamp 2024-12-18 20:59:27 +01:00
Gliniak b98ff2d278 [XAM] Added specific ctor for X_ACHIEVEMENT_UNLOCK_TIME
Added method X_ACHIEVEMENT_UNLOCK_TIME::to_time_point
2024-12-18 20:32:52 +01:00
Gliniak ef8619b0a8 [HID] Fixed issue with controller input introduced in previous commit.
Added option to switch keyboard working mode.
2024-12-18 20:11:38 +01:00
Gliniak f6ae651cc2 [HID] Enable Keyboard Passthru
Thanks Adrian for figuring out missing XINPUT_KEYSTROKE_VALIDUNICODE flag.
Thanks Clippy95 for figuring out shift and capslock
2024-12-17 08:59:13 +01:00
Margen67 2596aef111 [CI] Use main branch of actions 2024-12-16 19:49:10 -08:00
Gliniak b187ffeef7 [UI] Fixed crash while opening titles menu while not being logged in 2024-12-16 19:36:33 +01:00
Xphalnos c8c62fc07c [Base] Fixed compilation error in math.h 2024-12-16 18:55:46 +01:00
Gliniak cfd965342a [XAM] Fixed issue with lack of loaded achievements while switching profile in-game 2024-12-15 14:16:17 +01:00
240 changed files with 4365 additions and 2737 deletions

77
.github/workflows/Linux_build.yml vendored Normal file
View File

@ -0,0 +1,77 @@
name: Linux build
on:
push:
paths-ignore:
- '.clang-format'
- '.drone.star'
- '.gitattributes'
- '.gitignore'
- '.gdbinit'
- '.github/*'
- '.github/workflows/Windows_build.yml'
- '.github/*_TEMPLATE/**'
- '*.md'
- '*.yml'
- '*.txt'
- 'docs/**'
- 'src/**/*_windows.*'
- 'src/**/*_android.*'
- 'src/**/*_mac.*'
- 'LICENSE'
pull_request:
paths-ignore:
- '.clang-format'
- '.drone.star'
- '.gitattributes'
- '.gitignore'
- '.gdbinit'
- '.github/*'
- '.github/workflows/Windows_build.yml'
- '.github/*_TEMPLATE/**'
- '*.md'
- '*.yml'
- '*.txt'
- 'docs/**'
- 'src/**/*_windows.*'
- 'src/**/*_android.*'
- 'src/**/*_mac.*'
- 'LICENSE'
workflow_dispatch:
jobs:
# lint:
# name: Lint
# runs-on: ubuntu-24.04
# steps:
# - uses: actions/checkout@main
# - name: Check Clang-Format Version
# run: clang-format --version
# - name: Lint
# run: ./xb lint --all
build-linux:
name: Build (Linux) # runner.os can't be used here
# needs: lint
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@main
with:
fetch-depth: 0
- name: Set environment variables
run: |
LLVM_VERSION=19
echo "LLVM_VERSION=$LLVM_VERSION" >> $GITHUB_ENV
echo "UBUNTU_BASE=jammy" >> $GITHUB_ENV
echo "CC=clang-${LLVM_VERSION}" >> $GITHUB_ENV
echo "CXX=clang++-${LLVM_VERSION}" >> $GITHUB_ENV
echo "AR=llvm-ar-${LLVM_VERSION}" >> $GITHUB_ENV
- name: Setup
run: |
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
sudo apt-add-repository "deb http://apt.llvm.org/${UBUNTU_BASE}/ llvm-toolchain-${UBUNTU_BASE}-$LLVM_VERSION main"
sudo apt-get -y update
sudo apt-get -y install mesa-vulkan-drivers valgrind libc++-dev libc++abi-dev libgtk-3-dev libsdl2-dev libvulkan-dev libx11-dev libx11-xcb-dev clang-$LLVM_VERSION clang-format-$LLVM_VERSION llvm-$LLVM_VERSION
./xb setup
- name: Build
run: ./xb build --config=Release

View File

@ -9,6 +9,7 @@ on:
- '.gitignore'
- '.gdbinit'
- '.github/*'
- '.github/workflows/Linux_build.yml'
- '.github/*_TEMPLATE/**'
- '*.md'
- '*.yml'
@ -30,6 +31,7 @@ on:
- '.gitignore'
- '.gdbinit'
- '.github/*'
- '.github/workflows/Linux_build.yml'
- '.github/*_TEMPLATE/**'
- '*.md'
- '*.yml'
@ -50,7 +52,7 @@ jobs:
name: Lint
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@main
- name: Check Clang-Format Version
run: clang-format --version
- name: Lint
@ -67,7 +69,7 @@ jobs:
env:
POWERSHELL_TELEMETRY_OPTOUT: 1
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@main
with:
fetch-depth: 0
- name: Setup
@ -75,12 +77,15 @@ jobs:
- name: Build
run: .\xb build --config=Release --target=src\xenia-app
- name: Prepare artifacts
id: prepare_artifacts
run: |
robocopy . build\bin\${{ runner.os }}\Release LICENSE /r:0 /w:0
robocopy build\bin\${{ runner.os }}\Release artifacts\xenia_canary xenia_canary.exe xenia_canary.pdb LICENSE /r:0 /w:0
robocopy . build\bin\Windows\Release LICENSE /r:0 /w:0
robocopy build\bin\Windows\Release artifacts\xenia_canary xenia_canary.exe xenia_canary.pdb LICENSE /r:0 /w:0
If ($LastExitCode -le 7) { echo "LastExitCode = $LastExitCode";$LastExitCode = 0 }
- name: Upload xenia canary artifacts
uses: actions/upload-artifact@v4
if: steps.prepare_artifacts.outcome == 'success'
id: upload_artifacts
uses: actions/upload-artifact@main
with:
name: xenia_canary_vs${{ matrix.vsver }}
path: artifacts\xenia_canary
@ -89,7 +94,8 @@ jobs:
if: |
github.repository == 'xenia-canary/xenia-canary' &&
github.event.action != 'pull_request' &&
github.ref == 'refs/heads/canary_experimental'
github.ref == 'refs/heads/canary_experimental' &&
steps.upload_artifacts.outcome == 'success'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |

2
.gitmodules vendored
View File

@ -12,7 +12,7 @@
url = https://github.com/catchorg/Catch2.git
[submodule "third_party/premake-core"]
path = third_party/premake-core
url = https://github.com/xenia-project/premake-core.git
url = https://github.com/premake/premake-core.git
[submodule "third_party/snappy"]
path = third_party/snappy
url = https://github.com/xenia-project/snappy.git

View File

@ -21,7 +21,7 @@ Discussing illegal activities will get you banned.
Buildbot | Status | Releases
-------- | ------ | --------
Windows | [![CI](https://github.com/xenia-canary/xenia-canary/actions/workflows/Windows_build.yml/badge.svg?branch=canary_experimental)](https://github.com/xenia-canary/xenia-canary/actions/workflows/Windows_build.yml) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/cd506034fd8148309a45034925648499)](https://app.codacy.com/gh/xenia-canary/xenia-canary/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) | [Latest](https://github.com/xenia-canary/xenia-canary/releases/latest) ◦ [All](https://github.com/xenia-canary/xenia-canary/releases)
Linux | Curently unsupported
Linux | [![CI](https://github.com/xenia-canary/xenia-canary/actions/workflows/Linux_build.yml/badge.svg?branch=canary_experimental)](https://github.com/xenia-canary/xenia-canary/actions/workflows/Linux_build.yml)
Netplay Build | | [Latest](https://github.com/AdrianCassar/xenia-canary/releases/latest)
## Quickstart
@ -36,7 +36,7 @@ See the [frequently asked questions](https://github.com/xenia-canary/xenia-canar
See the [Game compatibility list](https://github.com/xenia-canary/game-compatibility/issues)
for currently tracked games, and feel free to contribute your own updates,
screenshots, and information there following the [existing conventions](https://github.com/xenia-canary/game-compatibility/blob/master/README.md).
screenshots, and information there following the [existing conventions](https://github.com/xenia-canary/game-compatibility/blob/canary/README.md).
## Building

View File

@ -26,7 +26,7 @@ defines({
"UNICODE",
})
cppdialect("C++17")
cppdialect("C++20")
exceptionhandling("On")
rtti("On")
symbols("On")
@ -113,12 +113,18 @@ filter("platforms:Linux")
"rt",
})
filter({"platforms:Linux"})
vectorextensions("AVX2")
filter({"platforms:Linux", "kind:*App"})
linkgroups("On")
filter({"platforms:Linux", "language:C++", "toolset:gcc"})
disablewarnings({
"unused-result"
"unused-result",
"deprecated-volatile",
"switch",
"deprecated-enum-enum-conversion",
})
filter({"platforms:Linux", "toolset:gcc"})
@ -135,11 +141,15 @@ filter({"platforms:Linux", "toolset:gcc"})
filter({"platforms:Linux", "language:C++", "toolset:clang"})
disablewarnings({
"deprecated-register"
"deprecated-register",
"deprecated-volatile",
"switch",
"deprecated-enum-enum-conversion",
})
filter({"platforms:Linux", "language:C++", "toolset:clang", "files:*.cc or *.cpp"})
buildoptions({
"-stdlib=libstdc++",
"-std=c++20", -- clang doesn't respect cppdialect(?)
})
filter("platforms:Android-*")

View File

@ -1405,15 +1405,13 @@ void EmulatorWindow::ToggleDisplayConfigDialog() {
void EmulatorWindow::ToggleProfilesConfigDialog() {
if (!profile_config_dialog_) {
disable_hotkeys_ = true;
emulator_->kernel_state()->BroadcastNotification(kXNotificationIDSystemUI,
1);
emulator_->kernel_state()->BroadcastNotification(kXNotificationSystemUI, 1);
profile_config_dialog_ =
std::make_unique<ProfileConfigDialog>(imgui_drawer_.get(), this);
kernel::xam::xam_dialogs_shown_++;
} else {
disable_hotkeys_ = false;
emulator_->kernel_state()->BroadcastNotification(kXNotificationIDSystemUI,
0);
emulator_->kernel_state()->BroadcastNotification(kXNotificationSystemUI, 0);
profile_config_dialog_.reset();
kernel::xam::xam_dialogs_shown_--;
}
@ -1462,17 +1460,17 @@ void EmulatorWindow::UpdateTitle() {
// Title information, if available
if (emulator()->is_title_open()) {
sb.AppendFormat(u8" | [{:08X}", emulator()->title_id());
sb.AppendFormat(" | [{:08X}", emulator()->title_id());
auto title_version = emulator()->title_version();
if (!title_version.empty()) {
sb.Append(u8" v");
sb.Append(" v");
sb.Append(title_version);
}
sb.Append(u8"]");
sb.Append("]");
auto title_name = emulator()->title_name();
if (!title_name.empty()) {
sb.Append(u8" ");
sb.Append(" ");
sb.Append(title_name);
}
}
@ -1482,28 +1480,28 @@ void EmulatorWindow::UpdateTitle() {
if (graphics_system) {
auto graphics_name = graphics_system->name();
if (!graphics_name.empty()) {
sb.Append(u8" <");
sb.Append(" <");
sb.Append(graphics_name);
sb.Append(u8">");
sb.Append(">");
}
}
if (Clock::guest_time_scalar() != 1.0) {
sb.AppendFormat(u8" (@{:.2f}x)", Clock::guest_time_scalar());
sb.AppendFormat(" (@{:.2f}x)", Clock::guest_time_scalar());
}
if (initializing_shader_storage_) {
sb.Append(u8" (Preloading shaders\u2026)");
sb.Append(" (Preloading shaders\u2026)");
}
patcher::Patcher* patcher = emulator()->patcher();
if (patcher && patcher->IsAnyPatchApplied()) {
sb.Append(u8" [Patches Applied]");
sb.Append(" [Patches Applied]");
}
patcher::PluginLoader* pluginloader = emulator()->plugin_loader();
if (pluginloader && pluginloader->IsAnyPluginLoaded()) {
sb.Append(u8" [Plugins Loaded]");
sb.Append(" [Plugins Loaded]");
}
window_->SetTitle(sb.to_string_view());
@ -1664,11 +1662,16 @@ EmulatorWindow::ControllerHotKey EmulatorWindow::ProcessControllerHotkey(
xe::threading::Sleep(delay);
break;
case ButtonFunctions::RunTitle: {
if (selected_title_index == -1) selected_title_index++;
if (selected_title_index == -1) {
selected_title_index++;
}
app_context().CallInUIThread([this]() {
RunTitle(recently_launched_titles_[selected_title_index].path_to_file);
});
if (selected_title_index < recently_launched_titles_.size()) {
app_context().CallInUIThread([this]() {
RunTitle(
recently_launched_titles_[selected_title_index].path_to_file);
});
}
} break;
case ButtonFunctions::ClearMemoryPageState:
ToggleGPUSetting(gpu_cvar::ClearMemoryPageState);
@ -1761,8 +1764,9 @@ EmulatorWindow::ControllerHotKey EmulatorWindow::ProcessControllerHotkey(
if ((button_combination.function == ButtonFunctions::IncTitleSelect ||
button_combination.function == ButtonFunctions::DecTitleSelect) &&
recently_launched_titles_.size() > 0) {
selected_title_index = std::clamp(
selected_title_index, 0, (int)recently_launched_titles_.size() - 1);
selected_title_index =
std::clamp(selected_title_index, 0,
static_cast<int32_t>(recently_launched_titles_.size() - 1));
// Must clear dialogs to prevent stacking
ClearDialogs();
@ -1835,7 +1839,8 @@ void EmulatorWindow::GamepadHotKeys() {
for (uint32_t user_index = 0; user_index < XUserMaxUserCount;
++user_index) {
X_RESULT result = input_sys->GetState(user_index, &state);
X_RESULT result = input_sys->GetState(
user_index, X_INPUT_FLAG::X_INPUT_FLAG_GAMEPAD, &state);
// Release the lock before processing the hotkey
input_lock.mutex()->unlock();
@ -1870,24 +1875,6 @@ void EmulatorWindow::ToggleGPUSetting(gpu_cvar value) {
}
}
// Determine if the Xbox Gamebar is enabled via the Windows registry
bool EmulatorWindow::IsUseNexusForGameBarEnabled() {
#ifdef _WIN32
const LPWSTR reg_path = L"SOFTWARE\\Microsoft\\GameBar";
const LPWSTR key = L"UseNexusForGameBarEnabled";
DWORD value = 0;
DWORD dataSize = sizeof(value);
RegGetValue(HKEY_CURRENT_USER, reg_path, key, RRF_RT_DWORD, nullptr, &value,
&dataSize);
return (bool)value;
#else
return false;
#endif
}
void EmulatorWindow::DisplayHotKeysConfig() {
std::string msg = "";
std::string msg_passthru = "";

View File

@ -236,7 +236,6 @@ class EmulatorWindow {
bool vibrate = true);
void GamepadHotKeys();
void ToggleGPUSetting(gpu_cvar index);
bool IsUseNexusForGameBarEnabled();
void DisplayHotKeysConfig();
static std::string CanonicalizeFileExtension(

View File

@ -176,23 +176,49 @@ class EmulatorApp final : public xe::ui::WindowedApp {
std::vector<std::unique_ptr<T>> CreateAll(const std::string_view name,
Args... args) {
std::vector<std::unique_ptr<T>> instances;
if (!name.empty() && name != "any") {
// "Any" path
if (name.empty() || name == "any") {
for (const auto& creator : creators_) {
if (!creator.is_available()) {
continue;
}
// Skip xinput for "any" and use SDL
if (creator.name.compare("xinput") == 0) {
continue;
}
auto instance = creator.instantiate(std::forward<Args>(args)...);
if (instance) {
instances.emplace_back(std::move(instance));
}
}
return instances;
}
// "Specified" path. Winkey is always added on windows.
if (name != "winkey") {
auto it = std::find_if(
creators_.cbegin(), creators_.cend(),
[&name](const auto& f) { return name.compare(f.name) == 0; });
if (it != creators_.cend() && (*it).is_available()) {
auto instance = (*it).instantiate(std::forward<Args>(args)...);
if (instance) {
instances.emplace_back(std::move(instance));
}
}
} else {
for (const auto& creator : creators_) {
if (!creator.is_available()) continue;
auto instance = creator.instantiate(std::forward<Args>(args)...);
if (instance) {
instances.emplace_back(std::move(instance));
}
}
// Always add winkey for passthrough.
auto it = std::find_if(
creators_.cbegin(), creators_.cend(),
[&name](const auto& f) { return f.name.compare("winkey") == 0; });
if (it != creators_.cend() && (*it).is_available()) {
auto instance = (*it).instantiate(std::forward<Args>(args)...);
if (instance) {
instances.emplace_back(std::move(instance));
}
}
return instances;

View File

@ -13,8 +13,6 @@
#include "xenia/apu/xma_context.h"
#include "xenia/base/logging.h"
#include <XAudio2.h>
extern "C" {
#if XE_COMPILER_MSVC
#pragma warning(push)
@ -451,7 +449,7 @@ void AudioMediaPlayer::RemovePlaylist(uint32_t handle) {
X_STATUS AudioMediaPlayer::SetVolume(float volume) {
volume_ = std::min(volume, 1.0f);
std::unique_lock<xe::xe_fast_mutex> guard(driver_mutex_);
std::unique_lock<xe_mutex> guard(driver_mutex_);
if (!driver_) {
return X_STATUS_UNSUCCESSFUL;
}
@ -483,7 +481,7 @@ void AudioMediaPlayer::SetCaptureCallback(uint32_t callback, uint32_t context,
}
void AudioMediaPlayer::OnStateChanged() {
kernel_state_->BroadcastNotification(kNotificationXmpStateChanged,
kernel_state_->BroadcastNotification(kXNotificationXmpStateChanged,
static_cast<uint32_t>(state_));
}
@ -517,7 +515,7 @@ void AudioMediaPlayer::ProcessAudioBuffer(std::vector<float>* buffer) {
bool AudioMediaPlayer::SetupDriver(uint32_t sample_rate, uint32_t channels) {
DeleteDriver();
std::unique_lock<xe::xe_fast_mutex> guard(driver_mutex_);
std::unique_lock<xe_mutex> guard(driver_mutex_);
driver_semaphore_ = xe::threading::Semaphore::Create(
AudioSystem::kMaximumQueuedFrames, AudioSystem::kMaximumQueuedFrames);
@ -543,7 +541,7 @@ bool AudioMediaPlayer::SetupDriver(uint32_t sample_rate, uint32_t channels) {
}
void AudioMediaPlayer::DeleteDriver() {
std::unique_lock<xe::xe_fast_mutex> guard(driver_mutex_);
std::unique_lock<xe_mutex> guard(driver_mutex_);
if (driver_) {
if (driver_semaphore_) {
driver_semaphore_.reset();

View File

@ -130,7 +130,7 @@ class AudioMediaPlayer {
// really compatible with it.
std::unique_ptr<AudioDriver> driver_ = nullptr;
std::unique_ptr<xe::threading::Semaphore> driver_semaphore_ = {};
xe::xe_fast_mutex driver_mutex_ = {};
xe_mutex driver_mutex_ = {};
bool SetupDriver(uint32_t sample_rate, uint32_t channels);
void DeleteDriver();

View File

@ -35,7 +35,7 @@ static void _generic_sequential_6_BE_to_interleaved_6_LE(
}
}
}
#if XE_COMPILER_CLANG_CL != 1
#if XE_COMPILER_CLANG_CL != 1 && !XE_PLATFORM_LINUX
// load_be_u32 unavailable on clang-cl
XE_NOINLINE
static void _movbe_sequential_6_BE_to_interleaved_6_LE(

View File

@ -74,6 +74,15 @@ inline int32_t atomic_inc(volatile int32_t* value) {
inline int32_t atomic_dec(volatile int32_t* value) {
return __sync_sub_and_fetch(value, 1);
}
inline int32_t atomic_or(volatile int32_t* value, int32_t nv) {
return __sync_or_and_fetch(value, nv);
}
inline int32_t atomic_and(volatile int32_t* value, int32_t nv) {
return __sync_and_and_fetch(value, nv);
}
inline int32_t atomic_xor(volatile int32_t* value, int32_t nv) {
return __sync_xor_and_fetch(value, nv);
}
inline int32_t atomic_exchange(int32_t new_value, volatile int32_t* value) {
return __sync_val_compare_and_swap(value, *value, new_value);

View File

@ -91,6 +91,14 @@ struct NtSystemClock {
return sys_time{cdp.time_since_epoch()};
}
template <Domain domain_fresh_ = domain_>
static constexpr std::enable_if_t<
domain_fresh_ == Domain::Host,
std::chrono::local_time<std::chrono::system_clock::duration>>
to_local(const time_point& tp) {
return std::chrono::current_zone()->to_local(to_sys(tp));
}
template <Domain domain_fresh_ = domain_>
static constexpr std::enable_if_t<domain_fresh_ == Domain::Host, time_point>
from_sys(const std::chrono::system_clock::time_point& tp) {

View File

@ -23,7 +23,7 @@ extern "C" int main(int argc, char** argv) {
}
// Initialize logging. Needs parsed cvars.
xe::InitializeLogging(entry_info.name);
// xe::InitializeLogging(entry_info.name);
std::vector<std::string> args;
for (int n = 0; n < argc; n++) {
@ -32,7 +32,7 @@ extern "C" int main(int argc, char** argv) {
int result = entry_info.entry_point(args);
xe::ShutdownLogging();
// xe::ShutdownLogging();
return result;
}

View File

@ -110,24 +110,24 @@ std::string EscapeBasicString(const std::string_view view) {
for (auto it = begin; it != end; ++it) {
auto c = *it;
if (c == '\b') {
result += u8"\\b";
result += "\\b";
} else if (c == '\t') {
result += u8"\\t";
result += "\\t";
} else if (c == '\n') {
result += u8"\\n";
result += "\\n";
} else if (c == '\f') {
result += u8"\\f";
result += "\\f";
} else if (c == '\r') {
result += u8"\\r";
result += "\\r";
} else if (c == '"') {
result += u8"\\\"";
result += "\\\"";
} else if (c == '\\') {
result += u8"\\\\";
result += "\\\\";
} else if (c < 0x20 || c == 0x7F) {
if (c <= 0xFFFF) {
result += fmt::format(u8"\\u{:04X}", c);
result += fmt::format("\\u{:04X}", c);
} else {
result += fmt::format(u8"\\u{:08X}", c);
result += fmt::format("\\u{:08X}", c);
}
} else {
utfcpp::append(static_cast<char32_t>(c), result);
@ -150,30 +150,30 @@ std::string EscapeMultilineBasicString(const std::string_view view) {
}
for (int i = 0; i < quote_run; ++i) {
if ((i % 3) == 2) {
result += u8"\\";
result += "\\";
}
result += u8"\"";
result += "\"";
}
quote_run = 0;
}
if (c == '\b') {
result += u8"\\b";
result += "\\b";
} else if (c == '\t' || c == '\n') {
result += c;
} else if (c == '\f') {
result += u8"\\f";
result += "\\f";
} else if (c == '\r') {
// Silently drop \r.
// result += c;
} else if (c == '"') {
quote_run = 1;
} else if (c == '\\') {
result += u8"\\\\";
result += "\\\\";
} else if (c < 0x20 || c == 0x7F) {
if (c <= 0xFFFF) {
result += fmt::format(u8"\\u{:04X}", c);
result += fmt::format("\\u{:04X}", c);
} else {
result += fmt::format(u8"\\u{:08X}", c);
result += fmt::format("\\u{:08X}", c);
}
} else {
utfcpp::append(static_cast<char32_t>(c), result);
@ -181,9 +181,9 @@ std::string EscapeMultilineBasicString(const std::string_view view) {
}
for (int i = 0; i < quote_run; ++i) {
if ((i % 3) == 2) {
result += u8"\\";
result += "\\";
}
result += u8"\"";
result += "\"";
}
return result;
}
@ -207,11 +207,11 @@ std::string EscapeString(const std::string_view view) {
} else {
// multi line
if (xe::utf8::find_any_of(view, escape_chars) == std::string_view::npos &&
xe::utf8::find_first_of(view, u8"'''") == std::string_view::npos) {
xe::utf8::find_first_of(view, "'''") == std::string_view::npos) {
return "'''\n" + std::string(view) + "'''";
} else {
return u8"\"\"\"\n" + toml_internal::EscapeMultilineBasicString(view) +
u8"\"\"\"";
return "\"\"\"\n" + toml_internal::EscapeMultilineBasicString(view) +
"\"\"\"";
}
}
}

View File

@ -99,10 +99,11 @@ void AppendLogLine(LogLevel log_level, const char prefix_char, size_t written);
// might as well be noalias
template <typename... Args>
XE_NOALIAS XE_NOINLINE XE_COLD static void AppendLogLineFormat_Impl(
LogLevel log_level, const char prefix_char, const char* format,
const Args&... args) {
LogLevel log_level, const char prefix_char, std::string_view format,
const Args&... args) noexcept {
auto target = internal::GetThreadBuffer();
auto result = fmt::format_to_n(target.first, target.second, format, args...);
auto result = fmt::format_to_n(target.first, target.second,
fmt::runtime(format), args...);
internal::AppendLogLine(log_level, prefix_char, result.size);
}
@ -113,8 +114,8 @@ template <typename... Args>
XE_FORCEINLINE static void AppendLogLineFormat(uint32_t log_src_mask,
LogLevel log_level,
const char prefix_char,
const char* format,
const Args&... args) {
std::string_view format,
const Args&... args) noexcept {
if (!internal::ShouldLog(log_level, log_src_mask)) {
return;
}
@ -143,7 +144,8 @@ struct LoggerBatch {
LoggerBatch() { reset(); }
template <size_t fmtlen, typename... Ts>
void operator()(const char (&fmt)[fmtlen], Ts&&... args) {
auto tmpres = fmt::format_to_n(thrd_buf, thrd_buf_rem, fmt, args...);
auto tmpres =
fmt::format_to_n(thrd_buf, thrd_buf_rem, fmt::runtime(fmt), args...);
thrd_buf_rem -= tmpres.size;
thrd_buf = tmpres.out;
total_size += tmpres.size;
@ -164,55 +166,55 @@ struct LoggerBatch {
#if XE_OPTION_ENABLE_LOGGING
template <typename... Args>
XE_COLD void XELOGE(const char* format, const Args&... args) {
XE_COLD void XELOGE(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
xe::LogLevel::Error, '!', format, args...);
}
template <typename... Args>
XE_COLD void XELOGW(const char* format, const Args&... args) {
XE_COLD void XELOGW(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
xe::LogLevel::Warning, 'w', format, args...);
}
template <typename... Args>
void XELOGI(const char* format, const Args&... args) {
void XELOGI(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
xe::LogLevel::Info, 'i', format, args...);
}
template <typename... Args>
void XELOGD(const char* format, const Args&... args) {
void XELOGD(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
xe::LogLevel::Debug, 'd', format, args...);
}
template <typename... Args>
void XELOGCPU(const char* format, const Args&... args) {
void XELOGCPU(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Cpu, xe::LogLevel::Info, 'C',
format, args...);
}
template <typename... Args>
void XELOGAPU(const char* format, const Args&... args) {
void XELOGAPU(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Apu, xe::LogLevel::Debug, 'A',
format, args...);
}
template <typename... Args>
void XELOGGPU(const char* format, const Args&... args) {
void XELOGGPU(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
xe::LogLevel::Debug, 'G', format, args...);
}
template <typename... Args>
void XELOGKERNEL(const char* format, const Args&... args) {
void XELOGKERNEL(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Kernel, xe::LogLevel::Info, 'K',
format, args...);
}
template <typename... Args>
void XELOGFS(const char* format, const Args&... args) {
void XELOGFS(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
xe::LogLevel::Info, 'F', format, args...);
}

View File

@ -11,6 +11,7 @@
#define XENIA_BASE_MATH_H_
#include <algorithm>
#include <climits>
#include <cmath>
#include <cstdint>
#include <cstring>
@ -330,7 +331,7 @@ inline T rotate_right(T v, uint8_t sh) {
constexpr unsigned char SHIFT_MASK = (CHAR_BIT * sizeof(T)) - 1;
uint8_t rshr = sh & SHIFT_MASK;
uint8_t lshl = static_cast<uint8_t>(-static_cast<int8_t>(sh)) & SHIFT_MASK;
return (n >> rshr) | (n << lshl);
return (v >> rshr) | (v << lshl);
}
#if XE_PLATFORM_WIN32
template <>

View File

@ -193,7 +193,7 @@ std::unique_ptr<Socket> Socket::Connect(std::string hostname, uint16_t port) {
InitializeWinsock();
auto socket = std::make_unique<Win32Socket>();
if (!socket->Connect(std::move(hostname), port)) {
if (!socket->Connect(hostname, port)) {
return nullptr;
}
return std::unique_ptr<Socket>(socket.release());

View File

@ -35,7 +35,7 @@ class StringBuffer {
template <typename... Args>
void AppendFormat(const char* format, const Args&... args) {
auto s = fmt::format(format, args...);
auto s = fmt::format(fmt::runtime(format), args...);
Append(s.c_str());
}

View File

@ -29,6 +29,9 @@ void LaunchFileExplorer(const std::filesystem::path& path);
bool SetProcessPriorityClass(const uint32_t priority_class);
// Determine if the Xbox Gamebar is enabled via the Windows registry
bool IsUseNexusForGameBarEnabled();
enum class SimpleMessageBoxType {
Help,
Warning,

View File

@ -296,4 +296,5 @@ void ShowSimpleMessageBox(SimpleMessageBoxType type, std::string_view message) {
bool SetProcessPriorityClass(const uint32_t priority_class) { return true; }
bool IsUseNexusForGameBarEnabled() { return false; }
} // namespace xe

View File

@ -69,4 +69,5 @@ void ShowSimpleMessageBox(SimpleMessageBoxType type, std::string_view message) {
bool SetProcessPriorityClass(const uint32_t priority_class) { return true; }
bool IsUseNexusForGameBarEnabled() { return false; }
} // namespace xe

View File

@ -64,4 +64,17 @@ bool SetProcessPriorityClass(const uint32_t priority_class) {
xeniaToWindowsPriorityClassMapping[priority_class]);
}
bool IsUseNexusForGameBarEnabled() {
const LPCWSTR reg_path = L"SOFTWARE\\Microsoft\\GameBar";
const LPCWSTR key = L"UseNexusForGameBarEnabled";
DWORD value = 0;
DWORD dataSize = sizeof(value);
RegGetValue(HKEY_CURRENT_USER, reg_path, key, RRF_RT_DWORD, nullptr, &value,
&dataSize);
return static_cast<bool>(value);
}
} // namespace xe

View File

@ -407,7 +407,7 @@ TEST_CASE("Wait on Multiple Events", "[event]") {
std::array<char, 8> order = {0};
std::atomic_uint index(0);
auto sign_in = [&order, &index](uint32_t id) {
auto i = index.fetch_add(1, std::memory_order::memory_order_relaxed);
auto i = index.fetch_add(1, std::memory_order_relaxed);
order[i] = static_cast<char>('0' + id);
};
@ -1071,8 +1071,8 @@ TEST_CASE("Test Thread QueueUserCallback", "[thread]") {
int is_modified;
int has_finished;
auto callback = [&is_modified, &order] {
is_modified = std::atomic_fetch_add_explicit(
&order, 1, std::memory_order::memory_order_relaxed);
is_modified =
std::atomic_fetch_add_explicit(&order, 1, std::memory_order_relaxed);
};
// Without alertable
@ -1084,8 +1084,8 @@ TEST_CASE("Test Thread QueueUserCallback", "[thread]") {
order++; // 1
Sleep(90ms);
order++; // 2
has_finished = std::atomic_fetch_add_explicit(
&order, 1, std::memory_order::memory_order_relaxed);
has_finished =
std::atomic_fetch_add_explicit(&order, 1, std::memory_order_relaxed);
});
REQUIRE(!spin_wait_for(50ms, [&] { return order == 2; }));
REQUIRE(is_modified == -1);
@ -1104,8 +1104,8 @@ TEST_CASE("Test Thread QueueUserCallback", "[thread]") {
order++; // 1
AlertableSleep(90ms);
order++; // 3
has_finished = std::atomic_fetch_add_explicit(
&order, 1, std::memory_order::memory_order_relaxed);
has_finished =
std::atomic_fetch_add_explicit(&order, 1, std::memory_order_relaxed);
});
REQUIRE(!spin_wait_for(50ms, [&] { return order == 2; }));
REQUIRE(is_modified == -1);
@ -1120,8 +1120,8 @@ TEST_CASE("Test Thread QueueUserCallback", "[thread]") {
is_modified = -1;
has_finished = -1;
thread = Thread::Create(params, [&is_modified, &has_finished, &order] {
is_modified = std::atomic_fetch_add_explicit(
&order, 1, std::memory_order::memory_order_relaxed);
is_modified =
std::atomic_fetch_add_explicit(&order, 1, std::memory_order_relaxed);
// Using Alertable so callback is registered
order++; // 2
AlertableSleep(1s);

View File

@ -37,121 +37,121 @@ namespace examples {
const size_t kDanishCount = 1;
const char* kDanishValues[kDanishCount] = {
u8"Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Wolther "
u8"spillede på xylofon.",
"Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Wolther "
"spillede på xylofon.",
};
#define TEST_LANGUAGE_EXAMPLES_Danish(func, results) \
TEST_EXAMPLES_1(func, Danish, results)
const size_t kGermanCount = 3;
const char* kGermanValues[kGermanCount] = {
u8"Falsches Üben von Xylophonmusik quält jeden größeren Zwerg",
u8"Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich",
u8"Heizölrückstoßabdämpfung",
"Falsches Üben von Xylophonmusik quält jeden größeren Zwerg",
"Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich",
"Heizölrückstoßabdämpfung",
};
#define TEST_LANGUAGE_EXAMPLES_German(func, results) \
TEST_EXAMPLES_2(func, German, results)
const size_t kGreekCount = 2;
const char* kGreekValues[kGreekCount] = {
u8"Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο",
u8"Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία",
"Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο",
"Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία",
};
#define TEST_LANGUAGE_EXAMPLES_Greek(func, results) \
TEST_EXAMPLES_2(func, Greek, results)
const size_t kEnglishCount = 1;
const char* kEnglishValues[kEnglishCount] = {
u8"The quick brown fox jumps over the lazy dog",
"The quick brown fox jumps over the lazy dog",
};
#define TEST_LANGUAGE_EXAMPLES_English(func, results) \
TEST_EXAMPLES_1(func, English, results)
const size_t kSpanishCount = 1;
const char* kSpanishValues[kSpanishCount] = {
u8"El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y frío, "
u8"añoraba a su querido cachorro.",
"El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y frío, "
"añoraba a su querido cachorro.",
};
#define TEST_LANGUAGE_EXAMPLES_Spanish(func, results) \
TEST_EXAMPLES_1(func, Spanish, results)
const size_t kFrenchCount = 3;
const char* kFrenchValues[kFrenchCount] = {
u8"Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à "
u8"côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, ce qui "
u8"lui permet de penser à la cænogenèse de l'être dont il est question "
u8"dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui, "
u8"pense-t-il, diminue çà et là la qualité de son œuvre.",
u8"l'île exiguë\n"
u8"Où l'obèse jury mûr\n"
u8"Fête l'haï volapük,\n"
u8"Âne ex aéquo au whist,\n"
u8"Ôtez ce vœu déçu.",
u8"Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en canoë "
u8"au delà des îles, près du mälström où brûlent les novæ.",
"Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à "
"côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, ce qui "
"lui permet de penser à la cænogenèse de l'être dont il est question "
"dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui, "
"pense-t-il, diminue çà et là la qualité de son œuvre.",
"l'île exiguë\n"
"Où l'obèse jury mûr\n"
"Fête l'haï volapük,\n"
"Âne ex aéquo au whist,\n"
"Ôtez ce vœu déçu.",
"Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en canoë "
"au delà des îles, près du mälström où brûlent les novæ.",
};
#define TEST_LANGUAGE_EXAMPLES_French(func, results) \
TEST_EXAMPLES_3(func, French, results)
const size_t kIrishGaelicCount = 1;
const char* kIrishGaelicValues[kIrishGaelicCount] = {
u8"D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh",
"D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh",
};
#define TEST_LANGUAGE_EXAMPLES_IrishGaelic(func, results) \
TEST_EXAMPLES_1(func, IrishGaelic, results)
const size_t kHungarianCount = 1;
const char* kHungarianValues[kHungarianCount] = {
u8"Árvíztűrő tükörfúrógép",
"Árvíztűrő tükörfúrógép",
};
#define TEST_LANGUAGE_EXAMPLES_Hungarian(func, results) \
TEST_EXAMPLES_1(func, Hungarian, results)
const size_t kIcelandicCount = 2;
const char* kIcelandicValues[kIcelandicCount] = {
u8"Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa",
u8"Sævör grét áðan því úlpan var ónýt",
"Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa",
"Sævör grét áðan því úlpan var ónýt",
};
#define TEST_LANGUAGE_EXAMPLES_Icelandic(func, results) \
TEST_EXAMPLES_2(func, Icelandic, results)
const size_t kJapaneseCount = 2;
const char* kJapaneseValues[kJapaneseCount] = {
u8"いろはにほへとちりぬるを\n"
u8"わかよたれそつねならむ\n"
u8"うゐのおくやまけふこえて\n"
u8"あさきゆめみしゑひもせす\n",
u8"イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム\n"
u8"ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン",
"いろはにほへとちりぬるを\n"
"わかよたれそつねならむ\n"
"うゐのおくやまけふこえて\n"
"あさきゆめみしゑひもせす\n",
"イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム\n"
"ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン",
};
#define TEST_LANGUAGE_EXAMPLES_Japanese(func, results) \
TEST_EXAMPLES_2(func, Japanese, results)
const size_t kHebrewCount = 1;
const char* kHebrewValues[kHebrewCount] = {
u8"? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה",
"? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה",
};
#define TEST_LANGUAGE_EXAMPLES_Hebrew(func, results) \
TEST_EXAMPLES_1(func, Hebrew, results)
const size_t kPolishCount = 1;
const char* kPolishValues[kPolishCount] = {
u8"Pchnąć w tę łódź jeża lub ośm skrzyń fig",
"Pchnąć w tę łódź jeża lub ośm skrzyń fig",
};
#define TEST_LANGUAGE_EXAMPLES_Polish(func, results) \
TEST_EXAMPLES_1(func, Polish, results)
const size_t kRussianCount = 2;
const char* kRussianValues[kRussianCount] = {
u8"В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!",
u8"Съешь же ещё этих мягких французских булок да выпей чаю",
"В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!",
"Съешь же ещё этих мягких французских булок да выпей чаю",
};
#define TEST_LANGUAGE_EXAMPLES_Russian(func, results) \
TEST_EXAMPLES_2(func, Russian, results)
const size_t kTurkishCount = 1;
const char* kTurkishValues[kTurkishCount] = {
u8"Pijamalı hasta, yağız şoföre çabucak güvendi.",
"Pijamalı hasta, yağız şoföre çabucak güvendi.",
};
#define TEST_LANGUAGE_EXAMPLES_Turkish(func, results) \
TEST_EXAMPLES_1(func, Turkish, results)
@ -229,54 +229,54 @@ TEST_CASE("UTF-8 Split", "[utf8]") {
std::vector<std::string_view> parts;
// Danish
parts = utf8::split(examples::kDanishValues[0], u8"æcå");
parts = utf8::split(examples::kDanishValues[0], "æcå");
REQUIRE(parts.size() == 4);
REQUIRE(parts[0] == u8"Quizdeltagerne spiste jordb");
REQUIRE(parts[1] == u8"r med fløde, mens ");
REQUIRE(parts[2] == u8"irkusklovnen Wolther spillede p");
REQUIRE(parts[3] == u8" xylofon.");
REQUIRE(parts[0] == "Quizdeltagerne spiste jordb");
REQUIRE(parts[1] == "r med fløde, mens ");
REQUIRE(parts[2] == "irkusklovnen Wolther spillede p");
REQUIRE(parts[3] == " xylofon.");
// German
parts = utf8::split(examples::kGermanValues[0], u8"ßS");
parts = utf8::split(examples::kGermanValues[0], "ßS");
REQUIRE(parts.size() == 2);
REQUIRE(parts[0] == u8"Falsches Üben von Xylophonmusik quält jeden grö");
REQUIRE(parts[1] == u8"eren Zwerg");
parts = utf8::split(examples::kGermanValues[1], u8"ßS");
REQUIRE(parts[0] == "Falsches Üben von Xylophonmusik quält jeden grö");
REQUIRE(parts[1] == "eren Zwerg");
parts = utf8::split(examples::kGermanValues[1], "ßS");
REQUIRE(parts.size() == 2);
REQUIRE(parts[0] == u8"Zwölf Boxkämpfer jagten Eva quer über den ");
REQUIRE(parts[1] == u8"ylter Deich");
parts = utf8::split(examples::kGermanValues[2], u8"ßS");
REQUIRE(parts[0] == "Zwölf Boxkämpfer jagten Eva quer über den ");
REQUIRE(parts[1] == "ylter Deich");
parts = utf8::split(examples::kGermanValues[2], "ßS");
REQUIRE(parts.size() == 2);
REQUIRE(parts[0] == u8"Heizölrücksto");
REQUIRE(parts[1] == u8"abdämpfung");
REQUIRE(parts[0] == "Heizölrücksto");
REQUIRE(parts[1] == "abdämpfung");
// Greek
parts = utf8::split(examples::kGreekValues[0], u8"πφ");
parts = utf8::split(examples::kGreekValues[0], "πφ");
REQUIRE(parts.size() == 4);
REQUIRE(parts[0] == u8"Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ ");
REQUIRE(parts[1] == u8"ιὰ στὸ χρυσα");
REQUIRE(parts[2] == u8"ὶ ξέ");
REQUIRE(parts[3] == u8"ωτο");
parts = utf8::split(examples::kGreekValues[1], u8"πφ");
REQUIRE(parts[0] == "Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ ");
REQUIRE(parts[1] == "ιὰ στὸ χρυσα");
REQUIRE(parts[2] == "ὶ ξέ");
REQUIRE(parts[3] == "ωτο");
parts = utf8::split(examples::kGreekValues[1], "πφ");
REQUIRE(parts.size() == 3);
REQUIRE(parts[0] == u8"Ξεσκε");
REQUIRE(parts[1] == u8"άζω τὴν ψυχο");
REQUIRE(parts[2] == u8"θόρα βδελυγμία");
REQUIRE(parts[0] == "Ξεσκε");
REQUIRE(parts[1] == "άζω τὴν ψυχο");
REQUIRE(parts[2] == "θόρα βδελυγμία");
// English
parts = utf8::split(examples::kEnglishValues[0], "xy");
REQUIRE(parts.size() == 3);
REQUIRE(parts[0] == u8"The quick brown fo");
REQUIRE(parts[1] == u8" jumps over the laz");
REQUIRE(parts[2] == u8" dog");
REQUIRE(parts[0] == "The quick brown fo");
REQUIRE(parts[1] == " jumps over the laz");
REQUIRE(parts[2] == " dog");
// Spanish
parts = utf8::split(examples::kSpanishValues[0], u8"ójd");
parts = utf8::split(examples::kSpanishValues[0], "ójd");
REQUIRE(parts.size() == 4);
REQUIRE(parts[0] == u8"El pingüino Wenceslao hizo kil");
REQUIRE(parts[1] == u8"metros ba");
REQUIRE(parts[2] == u8"o exhaustiva lluvia y frío, añoraba a su queri");
REQUIRE(parts[3] == u8"o cachorro.");
REQUIRE(parts[0] == "El pingüino Wenceslao hizo kil");
REQUIRE(parts[1] == "metros ba");
REQUIRE(parts[2] == "o exhaustiva lluvia y frío, añoraba a su queri");
REQUIRE(parts[3] == "o cachorro.");
// TODO(gibbed): French
// TODO(gibbed): Irish Gaelic
@ -291,18 +291,18 @@ TEST_CASE("UTF-8 Split", "[utf8]") {
}
TEST_CASE("UTF-8 Equal Z", "[utf8]") {
REQUIRE(utf8::equal_z(u8"foo", u8"foo\0"));
REQUIRE_FALSE(utf8::equal_z(u8"bar", u8"baz\0"));
REQUIRE(utf8::equal_z("foo", "foo\0"));
REQUIRE_FALSE(utf8::equal_z("bar", "baz\0"));
}
TEST_CASE("UTF-8 Equal Case", "[utf8]") {
REQUIRE(utf8::equal_case(u8"foo", u8"foo\0"));
REQUIRE_FALSE(utf8::equal_case(u8"bar", u8"baz\0"));
REQUIRE(utf8::equal_case("foo", "foo\0"));
REQUIRE_FALSE(utf8::equal_case("bar", "baz\0"));
}
TEST_CASE("UTF-8 Equal Case Z", "[utf8]") {
REQUIRE(utf8::equal_case_z(u8"foo", u8"foo\0"));
REQUIRE_FALSE(utf8::equal_case_z(u8"bar", u8"baz\0"));
REQUIRE(utf8::equal_case_z("foo", "foo\0"));
REQUIRE_FALSE(utf8::equal_case_z("bar", "baz\0"));
}
// TODO(gibbed): find_any_of
@ -346,11 +346,11 @@ TEST_CASE("UTF-8 Equal Case Z", "[utf8]") {
} while (0)
TEST_CASE("UTF-8 Join Paths", "[utf8]") {
TEST_PATHS(utf8::join_paths, u8"");
TEST_PATHS(utf8::join_paths, u8"foo", u8"foo");
TEST_PATHS(utf8::join_paths, u8"foo/bar", u8"foo", u8"bar");
TEST_PATHS(utf8::join_paths, "X:/foo/bar/baz/qux", u8"X:", u8"foo", u8"bar",
u8"baz", u8"qux");
TEST_PATHS(utf8::join_paths, "");
TEST_PATHS(utf8::join_paths, "foo", "foo");
TEST_PATHS(utf8::join_paths, "foo/bar", "foo", "bar");
TEST_PATHS(utf8::join_paths, "X:/foo/bar/baz/qux", "X:", "foo", "bar", "baz",
"qux");
}
// TODO(gibbed): join_guest_paths

View File

@ -402,6 +402,7 @@ class Timer : public WaitHandle {
virtual bool Cancel() = 0;
};
#if XE_PLATFORM_WINDOWS
struct ThreadPriority {
static const int32_t kLowest = -2;
static const int32_t kBelowNormal = -1;
@ -409,6 +410,15 @@ struct ThreadPriority {
static const int32_t kAboveNormal = 1;
static const int32_t kHighest = 2;
};
#else
struct ThreadPriority {
static const int32_t kLowest = 1;
static const int32_t kBelowNormal = 8;
static const int32_t kNormal = 16;
static const int32_t kAboveNormal = 24;
static const int32_t kHighest = 32;
};
#endif
// Models a Win32-like thread object.
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms682453(v=vs.85).aspx

View File

@ -27,6 +27,8 @@
#include <ctime>
#include <memory>
#include "logging.h"
#if XE_PLATFORM_ANDROID
#include <dlfcn.h>
@ -660,8 +662,18 @@ class PosixCondition<Thread> : public PosixConditionBase {
WaitStarted();
sched_param param{};
param.sched_priority = new_priority;
if (pthread_setschedparam(thread_, SCHED_FIFO, &param) != 0)
assert_always();
int res = pthread_setschedparam(thread_, SCHED_FIFO, &param);
if (res != 0) {
switch (res) {
case EPERM:
XELOGW("Permission denied while setting priority");
break;
case EINVAL:
assert_always();
default:
XELOGW("Unknown error while setting priority");
}
}
}
void QueueUserCallback(std::function<void()> callback) {
@ -905,7 +917,7 @@ class PosixEvent : public PosixConditionHandle<Event> {
~PosixEvent() override = default;
void Set() override { handle_.Signal(); }
void Reset() override { handle_.Reset(); }
EventInfo Query() {
EventInfo Query() override {
EventInfo result{};
assert_always();
return result;

View File

@ -38,7 +38,12 @@ using WaitItem = TimerQueueWaitItem;
condition_variable::wait_until) but now builds
*/
using WaitStrat = dp::blocking_wait_strategy;
/*
edit2: (30.12.2024) After uplifting version of MSVC compiler Xenia cannot be
correctly initialized if you're using proton.
*/
using WaitStrat = dp::spin_wait_strategy;
class TimerQueue {
public:

View File

@ -469,7 +469,7 @@ bool ends_with_case(const std::string_view haystack,
}
std::vector<std::string_view> split_path(const std::string_view path) {
return split(path, u8"\\/", true);
return split(path, "\\/", true);
}
std::string join_paths(const std::string_view left_path,

View File

@ -99,7 +99,8 @@ class HIRBuilder {
void CommentFormat(const std::string_view format, const Args&... args) {
static const uint32_t kMaxCommentSize = 1024;
char* p = reinterpret_cast<char*>(arena_->Alloc(kMaxCommentSize, 1));
auto result = fmt::format_to_n(p, kMaxCommentSize - 1, format, args...);
auto result =
fmt::format_to_n(p, kMaxCommentSize - 1, fmt::runtime(format), args...);
p[result.size] = '\0';
size_t rewind = kMaxCommentSize - 1 - result.size;
arena_->Rewind(rewind);

View File

@ -433,17 +433,14 @@ typedef struct alignas(64) PPCContext_s {
template <typename T = uint8_t*>
inline T TranslateVirtual(uint32_t guest_address) XE_RESTRICT const {
static_assert(std::is_pointer_v<T>);
#if XE_PLATFORM_WIN32 == 1
uint8_t* host_address = virtual_membase + guest_address;
#if XE_PLATFORM_WIN32 == 1
if (guest_address >=
static_cast<uint32_t>(reinterpret_cast<uintptr_t>(this))) {
host_address += 0x1000;
}
return reinterpret_cast<T>(host_address);
#else
return processor->memory()->TranslateVirtual<T>(guest_address);
#endif
return reinterpret_cast<T>(host_address);
}
template <typename T>
inline xe::be<T>* TranslateVirtualBE(uint32_t guest_address)
@ -464,17 +461,14 @@ typedef struct alignas(64) PPCContext_s {
}
template <typename T>
inline uint32_t HostToGuestVirtual(T* host_ptr) XE_RESTRICT const {
#if XE_PLATFORM_WIN32 == 1
uint32_t guest_tmp = static_cast<uint32_t>(
reinterpret_cast<const uint8_t*>(host_ptr) - virtual_membase);
#if XE_PLATFORM_WIN32 == 1
if (guest_tmp >= static_cast<uint32_t>(reinterpret_cast<uintptr_t>(this))) {
guest_tmp -= 0x1000;
}
return guest_tmp;
#else
return processor->memory()->HostToGuestVirtual(
reinterpret_cast<void*>(host_ptr));
#endif
return guest_tmp;
}
static std::string GetRegisterName(PPCRegister reg);
std::string GetStringFromValue(PPCRegister reg) const;

View File

@ -57,15 +57,15 @@ Memory* PPCFrontend::memory() const { return processor_->memory(); }
// Checks the state of the global lock and sets scratch to the current MSR
// value.
void CheckGlobalLock(PPCContext* ppc_context, void* arg0, void* arg1) {
auto global_mutex = reinterpret_cast<xe_global_mutex*>(arg0);
auto global_mutex = reinterpret_cast<global_mutex_type*>(arg0);
auto global_lock_count = reinterpret_cast<int32_t*>(arg1);
std::lock_guard<xe_global_mutex> lock(*global_mutex);
std::lock_guard<global_mutex_type> lock(*global_mutex);
ppc_context->scratch = *global_lock_count ? 0 : 0x8000;
}
// Enters the global lock. Safe to recursion.
void EnterGlobalLock(PPCContext* ppc_context, void* arg0, void* arg1) {
auto global_mutex = reinterpret_cast<xe_global_mutex*>(arg0);
auto global_mutex = reinterpret_cast<global_mutex_type*>(arg0);
auto global_lock_count = reinterpret_cast<int32_t*>(arg1);
global_mutex->lock();
xe::atomic_inc(global_lock_count);
@ -73,7 +73,7 @@ void EnterGlobalLock(PPCContext* ppc_context, void* arg0, void* arg1) {
// Leaves the global lock. Safe to recursion.
void LeaveGlobalLock(PPCContext* ppc_context, void* arg0, void* arg1) {
auto global_mutex = reinterpret_cast<xe_global_mutex*>(arg0);
auto global_mutex = reinterpret_cast<global_mutex_type*>(arg0);
auto global_lock_count = reinterpret_cast<int32_t*>(arg1);
auto new_lock_count = xe::atomic_dec(global_lock_count);
assert_true(new_lock_count >= 0);

View File

@ -151,11 +151,15 @@ void PPCTranslator::DumpHIR(GuestFunction* function, PPCHIRBuilder* builder) {
{
wchar_t tmpbuf[64];
#ifdef XE_PLATFORM_WIN32
_snwprintf(tmpbuf, 64, L"%X", function->address());
#else
swprintf(tmpbuf, 64, L"%X", function->address());
#endif
folder_path.append(&tmpbuf[0]);
}
FILE* f = fopen(folder_path.generic_u8string().c_str(), "w");
FILE* f = fopen(folder_path.string().c_str(), "w");
if (f) {
fputs(buffer.buffer(), f);
fclose(f);

View File

@ -447,7 +447,7 @@ bool Processor::Restore(ByteStream* stream) {
std::vector<uint32_t> to_delete;
for (auto& it : thread_debug_infos_) {
if (it.second->state == ThreadDebugInfo::State::kZombie) {
it.second->thread_handle = NULL;
it.second->thread_handle = 0;
to_delete.push_back(it.first);
}
}
@ -502,7 +502,7 @@ void Processor::OnThreadDestroyed(uint32_t thread_id) {
auto global_lock = global_critical_region_.Acquire();
auto it = thread_debug_infos_.find(thread_id);
assert_true(it != thread_debug_infos_.end());
it->second->thread_handle = NULL;
it->second->thread_handle = 0;
thread_debug_infos_.erase(it);
}

View File

@ -1136,10 +1136,14 @@ void XexModule::Precompile() {
high_code);
final_image_sha_.finalize(image_sha_bytes_);
char fmtbuf[16];
char fmtbuf[20];
for (unsigned i = 0; i < 20; ++i) {
#ifdef XE_PLATFORM_WIN32
sprintf_s(fmtbuf, "%X", image_sha_bytes_[i]);
#else
snprintf(fmtbuf, sizeof(fmtbuf), "%X", image_sha_bytes_[i]);
#endif
image_sha_str_ += &fmtbuf[0];
}
@ -1397,6 +1401,10 @@ void XexInfoCache::Init(XexModule* xexmod) {
};
bool did_exist = try_open();
if (!GetHeader()) {
return;
}
if (!did_exist) {
GetHeader()->version = CURRENT_INFOCACHE_VERSION;

View File

@ -309,7 +309,7 @@ void DebugWindow::DrawToolbar() {
case cpu::ThreadDebugInfo::State::kAlive:
case cpu::ThreadDebugInfo::State::kExited:
case cpu::ThreadDebugInfo::State::kWaiting:
if (thread_info->thread_handle == NULL || thread_info->thread == NULL) {
if (!thread_info->thread_handle || thread_info->thread == nullptr) {
thread_combo.Append("(invalid)");
} else {
thread_combo.Append(thread_info->thread->thread_name());

View File

@ -451,7 +451,7 @@ Emulator::FileSignatureType Emulator::GetFileSignature(
}
char file_magic[header_size];
fread_s(file_magic, sizeof(file_magic), 1, header_size, file);
fread(file_magic, sizeof(file_magic), 1, file);
fourcc_t magic_value =
make_fourcc(file_magic[0], file_magic[1], file_magic[2], file_magic[3]);
@ -485,7 +485,7 @@ Emulator::FileSignatureType Emulator::GetFileSignature(
file = xe::filesystem::OpenFile(path, "rb");
xe::filesystem::Seek(file, -header_size, SEEK_END);
fread_s(file_magic, sizeof(file_magic), 1, header_size, file);
fread(file_magic, 1, header_size, file);
fclose(file);
magic_value =
@ -505,6 +505,7 @@ Emulator::FileSignatureType Emulator::GetFileSignature(
return FileSignatureType::XISO;
}
XELOGE("{}: {} ({:08X})", __func__, path.extension(), magic_value);
return FileSignatureType::Unknown;
}
@ -718,7 +719,7 @@ X_STATUS Emulator::DataMigration(const uint64_t xuid) {
const auto old_profile_data =
xe::filesystem::ListDirectories(title.path / title.name / "profile");
xe::filesystem::FileInfo& entry_to_copy = xe::filesystem::FileInfo();
xe::filesystem::FileInfo entry_to_copy = xe::filesystem::FileInfo();
if (old_profile_data.size() != 1) {
for (const auto& entry : old_profile_data) {
if (entry.name == "User") {
@ -835,8 +836,7 @@ X_STATUS Emulator::InstallContentPackage(
return error_code;
}
kernel_state()->BroadcastNotification(kXNotificationIDLiveContentInstalled,
0);
kernel_state()->BroadcastNotification(kXNotificationLiveContentInstalled, 0);
return error_code;
}
@ -938,8 +938,7 @@ X_STATUS Emulator::CreateZarchivePackage(
uint64_t total_bytes_read = 0;
while (total_bytes_read < file_size) {
uint64_t bytes_read =
fread_s(buffer.data(), buffer.size(), 1, buffer.size(), file);
uint64_t bytes_read = fread(buffer.data(), 1, buffer.size(), file);
total_bytes_read += bytes_read;
@ -1373,6 +1372,12 @@ X_STATUS Emulator::CompleteLaunch(const std::filesystem::path& path,
return X_STATUS_NOT_FOUND;
}
if (!module->is_executable()) {
kernel_state_->UnloadUserModule(module, false);
XELOGE("Failed to load user module {}", path);
return X_STATUS_NOT_SUPPORTED;
}
X_RESULT result = kernel_state_->ApplyTitleUpdate(module);
if (XFAILED(result)) {
XELOGE("Failed to apply title update! Cannot run module {}", path);

View File

@ -245,9 +245,8 @@ class Emulator {
ContentInstallationInfo& installation_info);
// Extract content of zar package to desired directory.
X_STATUS Emulator::ExtractZarchivePackage(
const std::filesystem::path& path,
const std::filesystem::path& extract_dir);
X_STATUS ExtractZarchivePackage(const std::filesystem::path& path,
const std::filesystem::path& extract_dir);
// Pack contents of a folder into a zar package.
X_STATUS CreateZarchivePackage(const std::filesystem::path& inputDirectory,

View File

@ -580,10 +580,17 @@ static inline void GetScissorTmpl(const RegisterFile& XE_RESTRICT regs,
__m128i pa_sc_scissor = _mm_setr_epi32(
pa_sc_screen_scissor_tl_tl_x, pa_sc_screen_scissor_tl_tl_y,
pa_sc_screen_scissor_br_br_x, pa_sc_screen_scissor_br_br_y);
#if XE_PLATFORM_WIN32
__m128i xyoffsetadd = _mm_cvtsi64x_si128(
static_cast<unsigned long long>(pa_sc_window_offset_window_x_offset) |
(static_cast<unsigned long long>(pa_sc_window_offset_window_y_offset)
<< 32));
#else
__m128i xyoffsetadd = _mm_cvtsi64_si128(
static_cast<unsigned long long>(pa_sc_window_offset_window_x_offset) |
(static_cast<unsigned long long>(pa_sc_window_offset_window_y_offset)
<< 32));
#endif
xyoffsetadd = _mm_unpacklo_epi64(xyoffsetadd, xyoffsetadd);
// chrispy: put this here to make it clear that the shift by 31 is extracting
// this field

View File

@ -100,7 +100,7 @@ constexpr bool IsPrimitivePolygonal(bool vgt_output_path_is_tessellation_enable,
return (primitive_polygonal_table & (1U << static_cast<uint32_t>(type))) != 0;
}
XE_FORCEINLINE
bool IsPrimitivePolygonal(const RegisterFile& regs) {
static bool IsPrimitivePolygonal(const RegisterFile& regs) {
return IsPrimitivePolygonal(
regs.Get<reg::VGT_OUTPUT_PATH_CNTL>().path_select ==
xenos::VGTOutputPath::kTessellationEnable,
@ -383,7 +383,7 @@ struct GetViewportInfoArgs {
depth_format = regs.Get<reg::RB_DEPTH_INFO>().depth_format;
}
XE_FORCEINLINE
bool operator==(const GetViewportInfoArgs& prev) {
bool operator==(const GetViewportInfoArgs& prev) const {
#if XE_ARCH_AMD64 == 0
bool result = true;

View File

@ -35,7 +35,7 @@ DEFINE_uint32(internal_display_resolution, 8,
"Allow games that support different resolutions to render "
"in a specific resolution.\n"
"This is not guaranteed to work with all games or improve "
"performance."
"performance.\n"
" 0=640x480\n"
" 1=640x576\n"
" 2=720x480\n"

View File

@ -137,10 +137,10 @@ ret
const BYTE adaptive_quad_hs[] =
{
68, 88, 66, 67, 239, 150,
141, 161, 148, 167, 208, 252,
147, 2, 216, 119, 8, 207,
171, 137, 1, 0, 0, 0,
68, 88, 66, 67, 0, 49,
254, 207, 7, 226, 142, 88,
58, 153, 74, 164, 217, 92,
228, 217, 1, 0, 0, 0,
40, 15, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
108, 10, 0, 0, 164, 10,
@ -151,7 +151,7 @@ const BYTE adaptive_quad_hs[] =
0, 0, 120, 0, 0, 0,
1, 0, 0, 0, 60, 0,
0, 0, 1, 5, 83, 72,
0, 5, 0, 0, 2, 10,
0, 133, 0, 0, 2, 10,
0, 0, 19, 19, 68, 37,
60, 0, 0, 0, 24, 0,
0, 0, 40, 0, 0, 0,

View File

@ -126,10 +126,10 @@ ret
const BYTE adaptive_triangle_hs[] =
{
68, 88, 66, 67, 213, 151,
26, 214, 48, 115, 215, 10,
67, 36, 129, 21, 5, 111,
231, 249, 1, 0, 0, 0,
68, 88, 66, 67, 23, 31,
135, 242, 139, 0, 67, 234,
147, 197, 58, 149, 230, 55,
78, 200, 1, 0, 0, 0,
88, 14, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
108, 10, 0, 0, 164, 10,
@ -140,7 +140,7 @@ const BYTE adaptive_triangle_hs[] =
0, 0, 120, 0, 0, 0,
1, 0, 0, 0, 60, 0,
0, 0, 1, 5, 83, 72,
0, 5, 0, 0, 2, 10,
0, 133, 0, 0, 2, 10,
0, 0, 19, 19, 68, 37,
60, 0, 0, 0, 24, 0,
0, 0, 40, 0, 0, 0,

View File

@ -86,10 +86,10 @@ ret
const BYTE apply_gamma_pwl_cs[] =
{
68, 88, 66, 67, 224, 86,
115, 97, 130, 102, 85, 194,
154, 33, 68, 74, 161, 205,
242, 94, 1, 0, 0, 0,
68, 88, 66, 67, 216, 254,
128, 39, 145, 111, 24, 167,
205, 48, 149, 231, 194, 70,
10, 2, 1, 0, 0, 0,
124, 7, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
20, 2, 0, 0, 36, 2,
@ -99,7 +99,7 @@ const BYTE apply_gamma_pwl_cs[] =
1, 0, 0, 0, 48, 1,
0, 0, 4, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
176, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -86,10 +86,10 @@ ret
const BYTE apply_gamma_pwl_fxaa_luma_cs[] =
{
68, 88, 66, 67, 13, 117,
49, 45, 162, 194, 216, 203,
130, 175, 100, 187, 97, 44,
87, 212, 1, 0, 0, 0,
68, 88, 66, 67, 144, 147,
164, 145, 237, 30, 63, 199,
209, 141, 165, 179, 222, 51,
196, 77, 1, 0, 0, 0,
144, 7, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
20, 2, 0, 0, 36, 2,
@ -99,7 +99,7 @@ const BYTE apply_gamma_pwl_fxaa_luma_cs[] =
1, 0, 0, 0, 48, 1,
0, 0, 4, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
176, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -69,10 +69,10 @@ ret
const BYTE apply_gamma_pwl_fxaa_luma_ps[] =
{
68, 88, 66, 67, 202, 241,
49, 179, 160, 182, 197, 116,
174, 174, 57, 216, 126, 205,
210, 129, 1, 0, 0, 0,
68, 88, 66, 67, 199, 175,
60, 63, 222, 134, 41, 40,
1, 21, 146, 104, 96, 211,
255, 31, 1, 0, 0, 0,
88, 6, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
28, 1, 0, 0, 80, 1,
@ -82,7 +82,7 @@ const BYTE apply_gamma_pwl_fxaa_luma_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
255, 255, 0, 133, 0, 0,
182, 0, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -68,10 +68,10 @@ ret
const BYTE apply_gamma_pwl_ps[] =
{
68, 88, 66, 67, 197, 255,
198, 206, 158, 112, 94, 186,
5, 215, 2, 4, 116, 239,
1, 249, 1, 0, 0, 0,
68, 88, 66, 67, 124, 98,
146, 19, 199, 178, 173, 92,
217, 215, 165, 57, 155, 61,
40, 93, 1, 0, 0, 0,
48, 6, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
28, 1, 0, 0, 80, 1,
@ -81,7 +81,7 @@ const BYTE apply_gamma_pwl_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
255, 255, 0, 133, 0, 0,
182, 0, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -65,10 +65,10 @@ ret
const BYTE apply_gamma_table_cs[] =
{
68, 88, 66, 67, 194, 111,
19, 70, 56, 133, 74, 123,
197, 56, 69, 13, 51, 156,
77, 169, 1, 0, 0, 0,
68, 88, 66, 67, 131, 225,
165, 239, 73, 214, 11, 5,
192, 88, 193, 33, 78, 98,
42, 232, 1, 0, 0, 0,
248, 4, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
20, 2, 0, 0, 36, 2,
@ -78,7 +78,7 @@ const BYTE apply_gamma_table_cs[] =
1, 0, 0, 0, 48, 1,
0, 0, 4, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
176, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -65,10 +65,10 @@ ret
const BYTE apply_gamma_table_fxaa_luma_cs[] =
{
68, 88, 66, 67, 200, 223,
77, 37, 216, 58, 189, 85,
119, 181, 101, 30, 54, 122,
180, 167, 1, 0, 0, 0,
68, 88, 66, 67, 246, 75,
101, 19, 41, 66, 89, 152,
232, 214, 90, 206, 82, 222,
225, 94, 1, 0, 0, 0,
12, 5, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
20, 2, 0, 0, 36, 2,
@ -78,7 +78,7 @@ const BYTE apply_gamma_table_fxaa_luma_cs[] =
1, 0, 0, 0, 48, 1,
0, 0, 4, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
176, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -48,10 +48,10 @@ ret
const BYTE apply_gamma_table_fxaa_luma_ps[] =
{
68, 88, 66, 67, 99, 93,
21, 205, 152, 99, 210, 93,
126, 200, 23, 156, 88, 34,
136, 17, 1, 0, 0, 0,
68, 88, 66, 67, 189, 65,
68, 108, 239, 236, 16, 193,
183, 186, 218, 151, 124, 58,
234, 186, 1, 0, 0, 0,
212, 3, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
28, 1, 0, 0, 80, 1,
@ -61,7 +61,7 @@ const BYTE apply_gamma_table_fxaa_luma_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
255, 255, 0, 133, 0, 0,
182, 0, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -48,10 +48,10 @@ ret
const BYTE apply_gamma_table_ps[] =
{
68, 88, 66, 67, 74, 64,
188, 148, 1, 73, 166, 187,
95, 221, 233, 140, 224, 9,
117, 169, 1, 0, 0, 0,
68, 88, 66, 67, 99, 130,
90, 60, 149, 84, 252, 141,
96, 154, 227, 201, 153, 201,
86, 168, 1, 0, 0, 0,
192, 3, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
28, 1, 0, 0, 80, 1,
@ -61,7 +61,7 @@ const BYTE apply_gamma_table_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
255, 255, 0, 133, 0, 0,
182, 0, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -44,10 +44,10 @@ ret
const BYTE clear_uint2_ps[] =
{
68, 88, 66, 67, 90, 79,
67, 15, 17, 175, 210, 170,
189, 222, 209, 228, 62, 31,
153, 246, 1, 0, 0, 0,
68, 88, 66, 67, 194, 54,
80, 88, 155, 18, 105, 158,
58, 100, 37, 116, 45, 73,
138, 148, 1, 0, 0, 0,
148, 2, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
88, 1, 0, 0, 104, 1,
@ -57,7 +57,7 @@ const BYTE clear_uint2_ps[] =
1, 0, 0, 0, 120, 0,
0, 0, 1, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
255, 255, 0, 133, 0, 0,
244, 0, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -124,10 +124,10 @@ ret
const BYTE continuous_quad_1cp_hs[] =
{
68, 88, 66, 67, 255, 166,
36, 40, 167, 89, 99, 45,
74, 91, 165, 30, 112, 56,
14, 246, 1, 0, 0, 0,
68, 88, 66, 67, 206, 90,
227, 215, 69, 99, 12, 92,
64, 125, 157, 249, 226, 117,
84, 162, 1, 0, 0, 0,
220, 13, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
108, 10, 0, 0, 160, 10,
@ -138,7 +138,7 @@ const BYTE continuous_quad_1cp_hs[] =
0, 0, 120, 0, 0, 0,
1, 0, 0, 0, 60, 0,
0, 0, 1, 5, 83, 72,
0, 5, 0, 0, 2, 10,
0, 133, 0, 0, 2, 10,
0, 0, 19, 19, 68, 37,
60, 0, 0, 0, 24, 0,
0, 0, 40, 0, 0, 0,

View File

@ -119,10 +119,10 @@ ret
const BYTE continuous_quad_4cp_hs[] =
{
68, 88, 66, 67, 196, 234,
51, 156, 242, 124, 98, 132,
34, 110, 229, 40, 64, 181,
146, 55, 1, 0, 0, 0,
68, 88, 66, 67, 116, 234,
162, 93, 170, 248, 70, 214,
249, 172, 236, 197, 214, 102,
6, 251, 1, 0, 0, 0,
160, 13, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
108, 10, 0, 0, 160, 10,
@ -133,7 +133,7 @@ const BYTE continuous_quad_4cp_hs[] =
0, 0, 120, 0, 0, 0,
1, 0, 0, 0, 60, 0,
0, 0, 1, 5, 83, 72,
0, 5, 0, 0, 2, 10,
0, 133, 0, 0, 2, 10,
0, 0, 19, 19, 68, 37,
60, 0, 0, 0, 24, 0,
0, 0, 40, 0, 0, 0,

View File

@ -115,10 +115,10 @@ ret
const BYTE continuous_triangle_1cp_hs[] =
{
68, 88, 66, 67, 90, 24,
246, 119, 168, 170, 239, 21,
106, 76, 181, 188, 133, 81,
250, 172, 1, 0, 0, 0,
68, 88, 66, 67, 13, 212,
235, 60, 218, 159, 42, 97,
152, 254, 136, 238, 157, 239,
254, 239, 1, 0, 0, 0,
76, 13, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
108, 10, 0, 0, 160, 10,
@ -129,7 +129,7 @@ const BYTE continuous_triangle_1cp_hs[] =
0, 0, 120, 0, 0, 0,
1, 0, 0, 0, 60, 0,
0, 0, 1, 5, 83, 72,
0, 5, 0, 0, 2, 10,
0, 133, 0, 0, 2, 10,
0, 0, 19, 19, 68, 37,
60, 0, 0, 0, 24, 0,
0, 0, 40, 0, 0, 0,

View File

@ -110,10 +110,10 @@ ret
const BYTE continuous_triangle_3cp_hs[] =
{
68, 88, 66, 67, 40, 16,
64, 130, 119, 149, 137, 0,
58, 149, 234, 138, 51, 145,
29, 76, 1, 0, 0, 0,
68, 88, 66, 67, 233, 113,
225, 202, 114, 220, 63, 59,
58, 73, 218, 180, 26, 36,
239, 144, 1, 0, 0, 0,
16, 13, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
108, 10, 0, 0, 160, 10,
@ -124,7 +124,7 @@ const BYTE continuous_triangle_3cp_hs[] =
0, 0, 120, 0, 0, 0,
1, 0, 0, 0, 60, 0,
0, 0, 1, 5, 83, 72,
0, 5, 0, 0, 2, 10,
0, 133, 0, 0, 2, 10,
0, 0, 19, 19, 68, 37,
60, 0, 0, 0, 24, 0,
0, 0, 40, 0, 0, 0,

View File

@ -124,10 +124,10 @@ ret
const BYTE discrete_quad_1cp_hs[] =
{
68, 88, 66, 67, 166, 226,
56, 134, 119, 149, 47, 144,
135, 3, 42, 236, 243, 129,
164, 56, 1, 0, 0, 0,
68, 88, 66, 67, 165, 52,
204, 204, 194, 155, 13, 103,
80, 123, 212, 59, 251, 122,
105, 248, 1, 0, 0, 0,
220, 13, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
108, 10, 0, 0, 160, 10,
@ -138,7 +138,7 @@ const BYTE discrete_quad_1cp_hs[] =
0, 0, 120, 0, 0, 0,
1, 0, 0, 0, 60, 0,
0, 0, 1, 5, 83, 72,
0, 5, 0, 0, 2, 10,
0, 133, 0, 0, 2, 10,
0, 0, 19, 19, 68, 37,
60, 0, 0, 0, 24, 0,
0, 0, 40, 0, 0, 0,

View File

@ -119,10 +119,10 @@ ret
const BYTE discrete_quad_4cp_hs[] =
{
68, 88, 66, 67, 192, 34,
77, 20, 70, 107, 155, 33,
163, 40, 168, 219, 244, 3,
133, 198, 1, 0, 0, 0,
68, 88, 66, 67, 16, 87,
236, 218, 198, 66, 71, 54,
132, 21, 151, 76, 65, 105,
141, 150, 1, 0, 0, 0,
160, 13, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
108, 10, 0, 0, 160, 10,
@ -133,7 +133,7 @@ const BYTE discrete_quad_4cp_hs[] =
0, 0, 120, 0, 0, 0,
1, 0, 0, 0, 60, 0,
0, 0, 1, 5, 83, 72,
0, 5, 0, 0, 2, 10,
0, 133, 0, 0, 2, 10,
0, 0, 19, 19, 68, 37,
60, 0, 0, 0, 24, 0,
0, 0, 40, 0, 0, 0,

View File

@ -115,10 +115,10 @@ ret
const BYTE discrete_triangle_1cp_hs[] =
{
68, 88, 66, 67, 227, 140,
35, 65, 156, 178, 224, 139,
122, 75, 128, 231, 90, 78,
65, 91, 1, 0, 0, 0,
68, 88, 66, 67, 197, 229,
159, 30, 194, 0, 153, 220,
42, 21, 139, 137, 89, 30,
193, 158, 1, 0, 0, 0,
76, 13, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
108, 10, 0, 0, 160, 10,
@ -129,7 +129,7 @@ const BYTE discrete_triangle_1cp_hs[] =
0, 0, 120, 0, 0, 0,
1, 0, 0, 0, 60, 0,
0, 0, 1, 5, 83, 72,
0, 5, 0, 0, 2, 10,
0, 133, 0, 0, 2, 10,
0, 0, 19, 19, 68, 37,
60, 0, 0, 0, 24, 0,
0, 0, 40, 0, 0, 0,

View File

@ -110,10 +110,10 @@ ret
const BYTE discrete_triangle_3cp_hs[] =
{
68, 88, 66, 67, 159, 101,
17, 163, 1, 25, 162, 203,
87, 30, 32, 90, 1, 126,
212, 108, 1, 0, 0, 0,
68, 88, 66, 67, 139, 223,
191, 44, 68, 98, 126, 144,
126, 96, 85, 110, 153, 205,
210, 160, 1, 0, 0, 0,
16, 13, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0,
108, 10, 0, 0, 160, 10,
@ -124,7 +124,7 @@ const BYTE discrete_triangle_3cp_hs[] =
0, 0, 120, 0, 0, 0,
1, 0, 0, 0, 60, 0,
0, 0, 1, 5, 83, 72,
0, 5, 0, 0, 2, 10,
0, 133, 0, 0, 2, 10,
0, 0, 19, 19, 68, 37,
60, 0, 0, 0, 24, 0,
0, 0, 40, 0, 0, 0,

View File

@ -76,10 +76,10 @@ ret
const BYTE float24_round_ps[] =
{
68, 88, 66, 67, 110, 79,
84, 202, 151, 165, 237, 180,
64, 17, 0, 132, 236, 126,
142, 105, 1, 0, 0, 0,
68, 88, 66, 67, 64, 39,
206, 8, 59, 85, 177, 234,
153, 70, 208, 137, 67, 218,
238, 76, 1, 0, 0, 0,
8, 7, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
160, 0, 0, 0, 120, 2,
@ -89,7 +89,7 @@ const BYTE float24_round_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
255, 255, 0, 133, 0, 0,
60, 0, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -58,10 +58,10 @@ ret
const BYTE float24_truncate_ps[] =
{
68, 88, 66, 67, 234, 72,
187, 196, 185, 155, 10, 179,
119, 204, 17, 88, 131, 142,
107, 205, 1, 0, 0, 0,
68, 88, 66, 67, 132, 69,
218, 124, 229, 21, 139, 154,
8, 62, 140, 60, 17, 113,
79, 185, 1, 0, 0, 0,
140, 4, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
160, 0, 0, 0, 120, 2,
@ -71,7 +71,7 @@ const BYTE float24_truncate_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
255, 255, 0, 133, 0, 0,
60, 0, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -34,10 +34,10 @@ ret
const BYTE fullscreen_cw_vs[] =
{
68, 88, 66, 67, 38, 212,
32, 171, 28, 206, 206, 51,
24, 105, 112, 99, 117, 136,
1, 11, 1, 0, 0, 0,
68, 88, 66, 67, 44, 184,
116, 45, 104, 233, 243, 190,
18, 64, 10, 59, 205, 210,
158, 233, 1, 0, 0, 0,
172, 2, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
160, 0, 0, 0, 212, 0,
@ -47,7 +47,7 @@ const BYTE fullscreen_cw_vs[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
60, 0, 0, 0, 1, 5,
254, 255, 0, 5, 0, 0,
254, 255, 0, 133, 0, 0,
60, 0, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -255,10 +255,10 @@ ret
const BYTE fxaa_cs[] =
{
68, 88, 66, 67, 166, 45,
113, 211, 255, 20, 36, 199,
11, 156, 236, 21, 81, 60,
246, 32, 1, 0, 0, 0,
68, 88, 66, 67, 234, 25,
97, 122, 217, 161, 28, 166,
44, 124, 67, 127, 168, 53,
80, 76, 1, 0, 0, 0,
184, 23, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
108, 2, 0, 0, 124, 2,
@ -268,7 +268,7 @@ const BYTE fxaa_cs[] =
1, 0, 0, 0, 44, 1,
0, 0, 4, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
8, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -414,10 +414,10 @@ ret
const BYTE fxaa_extreme_cs[] =
{
68, 88, 66, 67, 201, 241,
80, 129, 142, 182, 61, 91,
66, 45, 161, 133, 204, 62,
115, 180, 1, 0, 0, 0,
68, 88, 66, 67, 189, 16,
199, 186, 6, 75, 163, 251,
13, 224, 187, 185, 58, 37,
113, 27, 1, 0, 0, 0,
16, 36, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
108, 2, 0, 0, 124, 2,
@ -427,7 +427,7 @@ const BYTE fxaa_extreme_cs[] =
1, 0, 0, 0, 44, 1,
0, 0, 4, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
8, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -97,10 +97,10 @@ ret
const BYTE host_depth_store_1xmsaa_cs[] =
{
68, 88, 66, 67, 101, 185,
244, 76, 135, 30, 168, 205,
168, 156, 87, 250, 159, 201,
167, 249, 1, 0, 0, 0,
68, 88, 66, 67, 161, 227,
233, 121, 97, 254, 51, 119,
190, 57, 209, 105, 124, 108,
179, 206, 1, 0, 0, 0,
124, 9, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
52, 2, 0, 0, 68, 2,
@ -110,7 +110,7 @@ const BYTE host_depth_store_1xmsaa_cs[] =
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
206, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -104,10 +104,10 @@ ret
const BYTE host_depth_store_2xmsaa_cs[] =
{
68, 88, 66, 67, 53, 229,
11, 82, 42, 106, 228, 206,
117, 28, 155, 89, 148, 73,
155, 130, 1, 0, 0, 0,
68, 88, 66, 67, 46, 135,
107, 134, 178, 146, 139, 212,
88, 98, 218, 32, 150, 184,
131, 165, 1, 0, 0, 0,
168, 10, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
52, 2, 0, 0, 68, 2,
@ -117,7 +117,7 @@ const BYTE host_depth_store_2xmsaa_cs[] =
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
206, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -92,10 +92,10 @@ ret
const BYTE host_depth_store_4xmsaa_cs[] =
{
68, 88, 66, 67, 120, 97,
118, 77, 173, 221, 208, 245,
112, 230, 146, 134, 208, 200,
185, 147, 1, 0, 0, 0,
68, 88, 66, 67, 13, 254,
100, 95, 154, 193, 218, 107,
161, 243, 181, 246, 172, 149,
175, 158, 1, 0, 0, 0,
92, 9, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
52, 2, 0, 0, 68, 2,
@ -105,7 +105,7 @@ const BYTE host_depth_store_4xmsaa_cs[] =
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
206, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -29,10 +29,10 @@ ret
const BYTE passthrough_position_xy_vs[] =
{
68, 88, 66, 67, 92, 220,
0, 199, 190, 67, 183, 153,
171, 192, 4, 39, 67, 55,
215, 255, 1, 0, 0, 0,
68, 88, 66, 67, 199, 174,
221, 195, 135, 63, 20, 78,
116, 2, 21, 180, 142, 169,
188, 83, 1, 0, 0, 0,
12, 2, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
160, 0, 0, 0, 212, 0,
@ -42,7 +42,7 @@ const BYTE passthrough_position_xy_vs[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
60, 0, 0, 0, 1, 5,
254, 255, 0, 5, 0, 0,
254, 255, 0, 133, 0, 0,
60, 0, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -81,10 +81,10 @@ ret
const BYTE resolve_clear_32bpp_cs[] =
{
68, 88, 66, 67, 38, 122,
202, 153, 251, 58, 216, 106,
227, 253, 80, 133, 51, 242,
143, 213, 1, 0, 0, 0,
68, 88, 66, 67, 242, 56,
37, 146, 241, 170, 87, 58,
104, 64, 59, 215, 78, 157,
200, 12, 1, 0, 0, 0,
156, 7, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
68, 2, 0, 0, 84, 2,
@ -94,7 +94,7 @@ const BYTE resolve_clear_32bpp_cs[] =
1, 0, 0, 0, 176, 0,
0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
223, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -88,10 +88,10 @@ ret
const BYTE resolve_clear_32bpp_scaled_cs[] =
{
68, 88, 66, 67, 45, 106,
14, 236, 43, 234, 238, 250,
95, 188, 122, 214, 173, 229,
247, 237, 1, 0, 0, 0,
68, 88, 66, 67, 137, 148,
183, 219, 159, 236, 93, 184,
74, 106, 30, 84, 239, 115,
151, 93, 1, 0, 0, 0,
84, 8, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
68, 2, 0, 0, 84, 2,
@ -101,7 +101,7 @@ const BYTE resolve_clear_32bpp_scaled_cs[] =
1, 0, 0, 0, 176, 0,
0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
223, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -80,10 +80,10 @@ ret
const BYTE resolve_clear_64bpp_cs[] =
{
68, 88, 66, 67, 221, 142,
107, 167, 120, 242, 181, 185,
59, 248, 177, 166, 145, 243,
207, 105, 1, 0, 0, 0,
68, 88, 66, 67, 244, 52,
88, 6, 32, 217, 210, 208,
195, 116, 194, 24, 57, 186,
18, 39, 1, 0, 0, 0,
184, 7, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
68, 2, 0, 0, 84, 2,
@ -93,7 +93,7 @@ const BYTE resolve_clear_64bpp_cs[] =
1, 0, 0, 0, 176, 0,
0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
223, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -86,10 +86,10 @@ ret
const BYTE resolve_clear_64bpp_scaled_cs[] =
{
68, 88, 66, 67, 253, 175,
96, 159, 160, 58, 235, 9,
160, 146, 61, 232, 29, 141,
206, 165, 1, 0, 0, 0,
68, 88, 66, 67, 238, 76,
127, 8, 220, 198, 215, 236,
76, 99, 221, 185, 146, 251,
171, 23, 1, 0, 0, 0,
92, 8, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
68, 2, 0, 0, 84, 2,
@ -99,7 +99,7 @@ const BYTE resolve_clear_64bpp_scaled_cs[] =
1, 0, 0, 0, 176, 0,
0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
223, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -212,10 +212,10 @@ ret
const BYTE resolve_fast_32bpp_1x2xmsaa_cs[] =
{
68, 88, 66, 67, 41, 182,
19, 66, 20, 173, 174, 127,
172, 66, 27, 72, 227, 5,
193, 244, 1, 0, 0, 0,
68, 88, 66, 67, 69, 61,
230, 206, 236, 167, 194, 20,
192, 231, 1, 107, 134, 248,
167, 178, 1, 0, 0, 0,
112, 24, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
212, 2, 0, 0, 228, 2,
@ -225,7 +225,7 @@ const BYTE resolve_fast_32bpp_1x2xmsaa_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
109, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -268,10 +268,10 @@ ret
const BYTE resolve_fast_32bpp_1x2xmsaa_scaled_cs[] =
{
68, 88, 66, 67, 140, 139,
208, 26, 49, 227, 94, 97,
132, 210, 183, 43, 19, 110,
110, 29, 1, 0, 0, 0,
68, 88, 66, 67, 250, 154,
186, 234, 43, 128, 10, 180,
20, 122, 131, 199, 198, 115,
22, 134, 1, 0, 0, 0,
16, 30, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
148, 2, 0, 0, 164, 2,
@ -281,7 +281,7 @@ const BYTE resolve_fast_32bpp_1x2xmsaa_scaled_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
48, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -225,10 +225,10 @@ ret
const BYTE resolve_fast_32bpp_4xmsaa_cs[] =
{
68, 88, 66, 67, 61, 130,
57, 198, 179, 109, 109, 15,
76, 38, 59, 56, 155, 60,
217, 88, 1, 0, 0, 0,
68, 88, 66, 67, 126, 14,
216, 72, 60, 85, 35, 5,
165, 244, 122, 140, 153, 26,
53, 56, 1, 0, 0, 0,
200, 25, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
212, 2, 0, 0, 228, 2,
@ -238,7 +238,7 @@ const BYTE resolve_fast_32bpp_4xmsaa_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
109, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -283,10 +283,10 @@ ret
const BYTE resolve_fast_32bpp_4xmsaa_scaled_cs[] =
{
68, 88, 66, 67, 174, 152,
114, 154, 173, 135, 151, 111,
177, 182, 183, 183, 204, 11,
136, 150, 1, 0, 0, 0,
68, 88, 66, 67, 223, 67,
170, 172, 170, 38, 212, 67,
225, 18, 41, 139, 127, 103,
228, 92, 1, 0, 0, 0,
144, 31, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
148, 2, 0, 0, 164, 2,
@ -296,7 +296,7 @@ const BYTE resolve_fast_32bpp_4xmsaa_scaled_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
48, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -201,10 +201,10 @@ ret
const BYTE resolve_fast_64bpp_1x2xmsaa_cs[] =
{
68, 88, 66, 67, 192, 144,
23, 122, 155, 1, 243, 31,
7, 21, 111, 51, 35, 67,
95, 205, 1, 0, 0, 0,
68, 88, 66, 67, 174, 50,
215, 28, 233, 100, 239, 50,
29, 250, 114, 91, 70, 217,
48, 100, 1, 0, 0, 0,
4, 23, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
212, 2, 0, 0, 228, 2,
@ -214,7 +214,7 @@ const BYTE resolve_fast_64bpp_1x2xmsaa_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
109, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -256,10 +256,10 @@ ret
const BYTE resolve_fast_64bpp_1x2xmsaa_scaled_cs[] =
{
68, 88, 66, 67, 229, 216,
127, 11, 179, 132, 148, 134,
14, 252, 107, 90, 151, 209,
147, 95, 1, 0, 0, 0,
68, 88, 66, 67, 74, 212,
250, 250, 179, 209, 110, 130,
218, 196, 204, 34, 97, 239,
156, 36, 1, 0, 0, 0,
32, 28, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
148, 2, 0, 0, 164, 2,
@ -269,7 +269,7 @@ const BYTE resolve_fast_64bpp_1x2xmsaa_scaled_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
48, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -204,10 +204,10 @@ ret
const BYTE resolve_fast_64bpp_4xmsaa_cs[] =
{
68, 88, 66, 67, 6, 199,
117, 199, 39, 84, 191, 46,
132, 102, 38, 210, 189, 154,
94, 57, 1, 0, 0, 0,
68, 88, 66, 67, 160, 242,
111, 151, 72, 169, 167, 62,
73, 89, 60, 230, 235, 221,
207, 206, 1, 0, 0, 0,
76, 23, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
212, 2, 0, 0, 228, 2,
@ -217,7 +217,7 @@ const BYTE resolve_fast_64bpp_4xmsaa_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
109, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -257,10 +257,10 @@ ret
const BYTE resolve_fast_64bpp_4xmsaa_scaled_cs[] =
{
68, 88, 66, 67, 104, 87,
183, 27, 147, 240, 163, 194,
4, 176, 73, 155, 224, 235,
183, 137, 1, 0, 0, 0,
68, 88, 66, 67, 110, 75,
18, 255, 5, 26, 244, 181,
119, 164, 197, 69, 18, 195,
132, 50, 1, 0, 0, 0,
64, 28, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
148, 2, 0, 0, 164, 2,
@ -270,7 +270,7 @@ const BYTE resolve_fast_64bpp_4xmsaa_scaled_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
48, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -820,10 +820,10 @@ ret
const BYTE resolve_full_128bpp_cs[] =
{
68, 88, 66, 67, 178, 0,
7, 93, 193, 87, 76, 171,
220, 111, 5, 73, 206, 3,
33, 68, 1, 0, 0, 0,
68, 88, 66, 67, 243, 105,
161, 203, 44, 157, 147, 173,
137, 221, 162, 79, 164, 199,
251, 145, 1, 0, 0, 0,
60, 89, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
212, 2, 0, 0, 228, 2,
@ -833,7 +833,7 @@ const BYTE resolve_full_128bpp_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
109, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -861,10 +861,10 @@ ret
const BYTE resolve_full_128bpp_scaled_cs[] =
{
68, 88, 66, 67, 222, 231,
24, 101, 69, 158, 231, 93,
157, 64, 249, 12, 108, 158,
86, 115, 1, 0, 0, 0,
68, 88, 66, 67, 206, 58,
117, 119, 243, 116, 185, 199,
121, 104, 158, 144, 238, 166,
124, 84, 1, 0, 0, 0,
248, 92, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
148, 2, 0, 0, 164, 2,
@ -874,7 +874,7 @@ const BYTE resolve_full_128bpp_scaled_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
48, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -1379,10 +1379,10 @@ ret
const BYTE resolve_full_16bpp_cs[] =
{
68, 88, 66, 67, 15, 204,
240, 251, 250, 135, 91, 185,
160, 221, 77, 213, 71, 102,
252, 79, 1, 0, 0, 0,
68, 88, 66, 67, 90, 19,
195, 232, 171, 15, 99, 163,
133, 62, 77, 129, 122, 77,
35, 6, 1, 0, 0, 0,
4, 162, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
212, 2, 0, 0, 228, 2,
@ -1392,7 +1392,7 @@ const BYTE resolve_full_16bpp_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
109, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -1405,10 +1405,10 @@ ret
const BYTE resolve_full_16bpp_scaled_cs[] =
{
68, 88, 66, 67, 6, 134,
89, 179, 240, 20, 103, 34,
167, 211, 125, 178, 23, 5,
125, 86, 1, 0, 0, 0,
68, 88, 66, 67, 165, 201,
9, 237, 42, 145, 208, 208,
166, 88, 189, 126, 25, 208,
212, 86, 1, 0, 0, 0,
84, 164, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
148, 2, 0, 0, 164, 2,
@ -1418,7 +1418,7 @@ const BYTE resolve_full_16bpp_scaled_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
48, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -1382,10 +1382,10 @@ ret
const BYTE resolve_full_32bpp_cs[] =
{
68, 88, 66, 67, 24, 109,
106, 69, 151, 197, 239, 147,
13, 237, 219, 141, 142, 249,
135, 22, 1, 0, 0, 0,
68, 88, 66, 67, 216, 251,
80, 149, 52, 146, 11, 112,
21, 58, 223, 98, 132, 210,
18, 46, 1, 0, 0, 0,
124, 161, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
212, 2, 0, 0, 228, 2,
@ -1395,7 +1395,7 @@ const BYTE resolve_full_32bpp_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
109, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -1417,10 +1417,10 @@ ret
const BYTE resolve_full_32bpp_scaled_cs[] =
{
68, 88, 66, 67, 6, 158,
174, 163, 148, 166, 215, 79,
210, 99, 73, 246, 195, 105,
236, 221, 1, 0, 0, 0,
68, 88, 66, 67, 10, 183,
21, 150, 28, 233, 176, 36,
104, 199, 234, 41, 222, 157,
143, 7, 1, 0, 0, 0,
40, 165, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
148, 2, 0, 0, 164, 2,
@ -1430,7 +1430,7 @@ const BYTE resolve_full_32bpp_scaled_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
48, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -1305,10 +1305,10 @@ ret
const BYTE resolve_full_64bpp_cs[] =
{
68, 88, 66, 67, 234, 38,
21, 182, 35, 183, 202, 36,
185, 118, 54, 144, 47, 172,
196, 130, 1, 0, 0, 0,
68, 88, 66, 67, 11, 91,
96, 77, 52, 218, 24, 240,
13, 35, 76, 178, 155, 232,
143, 247, 1, 0, 0, 0,
196, 151, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
212, 2, 0, 0, 228, 2,
@ -1318,7 +1318,7 @@ const BYTE resolve_full_64bpp_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
109, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -1360,10 +1360,10 @@ ret
const BYTE resolve_full_64bpp_scaled_cs[] =
{
68, 88, 66, 67, 41, 45,
91, 69, 195, 67, 185, 148,
31, 95, 228, 114, 40, 107,
156, 11, 1, 0, 0, 0,
68, 88, 66, 67, 213, 152,
155, 83, 165, 187, 140, 156,
83, 189, 69, 17, 39, 68,
4, 48, 1, 0, 0, 0,
32, 157, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
148, 2, 0, 0, 164, 2,
@ -1373,7 +1373,7 @@ const BYTE resolve_full_64bpp_scaled_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
48, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -695,10 +695,10 @@ ret
const BYTE resolve_full_8bpp_cs[] =
{
68, 88, 66, 67, 2, 204,
123, 70, 73, 201, 165, 174,
146, 180, 140, 190, 189, 134,
130, 203, 1, 0, 0, 0,
68, 88, 66, 67, 170, 125,
111, 197, 94, 88, 50, 97,
193, 240, 170, 21, 252, 155,
22, 147, 1, 0, 0, 0,
8, 79, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
212, 2, 0, 0, 228, 2,
@ -708,7 +708,7 @@ const BYTE resolve_full_8bpp_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
109, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -725,10 +725,10 @@ ret
const BYTE resolve_full_8bpp_scaled_cs[] =
{
68, 88, 66, 67, 90, 249,
142, 22, 19, 168, 112, 241,
237, 28, 119, 238, 127, 22,
182, 131, 1, 0, 0, 0,
68, 88, 66, 67, 167, 147,
84, 169, 74, 18, 10, 109,
215, 133, 87, 239, 210, 155,
89, 172, 1, 0, 0, 0,
12, 82, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
148, 2, 0, 0, 164, 2,
@ -738,7 +738,7 @@ const BYTE resolve_full_8bpp_scaled_cs[] =
1, 0, 0, 0, 232, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
48, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -92,10 +92,10 @@ ret
const BYTE tessellation_adaptive_vs[] =
{
68, 88, 66, 67, 124, 10,
20, 236, 52, 205, 17, 163,
29, 96, 4, 68, 69, 43,
2, 171, 1, 0, 0, 0,
68, 88, 66, 67, 51, 131,
48, 166, 55, 165, 29, 103,
39, 9, 168, 190, 39, 245,
38, 139, 1, 0, 0, 0,
116, 13, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
104, 10, 0, 0, 156, 10,
@ -105,7 +105,7 @@ const BYTE tessellation_adaptive_vs[] =
1, 0, 0, 0, 120, 0,
0, 0, 1, 0, 0, 0,
60, 0, 0, 0, 1, 5,
254, 255, 0, 5, 0, 0,
254, 255, 0, 133, 0, 0,
2, 10, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -94,10 +94,10 @@ ret
const BYTE tessellation_indexed_vs[] =
{
68, 88, 66, 67, 72, 50,
55, 79, 78, 232, 44, 71,
22, 110, 232, 129, 83, 139,
178, 150, 1, 0, 0, 0,
68, 88, 66, 67, 15, 204,
253, 55, 194, 237, 44, 241,
152, 177, 62, 72, 200, 136,
71, 87, 1, 0, 0, 0,
168, 13, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
104, 10, 0, 0, 156, 10,
@ -107,7 +107,7 @@ const BYTE tessellation_indexed_vs[] =
1, 0, 0, 0, 120, 0,
0, 0, 1, 0, 0, 0,
60, 0, 0, 0, 1, 5,
254, 255, 0, 5, 0, 0,
254, 255, 0, 133, 0, 0,
2, 10, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -163,10 +163,10 @@ ret
const BYTE texture_load_128bpb_cs[] =
{
68, 88, 66, 67, 214, 5,
60, 162, 112, 238, 140, 124,
69, 240, 120, 85, 46, 219,
21, 16, 1, 0, 0, 0,
68, 88, 66, 67, 19, 157,
64, 131, 194, 104, 62, 170,
5, 8, 83, 246, 27, 104,
208, 60, 1, 0, 0, 0,
60, 19, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
32, 4, 0, 0, 48, 4,
@ -176,7 +176,7 @@ const BYTE texture_load_128bpb_cs[] =
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
185, 3, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -175,10 +175,10 @@ ret
const BYTE texture_load_128bpb_scaled_cs[] =
{
68, 88, 66, 67, 2, 93,
246, 169, 167, 35, 22, 113,
86, 71, 151, 78, 19, 158,
93, 30, 1, 0, 0, 0,
68, 88, 66, 67, 239, 32,
185, 13, 52, 17, 210, 99,
159, 172, 128, 200, 222, 110,
235, 68, 1, 0, 0, 0,
152, 20, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
32, 4, 0, 0, 48, 4,
@ -188,7 +188,7 @@ const BYTE texture_load_128bpb_scaled_cs[] =
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
185, 3, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -150,10 +150,10 @@ ret
const BYTE texture_load_16bpb_cs[] =
{
68, 88, 66, 67, 73, 16,
123, 255, 162, 124, 173, 250,
64, 86, 176, 231, 12, 30,
104, 106, 1, 0, 0, 0,
68, 88, 66, 67, 119, 44,
2, 27, 190, 250, 74, 203,
156, 172, 80, 110, 130, 201,
27, 67, 1, 0, 0, 0,
12, 17, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
32, 4, 0, 0, 48, 4,
@ -163,7 +163,7 @@ const BYTE texture_load_16bpb_cs[] =
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
185, 3, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -163,10 +163,10 @@ ret
const BYTE texture_load_16bpb_scaled_cs[] =
{
68, 88, 66, 67, 141, 51,
224, 251, 47, 151, 104, 124,
111, 32, 127, 61, 80, 208,
82, 135, 1, 0, 0, 0,
68, 88, 66, 67, 125, 131,
50, 17, 90, 73, 56, 139,
54, 4, 153, 37, 110, 121,
169, 214, 1, 0, 0, 0,
248, 18, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
32, 4, 0, 0, 48, 4,
@ -176,7 +176,7 @@ const BYTE texture_load_16bpb_scaled_cs[] =
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
185, 3, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -160,10 +160,10 @@ ret
const BYTE texture_load_32bpb_cs[] =
{
68, 88, 66, 67, 98, 145,
5, 109, 30, 253, 21, 117,
87, 178, 144, 179, 200, 55,
152, 199, 1, 0, 0, 0,
68, 88, 66, 67, 249, 168,
77, 87, 108, 105, 4, 198,
110, 34, 54, 207, 21, 252,
168, 88, 1, 0, 0, 0,
172, 18, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
32, 4, 0, 0, 48, 4,
@ -173,7 +173,7 @@ const BYTE texture_load_32bpb_cs[] =
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
185, 3, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -180,10 +180,10 @@ ret
const BYTE texture_load_32bpb_scaled_cs[] =
{
68, 88, 66, 67, 15, 4,
168, 189, 89, 191, 242, 60,
93, 52, 119, 44, 148, 60,
94, 250, 1, 0, 0, 0,
68, 88, 66, 67, 242, 85,
13, 17, 241, 171, 79, 137,
167, 69, 8, 122, 31, 47,
43, 244, 1, 0, 0, 0,
100, 21, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
32, 4, 0, 0, 48, 4,
@ -193,7 +193,7 @@ const BYTE texture_load_32bpb_scaled_cs[] =
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
185, 3, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

View File

@ -163,10 +163,10 @@ ret
const BYTE texture_load_64bpb_cs[] =
{
68, 88, 66, 67, 142, 143,
217, 179, 11, 88, 188, 57,
121, 245, 128, 245, 106, 9,
187, 232, 1, 0, 0, 0,
68, 88, 66, 67, 107, 51,
156, 193, 167, 181, 132, 61,
74, 39, 227, 113, 168, 24,
241, 170, 1, 0, 0, 0,
72, 19, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
32, 4, 0, 0, 48, 4,
@ -176,7 +176,7 @@ const BYTE texture_load_64bpb_cs[] =
1, 0, 0, 0, 252, 0,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
83, 67, 0, 5, 0, 0,
83, 67, 0, 133, 0, 0,
185, 3, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,

Some files were not shown because too many files have changed in this diff Show More