diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h
index 4c345dd213..3165483388 100644
--- a/src/video_core/buffer_cache/buffer_cache.h
+++ b/src/video_core/buffer_cache/buffer_cache.h
@@ -1680,6 +1680,11 @@ BufferId BufferCache
::CreateBuffer(DAddr device_addr, u32 wanted_size,
wanted_size = static_cast(device_addr_end - device_addr);
const OverlapResult overlap = ResolveOverlaps(device_addr, wanted_size);
const u32 size = static_cast(overlap.end - overlap.begin);
+ if constexpr (requires(Buffer& buffer) { buffer.IsSparseCompatible(); }) {
+ for (const BufferId overlap_id : overlap.ids) {
+ sparse_compatible |= slot_buffers[overlap_id].IsSparseCompatible();
+ }
+ }
const BufferId new_buffer_id =
slot_buffers.insert(runtime, overlap.begin, size, sparse_compatible);
auto& new_buffer = slot_buffers[new_buffer_id];