diff --git a/gfx/drivers/gl1.c b/gfx/drivers/gl1.c index 7687061370..5d4126994e 100644 --- a/gfx/drivers/gl1.c +++ b/gfx/drivers/gl1.c @@ -534,6 +534,11 @@ void gl1_gfx_set_viewport(gl1_t *gl1, { delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f; y = (int)roundf(viewport_height * (0.5f - delta)); +#if defined(RARCH_MOBILE) + /* In portrait mode, we want viewport to gravitate to top of screen. */ + if (device_aspect < 1.0f) + y *= 2; +#endif viewport_height = (unsigned)roundf(2.0f * viewport_height * delta); } } @@ -550,12 +555,6 @@ void gl1_gfx_set_viewport(gl1_t *gl1, gl1->vp.height = viewport_height; } -#if defined(RARCH_MOBILE) - /* In portrait mode, we want viewport to gravitate to top of screen. */ - if (device_aspect < 1.0f) - gl1->vp.y *= 2; -#endif - glViewport(gl1->vp.x, gl1->vp.y, gl1->vp.width, gl1->vp.height); gl1_set_projection(gl1, &gl1_default_ortho, allow_rotate); diff --git a/gfx/drivers/gl2.c b/gfx/drivers/gl2.c index fabb1e910f..18c147f67f 100644 --- a/gfx/drivers/gl2.c +++ b/gfx/drivers/gl2.c @@ -465,6 +465,11 @@ static void gl2_set_viewport(gl2_t *gl, { delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f; y = (int)roundf(viewport_height * (0.5f - delta)); +#if defined(RARCH_MOBILE) + /* In portrait mode, we want viewport to gravitate to top of screen. */ + if (device_aspect < 1.0f) + y *= 2; +#endif viewport_height = (unsigned)roundf(2.0f * viewport_height * delta); } } @@ -481,12 +486,6 @@ static void gl2_set_viewport(gl2_t *gl, gl->vp.height = viewport_height; } -#if defined(RARCH_MOBILE) - /* In portrait mode, we want viewport to gravitate to top of screen. */ - if (device_aspect < 1.0f) - gl->vp.y *= 2; -#endif - glViewport(gl->vp.x, gl->vp.y, gl->vp.width, gl->vp.height); gl2_set_projection(gl, &default_ortho, allow_rotate); diff --git a/gfx/drivers/gl3.c b/gfx/drivers/gl3.c index 33507276c4..1b2d264381 100644 --- a/gfx/drivers/gl3.c +++ b/gfx/drivers/gl3.c @@ -628,6 +628,11 @@ static void gl3_set_viewport(gl3_t *gl, { delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f; y = (int)roundf(viewport_height * (0.5f - delta)); +#if defined(RARCH_MOBILE) + /* In portrait mode, we want viewport to gravitate to top of screen. */ + if (device_aspect < 1.0f) + y *= 2; +#endif viewport_height = (unsigned)roundf(2.0f * viewport_height * delta); } } @@ -644,12 +649,6 @@ static void gl3_set_viewport(gl3_t *gl, gl->vp.height = viewport_height; } -#if defined(RARCH_MOBILE) - /* In portrait mode, we want viewport to gravitate to top of screen. */ - if (device_aspect < 1.0f) - gl->vp.y *= 2; -#endif - glViewport(gl->vp.x, gl->vp.y, gl->vp.width, gl->vp.height); gl3_set_projection(gl, &gl3_default_ortho, allow_rotate); diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index d04a24172c..28b3cb9fe3 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -1932,6 +1932,12 @@ static void vulkan_set_viewport(void *data, unsigned viewport_width, { delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f; +#if defined(RARCH_MOBILE) + /* In portrait mode, we want viewport to gravitate to top of screen. */ + if (device_aspect < 1.0f) + y = 0; + else +#endif y = (int)roundf(viewport_height * (0.5f - delta)); viewport_height = (unsigned)roundf(2.0f * viewport_height * delta); } @@ -1950,12 +1956,6 @@ static void vulkan_set_viewport(void *data, unsigned viewport_width, vk->vp.height = viewport_height; } -#if defined(RARCH_MOBILE) - /* In portrait mode, we want viewport to gravitate to top of screen. */ - if (device_aspect < 1.0f) - vk->vp.y = 0; -#endif - vulkan_set_projection(vk, &ortho, allow_rotate); /* Set last backbuffer viewport. */ diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 3b03f81fe7..bfc3576114 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -2162,17 +2162,17 @@ void video_driver_update_viewport( vp->width = vp->full_width; delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f; +#if defined(RARCH_MOBILE) + /* In portrait mode, we want viewport to gravitate to top of screen. */ + if (device_aspect < 1.0f) + vp->y = 0; + else +#endif vp->y = (int)roundf(vp->full_height * (0.5f - delta)); vp->height = (unsigned)roundf(2.0f * vp->full_height * delta); } } } - -#if defined(RARCH_MOBILE) - /* In portrait mode, we want viewport to gravitate to top of screen. */ - if (device_aspect < 1.0f) - vp->y = 0; -#endif } void video_driver_show_mouse(void)