|
|
@@ -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);
|
|
|
|