Compare commits
61 Commits
238bda1a87
...
c9a70cab65
Author | SHA1 | Date |
---|---|---|
Xphalnos | c9a70cab65 | |
Marco Rodolfi | 55bbb28a80 | |
The-Little-Wolf | 4d7b30e844 | |
Adrian | ae23222ba8 | |
Adrian | d99d053408 | |
Gliniak | 1688ea5d69 | |
Gliniak | e80d4effa1 | |
Gliniak | 57da74814b | |
The-Little-Wolf | a77213dcdb | |
Adrian | e134bbccd1 | |
Marco Rodolfi | 1822bca890 | |
Gliniak | 09be7e874a | |
Gliniak | cdd3f161fa | |
Gliniak | ccf4d6d5f8 | |
Gliniak | 2253cb978d | |
Gliniak | b50e32ab45 | |
Gliniak | 4620fa93d8 | |
Gliniak | 7e51efeec5 | |
marko1616 | 34da168284 | |
Margen67 | 762145687b | |
Margen67 | 6f1cb9e253 | |
Gliniak | 7437c020d6 | |
The-Little-Wolf | 57eeed86b7 | |
Margen67 | 3b49054d6b | |
Margen67 | 72df2129a0 | |
Margen67 | fff79eb41d | |
Margen67 | affb2fb7af | |
Margen67 | 26bf95d50f | |
The-Little-Wolf | b5d319834e | |
Xphalnos | bb20ada9bf | |
Gliniak | 13badbb4c0 | |
Gliniak | d660a82997 | |
Gliniak | ad323dd9d8 | |
Gliniak | 4584794e24 | |
The-Little-Wolf | d6ed8af4e7 | |
The-Little-Wolf | 95df198d8a | |
Gliniak | b757601f01 | |
Gliniak | 3f0a7f171f | |
Adrian | ceb94e019a | |
Gliniak | fe85be8817 | |
Gliniak | c3301d9281 | |
Gliniak | 1ba30c519c | |
Adrian | 3dac88113f | |
The-Little-Wolf | 160d80d5cc | |
Gliniak | 580b1f4345 | |
Gliniak | 9dfb0d0b68 | |
Gliniak | bcc3c3172d | |
Gliniak | c3586bc165 | |
Gliniak | a6e3d77504 | |
Gliniak | 2e521383c2 | |
Gliniak | 11f14e8488 | |
Adrian | 3d79874828 | |
The-Little-Wolf | 919f7403e2 | |
Gliniak | 263c722a40 | |
Gliniak | b98ff2d278 | |
Gliniak | ef8619b0a8 | |
Gliniak | f6ae651cc2 | |
Margen67 | 2596aef111 | |
Gliniak | b187ffeef7 | |
Xphalnos | c8c62fc07c | |
Gliniak | cfd965342a |
|
@ -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
|
|
@ -9,6 +9,7 @@ on:
|
||||||
- '.gitignore'
|
- '.gitignore'
|
||||||
- '.gdbinit'
|
- '.gdbinit'
|
||||||
- '.github/*'
|
- '.github/*'
|
||||||
|
- '.github/workflows/Linux_build.yml'
|
||||||
- '.github/*_TEMPLATE/**'
|
- '.github/*_TEMPLATE/**'
|
||||||
- '*.md'
|
- '*.md'
|
||||||
- '*.yml'
|
- '*.yml'
|
||||||
|
@ -30,6 +31,7 @@ on:
|
||||||
- '.gitignore'
|
- '.gitignore'
|
||||||
- '.gdbinit'
|
- '.gdbinit'
|
||||||
- '.github/*'
|
- '.github/*'
|
||||||
|
- '.github/workflows/Linux_build.yml'
|
||||||
- '.github/*_TEMPLATE/**'
|
- '.github/*_TEMPLATE/**'
|
||||||
- '*.md'
|
- '*.md'
|
||||||
- '*.yml'
|
- '*.yml'
|
||||||
|
@ -50,7 +52,7 @@ jobs:
|
||||||
name: Lint
|
name: Lint
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@main
|
||||||
- name: Check Clang-Format Version
|
- name: Check Clang-Format Version
|
||||||
run: clang-format --version
|
run: clang-format --version
|
||||||
- name: Lint
|
- name: Lint
|
||||||
|
@ -67,7 +69,7 @@ jobs:
|
||||||
env:
|
env:
|
||||||
POWERSHELL_TELEMETRY_OPTOUT: 1
|
POWERSHELL_TELEMETRY_OPTOUT: 1
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@main
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup
|
- name: Setup
|
||||||
|
@ -75,12 +77,15 @@ jobs:
|
||||||
- name: Build
|
- name: Build
|
||||||
run: .\xb build --config=Release --target=src\xenia-app
|
run: .\xb build --config=Release --target=src\xenia-app
|
||||||
- name: Prepare artifacts
|
- name: Prepare artifacts
|
||||||
|
id: prepare_artifacts
|
||||||
run: |
|
run: |
|
||||||
robocopy . build\bin\${{ runner.os }}\Release LICENSE /r:0 /w:0
|
robocopy . build\bin\Windows\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 artifacts\xenia_canary xenia_canary.exe xenia_canary.pdb LICENSE /r:0 /w:0
|
||||||
If ($LastExitCode -le 7) { echo "LastExitCode = $LastExitCode";$LastExitCode = 0 }
|
If ($LastExitCode -le 7) { echo "LastExitCode = $LastExitCode";$LastExitCode = 0 }
|
||||||
- name: Upload xenia canary artifacts
|
- 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:
|
with:
|
||||||
name: xenia_canary_vs${{ matrix.vsver }}
|
name: xenia_canary_vs${{ matrix.vsver }}
|
||||||
path: artifacts\xenia_canary
|
path: artifacts\xenia_canary
|
||||||
|
@ -89,7 +94,8 @@ jobs:
|
||||||
if: |
|
if: |
|
||||||
github.repository == 'xenia-canary/xenia-canary' &&
|
github.repository == 'xenia-canary/xenia-canary' &&
|
||||||
github.event.action != 'pull_request' &&
|
github.event.action != 'pull_request' &&
|
||||||
github.ref == 'refs/heads/canary_experimental'
|
github.ref == 'refs/heads/canary_experimental' &&
|
||||||
|
steps.upload_artifacts.outcome == 'success'
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
url = https://github.com/catchorg/Catch2.git
|
url = https://github.com/catchorg/Catch2.git
|
||||||
[submodule "third_party/premake-core"]
|
[submodule "third_party/premake-core"]
|
||||||
path = 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"]
|
[submodule "third_party/snappy"]
|
||||||
path = third_party/snappy
|
path = third_party/snappy
|
||||||
url = https://github.com/xenia-project/snappy.git
|
url = https://github.com/xenia-project/snappy.git
|
||||||
|
|
|
@ -21,7 +21,7 @@ Discussing illegal activities will get you banned.
|
||||||
Buildbot | Status | Releases
|
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)
|
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)
|
Netplay Build | | [Latest](https://github.com/AdrianCassar/xenia-canary/releases/latest)
|
||||||
|
|
||||||
## Quickstart
|
## 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)
|
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,
|
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
|
## Building
|
||||||
|
|
||||||
|
|
16
premake5.lua
16
premake5.lua
|
@ -26,7 +26,7 @@ defines({
|
||||||
"UNICODE",
|
"UNICODE",
|
||||||
})
|
})
|
||||||
|
|
||||||
cppdialect("C++17")
|
cppdialect("C++20")
|
||||||
exceptionhandling("On")
|
exceptionhandling("On")
|
||||||
rtti("On")
|
rtti("On")
|
||||||
symbols("On")
|
symbols("On")
|
||||||
|
@ -113,12 +113,18 @@ filter("platforms:Linux")
|
||||||
"rt",
|
"rt",
|
||||||
})
|
})
|
||||||
|
|
||||||
|
filter({"platforms:Linux"})
|
||||||
|
vectorextensions("AVX2")
|
||||||
|
|
||||||
filter({"platforms:Linux", "kind:*App"})
|
filter({"platforms:Linux", "kind:*App"})
|
||||||
linkgroups("On")
|
linkgroups("On")
|
||||||
|
|
||||||
filter({"platforms:Linux", "language:C++", "toolset:gcc"})
|
filter({"platforms:Linux", "language:C++", "toolset:gcc"})
|
||||||
disablewarnings({
|
disablewarnings({
|
||||||
"unused-result"
|
"unused-result",
|
||||||
|
"deprecated-volatile",
|
||||||
|
"switch",
|
||||||
|
"deprecated-enum-enum-conversion",
|
||||||
})
|
})
|
||||||
|
|
||||||
filter({"platforms:Linux", "toolset:gcc"})
|
filter({"platforms:Linux", "toolset:gcc"})
|
||||||
|
@ -135,11 +141,15 @@ filter({"platforms:Linux", "toolset:gcc"})
|
||||||
|
|
||||||
filter({"platforms:Linux", "language:C++", "toolset:clang"})
|
filter({"platforms:Linux", "language:C++", "toolset:clang"})
|
||||||
disablewarnings({
|
disablewarnings({
|
||||||
"deprecated-register"
|
"deprecated-register",
|
||||||
|
"deprecated-volatile",
|
||||||
|
"switch",
|
||||||
|
"deprecated-enum-enum-conversion",
|
||||||
})
|
})
|
||||||
filter({"platforms:Linux", "language:C++", "toolset:clang", "files:*.cc or *.cpp"})
|
filter({"platforms:Linux", "language:C++", "toolset:clang", "files:*.cc or *.cpp"})
|
||||||
buildoptions({
|
buildoptions({
|
||||||
"-stdlib=libstdc++",
|
"-stdlib=libstdc++",
|
||||||
|
"-std=c++20", -- clang doesn't respect cppdialect(?)
|
||||||
})
|
})
|
||||||
|
|
||||||
filter("platforms:Android-*")
|
filter("platforms:Android-*")
|
||||||
|
|
|
@ -1405,15 +1405,13 @@ void EmulatorWindow::ToggleDisplayConfigDialog() {
|
||||||
void EmulatorWindow::ToggleProfilesConfigDialog() {
|
void EmulatorWindow::ToggleProfilesConfigDialog() {
|
||||||
if (!profile_config_dialog_) {
|
if (!profile_config_dialog_) {
|
||||||
disable_hotkeys_ = true;
|
disable_hotkeys_ = true;
|
||||||
emulator_->kernel_state()->BroadcastNotification(kXNotificationIDSystemUI,
|
emulator_->kernel_state()->BroadcastNotification(kXNotificationSystemUI, 1);
|
||||||
1);
|
|
||||||
profile_config_dialog_ =
|
profile_config_dialog_ =
|
||||||
std::make_unique<ProfileConfigDialog>(imgui_drawer_.get(), this);
|
std::make_unique<ProfileConfigDialog>(imgui_drawer_.get(), this);
|
||||||
kernel::xam::xam_dialogs_shown_++;
|
kernel::xam::xam_dialogs_shown_++;
|
||||||
} else {
|
} else {
|
||||||
disable_hotkeys_ = false;
|
disable_hotkeys_ = false;
|
||||||
emulator_->kernel_state()->BroadcastNotification(kXNotificationIDSystemUI,
|
emulator_->kernel_state()->BroadcastNotification(kXNotificationSystemUI, 0);
|
||||||
0);
|
|
||||||
profile_config_dialog_.reset();
|
profile_config_dialog_.reset();
|
||||||
kernel::xam::xam_dialogs_shown_--;
|
kernel::xam::xam_dialogs_shown_--;
|
||||||
}
|
}
|
||||||
|
@ -1462,17 +1460,17 @@ void EmulatorWindow::UpdateTitle() {
|
||||||
|
|
||||||
// Title information, if available
|
// Title information, if available
|
||||||
if (emulator()->is_title_open()) {
|
if (emulator()->is_title_open()) {
|
||||||
sb.AppendFormat(u8" | [{:08X}", emulator()->title_id());
|
sb.AppendFormat(" | [{:08X}", emulator()->title_id());
|
||||||
auto title_version = emulator()->title_version();
|
auto title_version = emulator()->title_version();
|
||||||
if (!title_version.empty()) {
|
if (!title_version.empty()) {
|
||||||
sb.Append(u8" v");
|
sb.Append(" v");
|
||||||
sb.Append(title_version);
|
sb.Append(title_version);
|
||||||
}
|
}
|
||||||
sb.Append(u8"]");
|
sb.Append("]");
|
||||||
|
|
||||||
auto title_name = emulator()->title_name();
|
auto title_name = emulator()->title_name();
|
||||||
if (!title_name.empty()) {
|
if (!title_name.empty()) {
|
||||||
sb.Append(u8" ");
|
sb.Append(" ");
|
||||||
sb.Append(title_name);
|
sb.Append(title_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1482,28 +1480,28 @@ void EmulatorWindow::UpdateTitle() {
|
||||||
if (graphics_system) {
|
if (graphics_system) {
|
||||||
auto graphics_name = graphics_system->name();
|
auto graphics_name = graphics_system->name();
|
||||||
if (!graphics_name.empty()) {
|
if (!graphics_name.empty()) {
|
||||||
sb.Append(u8" <");
|
sb.Append(" <");
|
||||||
sb.Append(graphics_name);
|
sb.Append(graphics_name);
|
||||||
sb.Append(u8">");
|
sb.Append(">");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Clock::guest_time_scalar() != 1.0) {
|
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_) {
|
if (initializing_shader_storage_) {
|
||||||
sb.Append(u8" (Preloading shaders\u2026)");
|
sb.Append(" (Preloading shaders\u2026)");
|
||||||
}
|
}
|
||||||
|
|
||||||
patcher::Patcher* patcher = emulator()->patcher();
|
patcher::Patcher* patcher = emulator()->patcher();
|
||||||
if (patcher && patcher->IsAnyPatchApplied()) {
|
if (patcher && patcher->IsAnyPatchApplied()) {
|
||||||
sb.Append(u8" [Patches Applied]");
|
sb.Append(" [Patches Applied]");
|
||||||
}
|
}
|
||||||
|
|
||||||
patcher::PluginLoader* pluginloader = emulator()->plugin_loader();
|
patcher::PluginLoader* pluginloader = emulator()->plugin_loader();
|
||||||
if (pluginloader && pluginloader->IsAnyPluginLoaded()) {
|
if (pluginloader && pluginloader->IsAnyPluginLoaded()) {
|
||||||
sb.Append(u8" [Plugins Loaded]");
|
sb.Append(" [Plugins Loaded]");
|
||||||
}
|
}
|
||||||
|
|
||||||
window_->SetTitle(sb.to_string_view());
|
window_->SetTitle(sb.to_string_view());
|
||||||
|
@ -1664,11 +1662,16 @@ EmulatorWindow::ControllerHotKey EmulatorWindow::ProcessControllerHotkey(
|
||||||
xe::threading::Sleep(delay);
|
xe::threading::Sleep(delay);
|
||||||
break;
|
break;
|
||||||
case ButtonFunctions::RunTitle: {
|
case ButtonFunctions::RunTitle: {
|
||||||
if (selected_title_index == -1) selected_title_index++;
|
if (selected_title_index == -1) {
|
||||||
|
selected_title_index++;
|
||||||
|
}
|
||||||
|
|
||||||
app_context().CallInUIThread([this]() {
|
if (selected_title_index < recently_launched_titles_.size()) {
|
||||||
RunTitle(recently_launched_titles_[selected_title_index].path_to_file);
|
app_context().CallInUIThread([this]() {
|
||||||
});
|
RunTitle(
|
||||||
|
recently_launched_titles_[selected_title_index].path_to_file);
|
||||||
|
});
|
||||||
|
}
|
||||||
} break;
|
} break;
|
||||||
case ButtonFunctions::ClearMemoryPageState:
|
case ButtonFunctions::ClearMemoryPageState:
|
||||||
ToggleGPUSetting(gpu_cvar::ClearMemoryPageState);
|
ToggleGPUSetting(gpu_cvar::ClearMemoryPageState);
|
||||||
|
@ -1761,8 +1764,9 @@ EmulatorWindow::ControllerHotKey EmulatorWindow::ProcessControllerHotkey(
|
||||||
if ((button_combination.function == ButtonFunctions::IncTitleSelect ||
|
if ((button_combination.function == ButtonFunctions::IncTitleSelect ||
|
||||||
button_combination.function == ButtonFunctions::DecTitleSelect) &&
|
button_combination.function == ButtonFunctions::DecTitleSelect) &&
|
||||||
recently_launched_titles_.size() > 0) {
|
recently_launched_titles_.size() > 0) {
|
||||||
selected_title_index = std::clamp(
|
selected_title_index =
|
||||||
selected_title_index, 0, (int)recently_launched_titles_.size() - 1);
|
std::clamp(selected_title_index, 0,
|
||||||
|
static_cast<int32_t>(recently_launched_titles_.size() - 1));
|
||||||
|
|
||||||
// Must clear dialogs to prevent stacking
|
// Must clear dialogs to prevent stacking
|
||||||
ClearDialogs();
|
ClearDialogs();
|
||||||
|
@ -1835,7 +1839,8 @@ void EmulatorWindow::GamepadHotKeys() {
|
||||||
|
|
||||||
for (uint32_t user_index = 0; user_index < XUserMaxUserCount;
|
for (uint32_t user_index = 0; user_index < XUserMaxUserCount;
|
||||||
++user_index) {
|
++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
|
// Release the lock before processing the hotkey
|
||||||
input_lock.mutex()->unlock();
|
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() {
|
void EmulatorWindow::DisplayHotKeysConfig() {
|
||||||
std::string msg = "";
|
std::string msg = "";
|
||||||
std::string msg_passthru = "";
|
std::string msg_passthru = "";
|
||||||
|
|
|
@ -236,7 +236,6 @@ class EmulatorWindow {
|
||||||
bool vibrate = true);
|
bool vibrate = true);
|
||||||
void GamepadHotKeys();
|
void GamepadHotKeys();
|
||||||
void ToggleGPUSetting(gpu_cvar index);
|
void ToggleGPUSetting(gpu_cvar index);
|
||||||
bool IsUseNexusForGameBarEnabled();
|
|
||||||
void DisplayHotKeysConfig();
|
void DisplayHotKeysConfig();
|
||||||
|
|
||||||
static std::string CanonicalizeFileExtension(
|
static std::string CanonicalizeFileExtension(
|
||||||
|
|
|
@ -176,23 +176,49 @@ class EmulatorApp final : public xe::ui::WindowedApp {
|
||||||
std::vector<std::unique_ptr<T>> CreateAll(const std::string_view name,
|
std::vector<std::unique_ptr<T>> CreateAll(const std::string_view name,
|
||||||
Args... args) {
|
Args... args) {
|
||||||
std::vector<std::unique_ptr<T>> instances;
|
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(
|
auto it = std::find_if(
|
||||||
creators_.cbegin(), creators_.cend(),
|
creators_.cbegin(), creators_.cend(),
|
||||||
[&name](const auto& f) { return name.compare(f.name) == 0; });
|
[&name](const auto& f) { return name.compare(f.name) == 0; });
|
||||||
|
|
||||||
if (it != creators_.cend() && (*it).is_available()) {
|
if (it != creators_.cend() && (*it).is_available()) {
|
||||||
auto instance = (*it).instantiate(std::forward<Args>(args)...);
|
auto instance = (*it).instantiate(std::forward<Args>(args)...);
|
||||||
if (instance) {
|
if (instance) {
|
||||||
instances.emplace_back(std::move(instance));
|
instances.emplace_back(std::move(instance));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
for (const auto& creator : creators_) {
|
|
||||||
if (!creator.is_available()) continue;
|
// Always add winkey for passthrough.
|
||||||
auto instance = creator.instantiate(std::forward<Args>(args)...);
|
auto it = std::find_if(
|
||||||
if (instance) {
|
creators_.cbegin(), creators_.cend(),
|
||||||
instances.emplace_back(std::move(instance));
|
[&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;
|
return instances;
|
||||||
|
|
|
@ -13,8 +13,6 @@
|
||||||
#include "xenia/apu/xma_context.h"
|
#include "xenia/apu/xma_context.h"
|
||||||
#include "xenia/base/logging.h"
|
#include "xenia/base/logging.h"
|
||||||
|
|
||||||
#include <XAudio2.h>
|
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#if XE_COMPILER_MSVC
|
#if XE_COMPILER_MSVC
|
||||||
#pragma warning(push)
|
#pragma warning(push)
|
||||||
|
@ -451,7 +449,7 @@ void AudioMediaPlayer::RemovePlaylist(uint32_t handle) {
|
||||||
X_STATUS AudioMediaPlayer::SetVolume(float volume) {
|
X_STATUS AudioMediaPlayer::SetVolume(float volume) {
|
||||||
volume_ = std::min(volume, 1.0f);
|
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_) {
|
if (!driver_) {
|
||||||
return X_STATUS_UNSUCCESSFUL;
|
return X_STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
@ -483,7 +481,7 @@ void AudioMediaPlayer::SetCaptureCallback(uint32_t callback, uint32_t context,
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioMediaPlayer::OnStateChanged() {
|
void AudioMediaPlayer::OnStateChanged() {
|
||||||
kernel_state_->BroadcastNotification(kNotificationXmpStateChanged,
|
kernel_state_->BroadcastNotification(kXNotificationXmpStateChanged,
|
||||||
static_cast<uint32_t>(state_));
|
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) {
|
bool AudioMediaPlayer::SetupDriver(uint32_t sample_rate, uint32_t channels) {
|
||||||
DeleteDriver();
|
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(
|
driver_semaphore_ = xe::threading::Semaphore::Create(
|
||||||
AudioSystem::kMaximumQueuedFrames, AudioSystem::kMaximumQueuedFrames);
|
AudioSystem::kMaximumQueuedFrames, AudioSystem::kMaximumQueuedFrames);
|
||||||
|
|
||||||
|
@ -543,7 +541,7 @@ bool AudioMediaPlayer::SetupDriver(uint32_t sample_rate, uint32_t channels) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioMediaPlayer::DeleteDriver() {
|
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_) {
|
||||||
if (driver_semaphore_) {
|
if (driver_semaphore_) {
|
||||||
driver_semaphore_.reset();
|
driver_semaphore_.reset();
|
||||||
|
|
|
@ -130,7 +130,7 @@ class AudioMediaPlayer {
|
||||||
// really compatible with it.
|
// really compatible with it.
|
||||||
std::unique_ptr<AudioDriver> driver_ = nullptr;
|
std::unique_ptr<AudioDriver> driver_ = nullptr;
|
||||||
std::unique_ptr<xe::threading::Semaphore> driver_semaphore_ = {};
|
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);
|
bool SetupDriver(uint32_t sample_rate, uint32_t channels);
|
||||||
void DeleteDriver();
|
void DeleteDriver();
|
||||||
|
|
|
@ -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
|
// load_be_u32 unavailable on clang-cl
|
||||||
XE_NOINLINE
|
XE_NOINLINE
|
||||||
static void _movbe_sequential_6_BE_to_interleaved_6_LE(
|
static void _movbe_sequential_6_BE_to_interleaved_6_LE(
|
||||||
|
|
|
@ -74,6 +74,15 @@ inline int32_t atomic_inc(volatile int32_t* value) {
|
||||||
inline int32_t atomic_dec(volatile int32_t* value) {
|
inline int32_t atomic_dec(volatile int32_t* value) {
|
||||||
return __sync_sub_and_fetch(value, 1);
|
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) {
|
inline int32_t atomic_exchange(int32_t new_value, volatile int32_t* value) {
|
||||||
return __sync_val_compare_and_swap(value, *value, new_value);
|
return __sync_val_compare_and_swap(value, *value, new_value);
|
||||||
|
|
|
@ -91,6 +91,14 @@ struct NtSystemClock {
|
||||||
return sys_time{cdp.time_since_epoch()};
|
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_>
|
template <Domain domain_fresh_ = domain_>
|
||||||
static constexpr std::enable_if_t<domain_fresh_ == Domain::Host, time_point>
|
static constexpr std::enable_if_t<domain_fresh_ == Domain::Host, time_point>
|
||||||
from_sys(const std::chrono::system_clock::time_point& tp) {
|
from_sys(const std::chrono::system_clock::time_point& tp) {
|
||||||
|
|
|
@ -23,7 +23,7 @@ extern "C" int main(int argc, char** argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize logging. Needs parsed cvars.
|
// Initialize logging. Needs parsed cvars.
|
||||||
xe::InitializeLogging(entry_info.name);
|
// xe::InitializeLogging(entry_info.name);
|
||||||
|
|
||||||
std::vector<std::string> args;
|
std::vector<std::string> args;
|
||||||
for (int n = 0; n < argc; n++) {
|
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);
|
int result = entry_info.entry_point(args);
|
||||||
|
|
||||||
xe::ShutdownLogging();
|
// xe::ShutdownLogging();
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,24 +110,24 @@ std::string EscapeBasicString(const std::string_view view) {
|
||||||
for (auto it = begin; it != end; ++it) {
|
for (auto it = begin; it != end; ++it) {
|
||||||
auto c = *it;
|
auto c = *it;
|
||||||
if (c == '\b') {
|
if (c == '\b') {
|
||||||
result += u8"\\b";
|
result += "\\b";
|
||||||
} else if (c == '\t') {
|
} else if (c == '\t') {
|
||||||
result += u8"\\t";
|
result += "\\t";
|
||||||
} else if (c == '\n') {
|
} else if (c == '\n') {
|
||||||
result += u8"\\n";
|
result += "\\n";
|
||||||
} else if (c == '\f') {
|
} else if (c == '\f') {
|
||||||
result += u8"\\f";
|
result += "\\f";
|
||||||
} else if (c == '\r') {
|
} else if (c == '\r') {
|
||||||
result += u8"\\r";
|
result += "\\r";
|
||||||
} else if (c == '"') {
|
} else if (c == '"') {
|
||||||
result += u8"\\\"";
|
result += "\\\"";
|
||||||
} else if (c == '\\') {
|
} else if (c == '\\') {
|
||||||
result += u8"\\\\";
|
result += "\\\\";
|
||||||
} else if (c < 0x20 || c == 0x7F) {
|
} else if (c < 0x20 || c == 0x7F) {
|
||||||
if (c <= 0xFFFF) {
|
if (c <= 0xFFFF) {
|
||||||
result += fmt::format(u8"\\u{:04X}", c);
|
result += fmt::format("\\u{:04X}", c);
|
||||||
} else {
|
} else {
|
||||||
result += fmt::format(u8"\\u{:08X}", c);
|
result += fmt::format("\\u{:08X}", c);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
utfcpp::append(static_cast<char32_t>(c), result);
|
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) {
|
for (int i = 0; i < quote_run; ++i) {
|
||||||
if ((i % 3) == 2) {
|
if ((i % 3) == 2) {
|
||||||
result += u8"\\";
|
result += "\\";
|
||||||
}
|
}
|
||||||
result += u8"\"";
|
result += "\"";
|
||||||
}
|
}
|
||||||
quote_run = 0;
|
quote_run = 0;
|
||||||
}
|
}
|
||||||
if (c == '\b') {
|
if (c == '\b') {
|
||||||
result += u8"\\b";
|
result += "\\b";
|
||||||
} else if (c == '\t' || c == '\n') {
|
} else if (c == '\t' || c == '\n') {
|
||||||
result += c;
|
result += c;
|
||||||
} else if (c == '\f') {
|
} else if (c == '\f') {
|
||||||
result += u8"\\f";
|
result += "\\f";
|
||||||
} else if (c == '\r') {
|
} else if (c == '\r') {
|
||||||
// Silently drop \r.
|
// Silently drop \r.
|
||||||
// result += c;
|
// result += c;
|
||||||
} else if (c == '"') {
|
} else if (c == '"') {
|
||||||
quote_run = 1;
|
quote_run = 1;
|
||||||
} else if (c == '\\') {
|
} else if (c == '\\') {
|
||||||
result += u8"\\\\";
|
result += "\\\\";
|
||||||
} else if (c < 0x20 || c == 0x7F) {
|
} else if (c < 0x20 || c == 0x7F) {
|
||||||
if (c <= 0xFFFF) {
|
if (c <= 0xFFFF) {
|
||||||
result += fmt::format(u8"\\u{:04X}", c);
|
result += fmt::format("\\u{:04X}", c);
|
||||||
} else {
|
} else {
|
||||||
result += fmt::format(u8"\\u{:08X}", c);
|
result += fmt::format("\\u{:08X}", c);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
utfcpp::append(static_cast<char32_t>(c), result);
|
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) {
|
for (int i = 0; i < quote_run; ++i) {
|
||||||
if ((i % 3) == 2) {
|
if ((i % 3) == 2) {
|
||||||
result += u8"\\";
|
result += "\\";
|
||||||
}
|
}
|
||||||
result += u8"\"";
|
result += "\"";
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -207,11 +207,11 @@ std::string EscapeString(const std::string_view view) {
|
||||||
} else {
|
} else {
|
||||||
// multi line
|
// multi line
|
||||||
if (xe::utf8::find_any_of(view, escape_chars) == std::string_view::npos &&
|
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) + "'''";
|
return "'''\n" + std::string(view) + "'''";
|
||||||
} else {
|
} else {
|
||||||
return u8"\"\"\"\n" + toml_internal::EscapeMultilineBasicString(view) +
|
return "\"\"\"\n" + toml_internal::EscapeMultilineBasicString(view) +
|
||||||
u8"\"\"\"";
|
"\"\"\"";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,10 +99,11 @@ void AppendLogLine(LogLevel log_level, const char prefix_char, size_t written);
|
||||||
// might as well be noalias
|
// might as well be noalias
|
||||||
template <typename... Args>
|
template <typename... Args>
|
||||||
XE_NOALIAS XE_NOINLINE XE_COLD static void AppendLogLineFormat_Impl(
|
XE_NOALIAS XE_NOINLINE XE_COLD static void AppendLogLineFormat_Impl(
|
||||||
LogLevel log_level, const char prefix_char, const char* format,
|
LogLevel log_level, const char prefix_char, std::string_view format,
|
||||||
const Args&... args) {
|
const Args&... args) noexcept {
|
||||||
auto target = internal::GetThreadBuffer();
|
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);
|
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,
|
XE_FORCEINLINE static void AppendLogLineFormat(uint32_t log_src_mask,
|
||||||
LogLevel log_level,
|
LogLevel log_level,
|
||||||
const char prefix_char,
|
const char prefix_char,
|
||||||
const char* format,
|
std::string_view format,
|
||||||
const Args&... args) {
|
const Args&... args) noexcept {
|
||||||
if (!internal::ShouldLog(log_level, log_src_mask)) {
|
if (!internal::ShouldLog(log_level, log_src_mask)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -143,7 +144,8 @@ struct LoggerBatch {
|
||||||
LoggerBatch() { reset(); }
|
LoggerBatch() { reset(); }
|
||||||
template <size_t fmtlen, typename... Ts>
|
template <size_t fmtlen, typename... Ts>
|
||||||
void operator()(const char (&fmt)[fmtlen], Ts&&... args) {
|
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_rem -= tmpres.size;
|
||||||
thrd_buf = tmpres.out;
|
thrd_buf = tmpres.out;
|
||||||
total_size += tmpres.size;
|
total_size += tmpres.size;
|
||||||
|
@ -164,55 +166,55 @@ struct LoggerBatch {
|
||||||
#if XE_OPTION_ENABLE_LOGGING
|
#if XE_OPTION_ENABLE_LOGGING
|
||||||
|
|
||||||
template <typename... Args>
|
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::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
|
||||||
xe::LogLevel::Error, '!', format, args...);
|
xe::LogLevel::Error, '!', format, args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename... 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::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
|
||||||
xe::LogLevel::Warning, 'w', format, args...);
|
xe::LogLevel::Warning, 'w', format, args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename... 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::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
|
||||||
xe::LogLevel::Info, 'i', format, args...);
|
xe::LogLevel::Info, 'i', format, args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename... 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::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
|
||||||
xe::LogLevel::Debug, 'd', format, args...);
|
xe::LogLevel::Debug, 'd', format, args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename... 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',
|
xe::logging::AppendLogLineFormat(xe::LogSrc::Cpu, xe::LogLevel::Info, 'C',
|
||||||
format, args...);
|
format, args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename... 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',
|
xe::logging::AppendLogLineFormat(xe::LogSrc::Apu, xe::LogLevel::Debug, 'A',
|
||||||
format, args...);
|
format, args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename... 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::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
|
||||||
xe::LogLevel::Debug, 'G', format, args...);
|
xe::LogLevel::Debug, 'G', format, args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename... 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',
|
xe::logging::AppendLogLineFormat(xe::LogSrc::Kernel, xe::LogLevel::Info, 'K',
|
||||||
format, args...);
|
format, args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename... 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::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
|
||||||
xe::LogLevel::Info, 'F', format, args...);
|
xe::LogLevel::Info, 'F', format, args...);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#define XENIA_BASE_MATH_H_
|
#define XENIA_BASE_MATH_H_
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <climits>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <cstring>
|
#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;
|
constexpr unsigned char SHIFT_MASK = (CHAR_BIT * sizeof(T)) - 1;
|
||||||
uint8_t rshr = sh & SHIFT_MASK;
|
uint8_t rshr = sh & SHIFT_MASK;
|
||||||
uint8_t lshl = static_cast<uint8_t>(-static_cast<int8_t>(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
|
#if XE_PLATFORM_WIN32
|
||||||
template <>
|
template <>
|
||||||
|
|
|
@ -193,7 +193,7 @@ std::unique_ptr<Socket> Socket::Connect(std::string hostname, uint16_t port) {
|
||||||
InitializeWinsock();
|
InitializeWinsock();
|
||||||
|
|
||||||
auto socket = std::make_unique<Win32Socket>();
|
auto socket = std::make_unique<Win32Socket>();
|
||||||
if (!socket->Connect(std::move(hostname), port)) {
|
if (!socket->Connect(hostname, port)) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
return std::unique_ptr<Socket>(socket.release());
|
return std::unique_ptr<Socket>(socket.release());
|
||||||
|
|
|
@ -35,7 +35,7 @@ class StringBuffer {
|
||||||
|
|
||||||
template <typename... Args>
|
template <typename... Args>
|
||||||
void AppendFormat(const char* format, const Args&... 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());
|
Append(s.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,9 @@ void LaunchFileExplorer(const std::filesystem::path& path);
|
||||||
|
|
||||||
bool SetProcessPriorityClass(const uint32_t priority_class);
|
bool SetProcessPriorityClass(const uint32_t priority_class);
|
||||||
|
|
||||||
|
// Determine if the Xbox Gamebar is enabled via the Windows registry
|
||||||
|
bool IsUseNexusForGameBarEnabled();
|
||||||
|
|
||||||
enum class SimpleMessageBoxType {
|
enum class SimpleMessageBoxType {
|
||||||
Help,
|
Help,
|
||||||
Warning,
|
Warning,
|
||||||
|
|
|
@ -296,4 +296,5 @@ void ShowSimpleMessageBox(SimpleMessageBoxType type, std::string_view message) {
|
||||||
|
|
||||||
bool SetProcessPriorityClass(const uint32_t priority_class) { return true; }
|
bool SetProcessPriorityClass(const uint32_t priority_class) { return true; }
|
||||||
|
|
||||||
|
bool IsUseNexusForGameBarEnabled() { return false; }
|
||||||
} // namespace xe
|
} // namespace xe
|
||||||
|
|
|
@ -69,4 +69,5 @@ void ShowSimpleMessageBox(SimpleMessageBoxType type, std::string_view message) {
|
||||||
|
|
||||||
bool SetProcessPriorityClass(const uint32_t priority_class) { return true; }
|
bool SetProcessPriorityClass(const uint32_t priority_class) { return true; }
|
||||||
|
|
||||||
|
bool IsUseNexusForGameBarEnabled() { return false; }
|
||||||
} // namespace xe
|
} // namespace xe
|
||||||
|
|
|
@ -64,4 +64,17 @@ bool SetProcessPriorityClass(const uint32_t priority_class) {
|
||||||
xeniaToWindowsPriorityClassMapping[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
|
} // namespace xe
|
||||||
|
|
|
@ -407,7 +407,7 @@ TEST_CASE("Wait on Multiple Events", "[event]") {
|
||||||
std::array<char, 8> order = {0};
|
std::array<char, 8> order = {0};
|
||||||
std::atomic_uint index(0);
|
std::atomic_uint index(0);
|
||||||
auto sign_in = [&order, &index](uint32_t id) {
|
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);
|
order[i] = static_cast<char>('0' + id);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1071,8 +1071,8 @@ TEST_CASE("Test Thread QueueUserCallback", "[thread]") {
|
||||||
int is_modified;
|
int is_modified;
|
||||||
int has_finished;
|
int has_finished;
|
||||||
auto callback = [&is_modified, &order] {
|
auto callback = [&is_modified, &order] {
|
||||||
is_modified = std::atomic_fetch_add_explicit(
|
is_modified =
|
||||||
&order, 1, std::memory_order::memory_order_relaxed);
|
std::atomic_fetch_add_explicit(&order, 1, std::memory_order_relaxed);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Without alertable
|
// Without alertable
|
||||||
|
@ -1084,8 +1084,8 @@ TEST_CASE("Test Thread QueueUserCallback", "[thread]") {
|
||||||
order++; // 1
|
order++; // 1
|
||||||
Sleep(90ms);
|
Sleep(90ms);
|
||||||
order++; // 2
|
order++; // 2
|
||||||
has_finished = std::atomic_fetch_add_explicit(
|
has_finished =
|
||||||
&order, 1, std::memory_order::memory_order_relaxed);
|
std::atomic_fetch_add_explicit(&order, 1, std::memory_order_relaxed);
|
||||||
});
|
});
|
||||||
REQUIRE(!spin_wait_for(50ms, [&] { return order == 2; }));
|
REQUIRE(!spin_wait_for(50ms, [&] { return order == 2; }));
|
||||||
REQUIRE(is_modified == -1);
|
REQUIRE(is_modified == -1);
|
||||||
|
@ -1104,8 +1104,8 @@ TEST_CASE("Test Thread QueueUserCallback", "[thread]") {
|
||||||
order++; // 1
|
order++; // 1
|
||||||
AlertableSleep(90ms);
|
AlertableSleep(90ms);
|
||||||
order++; // 3
|
order++; // 3
|
||||||
has_finished = std::atomic_fetch_add_explicit(
|
has_finished =
|
||||||
&order, 1, std::memory_order::memory_order_relaxed);
|
std::atomic_fetch_add_explicit(&order, 1, std::memory_order_relaxed);
|
||||||
});
|
});
|
||||||
REQUIRE(!spin_wait_for(50ms, [&] { return order == 2; }));
|
REQUIRE(!spin_wait_for(50ms, [&] { return order == 2; }));
|
||||||
REQUIRE(is_modified == -1);
|
REQUIRE(is_modified == -1);
|
||||||
|
@ -1120,8 +1120,8 @@ TEST_CASE("Test Thread QueueUserCallback", "[thread]") {
|
||||||
is_modified = -1;
|
is_modified = -1;
|
||||||
has_finished = -1;
|
has_finished = -1;
|
||||||
thread = Thread::Create(params, [&is_modified, &has_finished, &order] {
|
thread = Thread::Create(params, [&is_modified, &has_finished, &order] {
|
||||||
is_modified = std::atomic_fetch_add_explicit(
|
is_modified =
|
||||||
&order, 1, std::memory_order::memory_order_relaxed);
|
std::atomic_fetch_add_explicit(&order, 1, std::memory_order_relaxed);
|
||||||
// Using Alertable so callback is registered
|
// Using Alertable so callback is registered
|
||||||
order++; // 2
|
order++; // 2
|
||||||
AlertableSleep(1s);
|
AlertableSleep(1s);
|
||||||
|
|
|
@ -37,121 +37,121 @@ namespace examples {
|
||||||
|
|
||||||
const size_t kDanishCount = 1;
|
const size_t kDanishCount = 1;
|
||||||
const char* kDanishValues[kDanishCount] = {
|
const char* kDanishValues[kDanishCount] = {
|
||||||
u8"Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Wolther "
|
"Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Wolther "
|
||||||
u8"spillede på xylofon.",
|
"spillede på xylofon.",
|
||||||
};
|
};
|
||||||
#define TEST_LANGUAGE_EXAMPLES_Danish(func, results) \
|
#define TEST_LANGUAGE_EXAMPLES_Danish(func, results) \
|
||||||
TEST_EXAMPLES_1(func, Danish, results)
|
TEST_EXAMPLES_1(func, Danish, results)
|
||||||
|
|
||||||
const size_t kGermanCount = 3;
|
const size_t kGermanCount = 3;
|
||||||
const char* kGermanValues[kGermanCount] = {
|
const char* kGermanValues[kGermanCount] = {
|
||||||
u8"Falsches Üben von Xylophonmusik quält jeden größeren Zwerg",
|
"Falsches Üben von Xylophonmusik quält jeden größeren Zwerg",
|
||||||
u8"Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich",
|
"Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich",
|
||||||
u8"Heizölrückstoßabdämpfung",
|
"Heizölrückstoßabdämpfung",
|
||||||
};
|
};
|
||||||
#define TEST_LANGUAGE_EXAMPLES_German(func, results) \
|
#define TEST_LANGUAGE_EXAMPLES_German(func, results) \
|
||||||
TEST_EXAMPLES_2(func, German, results)
|
TEST_EXAMPLES_2(func, German, results)
|
||||||
|
|
||||||
const size_t kGreekCount = 2;
|
const size_t kGreekCount = 2;
|
||||||
const char* kGreekValues[kGreekCount] = {
|
const char* kGreekValues[kGreekCount] = {
|
||||||
u8"Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο",
|
"Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο",
|
||||||
u8"Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία",
|
"Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία",
|
||||||
};
|
};
|
||||||
#define TEST_LANGUAGE_EXAMPLES_Greek(func, results) \
|
#define TEST_LANGUAGE_EXAMPLES_Greek(func, results) \
|
||||||
TEST_EXAMPLES_2(func, Greek, results)
|
TEST_EXAMPLES_2(func, Greek, results)
|
||||||
|
|
||||||
const size_t kEnglishCount = 1;
|
const size_t kEnglishCount = 1;
|
||||||
const char* kEnglishValues[kEnglishCount] = {
|
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) \
|
#define TEST_LANGUAGE_EXAMPLES_English(func, results) \
|
||||||
TEST_EXAMPLES_1(func, English, results)
|
TEST_EXAMPLES_1(func, English, results)
|
||||||
|
|
||||||
const size_t kSpanishCount = 1;
|
const size_t kSpanishCount = 1;
|
||||||
const char* kSpanishValues[kSpanishCount] = {
|
const char* kSpanishValues[kSpanishCount] = {
|
||||||
u8"El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y frío, "
|
"El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y frío, "
|
||||||
u8"añoraba a su querido cachorro.",
|
"añoraba a su querido cachorro.",
|
||||||
};
|
};
|
||||||
#define TEST_LANGUAGE_EXAMPLES_Spanish(func, results) \
|
#define TEST_LANGUAGE_EXAMPLES_Spanish(func, results) \
|
||||||
TEST_EXAMPLES_1(func, Spanish, results)
|
TEST_EXAMPLES_1(func, Spanish, results)
|
||||||
|
|
||||||
const size_t kFrenchCount = 3;
|
const size_t kFrenchCount = 3;
|
||||||
const char* kFrenchValues[kFrenchCount] = {
|
const char* kFrenchValues[kFrenchCount] = {
|
||||||
u8"Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à "
|
"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 "
|
"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 "
|
"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, "
|
"dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui, "
|
||||||
u8"pense-t-il, diminue çà et là la qualité de son œuvre.",
|
"pense-t-il, diminue çà et là la qualité de son œuvre.",
|
||||||
u8"l'île exiguë\n"
|
"l'île exiguë\n"
|
||||||
u8"Où l'obèse jury mûr\n"
|
"Où l'obèse jury mûr\n"
|
||||||
u8"Fête l'haï volapük,\n"
|
"Fête l'haï volapük,\n"
|
||||||
u8"Âne ex aéquo au whist,\n"
|
"Âne ex aéquo au whist,\n"
|
||||||
u8"Ôtez ce vœu déçu.",
|
"Ô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ë "
|
"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æ.",
|
"au delà des îles, près du mälström où brûlent les novæ.",
|
||||||
};
|
};
|
||||||
#define TEST_LANGUAGE_EXAMPLES_French(func, results) \
|
#define TEST_LANGUAGE_EXAMPLES_French(func, results) \
|
||||||
TEST_EXAMPLES_3(func, French, results)
|
TEST_EXAMPLES_3(func, French, results)
|
||||||
|
|
||||||
const size_t kIrishGaelicCount = 1;
|
const size_t kIrishGaelicCount = 1;
|
||||||
const char* kIrishGaelicValues[kIrishGaelicCount] = {
|
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) \
|
#define TEST_LANGUAGE_EXAMPLES_IrishGaelic(func, results) \
|
||||||
TEST_EXAMPLES_1(func, IrishGaelic, results)
|
TEST_EXAMPLES_1(func, IrishGaelic, results)
|
||||||
|
|
||||||
const size_t kHungarianCount = 1;
|
const size_t kHungarianCount = 1;
|
||||||
const char* kHungarianValues[kHungarianCount] = {
|
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) \
|
#define TEST_LANGUAGE_EXAMPLES_Hungarian(func, results) \
|
||||||
TEST_EXAMPLES_1(func, Hungarian, results)
|
TEST_EXAMPLES_1(func, Hungarian, results)
|
||||||
|
|
||||||
const size_t kIcelandicCount = 2;
|
const size_t kIcelandicCount = 2;
|
||||||
const char* kIcelandicValues[kIcelandicCount] = {
|
const char* kIcelandicValues[kIcelandicCount] = {
|
||||||
u8"Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa",
|
"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",
|
"Sævör grét áðan því úlpan var ónýt",
|
||||||
};
|
};
|
||||||
#define TEST_LANGUAGE_EXAMPLES_Icelandic(func, results) \
|
#define TEST_LANGUAGE_EXAMPLES_Icelandic(func, results) \
|
||||||
TEST_EXAMPLES_2(func, Icelandic, results)
|
TEST_EXAMPLES_2(func, Icelandic, results)
|
||||||
|
|
||||||
const size_t kJapaneseCount = 2;
|
const size_t kJapaneseCount = 2;
|
||||||
const char* kJapaneseValues[kJapaneseCount] = {
|
const char* kJapaneseValues[kJapaneseCount] = {
|
||||||
u8"いろはにほへとちりぬるを\n"
|
"いろはにほへとちりぬるを\n"
|
||||||
u8"わかよたれそつねならむ\n"
|
"わかよたれそつねならむ\n"
|
||||||
u8"うゐのおくやまけふこえて\n"
|
"うゐのおくやまけふこえて\n"
|
||||||
u8"あさきゆめみしゑひもせす\n",
|
"あさきゆめみしゑひもせす\n",
|
||||||
u8"イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム\n"
|
"イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム\n"
|
||||||
u8"ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン",
|
"ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン",
|
||||||
};
|
};
|
||||||
#define TEST_LANGUAGE_EXAMPLES_Japanese(func, results) \
|
#define TEST_LANGUAGE_EXAMPLES_Japanese(func, results) \
|
||||||
TEST_EXAMPLES_2(func, Japanese, results)
|
TEST_EXAMPLES_2(func, Japanese, results)
|
||||||
|
|
||||||
const size_t kHebrewCount = 1;
|
const size_t kHebrewCount = 1;
|
||||||
const char* kHebrewValues[kHebrewCount] = {
|
const char* kHebrewValues[kHebrewCount] = {
|
||||||
u8"? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה",
|
"? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה",
|
||||||
};
|
};
|
||||||
#define TEST_LANGUAGE_EXAMPLES_Hebrew(func, results) \
|
#define TEST_LANGUAGE_EXAMPLES_Hebrew(func, results) \
|
||||||
TEST_EXAMPLES_1(func, Hebrew, results)
|
TEST_EXAMPLES_1(func, Hebrew, results)
|
||||||
|
|
||||||
const size_t kPolishCount = 1;
|
const size_t kPolishCount = 1;
|
||||||
const char* kPolishValues[kPolishCount] = {
|
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) \
|
#define TEST_LANGUAGE_EXAMPLES_Polish(func, results) \
|
||||||
TEST_EXAMPLES_1(func, Polish, results)
|
TEST_EXAMPLES_1(func, Polish, results)
|
||||||
|
|
||||||
const size_t kRussianCount = 2;
|
const size_t kRussianCount = 2;
|
||||||
const char* kRussianValues[kRussianCount] = {
|
const char* kRussianValues[kRussianCount] = {
|
||||||
u8"В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!",
|
"В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!",
|
||||||
u8"Съешь же ещё этих мягких французских булок да выпей чаю",
|
"Съешь же ещё этих мягких французских булок да выпей чаю",
|
||||||
};
|
};
|
||||||
#define TEST_LANGUAGE_EXAMPLES_Russian(func, results) \
|
#define TEST_LANGUAGE_EXAMPLES_Russian(func, results) \
|
||||||
TEST_EXAMPLES_2(func, Russian, results)
|
TEST_EXAMPLES_2(func, Russian, results)
|
||||||
|
|
||||||
const size_t kTurkishCount = 1;
|
const size_t kTurkishCount = 1;
|
||||||
const char* kTurkishValues[kTurkishCount] = {
|
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) \
|
#define TEST_LANGUAGE_EXAMPLES_Turkish(func, results) \
|
||||||
TEST_EXAMPLES_1(func, Turkish, results)
|
TEST_EXAMPLES_1(func, Turkish, results)
|
||||||
|
@ -229,54 +229,54 @@ TEST_CASE("UTF-8 Split", "[utf8]") {
|
||||||
std::vector<std::string_view> parts;
|
std::vector<std::string_view> parts;
|
||||||
|
|
||||||
// Danish
|
// Danish
|
||||||
parts = utf8::split(examples::kDanishValues[0], u8"æcå");
|
parts = utf8::split(examples::kDanishValues[0], "æcå");
|
||||||
REQUIRE(parts.size() == 4);
|
REQUIRE(parts.size() == 4);
|
||||||
REQUIRE(parts[0] == u8"Quizdeltagerne spiste jordb");
|
REQUIRE(parts[0] == "Quizdeltagerne spiste jordb");
|
||||||
REQUIRE(parts[1] == u8"r med fløde, mens ");
|
REQUIRE(parts[1] == "r med fløde, mens ");
|
||||||
REQUIRE(parts[2] == u8"irkusklovnen Wolther spillede p");
|
REQUIRE(parts[2] == "irkusklovnen Wolther spillede p");
|
||||||
REQUIRE(parts[3] == u8" xylofon.");
|
REQUIRE(parts[3] == " xylofon.");
|
||||||
|
|
||||||
// German
|
// German
|
||||||
parts = utf8::split(examples::kGermanValues[0], u8"ßS");
|
parts = utf8::split(examples::kGermanValues[0], "ßS");
|
||||||
REQUIRE(parts.size() == 2);
|
REQUIRE(parts.size() == 2);
|
||||||
REQUIRE(parts[0] == u8"Falsches Üben von Xylophonmusik quält jeden grö");
|
REQUIRE(parts[0] == "Falsches Üben von Xylophonmusik quält jeden grö");
|
||||||
REQUIRE(parts[1] == u8"eren Zwerg");
|
REQUIRE(parts[1] == "eren Zwerg");
|
||||||
parts = utf8::split(examples::kGermanValues[1], u8"ßS");
|
parts = utf8::split(examples::kGermanValues[1], "ßS");
|
||||||
REQUIRE(parts.size() == 2);
|
REQUIRE(parts.size() == 2);
|
||||||
REQUIRE(parts[0] == u8"Zwölf Boxkämpfer jagten Eva quer über den ");
|
REQUIRE(parts[0] == "Zwölf Boxkämpfer jagten Eva quer über den ");
|
||||||
REQUIRE(parts[1] == u8"ylter Deich");
|
REQUIRE(parts[1] == "ylter Deich");
|
||||||
parts = utf8::split(examples::kGermanValues[2], u8"ßS");
|
parts = utf8::split(examples::kGermanValues[2], "ßS");
|
||||||
REQUIRE(parts.size() == 2);
|
REQUIRE(parts.size() == 2);
|
||||||
REQUIRE(parts[0] == u8"Heizölrücksto");
|
REQUIRE(parts[0] == "Heizölrücksto");
|
||||||
REQUIRE(parts[1] == u8"abdämpfung");
|
REQUIRE(parts[1] == "abdämpfung");
|
||||||
|
|
||||||
// Greek
|
// Greek
|
||||||
parts = utf8::split(examples::kGreekValues[0], u8"πφ");
|
parts = utf8::split(examples::kGreekValues[0], "πφ");
|
||||||
REQUIRE(parts.size() == 4);
|
REQUIRE(parts.size() == 4);
|
||||||
REQUIRE(parts[0] == u8"Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ ");
|
REQUIRE(parts[0] == "Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ ");
|
||||||
REQUIRE(parts[1] == u8"ιὰ στὸ χρυσα");
|
REQUIRE(parts[1] == "ιὰ στὸ χρυσα");
|
||||||
REQUIRE(parts[2] == u8"ὶ ξέ");
|
REQUIRE(parts[2] == "ὶ ξέ");
|
||||||
REQUIRE(parts[3] == u8"ωτο");
|
REQUIRE(parts[3] == "ωτο");
|
||||||
parts = utf8::split(examples::kGreekValues[1], u8"πφ");
|
parts = utf8::split(examples::kGreekValues[1], "πφ");
|
||||||
REQUIRE(parts.size() == 3);
|
REQUIRE(parts.size() == 3);
|
||||||
REQUIRE(parts[0] == u8"Ξεσκε");
|
REQUIRE(parts[0] == "Ξεσκε");
|
||||||
REQUIRE(parts[1] == u8"άζω τὴν ψυχο");
|
REQUIRE(parts[1] == "άζω τὴν ψυχο");
|
||||||
REQUIRE(parts[2] == u8"θόρα βδελυγμία");
|
REQUIRE(parts[2] == "θόρα βδελυγμία");
|
||||||
|
|
||||||
// English
|
// English
|
||||||
parts = utf8::split(examples::kEnglishValues[0], "xy");
|
parts = utf8::split(examples::kEnglishValues[0], "xy");
|
||||||
REQUIRE(parts.size() == 3);
|
REQUIRE(parts.size() == 3);
|
||||||
REQUIRE(parts[0] == u8"The quick brown fo");
|
REQUIRE(parts[0] == "The quick brown fo");
|
||||||
REQUIRE(parts[1] == u8" jumps over the laz");
|
REQUIRE(parts[1] == " jumps over the laz");
|
||||||
REQUIRE(parts[2] == u8" dog");
|
REQUIRE(parts[2] == " dog");
|
||||||
|
|
||||||
// Spanish
|
// Spanish
|
||||||
parts = utf8::split(examples::kSpanishValues[0], u8"ójd");
|
parts = utf8::split(examples::kSpanishValues[0], "ójd");
|
||||||
REQUIRE(parts.size() == 4);
|
REQUIRE(parts.size() == 4);
|
||||||
REQUIRE(parts[0] == u8"El pingüino Wenceslao hizo kil");
|
REQUIRE(parts[0] == "El pingüino Wenceslao hizo kil");
|
||||||
REQUIRE(parts[1] == u8"metros ba");
|
REQUIRE(parts[1] == "metros ba");
|
||||||
REQUIRE(parts[2] == u8"o exhaustiva lluvia y frío, añoraba a su queri");
|
REQUIRE(parts[2] == "o exhaustiva lluvia y frío, añoraba a su queri");
|
||||||
REQUIRE(parts[3] == u8"o cachorro.");
|
REQUIRE(parts[3] == "o cachorro.");
|
||||||
|
|
||||||
// TODO(gibbed): French
|
// TODO(gibbed): French
|
||||||
// TODO(gibbed): Irish Gaelic
|
// TODO(gibbed): Irish Gaelic
|
||||||
|
@ -291,18 +291,18 @@ TEST_CASE("UTF-8 Split", "[utf8]") {
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("UTF-8 Equal Z", "[utf8]") {
|
TEST_CASE("UTF-8 Equal Z", "[utf8]") {
|
||||||
REQUIRE(utf8::equal_z(u8"foo", u8"foo\0"));
|
REQUIRE(utf8::equal_z("foo", "foo\0"));
|
||||||
REQUIRE_FALSE(utf8::equal_z(u8"bar", u8"baz\0"));
|
REQUIRE_FALSE(utf8::equal_z("bar", "baz\0"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("UTF-8 Equal Case", "[utf8]") {
|
TEST_CASE("UTF-8 Equal Case", "[utf8]") {
|
||||||
REQUIRE(utf8::equal_case(u8"foo", u8"foo\0"));
|
REQUIRE(utf8::equal_case("foo", "foo\0"));
|
||||||
REQUIRE_FALSE(utf8::equal_case(u8"bar", u8"baz\0"));
|
REQUIRE_FALSE(utf8::equal_case("bar", "baz\0"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("UTF-8 Equal Case Z", "[utf8]") {
|
TEST_CASE("UTF-8 Equal Case Z", "[utf8]") {
|
||||||
REQUIRE(utf8::equal_case_z(u8"foo", u8"foo\0"));
|
REQUIRE(utf8::equal_case_z("foo", "foo\0"));
|
||||||
REQUIRE_FALSE(utf8::equal_case_z(u8"bar", u8"baz\0"));
|
REQUIRE_FALSE(utf8::equal_case_z("bar", "baz\0"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(gibbed): find_any_of
|
// TODO(gibbed): find_any_of
|
||||||
|
@ -346,11 +346,11 @@ TEST_CASE("UTF-8 Equal Case Z", "[utf8]") {
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
TEST_CASE("UTF-8 Join Paths", "[utf8]") {
|
TEST_CASE("UTF-8 Join Paths", "[utf8]") {
|
||||||
TEST_PATHS(utf8::join_paths, u8"");
|
TEST_PATHS(utf8::join_paths, "");
|
||||||
TEST_PATHS(utf8::join_paths, u8"foo", u8"foo");
|
TEST_PATHS(utf8::join_paths, "foo", "foo");
|
||||||
TEST_PATHS(utf8::join_paths, u8"foo/bar", u8"foo", u8"bar");
|
TEST_PATHS(utf8::join_paths, "foo/bar", "foo", "bar");
|
||||||
TEST_PATHS(utf8::join_paths, "X:/foo/bar/baz/qux", u8"X:", u8"foo", u8"bar",
|
TEST_PATHS(utf8::join_paths, "X:/foo/bar/baz/qux", "X:", "foo", "bar", "baz",
|
||||||
u8"baz", u8"qux");
|
"qux");
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(gibbed): join_guest_paths
|
// TODO(gibbed): join_guest_paths
|
||||||
|
|
|
@ -402,6 +402,7 @@ class Timer : public WaitHandle {
|
||||||
virtual bool Cancel() = 0;
|
virtual bool Cancel() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if XE_PLATFORM_WINDOWS
|
||||||
struct ThreadPriority {
|
struct ThreadPriority {
|
||||||
static const int32_t kLowest = -2;
|
static const int32_t kLowest = -2;
|
||||||
static const int32_t kBelowNormal = -1;
|
static const int32_t kBelowNormal = -1;
|
||||||
|
@ -409,6 +410,15 @@ struct ThreadPriority {
|
||||||
static const int32_t kAboveNormal = 1;
|
static const int32_t kAboveNormal = 1;
|
||||||
static const int32_t kHighest = 2;
|
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.
|
// Models a Win32-like thread object.
|
||||||
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms682453(v=vs.85).aspx
|
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms682453(v=vs.85).aspx
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
#include "logging.h"
|
||||||
|
|
||||||
#if XE_PLATFORM_ANDROID
|
#if XE_PLATFORM_ANDROID
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
|
||||||
|
@ -660,8 +662,18 @@ class PosixCondition<Thread> : public PosixConditionBase {
|
||||||
WaitStarted();
|
WaitStarted();
|
||||||
sched_param param{};
|
sched_param param{};
|
||||||
param.sched_priority = new_priority;
|
param.sched_priority = new_priority;
|
||||||
if (pthread_setschedparam(thread_, SCHED_FIFO, ¶m) != 0)
|
int res = pthread_setschedparam(thread_, SCHED_FIFO, ¶m);
|
||||||
assert_always();
|
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) {
|
void QueueUserCallback(std::function<void()> callback) {
|
||||||
|
@ -905,7 +917,7 @@ class PosixEvent : public PosixConditionHandle<Event> {
|
||||||
~PosixEvent() override = default;
|
~PosixEvent() override = default;
|
||||||
void Set() override { handle_.Signal(); }
|
void Set() override { handle_.Signal(); }
|
||||||
void Reset() override { handle_.Reset(); }
|
void Reset() override { handle_.Reset(); }
|
||||||
EventInfo Query() {
|
EventInfo Query() override {
|
||||||
EventInfo result{};
|
EventInfo result{};
|
||||||
assert_always();
|
assert_always();
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -38,7 +38,12 @@ using WaitItem = TimerQueueWaitItem;
|
||||||
condition_variable::wait_until) but now builds
|
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 {
|
class TimerQueue {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -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) {
|
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,
|
std::string join_paths(const std::string_view left_path,
|
||||||
|
|
|
@ -99,7 +99,8 @@ class HIRBuilder {
|
||||||
void CommentFormat(const std::string_view format, const Args&... args) {
|
void CommentFormat(const std::string_view format, const Args&... args) {
|
||||||
static const uint32_t kMaxCommentSize = 1024;
|
static const uint32_t kMaxCommentSize = 1024;
|
||||||
char* p = reinterpret_cast<char*>(arena_->Alloc(kMaxCommentSize, 1));
|
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';
|
p[result.size] = '\0';
|
||||||
size_t rewind = kMaxCommentSize - 1 - result.size;
|
size_t rewind = kMaxCommentSize - 1 - result.size;
|
||||||
arena_->Rewind(rewind);
|
arena_->Rewind(rewind);
|
||||||
|
|
|
@ -433,17 +433,14 @@ typedef struct alignas(64) PPCContext_s {
|
||||||
template <typename T = uint8_t*>
|
template <typename T = uint8_t*>
|
||||||
inline T TranslateVirtual(uint32_t guest_address) XE_RESTRICT const {
|
inline T TranslateVirtual(uint32_t guest_address) XE_RESTRICT const {
|
||||||
static_assert(std::is_pointer_v<T>);
|
static_assert(std::is_pointer_v<T>);
|
||||||
#if XE_PLATFORM_WIN32 == 1
|
|
||||||
uint8_t* host_address = virtual_membase + guest_address;
|
uint8_t* host_address = virtual_membase + guest_address;
|
||||||
|
#if XE_PLATFORM_WIN32 == 1
|
||||||
if (guest_address >=
|
if (guest_address >=
|
||||||
static_cast<uint32_t>(reinterpret_cast<uintptr_t>(this))) {
|
static_cast<uint32_t>(reinterpret_cast<uintptr_t>(this))) {
|
||||||
host_address += 0x1000;
|
host_address += 0x1000;
|
||||||
}
|
}
|
||||||
return reinterpret_cast<T>(host_address);
|
|
||||||
#else
|
|
||||||
return processor->memory()->TranslateVirtual<T>(guest_address);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
return reinterpret_cast<T>(host_address);
|
||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline xe::be<T>* TranslateVirtualBE(uint32_t guest_address)
|
inline xe::be<T>* TranslateVirtualBE(uint32_t guest_address)
|
||||||
|
@ -464,17 +461,14 @@ typedef struct alignas(64) PPCContext_s {
|
||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline uint32_t HostToGuestVirtual(T* host_ptr) XE_RESTRICT const {
|
inline uint32_t HostToGuestVirtual(T* host_ptr) XE_RESTRICT const {
|
||||||
#if XE_PLATFORM_WIN32 == 1
|
|
||||||
uint32_t guest_tmp = static_cast<uint32_t>(
|
uint32_t guest_tmp = static_cast<uint32_t>(
|
||||||
reinterpret_cast<const uint8_t*>(host_ptr) - virtual_membase);
|
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))) {
|
if (guest_tmp >= static_cast<uint32_t>(reinterpret_cast<uintptr_t>(this))) {
|
||||||
guest_tmp -= 0x1000;
|
guest_tmp -= 0x1000;
|
||||||
}
|
}
|
||||||
return guest_tmp;
|
|
||||||
#else
|
|
||||||
return processor->memory()->HostToGuestVirtual(
|
|
||||||
reinterpret_cast<void*>(host_ptr));
|
|
||||||
#endif
|
#endif
|
||||||
|
return guest_tmp;
|
||||||
}
|
}
|
||||||
static std::string GetRegisterName(PPCRegister reg);
|
static std::string GetRegisterName(PPCRegister reg);
|
||||||
std::string GetStringFromValue(PPCRegister reg) const;
|
std::string GetStringFromValue(PPCRegister reg) const;
|
||||||
|
|
|
@ -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
|
// Checks the state of the global lock and sets scratch to the current MSR
|
||||||
// value.
|
// value.
|
||||||
void CheckGlobalLock(PPCContext* ppc_context, void* arg0, void* arg1) {
|
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);
|
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;
|
ppc_context->scratch = *global_lock_count ? 0 : 0x8000;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enters the global lock. Safe to recursion.
|
// Enters the global lock. Safe to recursion.
|
||||||
void EnterGlobalLock(PPCContext* ppc_context, void* arg0, void* arg1) {
|
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);
|
auto global_lock_count = reinterpret_cast<int32_t*>(arg1);
|
||||||
global_mutex->lock();
|
global_mutex->lock();
|
||||||
xe::atomic_inc(global_lock_count);
|
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.
|
// Leaves the global lock. Safe to recursion.
|
||||||
void LeaveGlobalLock(PPCContext* ppc_context, void* arg0, void* arg1) {
|
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 global_lock_count = reinterpret_cast<int32_t*>(arg1);
|
||||||
auto new_lock_count = xe::atomic_dec(global_lock_count);
|
auto new_lock_count = xe::atomic_dec(global_lock_count);
|
||||||
assert_true(new_lock_count >= 0);
|
assert_true(new_lock_count >= 0);
|
||||||
|
|
|
@ -151,11 +151,15 @@ void PPCTranslator::DumpHIR(GuestFunction* function, PPCHIRBuilder* builder) {
|
||||||
|
|
||||||
{
|
{
|
||||||
wchar_t tmpbuf[64];
|
wchar_t tmpbuf[64];
|
||||||
|
#ifdef XE_PLATFORM_WIN32
|
||||||
_snwprintf(tmpbuf, 64, L"%X", function->address());
|
_snwprintf(tmpbuf, 64, L"%X", function->address());
|
||||||
|
#else
|
||||||
|
swprintf(tmpbuf, 64, L"%X", function->address());
|
||||||
|
#endif
|
||||||
folder_path.append(&tmpbuf[0]);
|
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) {
|
if (f) {
|
||||||
fputs(buffer.buffer(), f);
|
fputs(buffer.buffer(), f);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
|
@ -447,7 +447,7 @@ bool Processor::Restore(ByteStream* stream) {
|
||||||
std::vector<uint32_t> to_delete;
|
std::vector<uint32_t> to_delete;
|
||||||
for (auto& it : thread_debug_infos_) {
|
for (auto& it : thread_debug_infos_) {
|
||||||
if (it.second->state == ThreadDebugInfo::State::kZombie) {
|
if (it.second->state == ThreadDebugInfo::State::kZombie) {
|
||||||
it.second->thread_handle = NULL;
|
it.second->thread_handle = 0;
|
||||||
to_delete.push_back(it.first);
|
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 global_lock = global_critical_region_.Acquire();
|
||||||
auto it = thread_debug_infos_.find(thread_id);
|
auto it = thread_debug_infos_.find(thread_id);
|
||||||
assert_true(it != thread_debug_infos_.end());
|
assert_true(it != thread_debug_infos_.end());
|
||||||
it->second->thread_handle = NULL;
|
it->second->thread_handle = 0;
|
||||||
thread_debug_infos_.erase(it);
|
thread_debug_infos_.erase(it);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1136,10 +1136,14 @@ void XexModule::Precompile() {
|
||||||
high_code);
|
high_code);
|
||||||
final_image_sha_.finalize(image_sha_bytes_);
|
final_image_sha_.finalize(image_sha_bytes_);
|
||||||
|
|
||||||
char fmtbuf[16];
|
char fmtbuf[20];
|
||||||
|
|
||||||
for (unsigned i = 0; i < 20; ++i) {
|
for (unsigned i = 0; i < 20; ++i) {
|
||||||
|
#ifdef XE_PLATFORM_WIN32
|
||||||
sprintf_s(fmtbuf, "%X", image_sha_bytes_[i]);
|
sprintf_s(fmtbuf, "%X", image_sha_bytes_[i]);
|
||||||
|
#else
|
||||||
|
snprintf(fmtbuf, sizeof(fmtbuf), "%X", image_sha_bytes_[i]);
|
||||||
|
#endif
|
||||||
image_sha_str_ += &fmtbuf[0];
|
image_sha_str_ += &fmtbuf[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1397,6 +1401,10 @@ void XexInfoCache::Init(XexModule* xexmod) {
|
||||||
};
|
};
|
||||||
|
|
||||||
bool did_exist = try_open();
|
bool did_exist = try_open();
|
||||||
|
if (!GetHeader()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!did_exist) {
|
if (!did_exist) {
|
||||||
GetHeader()->version = CURRENT_INFOCACHE_VERSION;
|
GetHeader()->version = CURRENT_INFOCACHE_VERSION;
|
||||||
|
|
||||||
|
|
|
@ -309,7 +309,7 @@ void DebugWindow::DrawToolbar() {
|
||||||
case cpu::ThreadDebugInfo::State::kAlive:
|
case cpu::ThreadDebugInfo::State::kAlive:
|
||||||
case cpu::ThreadDebugInfo::State::kExited:
|
case cpu::ThreadDebugInfo::State::kExited:
|
||||||
case cpu::ThreadDebugInfo::State::kWaiting:
|
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)");
|
thread_combo.Append("(invalid)");
|
||||||
} else {
|
} else {
|
||||||
thread_combo.Append(thread_info->thread->thread_name());
|
thread_combo.Append(thread_info->thread->thread_name());
|
||||||
|
|
|
@ -451,7 +451,7 @@ Emulator::FileSignatureType Emulator::GetFileSignature(
|
||||||
}
|
}
|
||||||
|
|
||||||
char file_magic[header_size];
|
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 =
|
fourcc_t magic_value =
|
||||||
make_fourcc(file_magic[0], file_magic[1], file_magic[2], file_magic[3]);
|
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");
|
file = xe::filesystem::OpenFile(path, "rb");
|
||||||
xe::filesystem::Seek(file, -header_size, SEEK_END);
|
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);
|
fclose(file);
|
||||||
|
|
||||||
magic_value =
|
magic_value =
|
||||||
|
@ -505,6 +505,7 @@ Emulator::FileSignatureType Emulator::GetFileSignature(
|
||||||
return FileSignatureType::XISO;
|
return FileSignatureType::XISO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XELOGE("{}: {} ({:08X})", __func__, path.extension(), magic_value);
|
||||||
return FileSignatureType::Unknown;
|
return FileSignatureType::Unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -718,7 +719,7 @@ X_STATUS Emulator::DataMigration(const uint64_t xuid) {
|
||||||
const auto old_profile_data =
|
const auto old_profile_data =
|
||||||
xe::filesystem::ListDirectories(title.path / title.name / "profile");
|
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) {
|
if (old_profile_data.size() != 1) {
|
||||||
for (const auto& entry : old_profile_data) {
|
for (const auto& entry : old_profile_data) {
|
||||||
if (entry.name == "User") {
|
if (entry.name == "User") {
|
||||||
|
@ -835,8 +836,7 @@ X_STATUS Emulator::InstallContentPackage(
|
||||||
return error_code;
|
return error_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
kernel_state()->BroadcastNotification(kXNotificationIDLiveContentInstalled,
|
kernel_state()->BroadcastNotification(kXNotificationLiveContentInstalled, 0);
|
||||||
0);
|
|
||||||
|
|
||||||
return error_code;
|
return error_code;
|
||||||
}
|
}
|
||||||
|
@ -938,8 +938,7 @@ X_STATUS Emulator::CreateZarchivePackage(
|
||||||
uint64_t total_bytes_read = 0;
|
uint64_t total_bytes_read = 0;
|
||||||
|
|
||||||
while (total_bytes_read < file_size) {
|
while (total_bytes_read < file_size) {
|
||||||
uint64_t bytes_read =
|
uint64_t bytes_read = fread(buffer.data(), 1, buffer.size(), file);
|
||||||
fread_s(buffer.data(), buffer.size(), 1, buffer.size(), file);
|
|
||||||
|
|
||||||
total_bytes_read += bytes_read;
|
total_bytes_read += bytes_read;
|
||||||
|
|
||||||
|
@ -1373,6 +1372,12 @@ X_STATUS Emulator::CompleteLaunch(const std::filesystem::path& path,
|
||||||
return X_STATUS_NOT_FOUND;
|
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);
|
X_RESULT result = kernel_state_->ApplyTitleUpdate(module);
|
||||||
if (XFAILED(result)) {
|
if (XFAILED(result)) {
|
||||||
XELOGE("Failed to apply title update! Cannot run module {}", path);
|
XELOGE("Failed to apply title update! Cannot run module {}", path);
|
||||||
|
|
|
@ -245,9 +245,8 @@ class Emulator {
|
||||||
ContentInstallationInfo& installation_info);
|
ContentInstallationInfo& installation_info);
|
||||||
|
|
||||||
// Extract content of zar package to desired directory.
|
// Extract content of zar package to desired directory.
|
||||||
X_STATUS Emulator::ExtractZarchivePackage(
|
X_STATUS ExtractZarchivePackage(const std::filesystem::path& path,
|
||||||
const std::filesystem::path& path,
|
const std::filesystem::path& extract_dir);
|
||||||
const std::filesystem::path& extract_dir);
|
|
||||||
|
|
||||||
// Pack contents of a folder into a zar package.
|
// Pack contents of a folder into a zar package.
|
||||||
X_STATUS CreateZarchivePackage(const std::filesystem::path& inputDirectory,
|
X_STATUS CreateZarchivePackage(const std::filesystem::path& inputDirectory,
|
||||||
|
|
|
@ -580,10 +580,17 @@ static inline void GetScissorTmpl(const RegisterFile& XE_RESTRICT regs,
|
||||||
__m128i pa_sc_scissor = _mm_setr_epi32(
|
__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_tl_tl_x, pa_sc_screen_scissor_tl_tl_y,
|
||||||
pa_sc_screen_scissor_br_br_x, pa_sc_screen_scissor_br_br_y);
|
pa_sc_screen_scissor_br_br_x, pa_sc_screen_scissor_br_br_y);
|
||||||
|
#if XE_PLATFORM_WIN32
|
||||||
__m128i xyoffsetadd = _mm_cvtsi64x_si128(
|
__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_x_offset) |
|
||||||
(static_cast<unsigned long long>(pa_sc_window_offset_window_y_offset)
|
(static_cast<unsigned long long>(pa_sc_window_offset_window_y_offset)
|
||||||
<< 32));
|
<< 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);
|
xyoffsetadd = _mm_unpacklo_epi64(xyoffsetadd, xyoffsetadd);
|
||||||
// chrispy: put this here to make it clear that the shift by 31 is extracting
|
// chrispy: put this here to make it clear that the shift by 31 is extracting
|
||||||
// this field
|
// this field
|
||||||
|
|
|
@ -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;
|
return (primitive_polygonal_table & (1U << static_cast<uint32_t>(type))) != 0;
|
||||||
}
|
}
|
||||||
XE_FORCEINLINE
|
XE_FORCEINLINE
|
||||||
bool IsPrimitivePolygonal(const RegisterFile& regs) {
|
static bool IsPrimitivePolygonal(const RegisterFile& regs) {
|
||||||
return IsPrimitivePolygonal(
|
return IsPrimitivePolygonal(
|
||||||
regs.Get<reg::VGT_OUTPUT_PATH_CNTL>().path_select ==
|
regs.Get<reg::VGT_OUTPUT_PATH_CNTL>().path_select ==
|
||||||
xenos::VGTOutputPath::kTessellationEnable,
|
xenos::VGTOutputPath::kTessellationEnable,
|
||||||
|
@ -383,7 +383,7 @@ struct GetViewportInfoArgs {
|
||||||
depth_format = regs.Get<reg::RB_DEPTH_INFO>().depth_format;
|
depth_format = regs.Get<reg::RB_DEPTH_INFO>().depth_format;
|
||||||
}
|
}
|
||||||
XE_FORCEINLINE
|
XE_FORCEINLINE
|
||||||
bool operator==(const GetViewportInfoArgs& prev) {
|
bool operator==(const GetViewportInfoArgs& prev) const {
|
||||||
#if XE_ARCH_AMD64 == 0
|
#if XE_ARCH_AMD64 == 0
|
||||||
bool result = true;
|
bool result = true;
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ DEFINE_uint32(internal_display_resolution, 8,
|
||||||
"Allow games that support different resolutions to render "
|
"Allow games that support different resolutions to render "
|
||||||
"in a specific resolution.\n"
|
"in a specific resolution.\n"
|
||||||
"This is not guaranteed to work with all games or improve "
|
"This is not guaranteed to work with all games or improve "
|
||||||
"performance."
|
"performance.\n"
|
||||||
" 0=640x480\n"
|
" 0=640x480\n"
|
||||||
" 1=640x576\n"
|
" 1=640x576\n"
|
||||||
" 2=720x480\n"
|
" 2=720x480\n"
|
||||||
|
|
|
@ -137,10 +137,10 @@ ret
|
||||||
|
|
||||||
const BYTE adaptive_quad_hs[] =
|
const BYTE adaptive_quad_hs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 239, 150,
|
68, 88, 66, 67, 0, 49,
|
||||||
141, 161, 148, 167, 208, 252,
|
254, 207, 7, 226, 142, 88,
|
||||||
147, 2, 216, 119, 8, 207,
|
58, 153, 74, 164, 217, 92,
|
||||||
171, 137, 1, 0, 0, 0,
|
228, 217, 1, 0, 0, 0,
|
||||||
40, 15, 0, 0, 6, 0,
|
40, 15, 0, 0, 6, 0,
|
||||||
0, 0, 56, 0, 0, 0,
|
0, 0, 56, 0, 0, 0,
|
||||||
108, 10, 0, 0, 164, 10,
|
108, 10, 0, 0, 164, 10,
|
||||||
|
@ -151,7 +151,7 @@ const BYTE adaptive_quad_hs[] =
|
||||||
0, 0, 120, 0, 0, 0,
|
0, 0, 120, 0, 0, 0,
|
||||||
1, 0, 0, 0, 60, 0,
|
1, 0, 0, 0, 60, 0,
|
||||||
0, 0, 1, 5, 83, 72,
|
0, 0, 1, 5, 83, 72,
|
||||||
0, 5, 0, 0, 2, 10,
|
0, 133, 0, 0, 2, 10,
|
||||||
0, 0, 19, 19, 68, 37,
|
0, 0, 19, 19, 68, 37,
|
||||||
60, 0, 0, 0, 24, 0,
|
60, 0, 0, 0, 24, 0,
|
||||||
0, 0, 40, 0, 0, 0,
|
0, 0, 40, 0, 0, 0,
|
||||||
|
|
|
@ -126,10 +126,10 @@ ret
|
||||||
|
|
||||||
const BYTE adaptive_triangle_hs[] =
|
const BYTE adaptive_triangle_hs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 213, 151,
|
68, 88, 66, 67, 23, 31,
|
||||||
26, 214, 48, 115, 215, 10,
|
135, 242, 139, 0, 67, 234,
|
||||||
67, 36, 129, 21, 5, 111,
|
147, 197, 58, 149, 230, 55,
|
||||||
231, 249, 1, 0, 0, 0,
|
78, 200, 1, 0, 0, 0,
|
||||||
88, 14, 0, 0, 6, 0,
|
88, 14, 0, 0, 6, 0,
|
||||||
0, 0, 56, 0, 0, 0,
|
0, 0, 56, 0, 0, 0,
|
||||||
108, 10, 0, 0, 164, 10,
|
108, 10, 0, 0, 164, 10,
|
||||||
|
@ -140,7 +140,7 @@ const BYTE adaptive_triangle_hs[] =
|
||||||
0, 0, 120, 0, 0, 0,
|
0, 0, 120, 0, 0, 0,
|
||||||
1, 0, 0, 0, 60, 0,
|
1, 0, 0, 0, 60, 0,
|
||||||
0, 0, 1, 5, 83, 72,
|
0, 0, 1, 5, 83, 72,
|
||||||
0, 5, 0, 0, 2, 10,
|
0, 133, 0, 0, 2, 10,
|
||||||
0, 0, 19, 19, 68, 37,
|
0, 0, 19, 19, 68, 37,
|
||||||
60, 0, 0, 0, 24, 0,
|
60, 0, 0, 0, 24, 0,
|
||||||
0, 0, 40, 0, 0, 0,
|
0, 0, 40, 0, 0, 0,
|
||||||
|
|
|
@ -86,10 +86,10 @@ ret
|
||||||
|
|
||||||
const BYTE apply_gamma_pwl_cs[] =
|
const BYTE apply_gamma_pwl_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 224, 86,
|
68, 88, 66, 67, 216, 254,
|
||||||
115, 97, 130, 102, 85, 194,
|
128, 39, 145, 111, 24, 167,
|
||||||
154, 33, 68, 74, 161, 205,
|
205, 48, 149, 231, 194, 70,
|
||||||
242, 94, 1, 0, 0, 0,
|
10, 2, 1, 0, 0, 0,
|
||||||
124, 7, 0, 0, 5, 0,
|
124, 7, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
20, 2, 0, 0, 36, 2,
|
20, 2, 0, 0, 36, 2,
|
||||||
|
@ -99,7 +99,7 @@ const BYTE apply_gamma_pwl_cs[] =
|
||||||
1, 0, 0, 0, 48, 1,
|
1, 0, 0, 0, 48, 1,
|
||||||
0, 0, 4, 0, 0, 0,
|
0, 0, 4, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
176, 1, 0, 0, 19, 19,
|
176, 1, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -86,10 +86,10 @@ ret
|
||||||
|
|
||||||
const BYTE apply_gamma_pwl_fxaa_luma_cs[] =
|
const BYTE apply_gamma_pwl_fxaa_luma_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 13, 117,
|
68, 88, 66, 67, 144, 147,
|
||||||
49, 45, 162, 194, 216, 203,
|
164, 145, 237, 30, 63, 199,
|
||||||
130, 175, 100, 187, 97, 44,
|
209, 141, 165, 179, 222, 51,
|
||||||
87, 212, 1, 0, 0, 0,
|
196, 77, 1, 0, 0, 0,
|
||||||
144, 7, 0, 0, 5, 0,
|
144, 7, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
20, 2, 0, 0, 36, 2,
|
20, 2, 0, 0, 36, 2,
|
||||||
|
@ -99,7 +99,7 @@ const BYTE apply_gamma_pwl_fxaa_luma_cs[] =
|
||||||
1, 0, 0, 0, 48, 1,
|
1, 0, 0, 0, 48, 1,
|
||||||
0, 0, 4, 0, 0, 0,
|
0, 0, 4, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
176, 1, 0, 0, 19, 19,
|
176, 1, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -69,10 +69,10 @@ ret
|
||||||
|
|
||||||
const BYTE apply_gamma_pwl_fxaa_luma_ps[] =
|
const BYTE apply_gamma_pwl_fxaa_luma_ps[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 202, 241,
|
68, 88, 66, 67, 199, 175,
|
||||||
49, 179, 160, 182, 197, 116,
|
60, 63, 222, 134, 41, 40,
|
||||||
174, 174, 57, 216, 126, 205,
|
1, 21, 146, 104, 96, 211,
|
||||||
210, 129, 1, 0, 0, 0,
|
255, 31, 1, 0, 0, 0,
|
||||||
88, 6, 0, 0, 5, 0,
|
88, 6, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
28, 1, 0, 0, 80, 1,
|
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, 0, 0, 0, 0,
|
||||||
0, 0, 2, 0, 0, 0,
|
0, 0, 2, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
255, 255, 0, 5, 0, 0,
|
255, 255, 0, 133, 0, 0,
|
||||||
182, 0, 0, 0, 19, 19,
|
182, 0, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -68,10 +68,10 @@ ret
|
||||||
|
|
||||||
const BYTE apply_gamma_pwl_ps[] =
|
const BYTE apply_gamma_pwl_ps[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 197, 255,
|
68, 88, 66, 67, 124, 98,
|
||||||
198, 206, 158, 112, 94, 186,
|
146, 19, 199, 178, 173, 92,
|
||||||
5, 215, 2, 4, 116, 239,
|
217, 215, 165, 57, 155, 61,
|
||||||
1, 249, 1, 0, 0, 0,
|
40, 93, 1, 0, 0, 0,
|
||||||
48, 6, 0, 0, 5, 0,
|
48, 6, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
28, 1, 0, 0, 80, 1,
|
28, 1, 0, 0, 80, 1,
|
||||||
|
@ -81,7 +81,7 @@ const BYTE apply_gamma_pwl_ps[] =
|
||||||
0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 2, 0, 0, 0,
|
0, 0, 2, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
255, 255, 0, 5, 0, 0,
|
255, 255, 0, 133, 0, 0,
|
||||||
182, 0, 0, 0, 19, 19,
|
182, 0, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -65,10 +65,10 @@ ret
|
||||||
|
|
||||||
const BYTE apply_gamma_table_cs[] =
|
const BYTE apply_gamma_table_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 194, 111,
|
68, 88, 66, 67, 131, 225,
|
||||||
19, 70, 56, 133, 74, 123,
|
165, 239, 73, 214, 11, 5,
|
||||||
197, 56, 69, 13, 51, 156,
|
192, 88, 193, 33, 78, 98,
|
||||||
77, 169, 1, 0, 0, 0,
|
42, 232, 1, 0, 0, 0,
|
||||||
248, 4, 0, 0, 5, 0,
|
248, 4, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
20, 2, 0, 0, 36, 2,
|
20, 2, 0, 0, 36, 2,
|
||||||
|
@ -78,7 +78,7 @@ const BYTE apply_gamma_table_cs[] =
|
||||||
1, 0, 0, 0, 48, 1,
|
1, 0, 0, 0, 48, 1,
|
||||||
0, 0, 4, 0, 0, 0,
|
0, 0, 4, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
176, 1, 0, 0, 19, 19,
|
176, 1, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -65,10 +65,10 @@ ret
|
||||||
|
|
||||||
const BYTE apply_gamma_table_fxaa_luma_cs[] =
|
const BYTE apply_gamma_table_fxaa_luma_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 200, 223,
|
68, 88, 66, 67, 246, 75,
|
||||||
77, 37, 216, 58, 189, 85,
|
101, 19, 41, 66, 89, 152,
|
||||||
119, 181, 101, 30, 54, 122,
|
232, 214, 90, 206, 82, 222,
|
||||||
180, 167, 1, 0, 0, 0,
|
225, 94, 1, 0, 0, 0,
|
||||||
12, 5, 0, 0, 5, 0,
|
12, 5, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
20, 2, 0, 0, 36, 2,
|
20, 2, 0, 0, 36, 2,
|
||||||
|
@ -78,7 +78,7 @@ const BYTE apply_gamma_table_fxaa_luma_cs[] =
|
||||||
1, 0, 0, 0, 48, 1,
|
1, 0, 0, 0, 48, 1,
|
||||||
0, 0, 4, 0, 0, 0,
|
0, 0, 4, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
176, 1, 0, 0, 19, 19,
|
176, 1, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -48,10 +48,10 @@ ret
|
||||||
|
|
||||||
const BYTE apply_gamma_table_fxaa_luma_ps[] =
|
const BYTE apply_gamma_table_fxaa_luma_ps[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 99, 93,
|
68, 88, 66, 67, 189, 65,
|
||||||
21, 205, 152, 99, 210, 93,
|
68, 108, 239, 236, 16, 193,
|
||||||
126, 200, 23, 156, 88, 34,
|
183, 186, 218, 151, 124, 58,
|
||||||
136, 17, 1, 0, 0, 0,
|
234, 186, 1, 0, 0, 0,
|
||||||
212, 3, 0, 0, 5, 0,
|
212, 3, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
28, 1, 0, 0, 80, 1,
|
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, 0, 0, 0, 0,
|
||||||
0, 0, 2, 0, 0, 0,
|
0, 0, 2, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
255, 255, 0, 5, 0, 0,
|
255, 255, 0, 133, 0, 0,
|
||||||
182, 0, 0, 0, 19, 19,
|
182, 0, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -48,10 +48,10 @@ ret
|
||||||
|
|
||||||
const BYTE apply_gamma_table_ps[] =
|
const BYTE apply_gamma_table_ps[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 74, 64,
|
68, 88, 66, 67, 99, 130,
|
||||||
188, 148, 1, 73, 166, 187,
|
90, 60, 149, 84, 252, 141,
|
||||||
95, 221, 233, 140, 224, 9,
|
96, 154, 227, 201, 153, 201,
|
||||||
117, 169, 1, 0, 0, 0,
|
86, 168, 1, 0, 0, 0,
|
||||||
192, 3, 0, 0, 5, 0,
|
192, 3, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
28, 1, 0, 0, 80, 1,
|
28, 1, 0, 0, 80, 1,
|
||||||
|
@ -61,7 +61,7 @@ const BYTE apply_gamma_table_ps[] =
|
||||||
0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 2, 0, 0, 0,
|
0, 0, 2, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
255, 255, 0, 5, 0, 0,
|
255, 255, 0, 133, 0, 0,
|
||||||
182, 0, 0, 0, 19, 19,
|
182, 0, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -44,10 +44,10 @@ ret
|
||||||
|
|
||||||
const BYTE clear_uint2_ps[] =
|
const BYTE clear_uint2_ps[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 90, 79,
|
68, 88, 66, 67, 194, 54,
|
||||||
67, 15, 17, 175, 210, 170,
|
80, 88, 155, 18, 105, 158,
|
||||||
189, 222, 209, 228, 62, 31,
|
58, 100, 37, 116, 45, 73,
|
||||||
153, 246, 1, 0, 0, 0,
|
138, 148, 1, 0, 0, 0,
|
||||||
148, 2, 0, 0, 5, 0,
|
148, 2, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
88, 1, 0, 0, 104, 1,
|
88, 1, 0, 0, 104, 1,
|
||||||
|
@ -57,7 +57,7 @@ const BYTE clear_uint2_ps[] =
|
||||||
1, 0, 0, 0, 120, 0,
|
1, 0, 0, 0, 120, 0,
|
||||||
0, 0, 1, 0, 0, 0,
|
0, 0, 1, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
255, 255, 0, 5, 0, 0,
|
255, 255, 0, 133, 0, 0,
|
||||||
244, 0, 0, 0, 19, 19,
|
244, 0, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -124,10 +124,10 @@ ret
|
||||||
|
|
||||||
const BYTE continuous_quad_1cp_hs[] =
|
const BYTE continuous_quad_1cp_hs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 255, 166,
|
68, 88, 66, 67, 206, 90,
|
||||||
36, 40, 167, 89, 99, 45,
|
227, 215, 69, 99, 12, 92,
|
||||||
74, 91, 165, 30, 112, 56,
|
64, 125, 157, 249, 226, 117,
|
||||||
14, 246, 1, 0, 0, 0,
|
84, 162, 1, 0, 0, 0,
|
||||||
220, 13, 0, 0, 6, 0,
|
220, 13, 0, 0, 6, 0,
|
||||||
0, 0, 56, 0, 0, 0,
|
0, 0, 56, 0, 0, 0,
|
||||||
108, 10, 0, 0, 160, 10,
|
108, 10, 0, 0, 160, 10,
|
||||||
|
@ -138,7 +138,7 @@ const BYTE continuous_quad_1cp_hs[] =
|
||||||
0, 0, 120, 0, 0, 0,
|
0, 0, 120, 0, 0, 0,
|
||||||
1, 0, 0, 0, 60, 0,
|
1, 0, 0, 0, 60, 0,
|
||||||
0, 0, 1, 5, 83, 72,
|
0, 0, 1, 5, 83, 72,
|
||||||
0, 5, 0, 0, 2, 10,
|
0, 133, 0, 0, 2, 10,
|
||||||
0, 0, 19, 19, 68, 37,
|
0, 0, 19, 19, 68, 37,
|
||||||
60, 0, 0, 0, 24, 0,
|
60, 0, 0, 0, 24, 0,
|
||||||
0, 0, 40, 0, 0, 0,
|
0, 0, 40, 0, 0, 0,
|
||||||
|
|
|
@ -119,10 +119,10 @@ ret
|
||||||
|
|
||||||
const BYTE continuous_quad_4cp_hs[] =
|
const BYTE continuous_quad_4cp_hs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 196, 234,
|
68, 88, 66, 67, 116, 234,
|
||||||
51, 156, 242, 124, 98, 132,
|
162, 93, 170, 248, 70, 214,
|
||||||
34, 110, 229, 40, 64, 181,
|
249, 172, 236, 197, 214, 102,
|
||||||
146, 55, 1, 0, 0, 0,
|
6, 251, 1, 0, 0, 0,
|
||||||
160, 13, 0, 0, 6, 0,
|
160, 13, 0, 0, 6, 0,
|
||||||
0, 0, 56, 0, 0, 0,
|
0, 0, 56, 0, 0, 0,
|
||||||
108, 10, 0, 0, 160, 10,
|
108, 10, 0, 0, 160, 10,
|
||||||
|
@ -133,7 +133,7 @@ const BYTE continuous_quad_4cp_hs[] =
|
||||||
0, 0, 120, 0, 0, 0,
|
0, 0, 120, 0, 0, 0,
|
||||||
1, 0, 0, 0, 60, 0,
|
1, 0, 0, 0, 60, 0,
|
||||||
0, 0, 1, 5, 83, 72,
|
0, 0, 1, 5, 83, 72,
|
||||||
0, 5, 0, 0, 2, 10,
|
0, 133, 0, 0, 2, 10,
|
||||||
0, 0, 19, 19, 68, 37,
|
0, 0, 19, 19, 68, 37,
|
||||||
60, 0, 0, 0, 24, 0,
|
60, 0, 0, 0, 24, 0,
|
||||||
0, 0, 40, 0, 0, 0,
|
0, 0, 40, 0, 0, 0,
|
||||||
|
|
|
@ -115,10 +115,10 @@ ret
|
||||||
|
|
||||||
const BYTE continuous_triangle_1cp_hs[] =
|
const BYTE continuous_triangle_1cp_hs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 90, 24,
|
68, 88, 66, 67, 13, 212,
|
||||||
246, 119, 168, 170, 239, 21,
|
235, 60, 218, 159, 42, 97,
|
||||||
106, 76, 181, 188, 133, 81,
|
152, 254, 136, 238, 157, 239,
|
||||||
250, 172, 1, 0, 0, 0,
|
254, 239, 1, 0, 0, 0,
|
||||||
76, 13, 0, 0, 6, 0,
|
76, 13, 0, 0, 6, 0,
|
||||||
0, 0, 56, 0, 0, 0,
|
0, 0, 56, 0, 0, 0,
|
||||||
108, 10, 0, 0, 160, 10,
|
108, 10, 0, 0, 160, 10,
|
||||||
|
@ -129,7 +129,7 @@ const BYTE continuous_triangle_1cp_hs[] =
|
||||||
0, 0, 120, 0, 0, 0,
|
0, 0, 120, 0, 0, 0,
|
||||||
1, 0, 0, 0, 60, 0,
|
1, 0, 0, 0, 60, 0,
|
||||||
0, 0, 1, 5, 83, 72,
|
0, 0, 1, 5, 83, 72,
|
||||||
0, 5, 0, 0, 2, 10,
|
0, 133, 0, 0, 2, 10,
|
||||||
0, 0, 19, 19, 68, 37,
|
0, 0, 19, 19, 68, 37,
|
||||||
60, 0, 0, 0, 24, 0,
|
60, 0, 0, 0, 24, 0,
|
||||||
0, 0, 40, 0, 0, 0,
|
0, 0, 40, 0, 0, 0,
|
||||||
|
|
|
@ -110,10 +110,10 @@ ret
|
||||||
|
|
||||||
const BYTE continuous_triangle_3cp_hs[] =
|
const BYTE continuous_triangle_3cp_hs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 40, 16,
|
68, 88, 66, 67, 233, 113,
|
||||||
64, 130, 119, 149, 137, 0,
|
225, 202, 114, 220, 63, 59,
|
||||||
58, 149, 234, 138, 51, 145,
|
58, 73, 218, 180, 26, 36,
|
||||||
29, 76, 1, 0, 0, 0,
|
239, 144, 1, 0, 0, 0,
|
||||||
16, 13, 0, 0, 6, 0,
|
16, 13, 0, 0, 6, 0,
|
||||||
0, 0, 56, 0, 0, 0,
|
0, 0, 56, 0, 0, 0,
|
||||||
108, 10, 0, 0, 160, 10,
|
108, 10, 0, 0, 160, 10,
|
||||||
|
@ -124,7 +124,7 @@ const BYTE continuous_triangle_3cp_hs[] =
|
||||||
0, 0, 120, 0, 0, 0,
|
0, 0, 120, 0, 0, 0,
|
||||||
1, 0, 0, 0, 60, 0,
|
1, 0, 0, 0, 60, 0,
|
||||||
0, 0, 1, 5, 83, 72,
|
0, 0, 1, 5, 83, 72,
|
||||||
0, 5, 0, 0, 2, 10,
|
0, 133, 0, 0, 2, 10,
|
||||||
0, 0, 19, 19, 68, 37,
|
0, 0, 19, 19, 68, 37,
|
||||||
60, 0, 0, 0, 24, 0,
|
60, 0, 0, 0, 24, 0,
|
||||||
0, 0, 40, 0, 0, 0,
|
0, 0, 40, 0, 0, 0,
|
||||||
|
|
|
@ -124,10 +124,10 @@ ret
|
||||||
|
|
||||||
const BYTE discrete_quad_1cp_hs[] =
|
const BYTE discrete_quad_1cp_hs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 166, 226,
|
68, 88, 66, 67, 165, 52,
|
||||||
56, 134, 119, 149, 47, 144,
|
204, 204, 194, 155, 13, 103,
|
||||||
135, 3, 42, 236, 243, 129,
|
80, 123, 212, 59, 251, 122,
|
||||||
164, 56, 1, 0, 0, 0,
|
105, 248, 1, 0, 0, 0,
|
||||||
220, 13, 0, 0, 6, 0,
|
220, 13, 0, 0, 6, 0,
|
||||||
0, 0, 56, 0, 0, 0,
|
0, 0, 56, 0, 0, 0,
|
||||||
108, 10, 0, 0, 160, 10,
|
108, 10, 0, 0, 160, 10,
|
||||||
|
@ -138,7 +138,7 @@ const BYTE discrete_quad_1cp_hs[] =
|
||||||
0, 0, 120, 0, 0, 0,
|
0, 0, 120, 0, 0, 0,
|
||||||
1, 0, 0, 0, 60, 0,
|
1, 0, 0, 0, 60, 0,
|
||||||
0, 0, 1, 5, 83, 72,
|
0, 0, 1, 5, 83, 72,
|
||||||
0, 5, 0, 0, 2, 10,
|
0, 133, 0, 0, 2, 10,
|
||||||
0, 0, 19, 19, 68, 37,
|
0, 0, 19, 19, 68, 37,
|
||||||
60, 0, 0, 0, 24, 0,
|
60, 0, 0, 0, 24, 0,
|
||||||
0, 0, 40, 0, 0, 0,
|
0, 0, 40, 0, 0, 0,
|
||||||
|
|
|
@ -119,10 +119,10 @@ ret
|
||||||
|
|
||||||
const BYTE discrete_quad_4cp_hs[] =
|
const BYTE discrete_quad_4cp_hs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 192, 34,
|
68, 88, 66, 67, 16, 87,
|
||||||
77, 20, 70, 107, 155, 33,
|
236, 218, 198, 66, 71, 54,
|
||||||
163, 40, 168, 219, 244, 3,
|
132, 21, 151, 76, 65, 105,
|
||||||
133, 198, 1, 0, 0, 0,
|
141, 150, 1, 0, 0, 0,
|
||||||
160, 13, 0, 0, 6, 0,
|
160, 13, 0, 0, 6, 0,
|
||||||
0, 0, 56, 0, 0, 0,
|
0, 0, 56, 0, 0, 0,
|
||||||
108, 10, 0, 0, 160, 10,
|
108, 10, 0, 0, 160, 10,
|
||||||
|
@ -133,7 +133,7 @@ const BYTE discrete_quad_4cp_hs[] =
|
||||||
0, 0, 120, 0, 0, 0,
|
0, 0, 120, 0, 0, 0,
|
||||||
1, 0, 0, 0, 60, 0,
|
1, 0, 0, 0, 60, 0,
|
||||||
0, 0, 1, 5, 83, 72,
|
0, 0, 1, 5, 83, 72,
|
||||||
0, 5, 0, 0, 2, 10,
|
0, 133, 0, 0, 2, 10,
|
||||||
0, 0, 19, 19, 68, 37,
|
0, 0, 19, 19, 68, 37,
|
||||||
60, 0, 0, 0, 24, 0,
|
60, 0, 0, 0, 24, 0,
|
||||||
0, 0, 40, 0, 0, 0,
|
0, 0, 40, 0, 0, 0,
|
||||||
|
|
|
@ -115,10 +115,10 @@ ret
|
||||||
|
|
||||||
const BYTE discrete_triangle_1cp_hs[] =
|
const BYTE discrete_triangle_1cp_hs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 227, 140,
|
68, 88, 66, 67, 197, 229,
|
||||||
35, 65, 156, 178, 224, 139,
|
159, 30, 194, 0, 153, 220,
|
||||||
122, 75, 128, 231, 90, 78,
|
42, 21, 139, 137, 89, 30,
|
||||||
65, 91, 1, 0, 0, 0,
|
193, 158, 1, 0, 0, 0,
|
||||||
76, 13, 0, 0, 6, 0,
|
76, 13, 0, 0, 6, 0,
|
||||||
0, 0, 56, 0, 0, 0,
|
0, 0, 56, 0, 0, 0,
|
||||||
108, 10, 0, 0, 160, 10,
|
108, 10, 0, 0, 160, 10,
|
||||||
|
@ -129,7 +129,7 @@ const BYTE discrete_triangle_1cp_hs[] =
|
||||||
0, 0, 120, 0, 0, 0,
|
0, 0, 120, 0, 0, 0,
|
||||||
1, 0, 0, 0, 60, 0,
|
1, 0, 0, 0, 60, 0,
|
||||||
0, 0, 1, 5, 83, 72,
|
0, 0, 1, 5, 83, 72,
|
||||||
0, 5, 0, 0, 2, 10,
|
0, 133, 0, 0, 2, 10,
|
||||||
0, 0, 19, 19, 68, 37,
|
0, 0, 19, 19, 68, 37,
|
||||||
60, 0, 0, 0, 24, 0,
|
60, 0, 0, 0, 24, 0,
|
||||||
0, 0, 40, 0, 0, 0,
|
0, 0, 40, 0, 0, 0,
|
||||||
|
|
|
@ -110,10 +110,10 @@ ret
|
||||||
|
|
||||||
const BYTE discrete_triangle_3cp_hs[] =
|
const BYTE discrete_triangle_3cp_hs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 159, 101,
|
68, 88, 66, 67, 139, 223,
|
||||||
17, 163, 1, 25, 162, 203,
|
191, 44, 68, 98, 126, 144,
|
||||||
87, 30, 32, 90, 1, 126,
|
126, 96, 85, 110, 153, 205,
|
||||||
212, 108, 1, 0, 0, 0,
|
210, 160, 1, 0, 0, 0,
|
||||||
16, 13, 0, 0, 6, 0,
|
16, 13, 0, 0, 6, 0,
|
||||||
0, 0, 56, 0, 0, 0,
|
0, 0, 56, 0, 0, 0,
|
||||||
108, 10, 0, 0, 160, 10,
|
108, 10, 0, 0, 160, 10,
|
||||||
|
@ -124,7 +124,7 @@ const BYTE discrete_triangle_3cp_hs[] =
|
||||||
0, 0, 120, 0, 0, 0,
|
0, 0, 120, 0, 0, 0,
|
||||||
1, 0, 0, 0, 60, 0,
|
1, 0, 0, 0, 60, 0,
|
||||||
0, 0, 1, 5, 83, 72,
|
0, 0, 1, 5, 83, 72,
|
||||||
0, 5, 0, 0, 2, 10,
|
0, 133, 0, 0, 2, 10,
|
||||||
0, 0, 19, 19, 68, 37,
|
0, 0, 19, 19, 68, 37,
|
||||||
60, 0, 0, 0, 24, 0,
|
60, 0, 0, 0, 24, 0,
|
||||||
0, 0, 40, 0, 0, 0,
|
0, 0, 40, 0, 0, 0,
|
||||||
|
|
|
@ -76,10 +76,10 @@ ret
|
||||||
|
|
||||||
const BYTE float24_round_ps[] =
|
const BYTE float24_round_ps[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 110, 79,
|
68, 88, 66, 67, 64, 39,
|
||||||
84, 202, 151, 165, 237, 180,
|
206, 8, 59, 85, 177, 234,
|
||||||
64, 17, 0, 132, 236, 126,
|
153, 70, 208, 137, 67, 218,
|
||||||
142, 105, 1, 0, 0, 0,
|
238, 76, 1, 0, 0, 0,
|
||||||
8, 7, 0, 0, 5, 0,
|
8, 7, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
160, 0, 0, 0, 120, 2,
|
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,
|
||||||
0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
255, 255, 0, 5, 0, 0,
|
255, 255, 0, 133, 0, 0,
|
||||||
60, 0, 0, 0, 19, 19,
|
60, 0, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -58,10 +58,10 @@ ret
|
||||||
|
|
||||||
const BYTE float24_truncate_ps[] =
|
const BYTE float24_truncate_ps[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 234, 72,
|
68, 88, 66, 67, 132, 69,
|
||||||
187, 196, 185, 155, 10, 179,
|
218, 124, 229, 21, 139, 154,
|
||||||
119, 204, 17, 88, 131, 142,
|
8, 62, 140, 60, 17, 113,
|
||||||
107, 205, 1, 0, 0, 0,
|
79, 185, 1, 0, 0, 0,
|
||||||
140, 4, 0, 0, 5, 0,
|
140, 4, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
160, 0, 0, 0, 120, 2,
|
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,
|
||||||
0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
255, 255, 0, 5, 0, 0,
|
255, 255, 0, 133, 0, 0,
|
||||||
60, 0, 0, 0, 19, 19,
|
60, 0, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -34,10 +34,10 @@ ret
|
||||||
|
|
||||||
const BYTE fullscreen_cw_vs[] =
|
const BYTE fullscreen_cw_vs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 38, 212,
|
68, 88, 66, 67, 44, 184,
|
||||||
32, 171, 28, 206, 206, 51,
|
116, 45, 104, 233, 243, 190,
|
||||||
24, 105, 112, 99, 117, 136,
|
18, 64, 10, 59, 205, 210,
|
||||||
1, 11, 1, 0, 0, 0,
|
158, 233, 1, 0, 0, 0,
|
||||||
172, 2, 0, 0, 5, 0,
|
172, 2, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
160, 0, 0, 0, 212, 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,
|
||||||
0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
254, 255, 0, 5, 0, 0,
|
254, 255, 0, 133, 0, 0,
|
||||||
60, 0, 0, 0, 19, 19,
|
60, 0, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -255,10 +255,10 @@ ret
|
||||||
|
|
||||||
const BYTE fxaa_cs[] =
|
const BYTE fxaa_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 166, 45,
|
68, 88, 66, 67, 234, 25,
|
||||||
113, 211, 255, 20, 36, 199,
|
97, 122, 217, 161, 28, 166,
|
||||||
11, 156, 236, 21, 81, 60,
|
44, 124, 67, 127, 168, 53,
|
||||||
246, 32, 1, 0, 0, 0,
|
80, 76, 1, 0, 0, 0,
|
||||||
184, 23, 0, 0, 5, 0,
|
184, 23, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
108, 2, 0, 0, 124, 2,
|
108, 2, 0, 0, 124, 2,
|
||||||
|
@ -268,7 +268,7 @@ const BYTE fxaa_cs[] =
|
||||||
1, 0, 0, 0, 44, 1,
|
1, 0, 0, 0, 44, 1,
|
||||||
0, 0, 4, 0, 0, 0,
|
0, 0, 4, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
8, 2, 0, 0, 19, 19,
|
8, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -414,10 +414,10 @@ ret
|
||||||
|
|
||||||
const BYTE fxaa_extreme_cs[] =
|
const BYTE fxaa_extreme_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 201, 241,
|
68, 88, 66, 67, 189, 16,
|
||||||
80, 129, 142, 182, 61, 91,
|
199, 186, 6, 75, 163, 251,
|
||||||
66, 45, 161, 133, 204, 62,
|
13, 224, 187, 185, 58, 37,
|
||||||
115, 180, 1, 0, 0, 0,
|
113, 27, 1, 0, 0, 0,
|
||||||
16, 36, 0, 0, 5, 0,
|
16, 36, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
108, 2, 0, 0, 124, 2,
|
108, 2, 0, 0, 124, 2,
|
||||||
|
@ -427,7 +427,7 @@ const BYTE fxaa_extreme_cs[] =
|
||||||
1, 0, 0, 0, 44, 1,
|
1, 0, 0, 0, 44, 1,
|
||||||
0, 0, 4, 0, 0, 0,
|
0, 0, 4, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
8, 2, 0, 0, 19, 19,
|
8, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -97,10 +97,10 @@ ret
|
||||||
|
|
||||||
const BYTE host_depth_store_1xmsaa_cs[] =
|
const BYTE host_depth_store_1xmsaa_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 101, 185,
|
68, 88, 66, 67, 161, 227,
|
||||||
244, 76, 135, 30, 168, 205,
|
233, 121, 97, 254, 51, 119,
|
||||||
168, 156, 87, 250, 159, 201,
|
190, 57, 209, 105, 124, 108,
|
||||||
167, 249, 1, 0, 0, 0,
|
179, 206, 1, 0, 0, 0,
|
||||||
124, 9, 0, 0, 5, 0,
|
124, 9, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
52, 2, 0, 0, 68, 2,
|
52, 2, 0, 0, 68, 2,
|
||||||
|
@ -110,7 +110,7 @@ const BYTE host_depth_store_1xmsaa_cs[] =
|
||||||
1, 0, 0, 0, 252, 0,
|
1, 0, 0, 0, 252, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
206, 1, 0, 0, 19, 19,
|
206, 1, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -104,10 +104,10 @@ ret
|
||||||
|
|
||||||
const BYTE host_depth_store_2xmsaa_cs[] =
|
const BYTE host_depth_store_2xmsaa_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 53, 229,
|
68, 88, 66, 67, 46, 135,
|
||||||
11, 82, 42, 106, 228, 206,
|
107, 134, 178, 146, 139, 212,
|
||||||
117, 28, 155, 89, 148, 73,
|
88, 98, 218, 32, 150, 184,
|
||||||
155, 130, 1, 0, 0, 0,
|
131, 165, 1, 0, 0, 0,
|
||||||
168, 10, 0, 0, 5, 0,
|
168, 10, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
52, 2, 0, 0, 68, 2,
|
52, 2, 0, 0, 68, 2,
|
||||||
|
@ -117,7 +117,7 @@ const BYTE host_depth_store_2xmsaa_cs[] =
|
||||||
1, 0, 0, 0, 252, 0,
|
1, 0, 0, 0, 252, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
206, 1, 0, 0, 19, 19,
|
206, 1, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -92,10 +92,10 @@ ret
|
||||||
|
|
||||||
const BYTE host_depth_store_4xmsaa_cs[] =
|
const BYTE host_depth_store_4xmsaa_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 120, 97,
|
68, 88, 66, 67, 13, 254,
|
||||||
118, 77, 173, 221, 208, 245,
|
100, 95, 154, 193, 218, 107,
|
||||||
112, 230, 146, 134, 208, 200,
|
161, 243, 181, 246, 172, 149,
|
||||||
185, 147, 1, 0, 0, 0,
|
175, 158, 1, 0, 0, 0,
|
||||||
92, 9, 0, 0, 5, 0,
|
92, 9, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
52, 2, 0, 0, 68, 2,
|
52, 2, 0, 0, 68, 2,
|
||||||
|
@ -105,7 +105,7 @@ const BYTE host_depth_store_4xmsaa_cs[] =
|
||||||
1, 0, 0, 0, 252, 0,
|
1, 0, 0, 0, 252, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
206, 1, 0, 0, 19, 19,
|
206, 1, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -29,10 +29,10 @@ ret
|
||||||
|
|
||||||
const BYTE passthrough_position_xy_vs[] =
|
const BYTE passthrough_position_xy_vs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 92, 220,
|
68, 88, 66, 67, 199, 174,
|
||||||
0, 199, 190, 67, 183, 153,
|
221, 195, 135, 63, 20, 78,
|
||||||
171, 192, 4, 39, 67, 55,
|
116, 2, 21, 180, 142, 169,
|
||||||
215, 255, 1, 0, 0, 0,
|
188, 83, 1, 0, 0, 0,
|
||||||
12, 2, 0, 0, 5, 0,
|
12, 2, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
160, 0, 0, 0, 212, 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,
|
||||||
0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
254, 255, 0, 5, 0, 0,
|
254, 255, 0, 133, 0, 0,
|
||||||
60, 0, 0, 0, 19, 19,
|
60, 0, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -81,10 +81,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_clear_32bpp_cs[] =
|
const BYTE resolve_clear_32bpp_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 38, 122,
|
68, 88, 66, 67, 242, 56,
|
||||||
202, 153, 251, 58, 216, 106,
|
37, 146, 241, 170, 87, 58,
|
||||||
227, 253, 80, 133, 51, 242,
|
104, 64, 59, 215, 78, 157,
|
||||||
143, 213, 1, 0, 0, 0,
|
200, 12, 1, 0, 0, 0,
|
||||||
156, 7, 0, 0, 5, 0,
|
156, 7, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
68, 2, 0, 0, 84, 2,
|
68, 2, 0, 0, 84, 2,
|
||||||
|
@ -94,7 +94,7 @@ const BYTE resolve_clear_32bpp_cs[] =
|
||||||
1, 0, 0, 0, 176, 0,
|
1, 0, 0, 0, 176, 0,
|
||||||
0, 0, 2, 0, 0, 0,
|
0, 0, 2, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
223, 1, 0, 0, 19, 19,
|
223, 1, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -88,10 +88,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_clear_32bpp_scaled_cs[] =
|
const BYTE resolve_clear_32bpp_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 45, 106,
|
68, 88, 66, 67, 137, 148,
|
||||||
14, 236, 43, 234, 238, 250,
|
183, 219, 159, 236, 93, 184,
|
||||||
95, 188, 122, 214, 173, 229,
|
74, 106, 30, 84, 239, 115,
|
||||||
247, 237, 1, 0, 0, 0,
|
151, 93, 1, 0, 0, 0,
|
||||||
84, 8, 0, 0, 5, 0,
|
84, 8, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
68, 2, 0, 0, 84, 2,
|
68, 2, 0, 0, 84, 2,
|
||||||
|
@ -101,7 +101,7 @@ const BYTE resolve_clear_32bpp_scaled_cs[] =
|
||||||
1, 0, 0, 0, 176, 0,
|
1, 0, 0, 0, 176, 0,
|
||||||
0, 0, 2, 0, 0, 0,
|
0, 0, 2, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
223, 1, 0, 0, 19, 19,
|
223, 1, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -80,10 +80,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_clear_64bpp_cs[] =
|
const BYTE resolve_clear_64bpp_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 221, 142,
|
68, 88, 66, 67, 244, 52,
|
||||||
107, 167, 120, 242, 181, 185,
|
88, 6, 32, 217, 210, 208,
|
||||||
59, 248, 177, 166, 145, 243,
|
195, 116, 194, 24, 57, 186,
|
||||||
207, 105, 1, 0, 0, 0,
|
18, 39, 1, 0, 0, 0,
|
||||||
184, 7, 0, 0, 5, 0,
|
184, 7, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
68, 2, 0, 0, 84, 2,
|
68, 2, 0, 0, 84, 2,
|
||||||
|
@ -93,7 +93,7 @@ const BYTE resolve_clear_64bpp_cs[] =
|
||||||
1, 0, 0, 0, 176, 0,
|
1, 0, 0, 0, 176, 0,
|
||||||
0, 0, 2, 0, 0, 0,
|
0, 0, 2, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
223, 1, 0, 0, 19, 19,
|
223, 1, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -86,10 +86,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_clear_64bpp_scaled_cs[] =
|
const BYTE resolve_clear_64bpp_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 253, 175,
|
68, 88, 66, 67, 238, 76,
|
||||||
96, 159, 160, 58, 235, 9,
|
127, 8, 220, 198, 215, 236,
|
||||||
160, 146, 61, 232, 29, 141,
|
76, 99, 221, 185, 146, 251,
|
||||||
206, 165, 1, 0, 0, 0,
|
171, 23, 1, 0, 0, 0,
|
||||||
92, 8, 0, 0, 5, 0,
|
92, 8, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
68, 2, 0, 0, 84, 2,
|
68, 2, 0, 0, 84, 2,
|
||||||
|
@ -99,7 +99,7 @@ const BYTE resolve_clear_64bpp_scaled_cs[] =
|
||||||
1, 0, 0, 0, 176, 0,
|
1, 0, 0, 0, 176, 0,
|
||||||
0, 0, 2, 0, 0, 0,
|
0, 0, 2, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
223, 1, 0, 0, 19, 19,
|
223, 1, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -212,10 +212,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_fast_32bpp_1x2xmsaa_cs[] =
|
const BYTE resolve_fast_32bpp_1x2xmsaa_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 41, 182,
|
68, 88, 66, 67, 69, 61,
|
||||||
19, 66, 20, 173, 174, 127,
|
230, 206, 236, 167, 194, 20,
|
||||||
172, 66, 27, 72, 227, 5,
|
192, 231, 1, 107, 134, 248,
|
||||||
193, 244, 1, 0, 0, 0,
|
167, 178, 1, 0, 0, 0,
|
||||||
112, 24, 0, 0, 5, 0,
|
112, 24, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
212, 2, 0, 0, 228, 2,
|
212, 2, 0, 0, 228, 2,
|
||||||
|
@ -225,7 +225,7 @@ const BYTE resolve_fast_32bpp_1x2xmsaa_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
109, 2, 0, 0, 19, 19,
|
109, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -268,10 +268,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_fast_32bpp_1x2xmsaa_scaled_cs[] =
|
const BYTE resolve_fast_32bpp_1x2xmsaa_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 140, 139,
|
68, 88, 66, 67, 250, 154,
|
||||||
208, 26, 49, 227, 94, 97,
|
186, 234, 43, 128, 10, 180,
|
||||||
132, 210, 183, 43, 19, 110,
|
20, 122, 131, 199, 198, 115,
|
||||||
110, 29, 1, 0, 0, 0,
|
22, 134, 1, 0, 0, 0,
|
||||||
16, 30, 0, 0, 5, 0,
|
16, 30, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
148, 2, 0, 0, 164, 2,
|
148, 2, 0, 0, 164, 2,
|
||||||
|
@ -281,7 +281,7 @@ const BYTE resolve_fast_32bpp_1x2xmsaa_scaled_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
48, 2, 0, 0, 19, 19,
|
48, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -225,10 +225,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_fast_32bpp_4xmsaa_cs[] =
|
const BYTE resolve_fast_32bpp_4xmsaa_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 61, 130,
|
68, 88, 66, 67, 126, 14,
|
||||||
57, 198, 179, 109, 109, 15,
|
216, 72, 60, 85, 35, 5,
|
||||||
76, 38, 59, 56, 155, 60,
|
165, 244, 122, 140, 153, 26,
|
||||||
217, 88, 1, 0, 0, 0,
|
53, 56, 1, 0, 0, 0,
|
||||||
200, 25, 0, 0, 5, 0,
|
200, 25, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
212, 2, 0, 0, 228, 2,
|
212, 2, 0, 0, 228, 2,
|
||||||
|
@ -238,7 +238,7 @@ const BYTE resolve_fast_32bpp_4xmsaa_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
109, 2, 0, 0, 19, 19,
|
109, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -283,10 +283,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_fast_32bpp_4xmsaa_scaled_cs[] =
|
const BYTE resolve_fast_32bpp_4xmsaa_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 174, 152,
|
68, 88, 66, 67, 223, 67,
|
||||||
114, 154, 173, 135, 151, 111,
|
170, 172, 170, 38, 212, 67,
|
||||||
177, 182, 183, 183, 204, 11,
|
225, 18, 41, 139, 127, 103,
|
||||||
136, 150, 1, 0, 0, 0,
|
228, 92, 1, 0, 0, 0,
|
||||||
144, 31, 0, 0, 5, 0,
|
144, 31, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
148, 2, 0, 0, 164, 2,
|
148, 2, 0, 0, 164, 2,
|
||||||
|
@ -296,7 +296,7 @@ const BYTE resolve_fast_32bpp_4xmsaa_scaled_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
48, 2, 0, 0, 19, 19,
|
48, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -201,10 +201,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_fast_64bpp_1x2xmsaa_cs[] =
|
const BYTE resolve_fast_64bpp_1x2xmsaa_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 192, 144,
|
68, 88, 66, 67, 174, 50,
|
||||||
23, 122, 155, 1, 243, 31,
|
215, 28, 233, 100, 239, 50,
|
||||||
7, 21, 111, 51, 35, 67,
|
29, 250, 114, 91, 70, 217,
|
||||||
95, 205, 1, 0, 0, 0,
|
48, 100, 1, 0, 0, 0,
|
||||||
4, 23, 0, 0, 5, 0,
|
4, 23, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
212, 2, 0, 0, 228, 2,
|
212, 2, 0, 0, 228, 2,
|
||||||
|
@ -214,7 +214,7 @@ const BYTE resolve_fast_64bpp_1x2xmsaa_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
109, 2, 0, 0, 19, 19,
|
109, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -256,10 +256,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_fast_64bpp_1x2xmsaa_scaled_cs[] =
|
const BYTE resolve_fast_64bpp_1x2xmsaa_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 229, 216,
|
68, 88, 66, 67, 74, 212,
|
||||||
127, 11, 179, 132, 148, 134,
|
250, 250, 179, 209, 110, 130,
|
||||||
14, 252, 107, 90, 151, 209,
|
218, 196, 204, 34, 97, 239,
|
||||||
147, 95, 1, 0, 0, 0,
|
156, 36, 1, 0, 0, 0,
|
||||||
32, 28, 0, 0, 5, 0,
|
32, 28, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
148, 2, 0, 0, 164, 2,
|
148, 2, 0, 0, 164, 2,
|
||||||
|
@ -269,7 +269,7 @@ const BYTE resolve_fast_64bpp_1x2xmsaa_scaled_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
48, 2, 0, 0, 19, 19,
|
48, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -204,10 +204,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_fast_64bpp_4xmsaa_cs[] =
|
const BYTE resolve_fast_64bpp_4xmsaa_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 6, 199,
|
68, 88, 66, 67, 160, 242,
|
||||||
117, 199, 39, 84, 191, 46,
|
111, 151, 72, 169, 167, 62,
|
||||||
132, 102, 38, 210, 189, 154,
|
73, 89, 60, 230, 235, 221,
|
||||||
94, 57, 1, 0, 0, 0,
|
207, 206, 1, 0, 0, 0,
|
||||||
76, 23, 0, 0, 5, 0,
|
76, 23, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
212, 2, 0, 0, 228, 2,
|
212, 2, 0, 0, 228, 2,
|
||||||
|
@ -217,7 +217,7 @@ const BYTE resolve_fast_64bpp_4xmsaa_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
109, 2, 0, 0, 19, 19,
|
109, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -257,10 +257,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_fast_64bpp_4xmsaa_scaled_cs[] =
|
const BYTE resolve_fast_64bpp_4xmsaa_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 104, 87,
|
68, 88, 66, 67, 110, 75,
|
||||||
183, 27, 147, 240, 163, 194,
|
18, 255, 5, 26, 244, 181,
|
||||||
4, 176, 73, 155, 224, 235,
|
119, 164, 197, 69, 18, 195,
|
||||||
183, 137, 1, 0, 0, 0,
|
132, 50, 1, 0, 0, 0,
|
||||||
64, 28, 0, 0, 5, 0,
|
64, 28, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
148, 2, 0, 0, 164, 2,
|
148, 2, 0, 0, 164, 2,
|
||||||
|
@ -270,7 +270,7 @@ const BYTE resolve_fast_64bpp_4xmsaa_scaled_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
48, 2, 0, 0, 19, 19,
|
48, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -820,10 +820,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_full_128bpp_cs[] =
|
const BYTE resolve_full_128bpp_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 178, 0,
|
68, 88, 66, 67, 243, 105,
|
||||||
7, 93, 193, 87, 76, 171,
|
161, 203, 44, 157, 147, 173,
|
||||||
220, 111, 5, 73, 206, 3,
|
137, 221, 162, 79, 164, 199,
|
||||||
33, 68, 1, 0, 0, 0,
|
251, 145, 1, 0, 0, 0,
|
||||||
60, 89, 0, 0, 5, 0,
|
60, 89, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
212, 2, 0, 0, 228, 2,
|
212, 2, 0, 0, 228, 2,
|
||||||
|
@ -833,7 +833,7 @@ const BYTE resolve_full_128bpp_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
109, 2, 0, 0, 19, 19,
|
109, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -861,10 +861,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_full_128bpp_scaled_cs[] =
|
const BYTE resolve_full_128bpp_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 222, 231,
|
68, 88, 66, 67, 206, 58,
|
||||||
24, 101, 69, 158, 231, 93,
|
117, 119, 243, 116, 185, 199,
|
||||||
157, 64, 249, 12, 108, 158,
|
121, 104, 158, 144, 238, 166,
|
||||||
86, 115, 1, 0, 0, 0,
|
124, 84, 1, 0, 0, 0,
|
||||||
248, 92, 0, 0, 5, 0,
|
248, 92, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
148, 2, 0, 0, 164, 2,
|
148, 2, 0, 0, 164, 2,
|
||||||
|
@ -874,7 +874,7 @@ const BYTE resolve_full_128bpp_scaled_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
48, 2, 0, 0, 19, 19,
|
48, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -1379,10 +1379,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_full_16bpp_cs[] =
|
const BYTE resolve_full_16bpp_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 15, 204,
|
68, 88, 66, 67, 90, 19,
|
||||||
240, 251, 250, 135, 91, 185,
|
195, 232, 171, 15, 99, 163,
|
||||||
160, 221, 77, 213, 71, 102,
|
133, 62, 77, 129, 122, 77,
|
||||||
252, 79, 1, 0, 0, 0,
|
35, 6, 1, 0, 0, 0,
|
||||||
4, 162, 0, 0, 5, 0,
|
4, 162, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
212, 2, 0, 0, 228, 2,
|
212, 2, 0, 0, 228, 2,
|
||||||
|
@ -1392,7 +1392,7 @@ const BYTE resolve_full_16bpp_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
109, 2, 0, 0, 19, 19,
|
109, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -1405,10 +1405,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_full_16bpp_scaled_cs[] =
|
const BYTE resolve_full_16bpp_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 6, 134,
|
68, 88, 66, 67, 165, 201,
|
||||||
89, 179, 240, 20, 103, 34,
|
9, 237, 42, 145, 208, 208,
|
||||||
167, 211, 125, 178, 23, 5,
|
166, 88, 189, 126, 25, 208,
|
||||||
125, 86, 1, 0, 0, 0,
|
212, 86, 1, 0, 0, 0,
|
||||||
84, 164, 0, 0, 5, 0,
|
84, 164, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
148, 2, 0, 0, 164, 2,
|
148, 2, 0, 0, 164, 2,
|
||||||
|
@ -1418,7 +1418,7 @@ const BYTE resolve_full_16bpp_scaled_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
48, 2, 0, 0, 19, 19,
|
48, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -1382,10 +1382,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_full_32bpp_cs[] =
|
const BYTE resolve_full_32bpp_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 24, 109,
|
68, 88, 66, 67, 216, 251,
|
||||||
106, 69, 151, 197, 239, 147,
|
80, 149, 52, 146, 11, 112,
|
||||||
13, 237, 219, 141, 142, 249,
|
21, 58, 223, 98, 132, 210,
|
||||||
135, 22, 1, 0, 0, 0,
|
18, 46, 1, 0, 0, 0,
|
||||||
124, 161, 0, 0, 5, 0,
|
124, 161, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
212, 2, 0, 0, 228, 2,
|
212, 2, 0, 0, 228, 2,
|
||||||
|
@ -1395,7 +1395,7 @@ const BYTE resolve_full_32bpp_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
109, 2, 0, 0, 19, 19,
|
109, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -1417,10 +1417,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_full_32bpp_scaled_cs[] =
|
const BYTE resolve_full_32bpp_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 6, 158,
|
68, 88, 66, 67, 10, 183,
|
||||||
174, 163, 148, 166, 215, 79,
|
21, 150, 28, 233, 176, 36,
|
||||||
210, 99, 73, 246, 195, 105,
|
104, 199, 234, 41, 222, 157,
|
||||||
236, 221, 1, 0, 0, 0,
|
143, 7, 1, 0, 0, 0,
|
||||||
40, 165, 0, 0, 5, 0,
|
40, 165, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
148, 2, 0, 0, 164, 2,
|
148, 2, 0, 0, 164, 2,
|
||||||
|
@ -1430,7 +1430,7 @@ const BYTE resolve_full_32bpp_scaled_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
48, 2, 0, 0, 19, 19,
|
48, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -1305,10 +1305,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_full_64bpp_cs[] =
|
const BYTE resolve_full_64bpp_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 234, 38,
|
68, 88, 66, 67, 11, 91,
|
||||||
21, 182, 35, 183, 202, 36,
|
96, 77, 52, 218, 24, 240,
|
||||||
185, 118, 54, 144, 47, 172,
|
13, 35, 76, 178, 155, 232,
|
||||||
196, 130, 1, 0, 0, 0,
|
143, 247, 1, 0, 0, 0,
|
||||||
196, 151, 0, 0, 5, 0,
|
196, 151, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
212, 2, 0, 0, 228, 2,
|
212, 2, 0, 0, 228, 2,
|
||||||
|
@ -1318,7 +1318,7 @@ const BYTE resolve_full_64bpp_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
109, 2, 0, 0, 19, 19,
|
109, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -1360,10 +1360,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_full_64bpp_scaled_cs[] =
|
const BYTE resolve_full_64bpp_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 41, 45,
|
68, 88, 66, 67, 213, 152,
|
||||||
91, 69, 195, 67, 185, 148,
|
155, 83, 165, 187, 140, 156,
|
||||||
31, 95, 228, 114, 40, 107,
|
83, 189, 69, 17, 39, 68,
|
||||||
156, 11, 1, 0, 0, 0,
|
4, 48, 1, 0, 0, 0,
|
||||||
32, 157, 0, 0, 5, 0,
|
32, 157, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
148, 2, 0, 0, 164, 2,
|
148, 2, 0, 0, 164, 2,
|
||||||
|
@ -1373,7 +1373,7 @@ const BYTE resolve_full_64bpp_scaled_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
48, 2, 0, 0, 19, 19,
|
48, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -695,10 +695,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_full_8bpp_cs[] =
|
const BYTE resolve_full_8bpp_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 2, 204,
|
68, 88, 66, 67, 170, 125,
|
||||||
123, 70, 73, 201, 165, 174,
|
111, 197, 94, 88, 50, 97,
|
||||||
146, 180, 140, 190, 189, 134,
|
193, 240, 170, 21, 252, 155,
|
||||||
130, 203, 1, 0, 0, 0,
|
22, 147, 1, 0, 0, 0,
|
||||||
8, 79, 0, 0, 5, 0,
|
8, 79, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
212, 2, 0, 0, 228, 2,
|
212, 2, 0, 0, 228, 2,
|
||||||
|
@ -708,7 +708,7 @@ const BYTE resolve_full_8bpp_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
109, 2, 0, 0, 19, 19,
|
109, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -725,10 +725,10 @@ ret
|
||||||
|
|
||||||
const BYTE resolve_full_8bpp_scaled_cs[] =
|
const BYTE resolve_full_8bpp_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 90, 249,
|
68, 88, 66, 67, 167, 147,
|
||||||
142, 22, 19, 168, 112, 241,
|
84, 169, 74, 18, 10, 109,
|
||||||
237, 28, 119, 238, 127, 22,
|
215, 133, 87, 239, 210, 155,
|
||||||
182, 131, 1, 0, 0, 0,
|
89, 172, 1, 0, 0, 0,
|
||||||
12, 82, 0, 0, 5, 0,
|
12, 82, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
148, 2, 0, 0, 164, 2,
|
148, 2, 0, 0, 164, 2,
|
||||||
|
@ -738,7 +738,7 @@ const BYTE resolve_full_8bpp_scaled_cs[] =
|
||||||
1, 0, 0, 0, 232, 0,
|
1, 0, 0, 0, 232, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
48, 2, 0, 0, 19, 19,
|
48, 2, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -92,10 +92,10 @@ ret
|
||||||
|
|
||||||
const BYTE tessellation_adaptive_vs[] =
|
const BYTE tessellation_adaptive_vs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 124, 10,
|
68, 88, 66, 67, 51, 131,
|
||||||
20, 236, 52, 205, 17, 163,
|
48, 166, 55, 165, 29, 103,
|
||||||
29, 96, 4, 68, 69, 43,
|
39, 9, 168, 190, 39, 245,
|
||||||
2, 171, 1, 0, 0, 0,
|
38, 139, 1, 0, 0, 0,
|
||||||
116, 13, 0, 0, 5, 0,
|
116, 13, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
104, 10, 0, 0, 156, 10,
|
104, 10, 0, 0, 156, 10,
|
||||||
|
@ -105,7 +105,7 @@ const BYTE tessellation_adaptive_vs[] =
|
||||||
1, 0, 0, 0, 120, 0,
|
1, 0, 0, 0, 120, 0,
|
||||||
0, 0, 1, 0, 0, 0,
|
0, 0, 1, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
254, 255, 0, 5, 0, 0,
|
254, 255, 0, 133, 0, 0,
|
||||||
2, 10, 0, 0, 19, 19,
|
2, 10, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -94,10 +94,10 @@ ret
|
||||||
|
|
||||||
const BYTE tessellation_indexed_vs[] =
|
const BYTE tessellation_indexed_vs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 72, 50,
|
68, 88, 66, 67, 15, 204,
|
||||||
55, 79, 78, 232, 44, 71,
|
253, 55, 194, 237, 44, 241,
|
||||||
22, 110, 232, 129, 83, 139,
|
152, 177, 62, 72, 200, 136,
|
||||||
178, 150, 1, 0, 0, 0,
|
71, 87, 1, 0, 0, 0,
|
||||||
168, 13, 0, 0, 5, 0,
|
168, 13, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
104, 10, 0, 0, 156, 10,
|
104, 10, 0, 0, 156, 10,
|
||||||
|
@ -107,7 +107,7 @@ const BYTE tessellation_indexed_vs[] =
|
||||||
1, 0, 0, 0, 120, 0,
|
1, 0, 0, 0, 120, 0,
|
||||||
0, 0, 1, 0, 0, 0,
|
0, 0, 1, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
254, 255, 0, 5, 0, 0,
|
254, 255, 0, 133, 0, 0,
|
||||||
2, 10, 0, 0, 19, 19,
|
2, 10, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -163,10 +163,10 @@ ret
|
||||||
|
|
||||||
const BYTE texture_load_128bpb_cs[] =
|
const BYTE texture_load_128bpb_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 214, 5,
|
68, 88, 66, 67, 19, 157,
|
||||||
60, 162, 112, 238, 140, 124,
|
64, 131, 194, 104, 62, 170,
|
||||||
69, 240, 120, 85, 46, 219,
|
5, 8, 83, 246, 27, 104,
|
||||||
21, 16, 1, 0, 0, 0,
|
208, 60, 1, 0, 0, 0,
|
||||||
60, 19, 0, 0, 5, 0,
|
60, 19, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
32, 4, 0, 0, 48, 4,
|
32, 4, 0, 0, 48, 4,
|
||||||
|
@ -176,7 +176,7 @@ const BYTE texture_load_128bpb_cs[] =
|
||||||
1, 0, 0, 0, 252, 0,
|
1, 0, 0, 0, 252, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
185, 3, 0, 0, 19, 19,
|
185, 3, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -175,10 +175,10 @@ ret
|
||||||
|
|
||||||
const BYTE texture_load_128bpb_scaled_cs[] =
|
const BYTE texture_load_128bpb_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 2, 93,
|
68, 88, 66, 67, 239, 32,
|
||||||
246, 169, 167, 35, 22, 113,
|
185, 13, 52, 17, 210, 99,
|
||||||
86, 71, 151, 78, 19, 158,
|
159, 172, 128, 200, 222, 110,
|
||||||
93, 30, 1, 0, 0, 0,
|
235, 68, 1, 0, 0, 0,
|
||||||
152, 20, 0, 0, 5, 0,
|
152, 20, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
32, 4, 0, 0, 48, 4,
|
32, 4, 0, 0, 48, 4,
|
||||||
|
@ -188,7 +188,7 @@ const BYTE texture_load_128bpb_scaled_cs[] =
|
||||||
1, 0, 0, 0, 252, 0,
|
1, 0, 0, 0, 252, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
185, 3, 0, 0, 19, 19,
|
185, 3, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -150,10 +150,10 @@ ret
|
||||||
|
|
||||||
const BYTE texture_load_16bpb_cs[] =
|
const BYTE texture_load_16bpb_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 73, 16,
|
68, 88, 66, 67, 119, 44,
|
||||||
123, 255, 162, 124, 173, 250,
|
2, 27, 190, 250, 74, 203,
|
||||||
64, 86, 176, 231, 12, 30,
|
156, 172, 80, 110, 130, 201,
|
||||||
104, 106, 1, 0, 0, 0,
|
27, 67, 1, 0, 0, 0,
|
||||||
12, 17, 0, 0, 5, 0,
|
12, 17, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
32, 4, 0, 0, 48, 4,
|
32, 4, 0, 0, 48, 4,
|
||||||
|
@ -163,7 +163,7 @@ const BYTE texture_load_16bpb_cs[] =
|
||||||
1, 0, 0, 0, 252, 0,
|
1, 0, 0, 0, 252, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
185, 3, 0, 0, 19, 19,
|
185, 3, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -163,10 +163,10 @@ ret
|
||||||
|
|
||||||
const BYTE texture_load_16bpb_scaled_cs[] =
|
const BYTE texture_load_16bpb_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 141, 51,
|
68, 88, 66, 67, 125, 131,
|
||||||
224, 251, 47, 151, 104, 124,
|
50, 17, 90, 73, 56, 139,
|
||||||
111, 32, 127, 61, 80, 208,
|
54, 4, 153, 37, 110, 121,
|
||||||
82, 135, 1, 0, 0, 0,
|
169, 214, 1, 0, 0, 0,
|
||||||
248, 18, 0, 0, 5, 0,
|
248, 18, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
32, 4, 0, 0, 48, 4,
|
32, 4, 0, 0, 48, 4,
|
||||||
|
@ -176,7 +176,7 @@ const BYTE texture_load_16bpb_scaled_cs[] =
|
||||||
1, 0, 0, 0, 252, 0,
|
1, 0, 0, 0, 252, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
185, 3, 0, 0, 19, 19,
|
185, 3, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -160,10 +160,10 @@ ret
|
||||||
|
|
||||||
const BYTE texture_load_32bpb_cs[] =
|
const BYTE texture_load_32bpb_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 98, 145,
|
68, 88, 66, 67, 249, 168,
|
||||||
5, 109, 30, 253, 21, 117,
|
77, 87, 108, 105, 4, 198,
|
||||||
87, 178, 144, 179, 200, 55,
|
110, 34, 54, 207, 21, 252,
|
||||||
152, 199, 1, 0, 0, 0,
|
168, 88, 1, 0, 0, 0,
|
||||||
172, 18, 0, 0, 5, 0,
|
172, 18, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
32, 4, 0, 0, 48, 4,
|
32, 4, 0, 0, 48, 4,
|
||||||
|
@ -173,7 +173,7 @@ const BYTE texture_load_32bpb_cs[] =
|
||||||
1, 0, 0, 0, 252, 0,
|
1, 0, 0, 0, 252, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
185, 3, 0, 0, 19, 19,
|
185, 3, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -180,10 +180,10 @@ ret
|
||||||
|
|
||||||
const BYTE texture_load_32bpb_scaled_cs[] =
|
const BYTE texture_load_32bpb_scaled_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 15, 4,
|
68, 88, 66, 67, 242, 85,
|
||||||
168, 189, 89, 191, 242, 60,
|
13, 17, 241, 171, 79, 137,
|
||||||
93, 52, 119, 44, 148, 60,
|
167, 69, 8, 122, 31, 47,
|
||||||
94, 250, 1, 0, 0, 0,
|
43, 244, 1, 0, 0, 0,
|
||||||
100, 21, 0, 0, 5, 0,
|
100, 21, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
32, 4, 0, 0, 48, 4,
|
32, 4, 0, 0, 48, 4,
|
||||||
|
@ -193,7 +193,7 @@ const BYTE texture_load_32bpb_scaled_cs[] =
|
||||||
1, 0, 0, 0, 252, 0,
|
1, 0, 0, 0, 252, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
185, 3, 0, 0, 19, 19,
|
185, 3, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
|
@ -163,10 +163,10 @@ ret
|
||||||
|
|
||||||
const BYTE texture_load_64bpb_cs[] =
|
const BYTE texture_load_64bpb_cs[] =
|
||||||
{
|
{
|
||||||
68, 88, 66, 67, 142, 143,
|
68, 88, 66, 67, 107, 51,
|
||||||
217, 179, 11, 88, 188, 57,
|
156, 193, 167, 181, 132, 61,
|
||||||
121, 245, 128, 245, 106, 9,
|
74, 39, 227, 113, 168, 24,
|
||||||
187, 232, 1, 0, 0, 0,
|
241, 170, 1, 0, 0, 0,
|
||||||
72, 19, 0, 0, 5, 0,
|
72, 19, 0, 0, 5, 0,
|
||||||
0, 0, 52, 0, 0, 0,
|
0, 0, 52, 0, 0, 0,
|
||||||
32, 4, 0, 0, 48, 4,
|
32, 4, 0, 0, 48, 4,
|
||||||
|
@ -176,7 +176,7 @@ const BYTE texture_load_64bpb_cs[] =
|
||||||
1, 0, 0, 0, 252, 0,
|
1, 0, 0, 0, 252, 0,
|
||||||
0, 0, 3, 0, 0, 0,
|
0, 0, 3, 0, 0, 0,
|
||||||
60, 0, 0, 0, 1, 5,
|
60, 0, 0, 0, 1, 5,
|
||||||
83, 67, 0, 5, 0, 0,
|
83, 67, 0, 133, 0, 0,
|
||||||
185, 3, 0, 0, 19, 19,
|
185, 3, 0, 0, 19, 19,
|
||||||
68, 37, 60, 0, 0, 0,
|
68, 37, 60, 0, 0, 0,
|
||||||
24, 0, 0, 0, 40, 0,
|
24, 0, 0, 0, 40, 0,
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue