From b9da45cb1f284f3d3d1815cf8d3d77ad314cc901 Mon Sep 17 00:00:00 2001 From: lizzie Date: Mon, 19 Jan 2026 16:27:18 +0100 Subject: [PATCH] [tests] fix compile+linking issues with PlayTime (#3345) fixes linking + comp issues but not the test themselves, who have now became invalid Signed-off-by: lizzie Co-authored-by: DraVee Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3345 Reviewed-by: DraVee Reviewed-by: Maufeat Co-authored-by: lizzie Co-committed-by: lizzie --- src/core/device_memory_manager.h | 5 +- src/core/device_memory_manager.inc | 4 +- src/core/file_sys/control_metadata.cpp | 2 +- src/core/file_sys/control_metadata.h | 2 +- src/core/hle/service/acc/acc.cpp | 2 +- src/core/hle/service/erpt/erpt.cpp | 2 +- src/core/hle/service/friend/friend.cpp | 2 +- .../ns/application_manager_interface.cpp | 2 +- .../ns/application_manager_interface.h | 2 +- .../ns/content_management_interface.cpp | 2 +- .../service/ns/content_management_interface.h | 2 +- src/core/hle/service/ns/ns_types.h | 2 +- src/core/hle/service/ns/query_service.cpp | 2 +- src/core/hle/service/ns/query_service.h | 2 +- ...nly_application_control_data_interface.cpp | 2 +- ..._only_application_control_data_interface.h | 2 +- .../hle/service/olsc/daemon_controller.cpp | 2 +- src/core/hle/service/olsc/daemon_controller.h | 2 +- src/core/hle/service/sockets/nsd.cpp | 2 +- src/core/hle/service/sockets/nsd.h | 2 +- src/core/launch_timestamp_cache.cpp | 2 +- src/core/launch_timestamp_cache.h | 2 +- src/frontend_common/play_time_manager.cpp | 5 +- src/tests/CMakeLists.txt | 1 + src/tests/common/undefined_fix.cpp | 14 +++ src/tests/video_core/memory_tracker.cpp | 104 +++++++++--------- .../renderer_vulkan/vk_buffer_cache.cpp | 2 +- .../renderer_vulkan/vk_texture_cache.cpp | 2 +- .../vulkan_common/vulkan_device.cpp | 2 +- src/video_core/vulkan_common/vulkan_device.h | 2 +- 30 files changed, 98 insertions(+), 83 deletions(-) create mode 100644 src/tests/common/undefined_fix.cpp diff --git a/src/core/device_memory_manager.h b/src/core/device_memory_manager.h index 249dc08f5f..41227591c7 100644 --- a/src/core/device_memory_manager.h +++ b/src/core/device_memory_manager.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project @@ -13,6 +13,7 @@ #include #include #include +#include #include "common/common_types.h" #include "common/range_mutex.h" @@ -123,7 +124,7 @@ public: void UpdatePagesCachedCount(DAddr addr, size_t size, s32 delta); // New batch API to update multiple ranges with a single lock acquisition. - void UpdatePagesCachedBatch(const std::vector>& ranges, s32 delta); + void UpdatePagesCachedBatch(std::span> ranges, s32 delta); private: // Internal helper that performs the update assuming the caller already holds the necessary lock. diff --git a/src/core/device_memory_manager.inc b/src/core/device_memory_manager.inc index 35edbdd223..4e029d8596 100644 --- a/src/core/device_memory_manager.inc +++ b/src/core/device_memory_manager.inc @@ -597,12 +597,12 @@ void DeviceMemoryManager::UpdatePagesCachedCount(DAddr addr, size_t size } template -void DeviceMemoryManager::UpdatePagesCachedBatch(const std::vector>& ranges, s32 delta) { +void DeviceMemoryManager::UpdatePagesCachedBatch(std::span> ranges, s32 delta) { if (ranges.empty()) { return; } // Make a local copy and sort by address - std::vector> tmp = ranges; + std::vector> tmp(ranges.size(), {0, 0}); std::sort(tmp.begin(), tmp.end(), [](const auto& a, const auto& b) { return a.first < b.first; }); // Coalesce adjacent/overlapping ranges diff --git a/src/core/file_sys/control_metadata.cpp b/src/core/file_sys/control_metadata.cpp index 572c990acb..6f150ff583 100644 --- a/src/core/file_sys/control_metadata.cpp +++ b/src/core/file_sys/control_metadata.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project diff --git a/src/core/file_sys/control_metadata.h b/src/core/file_sys/control_metadata.h index a06b014fac..bd109f783f 100644 --- a/src/core/file_sys/control_metadata.h +++ b/src/core/file_sys/control_metadata.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index c083133acc..b4d6e2ac30 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project diff --git a/src/core/hle/service/erpt/erpt.cpp b/src/core/hle/service/erpt/erpt.cpp index 3bcb3366e4..29db6594f4 100644 --- a/src/core/hle/service/erpt/erpt.cpp +++ b/src/core/hle/service/erpt/erpt.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project diff --git a/src/core/hle/service/friend/friend.cpp b/src/core/hle/service/friend/friend.cpp index b8f7cb1401..563c796c15 100644 --- a/src/core/hle/service/friend/friend.cpp +++ b/src/core/hle/service/friend/friend.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project diff --git a/src/core/hle/service/ns/application_manager_interface.cpp b/src/core/hle/service/ns/application_manager_interface.cpp index 12cf7f4257..783ecb5e07 100644 --- a/src/core/hle/service/ns/application_manager_interface.cpp +++ b/src/core/hle/service/ns/application_manager_interface.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project diff --git a/src/core/hle/service/ns/application_manager_interface.h b/src/core/hle/service/ns/application_manager_interface.h index 0780fb7b8b..8717b55af5 100644 --- a/src/core/hle/service/ns/application_manager_interface.h +++ b/src/core/hle/service/ns/application_manager_interface.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project diff --git a/src/core/hle/service/ns/content_management_interface.cpp b/src/core/hle/service/ns/content_management_interface.cpp index 18b75e9d73..39b9cb6f70 100644 --- a/src/core/hle/service/ns/content_management_interface.cpp +++ b/src/core/hle/service/ns/content_management_interface.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project diff --git a/src/core/hle/service/ns/content_management_interface.h b/src/core/hle/service/ns/content_management_interface.h index 2ffac6f3b4..df0c51a184 100644 --- a/src/core/hle/service/ns/content_management_interface.h +++ b/src/core/hle/service/ns/content_management_interface.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project diff --git a/src/core/hle/service/ns/ns_types.h b/src/core/hle/service/ns/ns_types.h index ade0935622..c3b4856e7f 100644 --- a/src/core/hle/service/ns/ns_types.h +++ b/src/core/hle/service/ns/ns_types.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project diff --git a/src/core/hle/service/ns/query_service.cpp b/src/core/hle/service/ns/query_service.cpp index af32d7801d..d4d5834f3f 100644 --- a/src/core/hle/service/ns/query_service.cpp +++ b/src/core/hle/service/ns/query_service.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project diff --git a/src/core/hle/service/ns/query_service.h b/src/core/hle/service/ns/query_service.h index 6266e61c4d..f5c0ae1058 100644 --- a/src/core/hle/service/ns/query_service.h +++ b/src/core/hle/service/ns/query_service.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project diff --git a/src/core/hle/service/ns/read_only_application_control_data_interface.cpp b/src/core/hle/service/ns/read_only_application_control_data_interface.cpp index 42b704588d..03f0a17865 100644 --- a/src/core/hle/service/ns/read_only_application_control_data_interface.cpp +++ b/src/core/hle/service/ns/read_only_application_control_data_interface.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project diff --git a/src/core/hle/service/ns/read_only_application_control_data_interface.h b/src/core/hle/service/ns/read_only_application_control_data_interface.h index a496444318..441408b651 100644 --- a/src/core/hle/service/ns/read_only_application_control_data_interface.h +++ b/src/core/hle/service/ns/read_only_application_control_data_interface.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project diff --git a/src/core/hle/service/olsc/daemon_controller.cpp b/src/core/hle/service/olsc/daemon_controller.cpp index 149a6b1230..7a75196a1f 100644 --- a/src/core/hle/service/olsc/daemon_controller.cpp +++ b/src/core/hle/service/olsc/daemon_controller.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project diff --git a/src/core/hle/service/olsc/daemon_controller.h b/src/core/hle/service/olsc/daemon_controller.h index 45aa0f16c2..38a743461a 100644 --- a/src/core/hle/service/olsc/daemon_controller.h +++ b/src/core/hle/service/olsc/daemon_controller.h @@ -1,5 +1,5 @@ #pragma once -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project diff --git a/src/core/hle/service/sockets/nsd.cpp b/src/core/hle/service/sockets/nsd.cpp index 10f7eb1e8d..241f2971ca 100644 --- a/src/core/hle/service/sockets/nsd.cpp +++ b/src/core/hle/service/sockets/nsd.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project diff --git a/src/core/hle/service/sockets/nsd.h b/src/core/hle/service/sockets/nsd.h index 3bc3cf87a5..e4a4588467 100644 --- a/src/core/hle/service/sockets/nsd.h +++ b/src/core/hle/service/sockets/nsd.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project diff --git a/src/core/launch_timestamp_cache.cpp b/src/core/launch_timestamp_cache.cpp index 037992d69a..95b6bc8c41 100644 --- a/src/core/launch_timestamp_cache.cpp +++ b/src/core/launch_timestamp_cache.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later #include "core/launch_timestamp_cache.h" diff --git a/src/core/launch_timestamp_cache.h b/src/core/launch_timestamp_cache.h index d3563c7eb4..12d8deffdc 100644 --- a/src/core/launch_timestamp_cache.h +++ b/src/core/launch_timestamp_cache.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later #pragma once diff --git a/src/frontend_common/play_time_manager.cpp b/src/frontend_common/play_time_manager.cpp index 4b0ba420ed..58b320198f 100644 --- a/src/frontend_common/play_time_manager.cpp +++ b/src/frontend_common/play_time_manager.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -96,8 +96,7 @@ std::optional GetCurrentUserPlayTimePath() { } // namespace -PlayTimeManager::PlayTimeManager() - : running_program_id() { +PlayTimeManager::PlayTimeManager() : running_program_id() { if (!ReadPlayTimeFile(database)) { LOG_ERROR(Frontend, "Failed to read play time database! Resetting to default."); } diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 236010ed38..43745af429 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -14,6 +14,7 @@ add_executable(tests common/range_map.cpp common/ring_buffer.cpp common/scratch_buffer.cpp + common/undefined_fix.cpp common/unique_function.cpp core/core_timing.cpp core/internal_network/network.cpp diff --git a/src/tests/common/undefined_fix.cpp b/src/tests/common/undefined_fix.cpp new file mode 100644 index 0000000000..ba83fd519f --- /dev/null +++ b/src/tests/common/undefined_fix.cpp @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "frontend_common/play_time_manager.h" + +namespace PlayTime { + +PlayTimeManager::PlayTimeManager() {} +PlayTimeManager::~PlayTimeManager() {} +u64 PlayTimeManager::GetPlayTime(u64 program_id) const { + return 0; +} + +} // namespace PlayTime diff --git a/src/tests/video_core/memory_tracker.cpp b/src/tests/video_core/memory_tracker.cpp index b5b2a98216..08ebf05237 100644 --- a/src/tests/video_core/memory_tracker.cpp +++ b/src/tests/video_core/memory_tracker.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later #include @@ -6,12 +6,14 @@ #include #include #include +#include #include #include "common/common_types.h" #include "video_core/buffer_cache/memory_tracker_base.h" #include "core/device_memory.h" +#include "core/memory.h" #include "video_core/host1x/gpu_device_memory_manager.h" namespace { @@ -22,11 +24,11 @@ constexpr u64 WORD = 4096 * 64; constexpr u64 HIGH_PAGE_BITS = 22; constexpr u64 HIGH_PAGE_SIZE = 1ULL << HIGH_PAGE_BITS; -constexpr VAddr c = 16 * HIGH_PAGE_SIZE; +constexpr DAddr c = 16 * HIGH_PAGE_SIZE; class RasterizerInterface { public: - void UpdatePagesCachedCount(VAddr addr, u64 size, int delta) { + void UpdatePagesCachedCount(DAddr addr, size_t size, s32 delta) { ++update_calls; calls.emplace_back(addr, size, delta); const u64 page_start{addr >> Core::DEVICE_PAGEBITS}; @@ -42,10 +44,14 @@ public: } } - [[nodiscard]] size_t UpdateCalls() const noexcept { return update_calls; } - [[nodiscard]] const std::vector>& UpdateCallsList() const noexcept { return calls; } + void UpdatePagesCachedBatch(std::span> ranges, s32 delta) { + // TODO: for now assume fine? + } - [[nodiscard]] int Count(VAddr addr) const noexcept { + [[nodiscard]] size_t UpdateCalls() const noexcept { return update_calls; } + [[nodiscard]] const std::vector>& UpdateCallsList() const noexcept { return calls; } + + [[nodiscard]] int Count(DAddr addr) const noexcept { const auto it = page_table.find(addr >> Core::DEVICE_PAGEBITS); return it == page_table.end() ? 0 : it->second; } @@ -60,7 +66,7 @@ public: private: std::unordered_map page_table; - std::vector> calls; + std::vector> calls; size_t update_calls = 0; }; @@ -70,7 +76,7 @@ using MemoryTracker = VideoCommon::MemoryTrackerBase; TEST_CASE("MemoryTracker: Small region", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); REQUIRE(rasterizer.Count() == 0); memory_track->UnmarkRegionAsCpuModified(c, WORD); REQUIRE(rasterizer.Count() == WORD / PAGE); @@ -82,27 +88,21 @@ TEST_CASE("MemoryTracker: Small region", "[video_core]") { TEST_CASE("MemoryTracker: Large region", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD * 32); memory_track->MarkRegionAsCpuModified(c + 4096, WORD * 4); - REQUIRE(memory_track->ModifiedCpuRegion(c, WORD + PAGE * 2) == - Range{c + PAGE, c + WORD + PAGE * 2}); - REQUIRE(memory_track->ModifiedCpuRegion(c + PAGE * 2, PAGE * 6) == - Range{c + PAGE * 2, c + PAGE * 8}); + REQUIRE(memory_track->ModifiedCpuRegion(c, WORD + PAGE * 2) == Range{c + PAGE, c + WORD + PAGE * 2}); + REQUIRE(memory_track->ModifiedCpuRegion(c + PAGE * 2, PAGE * 6) == Range{c + PAGE * 2, c + PAGE * 8}); REQUIRE(memory_track->ModifiedCpuRegion(c, WORD * 32) == Range{c + PAGE, c + WORD * 4 + PAGE}); - REQUIRE(memory_track->ModifiedCpuRegion(c + WORD * 4, PAGE) == - Range{c + WORD * 4, c + WORD * 4 + PAGE}); - REQUIRE(memory_track->ModifiedCpuRegion(c + WORD * 3 + PAGE * 63, PAGE) == - Range{c + WORD * 3 + PAGE * 63, c + WORD * 4}); + REQUIRE(memory_track->ModifiedCpuRegion(c + WORD * 4, PAGE) == Range{c + WORD * 4, c + WORD * 4 + PAGE}); + REQUIRE(memory_track->ModifiedCpuRegion(c + WORD * 3 + PAGE * 63, PAGE) == Range{c + WORD * 3 + PAGE * 63, c + WORD * 4}); memory_track->MarkRegionAsCpuModified(c + WORD * 5 + PAGE * 6, PAGE); memory_track->MarkRegionAsCpuModified(c + WORD * 5 + PAGE * 8, PAGE); - REQUIRE(memory_track->ModifiedCpuRegion(c + WORD * 5, WORD) == - Range{c + WORD * 5 + PAGE * 6, c + WORD * 5 + PAGE * 9}); + REQUIRE(memory_track->ModifiedCpuRegion(c + WORD * 5, WORD) == Range{c + WORD * 5 + PAGE * 6, c + WORD * 5 + PAGE * 9}); memory_track->UnmarkRegionAsCpuModified(c + WORD * 5 + PAGE * 8, PAGE); - REQUIRE(memory_track->ModifiedCpuRegion(c + WORD * 5, WORD) == - Range{c + WORD * 5 + PAGE * 6, c + WORD * 5 + PAGE * 7}); + REQUIRE(memory_track->ModifiedCpuRegion(c + WORD * 5, WORD) == Range{c + WORD * 5 + PAGE * 6, c + WORD * 5 + PAGE * 7}); memory_track->MarkRegionAsCpuModified(c + PAGE, WORD * 31 + PAGE * 63); REQUIRE(memory_track->ModifiedCpuRegion(c, WORD * 32) == Range{c + PAGE, c + WORD * 32}); @@ -116,7 +116,7 @@ TEST_CASE("MemoryTracker: Large region", "[video_core]") { TEST_CASE("MemoryTracker: Rasterizer counting", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); REQUIRE(rasterizer.Count() == 0); memory_track->UnmarkRegionAsCpuModified(c, PAGE); REQUIRE(rasterizer.Count() == 1); @@ -131,7 +131,7 @@ TEST_CASE("MemoryTracker: Rasterizer counting", "[video_core]") { TEST_CASE("MemoryTracker: Basic range", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD); memory_track->MarkRegionAsCpuModified(c, PAGE); int num = 0; @@ -145,7 +145,7 @@ TEST_CASE("MemoryTracker: Basic range", "[video_core]") { TEST_CASE("MemoryTracker: Border upload", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD * 2); memory_track->MarkRegionAsCpuModified(c + WORD - PAGE, PAGE * 2); memory_track->ForEachUploadRange(c, WORD * 2, [](u64 offset, u64 size) { @@ -156,7 +156,7 @@ TEST_CASE("MemoryTracker: Border upload", "[video_core]") { TEST_CASE("MemoryTracker: Border upload range", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD * 2); memory_track->MarkRegionAsCpuModified(c + WORD - PAGE, PAGE * 2); memory_track->ForEachUploadRange(c + WORD - PAGE, PAGE * 2, [](u64 offset, u64 size) { @@ -176,7 +176,7 @@ TEST_CASE("MemoryTracker: Border upload range", "[video_core]") { TEST_CASE("MemoryTracker: Border upload partial range", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD * 2); memory_track->MarkRegionAsCpuModified(c + WORD - PAGE, PAGE * 2); memory_track->ForEachUploadRange(c + WORD - 1, 2, [](u64 offset, u64 size) { @@ -196,7 +196,7 @@ TEST_CASE("MemoryTracker: Border upload partial range", "[video_core]") { TEST_CASE("MemoryTracker: Partial word uploads", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); int num = 0; memory_track->ForEachUploadRange(c, WORD, [&](u64 offset, u64 size) { REQUIRE(offset == c); @@ -220,7 +220,7 @@ TEST_CASE("MemoryTracker: Partial word uploads", "[video_core]") { TEST_CASE("MemoryTracker: Partial page upload", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD); int num = 0; memory_track->MarkRegionAsCpuModified(c + PAGE * 2, PAGE); @@ -241,7 +241,7 @@ TEST_CASE("MemoryTracker: Partial page upload", "[video_core]") { TEST_CASE("MemoryTracker: Partial page upload with multiple words on the right") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD * 9); memory_track->MarkRegionAsCpuModified(c + PAGE * 13, WORD * 7); int num = 0; @@ -261,7 +261,7 @@ TEST_CASE("MemoryTracker: Partial page upload with multiple words on the right") TEST_CASE("MemoryTracker: Partial page upload with multiple words on the left", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD * 8); memory_track->MarkRegionAsCpuModified(c + PAGE * 13, WORD * 7); int num = 0; @@ -281,7 +281,7 @@ TEST_CASE("MemoryTracker: Partial page upload with multiple words on the left", TEST_CASE("MemoryTracker: Partial page upload with multiple words in the middle", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD * 8); memory_track->MarkRegionAsCpuModified(c + PAGE * 13, PAGE * 140); int num = 0; @@ -307,7 +307,7 @@ TEST_CASE("MemoryTracker: Partial page upload with multiple words in the middle" TEST_CASE("MemoryTracker: Empty right bits", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD * 2048); memory_track->MarkRegionAsCpuModified(c + WORD - PAGE, PAGE * 2); memory_track->ForEachUploadRange(c, WORD * 2048, [](u64 offset, u64 size) { @@ -318,7 +318,7 @@ TEST_CASE("MemoryTracker: Empty right bits", "[video_core]") { TEST_CASE("MemoryTracker: Out of bound ranges 1", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c - WORD, 3 * WORD); memory_track->MarkRegionAsCpuModified(c, PAGE); REQUIRE(rasterizer.Count() == (3 * WORD - PAGE) / PAGE); @@ -335,7 +335,7 @@ TEST_CASE("MemoryTracker: Out of bound ranges 1", "[video_core]") { TEST_CASE("MemoryTracker: Out of bound ranges 2", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); REQUIRE_NOTHROW(memory_track->UnmarkRegionAsCpuModified(c + 0x22000, PAGE)); REQUIRE_NOTHROW(memory_track->UnmarkRegionAsCpuModified(c + 0x28000, PAGE)); REQUIRE(rasterizer.Count() == 2); @@ -349,7 +349,7 @@ TEST_CASE("MemoryTracker: Out of bound ranges 2", "[video_core]") { TEST_CASE("MemoryTracker: Out of bound ranges 3", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, 0x310720); REQUIRE(rasterizer.Count(c) == 1); REQUIRE(rasterizer.Count(c + PAGE) == 1); @@ -359,7 +359,7 @@ TEST_CASE("MemoryTracker: Out of bound ranges 3", "[video_core]") { TEST_CASE("MemoryTracker: Sparse regions 1", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD); memory_track->MarkRegionAsCpuModified(c + PAGE * 1, PAGE); memory_track->MarkRegionAsCpuModified(c + PAGE * 3, PAGE * 4); @@ -374,7 +374,7 @@ TEST_CASE("MemoryTracker: Sparse regions 1", "[video_core]") { TEST_CASE("MemoryTracker: Sparse regions 2", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, PAGE * 0x23); REQUIRE(rasterizer.Count() == 0x23); memory_track->MarkRegionAsCpuModified(c + PAGE * 0x1B, PAGE); @@ -390,7 +390,7 @@ TEST_CASE("MemoryTracker: Sparse regions 2", "[video_core]") { TEST_CASE("MemoryTracker: Single page modified range", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); REQUIRE(memory_track->IsRegionCpuModified(c, PAGE)); memory_track->UnmarkRegionAsCpuModified(c, PAGE); REQUIRE(!memory_track->IsRegionCpuModified(c, PAGE)); @@ -398,7 +398,7 @@ TEST_CASE("MemoryTracker: Single page modified range", "[video_core]") { TEST_CASE("MemoryTracker: Two page modified range", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); REQUIRE(memory_track->IsRegionCpuModified(c, PAGE)); REQUIRE(memory_track->IsRegionCpuModified(c + PAGE, PAGE)); REQUIRE(memory_track->IsRegionCpuModified(c, PAGE * 2)); @@ -408,9 +408,9 @@ TEST_CASE("MemoryTracker: Two page modified range", "[video_core]") { TEST_CASE("MemoryTracker: Multi word modified ranges", "[video_core]") { for (int offset = 0; offset < 4; ++offset) { - const VAddr address = c + WORD * offset; + const DAddr address = c + WORD * offset; RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); REQUIRE(memory_track->IsRegionCpuModified(address, PAGE)); REQUIRE(memory_track->IsRegionCpuModified(address + PAGE * 48, PAGE)); REQUIRE(memory_track->IsRegionCpuModified(address + PAGE * 56, PAGE)); @@ -430,7 +430,7 @@ TEST_CASE("MemoryTracker: Multi word modified ranges", "[video_core]") { TEST_CASE("MemoryTracker: Single page in large region", "[video_core]") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD * 16); REQUIRE(!memory_track->IsRegionCpuModified(c, WORD * 16)); @@ -448,7 +448,7 @@ TEST_CASE("MemoryTracker: Single page in large region", "[video_core]") { TEST_CASE("MemoryTracker: Wrap word regions") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD * 32); memory_track->MarkRegionAsCpuModified(c + PAGE * 63, PAGE * 2); REQUIRE(memory_track->IsRegionCpuModified(c, WORD * 2)); @@ -470,7 +470,7 @@ TEST_CASE("MemoryTracker: Wrap word regions") { TEST_CASE("MemoryTracker: Unaligned page region query") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD); memory_track->MarkRegionAsCpuModified(c + 4000, 1000); REQUIRE(memory_track->IsRegionCpuModified(c, PAGE)); @@ -481,7 +481,7 @@ TEST_CASE("MemoryTracker: Unaligned page region query") { TEST_CASE("MemoryTracker: Cached write") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD); memory_track->CachedCpuWrite(c + PAGE, c + PAGE); REQUIRE(!memory_track->IsRegionCpuModified(c + PAGE, PAGE)); @@ -493,7 +493,7 @@ TEST_CASE("MemoryTracker: Cached write") { TEST_CASE("MemoryTracker: Multiple cached write") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD); memory_track->CachedCpuWrite(c + PAGE, PAGE); memory_track->CachedCpuWrite(c + PAGE * 3, PAGE); @@ -508,7 +508,7 @@ TEST_CASE("MemoryTracker: Multiple cached write") { TEST_CASE("MemoryTracker: Cached write unmarked") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD); memory_track->CachedCpuWrite(c + PAGE, PAGE); memory_track->UnmarkRegionAsCpuModified(c + PAGE, PAGE); @@ -521,7 +521,7 @@ TEST_CASE("MemoryTracker: Cached write unmarked") { TEST_CASE("MemoryTracker: Cached write iterated") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD); memory_track->CachedCpuWrite(c + PAGE, PAGE); int num = 0; @@ -536,7 +536,7 @@ TEST_CASE("MemoryTracker: Cached write iterated") { TEST_CASE("MemoryTracker: Cached write downloads") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD); REQUIRE(rasterizer.Count() == 64); memory_track->CachedCpuWrite(c + PAGE, PAGE); @@ -559,7 +559,7 @@ TEST_CASE("MemoryTracker: Cached write downloads") { TEST_CASE("MemoryTracker: FlushCachedWrites batching") { RasterizerInterface rasterizer; - std::unique_ptr memory_track(std::make_unique(rasterizer)); + std::optional memory_track(rasterizer); memory_track->UnmarkRegionAsCpuModified(c, WORD * 2); memory_track->CachedCpuWrite(c + PAGE, PAGE); memory_track->CachedCpuWrite(c + PAGE * 2, PAGE); @@ -577,11 +577,11 @@ TEST_CASE("DeviceMemoryManager: UpdatePagesCachedBatch basic") { Core::DeviceMemory device_memory; Tegra::MaxwellDeviceMemoryManager manager(device_memory); // empty should be a no-op - std::vector> empty; + std::vector> empty; manager.UpdatePagesCachedBatch(empty, 1); // small ranges should be accepted and not crash - std::vector> ranges; + std::vector> ranges; ranges.emplace_back(0, Core::Memory::YUZU_PAGESIZE); ranges.emplace_back(Core::Memory::YUZU_PAGESIZE, Core::Memory::YUZU_PAGESIZE); manager.UpdatePagesCachedBatch(ranges, 1); diff --git a/src/video_core/renderer_vulkan/vk_buffer_cache.cpp b/src/video_core/renderer_vulkan/vk_buffer_cache.cpp index 473cc58bfc..6256bc8bd8 100644 --- a/src/video_core/renderer_vulkan/vk_buffer_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_buffer_cache.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index ffc345fe48..74024456ea 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 92ef997849..8c596fe347 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index a6de3d6022..acb2954104 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project