|
|
@ -795,25 +795,25 @@ bool TextureCache<P>::BlackListImage(ImageId image_id) { |
|
|
|
|
|
|
|
|
template <class P> |
|
|
template <class P> |
|
|
bool TextureCache<P>::ImageCanRescale(ImageBase& image) { |
|
|
bool TextureCache<P>::ImageCanRescale(ImageBase& image) { |
|
|
if (True(image.flags & ImageFlagBits::Blacklisted)) { |
|
|
|
|
|
|
|
|
if (!image.info.rescaleable || True(image.flags & ImageFlagBits::Blacklisted)) { |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
if (True(image.flags & (ImageFlagBits::Rescaled | ImageFlagBits::RescaleChecked))) { |
|
|
|
|
|
|
|
|
if (True(image.flags & (ImageFlagBits::Rescaled | ImageFlagBits::CheckingRescalable))) { |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
if (!image.info.rescaleable) { |
|
|
|
|
|
image.flags &= ~ImageFlagBits::RescaleChecked; |
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
if (True(image.flags & ImageFlagBits::IsRescalable)) { |
|
|
|
|
|
return true; |
|
|
} |
|
|
} |
|
|
image.flags |= ImageFlagBits::RescaleChecked; |
|
|
|
|
|
|
|
|
image.flags |= ImageFlagBits::CheckingRescalable; |
|
|
for (const auto& alias : image.aliased_images) { |
|
|
for (const auto& alias : image.aliased_images) { |
|
|
Image& other_image = slot_images[alias.id]; |
|
|
Image& other_image = slot_images[alias.id]; |
|
|
if (!ImageCanRescale(other_image)) { |
|
|
if (!ImageCanRescale(other_image)) { |
|
|
image.flags &= ~ImageFlagBits::RescaleChecked; |
|
|
|
|
|
|
|
|
image.flags &= ~ImageFlagBits::CheckingRescalable; |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
image.flags &= ~ImageFlagBits::RescaleChecked; |
|
|
|
|
|
|
|
|
image.flags &= ~ImageFlagBits::CheckingRescalable; |
|
|
|
|
|
image.flags |= ImageFlagBits::IsRescalable; |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|