From 6918f034e216d4e5cd41e26cf6c4618e89f76c22 Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Tue, 28 Jul 2026 14:36:49 -0400 Subject: [PATCH] [TEST] Overlap image on non implemented path --- src/video_core/texture_cache/texture_cache.h | 22 +++++++++++++++++++- src/video_core/texture_cache/util.cpp | 2 +- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 74b9c831d4..e1e8a731dd 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -1709,7 +1709,27 @@ ImageId TextureCache

::JoinImages(const ImageInfo& info, GPUVAddr gpu_addr, DA for (const ImageId overlap_id : join_ignore_textures) { Image& overlap = slot_images[overlap_id]; if (True(overlap.flags & ImageFlagBits::GpuModified)) { - UNIMPLEMENTED(); + if (new_image.TryFindBase(overlap.gpu_addr) && + (!can_rescale || ImageCanRescale(overlap))) { + if (can_rescale) { + ScaleUp(overlap); + } else { + ScaleDown(overlap); + } + join_copies_to_do.emplace_back(JoinCopy{false, overlap_id}); + continue; + } + LOG_WARNING(HW_GPU, + "Dropping GPU modified overlap with no copy path: " + "overlap{{gpu_addr=0x{:x} format={} size={}x{}x{} levels={} layers={}}} " + "new{{gpu_addr=0x{:x} format={} size={}x{}x{} levels={} layers={}}}", + overlap.gpu_addr, static_cast(overlap.info.format), + overlap.info.size.width, overlap.info.size.height, + overlap.info.size.depth, overlap.info.resources.levels, + overlap.info.resources.layers, new_image.gpu_addr, + static_cast(new_info.format), new_info.size.width, + new_info.size.height, new_info.size.depth, new_info.resources.levels, + new_info.resources.layers); } if (True(overlap.flags & ImageFlagBits::Tracked)) { UntrackImage(overlap, overlap_id); diff --git a/src/video_core/texture_cache/util.cpp b/src/video_core/texture_cache/util.cpp index 8f548550d6..42be3f1cd6 100644 --- a/src/video_core/texture_cache/util.cpp +++ b/src/video_core/texture_cache/util.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 2020 yuzu Emulator Project