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