aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan/renderer_vulkan.cpp
diff options
context:
space:
mode:
authorMrPurple666 <antoniosacramento666usa@gmail.com>2025-04-12 03:57:08 -0300
committerMrPurple666 <antoniosacramento666usa@gmail.com>2025-04-12 22:54:32 -0300
commitce1a1912aee2061d62219e9c66a2e3730c3f98d7 (patch)
treeb1afdba69e3fe986dd9d8b916b007e1e7d11730b /src/video_core/renderer_vulkan/renderer_vulkan.cpp
parent2a793d610d2a245fec7d3e4a6a100e0b26418cc1 (diff)
RenderVulkan Experiments: DO-NOT-MERGE: Only recreate when necessary and NEAREST
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