From 2a25e284af0a81bd92563b1cdfba8640af053910 Mon Sep 17 00:00:00 2001 From: aliaspider Date: Fri, 2 Feb 2018 14:39:53 +0100 Subject: [PATCH] (D3D11) better handling of FBO scale. --- gfx/drivers/d3d11.c | 76 +++++++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/gfx/drivers/d3d11.c b/gfx/drivers/d3d11.c index fdf3bf805e..5c8438398c 100644 --- a/gfx/drivers/d3d11.c +++ b/gfx/drivers/d3d11.c @@ -708,47 +708,57 @@ static bool d3d11_init_frame_textures(d3d11_video_t* d3d11, unsigned width, unsi { struct video_shader_pass* pass = &d3d11->shader_preset->pass[i]; - switch (pass->fbo.type_x) + if(pass->fbo.valid) { - case RARCH_SCALE_INPUT: - width *= pass->fbo.scale_x; - break; - case RARCH_SCALE_VIEWPORT: - width = d3d11->vp.width * pass->fbo.scale_x; - break; + switch (pass->fbo.type_x) + { + case RARCH_SCALE_INPUT: + width *= pass->fbo.scale_x; + break; - case RARCH_SCALE_ABSOLUTE: - width = pass->fbo.abs_x; - break; + case RARCH_SCALE_VIEWPORT: + width = d3d11->vp.width * pass->fbo.scale_x; + break; - default: - break; + case RARCH_SCALE_ABSOLUTE: + width = pass->fbo.abs_x; + break; + + default: + break; + } + + if (!width) + width = d3d11->vp.width; + + switch (pass->fbo.type_y) + { + case RARCH_SCALE_INPUT: + height *= pass->fbo.scale_y; + break; + + case RARCH_SCALE_VIEWPORT: + height = d3d11->vp.height * pass->fbo.scale_y; + break; + + case RARCH_SCALE_ABSOLUTE: + height = pass->fbo.abs_y; + break; + + default: + break; + } + + if (!height) + height = d3d11->vp.height; } - - switch (pass->fbo.type_y) + else if (i == (d3d11->shader_preset->passes - 1)) { - case RARCH_SCALE_INPUT: - height *= pass->fbo.scale_y; - break; - - case RARCH_SCALE_VIEWPORT: - height = d3d11->vp.height * pass->fbo.scale_y; - break; - - case RARCH_SCALE_ABSOLUTE: - height = pass->fbo.abs_y; - break; - - default: - break; - } - - if (!width) width = d3d11->vp.width; - - if (!height) height = d3d11->vp.height; + } + RARCH_LOG("[D3D11]: Updating framebuffer size %u x %u.\n", width, height);