diff --git a/gfx/drivers/gl1.c b/gfx/drivers/gl1.c index 4107497c74..6f3e58153f 100644 --- a/gfx/drivers/gl1.c +++ b/gfx/drivers/gl1.c @@ -1285,11 +1285,6 @@ static void gl1_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); } } @@ -1306,6 +1301,12 @@ static void gl1_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 9948f17a4c..4c97275a0e 100644 --- a/gfx/drivers/gl2.c +++ b/gfx/drivers/gl2.c @@ -1331,11 +1331,6 @@ 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); } } @@ -1352,6 +1347,12 @@ 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 a63c6e0aae..bd60ab796d 100644 --- a/gfx/drivers/gl3.c +++ b/gfx/drivers/gl3.c @@ -1436,11 +1436,6 @@ 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); } } @@ -1457,6 +1452,12 @@ 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 e4fda61ed8..f40a65db32 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -3692,12 +3692,6 @@ 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); } @@ -3716,6 +3710,12 @@ 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 72111947e8..3251d59477 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -1984,17 +1984,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_restore_cached(void *settings_data)