mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-11-02 12:07:02 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4b03ec072f |
@@ -36,6 +36,7 @@ add_library(
|
|||||||
cityhash.h
|
cityhash.h
|
||||||
common_funcs.h
|
common_funcs.h
|
||||||
common_types.h
|
common_types.h
|
||||||
|
concepts.h
|
||||||
container_hash.h
|
container_hash.h
|
||||||
demangle.cpp
|
demangle.cpp
|
||||||
demangle.h
|
demangle.h
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <iterator>
|
||||||
|
#include <type_traits>
|
||||||
|
|
||||||
|
namespace Common {
|
||||||
|
|
||||||
|
// Check if type satisfies the ContiguousContainer named requirement.
|
||||||
|
template <typename T>
|
||||||
|
concept IsContiguousContainer = std::contiguous_iterator<typename T::iterator>;
|
||||||
|
|
||||||
|
} // namespace Common
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2015 Evan Teran
|
// SPDX-FileCopyrightText: 2015 Evan Teran
|
||||||
@@ -15,6 +15,8 @@
|
|||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
|
#include <common/concepts.h>
|
||||||
|
|
||||||
namespace Common {
|
namespace Common {
|
||||||
|
|
||||||
// No equivalent for "std::arithmetic" in the stdlib
|
// No equivalent for "std::arithmetic" in the stdlib
|
||||||
|
|||||||
@@ -6,12 +6,12 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <concepts>
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include <span>
|
#include <span>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
|
#include "common/concepts.h"
|
||||||
#include "common/fs/fs_types.h"
|
#include "common/fs/fs_types.h"
|
||||||
#include "common/fs/fs_util.h"
|
#include "common/fs/fs_util.h"
|
||||||
|
|
||||||
@@ -212,7 +212,7 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper function which deduces the value type of a contiguous STL container used in ReadSpan.
|
* Helper function which deduces the value type of a contiguous STL container used in ReadSpan.
|
||||||
* If T is not a contiguous container as defined by the concept, this
|
* If T is not a contiguous container as defined by the concept IsContiguousContainer, this
|
||||||
* calls ReadObject and T must be a trivially copyable object.
|
* calls ReadObject and T must be a trivially copyable object.
|
||||||
*
|
*
|
||||||
* See ReadSpan for more details if T is a contiguous container.
|
* See ReadSpan for more details if T is a contiguous container.
|
||||||
@@ -226,7 +226,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T>
|
||||||
[[nodiscard]] size_t Read(T& data) const {
|
[[nodiscard]] size_t Read(T& data) const {
|
||||||
if constexpr (std::contiguous_iterator<typename T::iterator>) {
|
if constexpr (IsContiguousContainer<T>) {
|
||||||
using ContiguousType = typename T::value_type;
|
using ContiguousType = typename T::value_type;
|
||||||
static_assert(std::is_trivially_copyable_v<ContiguousType>,
|
static_assert(std::is_trivially_copyable_v<ContiguousType>,
|
||||||
"Data type must be trivially copyable.");
|
"Data type must be trivially copyable.");
|
||||||
@@ -238,7 +238,7 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper function which deduces the value type of a contiguous STL container used in WriteSpan.
|
* Helper function which deduces the value type of a contiguous STL container used in WriteSpan.
|
||||||
* If T is not a contiguous STL container as defined by the concept, this
|
* If T is not a contiguous STL container as defined by the concept IsContiguousContainer, this
|
||||||
* calls WriteObject and T must be a trivially copyable object.
|
* calls WriteObject and T must be a trivially copyable object.
|
||||||
*
|
*
|
||||||
* See WriteSpan for more details if T is a contiguous container.
|
* See WriteSpan for more details if T is a contiguous container.
|
||||||
@@ -252,7 +252,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T>
|
||||||
[[nodiscard]] size_t Write(const T& data) const {
|
[[nodiscard]] size_t Write(const T& data) const {
|
||||||
if constexpr (std::contiguous_iterator<typename T::iterator>) {
|
if constexpr (IsContiguousContainer<T>) {
|
||||||
using ContiguousType = typename T::value_type;
|
using ContiguousType = typename T::value_type;
|
||||||
static_assert(std::is_trivially_copyable_v<ContiguousType>,
|
static_assert(std::is_trivially_copyable_v<ContiguousType>,
|
||||||
"Data type must be trivially copyable.");
|
"Data type must be trivially copyable.");
|
||||||
|
|||||||
@@ -649,10 +649,10 @@ struct Values {
|
|||||||
|
|
||||||
SwitchableSetting<bool> fix_bloom_effects{linkage, false, "fix_bloom_effects",
|
SwitchableSetting<bool> fix_bloom_effects{linkage, false, "fix_bloom_effects",
|
||||||
Category::RendererHacks};
|
Category::RendererHacks};
|
||||||
|
#ifdef __ANDROID__
|
||||||
SwitchableSetting<bool> emulate_bgr565{linkage, false, "emulate_bgr565",
|
SwitchableSetting<bool> emulate_bgr565{linkage, false, "emulate_bgr565",
|
||||||
Category::RendererHacks};
|
Category::RendererHacks};
|
||||||
|
#endif
|
||||||
SwitchableSetting<bool> rescale_hack{linkage, false, "rescale_hack",
|
SwitchableSetting<bool> rescale_hack{linkage, false, "rescale_hack",
|
||||||
Category::RendererHacks};
|
Category::RendererHacks};
|
||||||
SwitchableSetting<bool> enable_gpu_buffer_readback{linkage,
|
SwitchableSetting<bool> enable_gpu_buffer_readback{linkage,
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <concepts>
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -19,6 +18,7 @@
|
|||||||
|
|
||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
|
#include "common/concepts.h"
|
||||||
#include "common/swap.h"
|
#include "common/swap.h"
|
||||||
#include "core/hle/ipc.h"
|
#include "core/hle/ipc.h"
|
||||||
#include "core/hle/kernel/k_handle_table.h"
|
#include "core/hle/kernel/k_handle_table.h"
|
||||||
@@ -292,20 +292,18 @@ public:
|
|||||||
* @param data The container/data to write into a buffer.
|
* @param data The container/data to write into a buffer.
|
||||||
* @param buffer_index The buffer in particular to write to.
|
* @param buffer_index The buffer in particular to write to.
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T, typename = std::enable_if_t<!std::is_pointer_v<T>>>
|
||||||
requires (!std::is_pointer_v<T>
|
|
||||||
&& std::contiguous_iterator<typename T::iterator>)
|
|
||||||
std::size_t WriteBuffer(const T& data, std::size_t buffer_index = 0) const {
|
std::size_t WriteBuffer(const T& data, std::size_t buffer_index = 0) const {
|
||||||
using C = typename T::value_type;
|
if constexpr (Common::IsContiguousContainer<T>) {
|
||||||
static_assert(std::is_trivially_copyable_v<C>, "Container to WriteBuffer must contain trivially copyable objects");
|
using ContiguousType = typename T::value_type;
|
||||||
return WriteBuffer(std::data(data), std::size(data) * sizeof(C), buffer_index);
|
static_assert(std::is_trivially_copyable_v<ContiguousType>,
|
||||||
}
|
"Container to WriteBuffer must contain trivially copyable objects");
|
||||||
template <typename T>
|
return WriteBuffer(std::data(data), std::size(data) * sizeof(ContiguousType),
|
||||||
requires (!std::is_pointer_v<T>
|
buffer_index);
|
||||||
&& !std::contiguous_iterator<typename T::iterator>)
|
} else {
|
||||||
std::size_t WriteBuffer(const T& data, std::size_t buffer_index = 0) const {
|
static_assert(std::is_trivially_copyable_v<T>, "T must be trivially copyable");
|
||||||
static_assert(std::is_trivially_copyable_v<T>, "T must be trivially copyable");
|
return WriteBuffer(&data, sizeof(T), buffer_index);
|
||||||
return WriteBuffer(&data, sizeof(T), buffer_index);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Helper function to get the size of the input buffer
|
/// Helper function to get the size of the input buffer
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
#include <span>
|
#include <span>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include "common/concepts.h"
|
||||||
#include "core/hle/service/nvdrv/devices/nvdevice.h"
|
#include "core/hle/service/nvdrv/devices/nvdevice.h"
|
||||||
|
|
||||||
namespace Service::Nvidia::Devices {
|
namespace Service::Nvidia::Devices {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <concepts>
|
#include <concepts>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include "common/concepts.h"
|
||||||
#include "common/fs/path_util.h"
|
#include "common/fs/path_util.h"
|
||||||
#include "common/logging.h"
|
#include "common/logging.h"
|
||||||
#include "common/string_util.h"
|
#include "common/string_util.h"
|
||||||
|
|||||||
@@ -993,7 +993,11 @@ bool Device::HasTimelineSemaphore() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Device::MustEmulateBGR565() const {
|
bool Device::MustEmulateBGR565() const {
|
||||||
|
#ifdef __ANDROID__
|
||||||
return Settings::values.emulate_bgr565.GetValue();
|
return Settings::values.emulate_bgr565.GetValue();
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Device::GetSuitability(bool requires_swapchain) {
|
bool Device::GetSuitability(bool requires_swapchain) {
|
||||||
|
|||||||
@@ -774,7 +774,7 @@ Builder::~Builder() = default;
|
|||||||
|
|
||||||
static bool IsAndroidOnly(const Settings::BasicSetting& setting) {
|
static bool IsAndroidOnly(const Settings::BasicSetting& setting) {
|
||||||
const std::string& label = setting.GetLabel();
|
const std::string& label = setting.GetLabel();
|
||||||
return label.starts_with("frame_gen") || label == "emulate_bgr565";
|
return label.starts_with("frame_gen");
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget* Builder::BuildWidget(Settings::BasicSetting* setting,
|
Widget* Builder::BuildWidget(Settings::BasicSetting* setting,
|
||||||
|
|||||||
Reference in New Issue
Block a user