Răsfoiți Sursa

vk_blit_screen: Minor refactor of filter pipeline selection

ameerj 4 ani în urmă
părinte
comite
b387a26f30
1 a modificat fișierele cu 16 adăugiri și 21 ștergeri
  1. 16 21
      src/video_core/renderer_vulkan/vk_blit_screen.cpp

+ 16 - 21
src/video_core/renderer_vulkan/vk_blit_screen.cpp

@@ -391,28 +391,23 @@ VkSemaphore VKBlitScreen::Draw(const Tegra::FramebufferConfig& framebuffer,
                 .offset = {0, 0},
                 .extent = size,
             };
-            const auto filter = Settings::values.scaling_filter.GetValue();
             cmdbuf.BeginRenderPass(renderpass_bi, VK_SUBPASS_CONTENTS_INLINE);
-            switch (filter) {
-            case Settings::ScalingFilter::NearestNeighbor:
-                cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_GRAPHICS, *bilinear_pipeline);
-                break;
-            case Settings::ScalingFilter::Bilinear:
-                cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_GRAPHICS, *bilinear_pipeline);
-                break;
-            case Settings::ScalingFilter::Bicubic:
-                cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_GRAPHICS, *bicubic_pipeline);
-                break;
-            case Settings::ScalingFilter::Gaussian:
-                cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_GRAPHICS, *gaussian_pipeline);
-                break;
-            case Settings::ScalingFilter::ScaleForce:
-                cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_GRAPHICS, *scaleforce_pipeline);
-                break;
-            default:
-                cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_GRAPHICS, *bilinear_pipeline);
-                break;
-            }
+            auto graphics_pipeline = [this]() {
+                switch (Settings::values.scaling_filter.GetValue()) {
+                case Settings::ScalingFilter::NearestNeighbor:
+                case Settings::ScalingFilter::Bilinear:
+                    return *bilinear_pipeline;
+                case Settings::ScalingFilter::Bicubic:
+                    return *bicubic_pipeline;
+                case Settings::ScalingFilter::Gaussian:
+                    return *gaussian_pipeline;
+                case Settings::ScalingFilter::ScaleForce:
+                    return *scaleforce_pipeline;
+                default:
+                    return *bilinear_pipeline;
+                }
+            }();
+            cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_GRAPHICS, graphics_pipeline);
             cmdbuf.SetViewport(0, viewport);
             cmdbuf.SetScissor(0, scissor);