aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan/renderer_vulkan.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/renderer_vulkan/renderer_vulkan.cpp')
-rw-r--r--src/video_core/renderer_vulkan/renderer_vulkan.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
index d5058fdd89..4bd4917fdf 100644
--- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp
+++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
@@ -184,11 +184,17 @@ class BooleanSetting {
};
// Check if we need to recreate the destination frame
- bool needs_recreation = true;
- if (interpolated_frame->image_view) {
- // Get image extent from framebuffer layout since we can't query it directly
- needs_recreation = (framebuffer_layout.width / 2 != dst_extent.width) ||
- (framebuffer_layout.height / 2 != dst_extent.height);
+ bool needs_recreation = false; // Only recreate when necessary
+ if (!interpolated_frame->image_view) {
+ needs_recreation = true; // Need to create initially
+ } else {
+ // Check if dimensions have changed
+ if (interpolated_frame->framebuffer) {
+ needs_recreation = (framebuffer_layout.width / 2 != dst_extent.width) ||
+ (framebuffer_layout.height / 2 != dst_extent.height);
+ } else {
+ needs_recreation = true;
+ }
}
if (needs_recreation) {
@@ -227,7 +233,7 @@ class BooleanSetting {
cmdbuf.BlitImage(
*prev_frame->image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
*interpolated_frame->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
- blit_region, VK_FILTER_LINEAR
+ blit_region, VK_FILTER_NEAREST
);
// Transition back to general layout