textures: keep incompatible mip layouts separate

This commit is contained in:
nmzik
2026-09-05 15:24:07 +04:00
parent 9918dc2591
commit c83aac966e
2 changed files with 94 additions and 1 deletions
+5 -1
View File
@@ -728,7 +728,11 @@ TextureCache::OverlapResult TextureCache::ResolveOverlap(const ImageInfo& reques
(requested.IsVolume() || cached.info.IsVolume())) {
return {ExpandImage(requested, cached_id)};
}
if (requested.tile_mode != cached.info.tile_mode) {
// Equal pitch does not imply equal mip placement: a changed extent can move
// a level into or out of the mip tail. These are separate guest layouts.
if (requested.tile_mode != cached.info.tile_mode ||
(requested.resources == cached.info.resources &&
requested.mip_layout != cached.info.mip_layout)) {
if (safe_to_delete) {
FreeImage(cached_id);
}