aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/texture_cache/image_base.h
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-11-01 16:21:45 -0500
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-11-01 16:21:45 -0500
commita41d11108b6478ad862fc7fcac36ab51c83b8602 (patch)
tree2c16c13764e6ef2b48c7327055fde64d7af2cd37 /src/video_core/texture_cache/image_base.h
parent01effa81ab0e151f8cfd674bf4da952d24645943 (diff)
parentac22c4087d9a6380c1937337530a5d4e54808ad1 (diff)
Merge remote-tracking branch 'origin/nx2' into merge/nx2-experimental-1101
# Conflicts: # src/core/loader/deconstructed_rom_directory.cpp
Diffstat (limited to 'src/video_core/texture_cache/image_base.h')
-rw-r--r--src/video_core/texture_cache/image_base.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/video_core/texture_cache/image_base.h b/src/video_core/texture_cache/image_base.h
index 04254fb417..878c229953 100644
--- a/src/video_core/texture_cache/image_base.h
+++ b/src/video_core/texture_cache/image_base.h
@@ -56,6 +56,10 @@ enum class ImageFlagBits : u32 {
/// A large array over Switch 2 sparse blocks: unbacked, each layer gets device memory when
/// something is written to it (Image::BindLayers) and only those layers are uploaded.
SparseLayers = 1 << 22,
+ /// A large single image over Switch 2 sparse blocks: unbacked, each host sparse block gets
+ /// device memory when the guest memory under it can hold data (Image::BindTiles), and only
+ /// the parts written are uploaded.
+ SparseTiles = 1 << 23,
};
DECLARE_ENUM_FLAG_OPERATORS(ImageFlagBits)
@@ -108,6 +112,9 @@ struct ImageBase {
/// Large layered images uploaded by layer: one bit per layer written since the last upload
/// while CpuModified. Empty while CpuModified means the whole image.
std::vector<u64> dirty_layers;
+ /// SparseTiles images: the guest byte ranges (offset, size) written since the last upload while
+ /// CpuModified. Empty while CpuModified means all of it that can hold data.
+ std::vector<std::pair<u64, u64>> dirty_ranges;
u64 scale_tick = 0;
bool has_scaled = false;