From 8943a9db4a43c1f3ec78ca176eb42bf9a5c5e68a Mon Sep 17 00:00:00 2001 From: Gregory Hainaut Date: Mon, 28 Mar 2016 12:09:59 +0200 Subject: [PATCH] gsdx hw: GS can draw 2 frames in a single framebuffer So let's increase the height. It will increase the memory requirement on some games v2: try to do it automatically (not sure it will useful as most game will requires it) v3: let's back to an hardcoded 1280 size. It generates too much issue --- plugins/GSdx/GSRendererHW.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/plugins/GSdx/GSRendererHW.cpp b/plugins/GSdx/GSRendererHW.cpp index ff974cb04f..f8595565a3 100644 --- a/plugins/GSdx/GSRendererHW.cpp +++ b/plugins/GSdx/GSRendererHW.cpp @@ -58,7 +58,16 @@ void GSRendererHW::SetScaling() int fb_width = max({ (int)m_context->FRAME.FBW * 64, crtc_size.x , 512 }); // GS doesn't have a specific register for the FrameBuffer height. so we get the height // from physical units of the display rectangle in case the game uses a heigher value of height. - int fb_height = (fb_width < 1024) ? max(512, crtc_size.y) : 1024; + // + // Gregory: the framebuffer must have enough room to draw + // * at least 2 frames such as FMV (see OI_BlitFMV) + // * high resolution game such as snowblind engine game + // + // Autodetection isn't a good idea because it will create flickering + // If memory consumption is an issue, there are 2 possibilities + // * 1/ Avoid to create hundreds of RT + // * 2/ Use sparse texture (requires recent HW) + int fb_height = (fb_width < 1024) ? 1280 : 1024; int upscaled_fb_w = fb_width * m_upscale_multiplier; int upscaled_fb_h = fb_height * m_upscale_multiplier;