mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
egl: deduplicate swap interval clamping logic
Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
This commit is contained in:
parent
54826331b3
commit
2714a8f3e9
4 changed files with 14 additions and 40 deletions
|
|
@ -63,10 +63,6 @@ enum wl_drm_format_flags {
|
|||
HAS_RGB565 = 4,
|
||||
};
|
||||
|
||||
static EGLBoolean
|
||||
dri2_wl_swap_interval(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf,
|
||||
EGLint interval);
|
||||
|
||||
static int
|
||||
roundtrip(struct dri2_egl_display *dri2_dpy)
|
||||
{
|
||||
|
|
@ -230,8 +226,7 @@ dri2_wl_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
|
|||
goto cleanup_surf;
|
||||
}
|
||||
|
||||
dri2_wl_swap_interval(drv, disp, &dri2_surf->base,
|
||||
dri2_dpy->default_swap_interval);
|
||||
dri2_surf->base.SwapInterval = dri2_dpy->default_swap_interval;
|
||||
|
||||
return &dri2_surf->base;
|
||||
|
||||
|
|
@ -1150,13 +1145,6 @@ dri2_wl_swap_interval(_EGLDriver *drv,
|
|||
_EGLSurface *surf,
|
||||
EGLint interval)
|
||||
{
|
||||
if (interval > surf->Config->MaxSwapInterval)
|
||||
interval = surf->Config->MaxSwapInterval;
|
||||
else if (interval < surf->Config->MinSwapInterval)
|
||||
interval = surf->Config->MinSwapInterval;
|
||||
|
||||
surf->SwapInterval = interval;
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -956,16 +956,9 @@ dri2_x11_swap_interval(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf,
|
|||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surf);
|
||||
|
||||
if (interval > surf->Config->MaxSwapInterval)
|
||||
interval = surf->Config->MaxSwapInterval;
|
||||
else if (interval < surf->Config->MinSwapInterval)
|
||||
interval = surf->Config->MinSwapInterval;
|
||||
|
||||
if (interval != surf->SwapInterval && dri2_dpy->swap_available)
|
||||
if (dri2_dpy->swap_available)
|
||||
xcb_dri2_swap_interval(dri2_dpy->conn, dri2_surf->drawable, interval);
|
||||
|
||||
surf->SwapInterval = interval;
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1201,7 +1201,17 @@ eglSwapInterval(EGLDisplay dpy, EGLint interval)
|
|||
if (_eglGetSurfaceHandle(surf) == EGL_NO_SURFACE)
|
||||
RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
|
||||
|
||||
ret = drv->API.SwapInterval(drv, disp, surf, interval);
|
||||
interval = CLAMP(interval,
|
||||
surf->Config->MinSwapInterval,
|
||||
surf->Config->MaxSwapInterval);
|
||||
|
||||
if (surf->SwapInterval != interval)
|
||||
ret = drv->API.SwapInterval(drv, disp, surf, interval);
|
||||
else
|
||||
ret = EGL_TRUE;
|
||||
|
||||
if (ret)
|
||||
surf->SwapInterval = interval;
|
||||
|
||||
RETURN_EGL_EVAL(disp, ret);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,22 +45,6 @@
|
|||
#include "eglsurface.h"
|
||||
|
||||
|
||||
static void
|
||||
_eglClampSwapInterval(_EGLSurface *surf, EGLint interval)
|
||||
{
|
||||
EGLint bound = surf->Config->MaxSwapInterval;
|
||||
if (interval >= bound) {
|
||||
interval = bound;
|
||||
}
|
||||
else {
|
||||
bound = surf->Config->MinSwapInterval;
|
||||
if (interval < bound)
|
||||
interval = bound;
|
||||
}
|
||||
surf->SwapInterval = interval;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parse the list of surface attributes and return the proper error code.
|
||||
*/
|
||||
|
|
@ -319,7 +303,7 @@ _eglInitSurface(_EGLSurface *surf, _EGLDisplay *dpy, EGLint type,
|
|||
surf->BufferAgeRead = EGL_FALSE;
|
||||
|
||||
/* the default swap interval is 1 */
|
||||
_eglClampSwapInterval(surf, 1);
|
||||
surf->SwapInterval = 1;
|
||||
|
||||
err = _eglParseSurfaceAttribList(surf, attrib_list);
|
||||
if (err != EGL_SUCCESS)
|
||||
|
|
@ -565,6 +549,5 @@ EGLBoolean
|
|||
_eglSwapInterval(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf,
|
||||
EGLint interval)
|
||||
{
|
||||
_eglClampSwapInterval(surf, interval);
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue