Compare commits

..

30 commits

Author SHA1 Message Date
7bfa16bf0d Fix license headers
Some checks failed
eden-license / license-header (pull_request) Failing after 16s
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
17933b15c7 [dynarmic] inlined pool in block + slab-like for each block
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
c030cd7cf5 [dynarmic] Allow to skip verification pass
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
b7944e2bcf [dynarmic] fix exception posix handler
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
189b1a1850 [dynarmic] use better boost::visitor
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
22ec37db75 [dynarmic] regalloc use scratchimpl that uses all instead of iteraiting
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
3b95c20a2a [dynarmic] Implement constant folding for CountLeadingZeros, add readXX constnat folding for A64
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
37386890d8 [dynarmic] unconditional branches always take
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
b47cbefa11 [dynarmic] fix hardcoded AVX512 registers, use xmm0 instead of xmm16 to align with spec
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
560b93a8de [dynarmic] checked code alignment
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
bcd24f3545 [dynarmic] remove use of mcl reverse iterator
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
ea842bb334 [dynarmic, docs] fastmem docs
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
a2471f0def [dynarmic, cmake][ remove unusd frontends var
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
4d1bee40b4 [dynarmic] fix android
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
57e9f4a32d [dynarmic] use ARCHITECTURE_ macros instead of MCL ones
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
683c574c33 [dynarmic] add back encoding names (for print_info)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
7c547daca5 [dynarmic] fix ASIMD execution
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
4f2b63d544 [dynarmic] fix tests
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
d2661e6ba1 [dynarmic] reduce matcher table noise and cache misses
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
9a5c139aa3 [dynarmic] (prolly makes MSVC crash) - use 128MiB code cache
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
a21dc51fa6 [docs] fastmem draft
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
cbad41aeb7 [dynarmic] fix tests_reader and tests_generator
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
3f62a50b17 [dynarmic] reduce use 2 bits for LRU and 4 bits for clog2 of bit size
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
1723a5950f [dynarmic] use small vector experiment
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
a190e1d673 Fix license headers 2025-09-20 15:03:50 +02:00
a0e47b816b [dynarmic] reduce opt pass latency
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2025-09-20 15:03:50 +02:00
725407b989
[video_core] Add ability for integrated devices to control the amount of memory used by the emulator (#2528)
This adds the ability for integrated devices to control the amount of memory used by the emulator.

Reviewed-on: #2528
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
Co-authored-by: MaranBr <maranbr@outlook.com>
Co-committed-by: MaranBr <maranbr@outlook.com>
2025-09-20 14:17:07 +02:00
6510818fca
[docs] fixup codeowners (#2529)
Reviewed-on: #2529
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
2025-09-19 18:20:51 +02:00
a487cea683
[core] Fix buiding with fmt 10 (#2524)
Signed-off-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Reviewed-on: #2524
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Co-committed-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
2025-09-19 17:02:53 +02:00
a3c0d59dc9
[android] update translations for dynarmic to say it's jit, remove "(slow)" from paranoid (#2527)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: #2527
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-09-19 16:57:34 +02:00
21 changed files with 66 additions and 56 deletions

View file

@ -11,16 +11,17 @@
# cmake
*.cmake @crueter
*/CMakeLists.txt @crueter
*CMakeLists.txt @crueter
*.in @crueter
# individual stuff
/src/web_service @AleksandrPopovich
/src/dynarmic @Lizzie
/src/core @Lizzie @Maufeat @PavelBARABANOV @MrPurple666
/src/core/hle @Maufeat @PavelBARABANOV @SDK-Chan
/src/*_room @AleksandrPopovich
/src/video_core @CamilleLaVey @MaranBr @Wildcard @weakboson
src/web_service @AleksandrPopovich
src/dynarmic @Lizzie
src/core @Lizzie @Maufeat @PavelBARABANOV @MrPurple666 @JPikachu
src/core/hle @Maufeat @PavelBARABANOV @SDK-Chan
src/core/arm @Lizzie @MrPurple666
src/*_room @AleksandrPopovich
src/video_core @CamilleLaVey @MaranBr @Wildcard @weakboson
# Global owners/triage
* @CamilleLaVey @Maufeat @crueter @MrPurple666 @MaranBr @Lizzie

View file

@ -836,13 +836,13 @@
<string name="ratio_stretch">تمتد إلى النافذة</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (بطيء)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">تنفيذ التعليمات البرمجية الأصلية (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">دقه</string>
<string name="cpu_accuracy_unsafe">غير آمن</string>
<string name="cpu_accuracy_paranoid">Paranoid (بطيء)</string>
<string name="cpu_accuracy_paranoid">Paranoid</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">الأسهم</string>

View file

@ -919,13 +919,13 @@
<string name="ratio_stretch">Ajustar a la ventana</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">DynARMic (lento)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">Ejecución nativa de código (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Preciso</string>
<string name="cpu_accuracy_unsafe">Impreciso</string>
<string name="cpu_accuracy_paranoid">Paranoico (Lento)</string>
<string name="cpu_accuracy_paranoid">Paranoico</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">Cruceta</string>

View file

@ -918,13 +918,13 @@
<string name="ratio_stretch">کشش تا پر کردن پنجره</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">دینارمیک (کند)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">اجرای کد اصلی (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">دقیق</string>
<string name="cpu_accuracy_unsafe">ناامن</string>
<string name="cpu_accuracy_paranoid">بدگمان (کند)</string>
<string name="cpu_accuracy_paranoid">بدگمان</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">کلیدهای جهتی</string>

View file

@ -967,13 +967,13 @@
<string name="ratio_stretch">Étirer à la fenêtre</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (Lent)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">Exécution de code natif (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Précis</string>
<string name="cpu_accuracy_unsafe">Risqué</string>
<string name="cpu_accuracy_paranoid">Paranoïaque (Lent)</string>
<string name="cpu_accuracy_paranoid">Paranoïaque</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">Pavé directionnel</string>

View file

@ -844,13 +844,13 @@
<string name="ratio_stretch">הרחב לגודל המסך</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">דינמי (איטי)</string>
<string name="cpu_backend_dynarmic">דינמי</string>
<string name="cpu_backend_nce">ביצוע קוד מקורי (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">מדויק</string>
<string name="cpu_accuracy_unsafe">לא בטוח</string>
<string name="cpu_accuracy_paranoid">פראנואידי (איטי)</string>
<string name="cpu_accuracy_paranoid">פראנואידי</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">D-pad</string>

View file

@ -954,13 +954,13 @@
<string name="ratio_stretch">Ablakhoz nyújtás</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dinamikus (lassú)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">Natív kód végrehajtás (Native code execution (NCE))</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Pontos</string>
<string name="cpu_accuracy_unsafe">Nem biztonságos</string>
<string name="cpu_accuracy_paranoid">Paranoid (Lassú)</string>
<string name="cpu_accuracy_paranoid">Paranoid</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">D-pad</string>

View file

@ -911,13 +911,13 @@
<string name="ratio_stretch">Merentangkan</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynamic (Lambat)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">Native code execution (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Akurat</string>
<string name="cpu_accuracy_unsafe">Berbahaya</string>
<string name="cpu_accuracy_paranoid">Paranoid (Slow)</string>
<string name="cpu_accuracy_paranoid">Paranoid</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">D Pad</string>

View file

@ -834,13 +834,13 @@
<string name="ratio_stretch">画面に合わせる</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (低速)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">ネイティブコード実行 (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">正確</string>
<string name="cpu_accuracy_unsafe">不安定</string>
<string name="cpu_accuracy_paranoid">パラノイド (低速)</string>
<string name="cpu_accuracy_paranoid">パラノイド</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">方向ボタン</string>

View file

@ -910,13 +910,13 @@
<string name="ratio_stretch">화면에 맞춤</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (느림)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">네이티브 코드 실행 (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">정확함</string>
<string name="cpu_accuracy_unsafe">최적화 (안전하지 않음)</string>
<string name="cpu_accuracy_paranoid">최적화하지 않음 (느림)</string>
<string name="cpu_accuracy_paranoid">최적화하지 않음</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">십자키</string>

View file

@ -968,13 +968,13 @@ uma tentativa de mapeamento automático</string>
<string name="ratio_stretch">Esticar à janela</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (Lenta)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">Execução de código nativo (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Precisa</string>
<string name="cpu_accuracy_unsafe">Não segura</string>
<string name="cpu_accuracy_paranoid">Paranoica (Lenta)</string>
<string name="cpu_accuracy_paranoid">Paranoica</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">Botões Direcionais</string>

View file

@ -968,13 +968,13 @@ uma tentativa de mapeamento automático</string>
<string name="ratio_stretch">Esticar à janela</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (Lento)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">Native code execution (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Preciso</string>
<string name="cpu_accuracy_unsafe">Inseguro</string>
<string name="cpu_accuracy_paranoid">Paranoid (Lento)</string>
<string name="cpu_accuracy_paranoid">Paranoid</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">Botões Direcionais</string>

View file

@ -969,13 +969,13 @@
<string name="ratio_stretch">Растянуть до окна</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (Медленно)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">Нативное выполнение (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Точно</string>
<string name="cpu_accuracy_unsafe">Небезопасно</string>
<string name="cpu_accuracy_paranoid">Параноик (медленно)</string>
<string name="cpu_accuracy_paranoid">Параноик</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">Крестовина</string>

View file

@ -988,13 +988,13 @@
<string name="ratio_stretch">Протезање до прозора</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Динамина (споро)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">Извођење изворног кода (НЦЕ)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Тачан</string>
<string name="cpu_accuracy_unsafe">Несигуран</string>
<string name="cpu_accuracy_paranoid">Параноичан (споро)</string>
<string name="cpu_accuracy_paranoid">Параноичан</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">Д-пад</string>

View file

@ -961,13 +961,13 @@
<string name="ratio_stretch">拉伸窗口</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">动态编译 (慢速)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">本机代码执行 (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">高精度</string>
<string name="cpu_accuracy_unsafe">低精度</string>
<string name="cpu_accuracy_paranoid">偏执模式 (慢速)</string>
<string name="cpu_accuracy_paranoid">偏执模式</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">十字方向键</string>

View file

@ -966,13 +966,13 @@
<string name="ratio_stretch">延展視窗</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">動態 (慢)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">機器碼執行 (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">高精度</string>
<string name="cpu_accuracy_unsafe">低精度</string>
<string name="cpu_accuracy_paranoid">不合理 (慢)</string>
<string name="cpu_accuracy_paranoid">不合理</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">方向鍵</string>

View file

@ -1014,13 +1014,13 @@
<string name="ratio_stretch">Stretch to window</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (Slow)</string>
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
<string name="cpu_backend_nce">Native code execution (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Accurate</string>
<string name="cpu_accuracy_unsafe">Unsafe</string>
<string name="cpu_accuracy_paranoid">Paranoid (Slow)</string>
<string name="cpu_accuracy_paranoid">Paranoid</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">D-pad</string>

View file

@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@ -41,7 +44,14 @@ PerfStats::~PerfStats() {
const auto path = Common::FS::GetEdenPath(Common::FS::EdenPath::LogDir);
// %F Date format expanded is "%Y-%m-%d"
const auto filename = fmt::format("{:%F-%H-%M}_{:016X}.csv", *std::localtime(&t), title_id);
const auto filename = fmt::format("{}_{:016X}.csv",
[&] {
std::ostringstream oss;
oss << std::put_time(std::localtime(&t), "%F-%H-%M");
return oss.str();
}(),
title_id);
const auto filepath = path / filename;
if (Common::FS::CreateParentDir(filepath)) {

View file

@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@ -33,7 +36,9 @@ std::filesystem::path GetPath(std::string_view type, u64 title_id, std::string_v
std::string GetTimestamp() {
const auto time = std::time(nullptr);
return fmt::format("{:%FT%H-%M-%S}", *std::localtime(&time));
std::ostringstream oss;
oss << std::put_time(std::localtime(&time), "%FT%H-%M-%S");
return oss.str();
}
using namespace nlohmann;

View file

@ -246,10 +246,7 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QObject* parent)
INSERT(Settings,
vram_usage_mode,
tr("VRAM Usage Mode:"),
tr("Selects whether the emulator should prefer to conserve memory or make maximum usage "
"of available video memory for performance.\nHas no effect on integrated graphics. "
"Aggressive mode may severely impact the performance of other applications such as "
"recording software."));
tr("Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance.\nAggressive mode may severely impact the performance of other applications such as recording software."));
INSERT(Settings,
skip_cpu_inner_invalidation,
tr("Skip CPU Inner Invalidation"),

View file

@ -1395,23 +1395,20 @@ void Device::CollectPhysicalMemoryInfo() {
}
device_access_memory += mem_properties.memoryHeaps[element].size;
}
if (!is_integrated) {
if (is_integrated) {
const s64 available_memory = static_cast<s64>(device_access_memory - device_initial_usage);
const u64 memory_size = Settings::values.vram_usage_mode.GetValue() == Settings::VramUsageMode::Aggressive ? 6_GiB : 4_GiB;
device_access_memory = static_cast<u64>(std::max<s64>(std::min<s64>(available_memory - 8_GiB, memory_size), std::min<s64>(local_memory, memory_size)));
} else {
const u64 reserve_memory = std::min<u64>(device_access_memory / 8, 1_GiB);
device_access_memory -= reserve_memory;
if (Settings::values.vram_usage_mode.GetValue() != Settings::VramUsageMode::Aggressive) {
// Account for resolution scaling in memory limits
const size_t normal_memory = 6_GiB;
const size_t scaler_memory = 1_GiB * Settings::values.resolution_info.ScaleUp(1);
device_access_memory =
std::min<u64>(device_access_memory, normal_memory + scaler_memory);
device_access_memory = std::min<u64>(device_access_memory, normal_memory + scaler_memory);
}
return;
}
const s64 available_memory = static_cast<s64>(device_access_memory - device_initial_usage);
device_access_memory = static_cast<u64>(std::max<s64>(
std::min<s64>(available_memory - 8_GiB, 6_GiB), std::min<s64>(local_memory, 6_GiB)));
}
void Device::CollectToolingInfo() {