Fix FSR crash on content area resize (#4153)

* fsr

* fsr

* fsr
This commit is contained in:
Kravickas 2026-03-20 07:46:22 +01:00 committed by GitHub
parent 0c3fac6ce0
commit 980919b07b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 0 deletions

View File

@ -407,6 +407,13 @@ void FsrPass::ResizeAndInvalidate(u32 width, u32 height) {
void FsrPass::CreateImages(Img& img) const {
img.dirty = false;
// Destroy previous resources before re-creating at new size.
// Views first, then images (views reference the images).
img.intermediary_image_view.reset();
img.output_image_view.reset();
img.intermediary_image.Destroy();
img.output_image.Destroy();
vk::ImageCreateInfo image_create_info{
.imageType = vk::ImageType::e2D,
.format = vk::Format::eR16G16B16A16Sfloat,

View File

@ -82,6 +82,14 @@ UniqueImage::~UniqueImage() {
}
}
void UniqueImage::Destroy() {
if (image) {
vmaDestroyImage(allocator, image, allocation);
image = vk::Image{};
allocation = {};
}
}
void UniqueImage::Create(const vk::ImageCreateInfo& image_ci) {
this->image_ci = image_ci;
ASSERT(!image);

View File

@ -59,6 +59,8 @@ struct UniqueImage {
void Create(const vk::ImageCreateInfo& image_ci);
void Destroy();
operator vk::Image() const {
return image;
}