On mobile in portrait mode, don't override custom viewport

This commit is contained in:
Eric Warmenhoven 2023-05-26 12:29:58 -04:00 committed by LibretroAdmin
parent 6506b65ce7
commit 6a1320bcfb
5 changed files with 27 additions and 30 deletions

View File

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

View File

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

View File

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

View File

@ -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. */

View File

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