diff options
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/common/cache_management.cpp | 59 | ||||
| -rw-r--r-- | src/common/cache_management.h | 27 | ||||
| -rw-r--r-- | src/common/settings.h | 3 |
4 files changed, 2 insertions, 89 deletions
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 6bdffcb7a..25b22a281 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt | |||
| @@ -34,8 +34,6 @@ add_library(common STATIC | |||
| 34 | bit_util.h | 34 | bit_util.h |
| 35 | cityhash.cpp | 35 | cityhash.cpp |
| 36 | cityhash.h | 36 | cityhash.h |
| 37 | cache_management.cpp | ||
| 38 | cache_management.h | ||
| 39 | common_funcs.h | 37 | common_funcs.h |
| 40 | common_precompiled_headers.h | 38 | common_precompiled_headers.h |
| 41 | common_types.h | 39 | common_types.h |
diff --git a/src/common/cache_management.cpp b/src/common/cache_management.cpp deleted file mode 100644 index ed353828a..000000000 --- a/src/common/cache_management.cpp +++ /dev/null | |||
| @@ -1,59 +0,0 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | #include <cstdint> | ||
| 5 | #include <cstring> | ||
| 6 | |||
| 7 | #include "common/cache_management.h" | ||
| 8 | |||
| 9 | namespace Common { | ||
| 10 | |||
| 11 | #if defined(ARCHITECTURE_x86_64) | ||
| 12 | |||
| 13 | // Most cache operations are no-ops on x86 | ||
| 14 | |||
| 15 | void DataCacheLineCleanByVAToPoU(void* start, size_t size) {} | ||
| 16 | void DataCacheLineCleanAndInvalidateByVAToPoC(void* start, size_t size) {} | ||
| 17 | void DataCacheLineCleanByVAToPoC(void* start, size_t size) {} | ||
| 18 | void DataCacheZeroByVA(void* start, size_t size) { | ||
| 19 | std::memset(start, 0, size); | ||
| 20 | } | ||
| 21 | |||
| 22 | #elif defined(ARCHITECTURE_arm64) | ||
| 23 | |||
| 24 | // BS/DminLine is log2(cache size in words), we want size in bytes | ||
| 25 | #define EXTRACT_DMINLINE(ctr_el0) (1 << ((((ctr_el0) >> 16) & 0xf) + 2)) | ||
| 26 | #define EXTRACT_BS(dczid_el0) (1 << (((dczid_el0)&0xf) + 2)) | ||
| 27 | |||
| 28 | #define DEFINE_DC_OP(op_name, function_name) \ | ||
| 29 | void function_name(void* start, size_t size) { \ | ||
| 30 | size_t ctr_el0; \ | ||
| 31 | asm volatile("mrs %[ctr_el0], ctr_el0\n\t" : [ctr_el0] "=r"(ctr_el0)); \ | ||
| 32 | size_t cacheline_size = EXTRACT_DMINLINE(ctr_el0); \ | ||
| 33 | uintptr_t va_start = reinterpret_cast<uintptr_t>(start); \ | ||
| 34 | uintptr_t va_end = va_start + size; \ | ||
| 35 | for (uintptr_t va = va_start; va < va_end; va += cacheline_size) { \ | ||
| 36 | asm volatile("dc " #op_name ", %[va]\n\t" : : [va] "r"(va) : "memory"); \ | ||
| 37 | } \ | ||
| 38 | } | ||
| 39 | |||
| 40 | #define DEFINE_DC_OP_DCZID(op_name, function_name) \ | ||
| 41 | void function_name(void* start, size_t size) { \ | ||
| 42 | size_t dczid_el0; \ | ||
| 43 | asm volatile("mrs %[dczid_el0], dczid_el0\n\t" : [dczid_el0] "=r"(dczid_el0)); \ | ||
| 44 | size_t cacheline_size = EXTRACT_BS(dczid_el0); \ | ||
| 45 | uintptr_t va_start = reinterpret_cast<uintptr_t>(start); \ | ||
| 46 | uintptr_t va_end = va_start + size; \ | ||
| 47 | for (uintptr_t va = va_start; va < va_end; va += cacheline_size) { \ | ||
| 48 | asm volatile("dc " #op_name ", %[va]\n\t" : : [va] "r"(va) : "memory"); \ | ||
| 49 | } \ | ||
| 50 | } | ||
| 51 | |||
| 52 | DEFINE_DC_OP(cvau, DataCacheLineCleanByVAToPoU); | ||
| 53 | DEFINE_DC_OP(civac, DataCacheLineCleanAndInvalidateByVAToPoC); | ||
| 54 | DEFINE_DC_OP(cvac, DataCacheLineCleanByVAToPoC); | ||
| 55 | DEFINE_DC_OP_DCZID(zva, DataCacheZeroByVA); | ||
| 56 | |||
| 57 | #endif | ||
| 58 | |||
| 59 | } // namespace Common | ||
diff --git a/src/common/cache_management.h b/src/common/cache_management.h deleted file mode 100644 index 038323e95..000000000 --- a/src/common/cache_management.h +++ /dev/null | |||
| @@ -1,27 +0,0 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | #pragma once | ||
| 5 | |||
| 6 | #include <cstddef> | ||
| 7 | |||
| 8 | namespace Common { | ||
| 9 | |||
| 10 | // Data cache instructions enabled at EL0 by SCTLR_EL1.UCI. | ||
| 11 | // VA = virtual address | ||
| 12 | // PoC = point of coherency | ||
| 13 | // PoU = point of unification | ||
| 14 | |||
| 15 | // dc cvau | ||
| 16 | void DataCacheLineCleanByVAToPoU(void* start, size_t size); | ||
| 17 | |||
| 18 | // dc civac | ||
| 19 | void DataCacheLineCleanAndInvalidateByVAToPoC(void* start, size_t size); | ||
| 20 | |||
| 21 | // dc cvac | ||
| 22 | void DataCacheLineCleanByVAToPoC(void* start, size_t size); | ||
| 23 | |||
| 24 | // dc zva | ||
| 25 | void DataCacheZeroByVA(void* start, size_t size); | ||
| 26 | |||
| 27 | } // namespace Common | ||
diff --git a/src/common/settings.h b/src/common/settings.h index 29b730cff..7ce9ea23c 100644 --- a/src/common/settings.h +++ b/src/common/settings.h | |||
| @@ -76,7 +76,8 @@ enum class ScalingFilter : u32 { | |||
| 76 | enum class AntiAliasing : u32 { | 76 | enum class AntiAliasing : u32 { |
| 77 | None = 0, | 77 | None = 0, |
| 78 | Fxaa = 1, | 78 | Fxaa = 1, |
| 79 | LastAA = Fxaa, | 79 | Smaa = 2, |
| 80 | LastAA = Smaa, | ||
| 80 | }; | 81 | }; |
| 81 | 82 | ||
| 82 | struct ResolutionScalingInfo { | 83 | struct ResolutionScalingInfo { |