diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2023-03-12 21:43:31 +0100 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2023-04-29 00:18:21 +0200 |
commit | 3fbee093b2bf3b4c15dbc5bb48a3bc768ecedbc9 (patch) | |
tree | 3910e8dad8f813ec61643f4d6c30097b548e60a1 /src/video_core/texture_cache | |
parent | Merge pull request #10051 from liamwhite/surface-capabilities (diff) | |
download | yuzu-3fbee093b2bf3b4c15dbc5bb48a3bc768ecedbc9.tar yuzu-3fbee093b2bf3b4c15dbc5bb48a3bc768ecedbc9.tar.gz yuzu-3fbee093b2bf3b4c15dbc5bb48a3bc768ecedbc9.tar.bz2 yuzu-3fbee093b2bf3b4c15dbc5bb48a3bc768ecedbc9.tar.lz yuzu-3fbee093b2bf3b4c15dbc5bb48a3bc768ecedbc9.tar.xz yuzu-3fbee093b2bf3b4c15dbc5bb48a3bc768ecedbc9.tar.zst yuzu-3fbee093b2bf3b4c15dbc5bb48a3bc768ecedbc9.zip |
Diffstat (limited to 'src/video_core/texture_cache')
-rw-r--r-- | src/video_core/texture_cache/texture_cache.h | 12 | ||||
-rw-r--r-- | src/video_core/texture_cache/texture_cache_base.h | 6 |
2 files changed, 16 insertions, 2 deletions
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 @@ -834,6 +834,16 @@ std::pair<typename TextureCache<P>::Image*, BufferImageCopy> TextureCache<P>::Dm } template <class P> +void TextureCache<P>::DownloadImageIntoBuffer( + typename TextureCache<P>::Image* image, typename TextureCache<P>::BufferType buffer, + size_t buffer_offset, std::span<const VideoCommon::BufferImageCopy> copies) { + std::array buffers{ + buffer, + }; + image->DownloadMemory(buffers, buffer_offset, copies); +} + +template <class P> void TextureCache<P>::RefreshContents(Image& image, ImageId image_id) { if (False(image.flags & ImageFlagBits::CpuModified)) { // Only upload modified images 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<TextureCacheChannelI using Sampler = typename P::Sampler; using Framebuffer = typename P::Framebuffer; using AsyncBuffer = typename P::AsyncBuffer; + using BufferType = typename P::BufferType; struct BlitImages { ImageId dst_id; @@ -215,6 +216,9 @@ public: const Tegra::DMA::ImageCopy& copy_info, const Tegra::DMA::BufferOperand& buffer_operand, const Tegra::DMA::ImageOperand& image_operand, ImageId image_id, bool modifies_image); + void DownloadImageIntoBuffer(Image* image, BufferType buffer, size_t buffer_offset, + std::span<const VideoCommon::BufferImageCopy> copies); + /// Return true when a CPU region is modified from the GPU [[nodiscard]] bool IsRegionGpuModified(VAddr addr, size_t size); |