From 3fbee093b2bf3b4c15dbc5bb48a3bc768ecedbc9 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Sun, 12 Mar 2023 21:43:31 +0100 Subject: TextureCache: refactor DMA downloads to allow multiple buffers. --- src/video_core/texture_cache/texture_cache.h | 12 +++++++++++- src/video_core/texture_cache/texture_cache_base.h | 6 +++++- 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src/video_core/texture_cache') diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index ed5c768d8..2cd5aa31e 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2021 yuzu Emulator Project +// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later #pragma once @@ -833,6 +833,16 @@ std::pair::Image*, BufferImageCopy> TextureCache

::Dm return {image, copy}; } +template +void TextureCache

::DownloadImageIntoBuffer( + typename TextureCache

::Image* image, typename TextureCache

::BufferType buffer, + size_t buffer_offset, std::span copies) { + std::array buffers{ + buffer, + }; + image->DownloadMemory(buffers, buffer_offset, copies); +} + template void TextureCache

::RefreshContents(Image& image, ImageId image_id) { if (False(image.flags & ImageFlagBits::CpuModified)) { diff --git a/src/video_core/texture_cache/texture_cache_base.h b/src/video_core/texture_cache/texture_cache_base.h index 5a5b4179c..51f44aed5 100644 --- a/src/video_core/texture_cache/texture_cache_base.h +++ b/src/video_core/texture_cache/texture_cache_base.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2021 yuzu Emulator Project +// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later #pragma once @@ -119,6 +119,7 @@ class TextureCache : public VideoCommon::ChannelSetupCaches copies); + /// Return true when a CPU region is modified from the GPU [[nodiscard]] bool IsRegionGpuModified(VAddr addr, size_t size); -- cgit v1.2.3