egl: add eglSwapBuffersWithDamageKHR
EGL_KHR_swap_buffers_with_damage is actually already supported, as it is technically nothing but a rename of EGL_EXT_swap_buffers_with_damage. To that effect, both extension are advertised depending on the same condition, and the new entrypoint simply redirects to the previous one. Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:

committed by
Emil Velikov

parent
b9e639589d
commit
0a606a400f
@@ -494,6 +494,8 @@ _eglCreateExtensionsString(_EGLDisplay *dpy)
|
|||||||
_EGL_CHECK_EXTENSION(KHR_no_config_context);
|
_EGL_CHECK_EXTENSION(KHR_no_config_context);
|
||||||
_EGL_CHECK_EXTENSION(KHR_reusable_sync);
|
_EGL_CHECK_EXTENSION(KHR_reusable_sync);
|
||||||
_EGL_CHECK_EXTENSION(KHR_surfaceless_context);
|
_EGL_CHECK_EXTENSION(KHR_surfaceless_context);
|
||||||
|
if (dpy->Extensions.EXT_swap_buffers_with_damage)
|
||||||
|
_eglAppendExtension(&exts, "EGL_KHR_swap_buffers_with_damage");
|
||||||
_EGL_CHECK_EXTENSION(KHR_wait_sync);
|
_EGL_CHECK_EXTENSION(KHR_wait_sync);
|
||||||
|
|
||||||
if (dpy->Extensions.KHR_no_config_context)
|
if (dpy->Extensions.KHR_no_config_context)
|
||||||
@@ -1150,17 +1152,14 @@ eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static EGLBoolean EGLAPIENTRY
|
static EGLBoolean
|
||||||
eglSwapBuffersWithDamageEXT(EGLDisplay dpy, EGLSurface surface,
|
eglSwapBuffersWithDamageCommon(_EGLDisplay *disp, _EGLSurface *surf,
|
||||||
EGLint *rects, EGLint n_rects)
|
EGLint *rects, EGLint n_rects)
|
||||||
{
|
{
|
||||||
_EGLContext *ctx = _eglGetCurrentContext();
|
_EGLContext *ctx = _eglGetCurrentContext();
|
||||||
_EGLDisplay *disp = _eglLockDisplay(dpy);
|
|
||||||
_EGLSurface *surf = _eglLookupSurface(surface, disp);
|
|
||||||
_EGLDriver *drv;
|
_EGLDriver *drv;
|
||||||
EGLBoolean ret;
|
EGLBoolean ret;
|
||||||
|
|
||||||
_EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
|
|
||||||
_EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
|
_EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
|
||||||
|
|
||||||
/* surface must be bound to current context in EGL 1.4 */
|
/* surface must be bound to current context in EGL 1.4 */
|
||||||
@@ -1176,6 +1175,26 @@ eglSwapBuffersWithDamageEXT(EGLDisplay dpy, EGLSurface surface,
|
|||||||
RETURN_EGL_EVAL(disp, ret);
|
RETURN_EGL_EVAL(disp, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static EGLBoolean EGLAPIENTRY
|
||||||
|
eglSwapBuffersWithDamageEXT(EGLDisplay dpy, EGLSurface surface,
|
||||||
|
EGLint *rects, EGLint n_rects)
|
||||||
|
{
|
||||||
|
_EGLDisplay *disp = _eglLockDisplay(dpy);
|
||||||
|
_EGLSurface *surf = _eglLookupSurface(surface, disp);
|
||||||
|
_EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
|
||||||
|
return eglSwapBuffersWithDamageCommon(disp, surf, rects, n_rects);
|
||||||
|
}
|
||||||
|
|
||||||
|
static EGLBoolean EGLAPIENTRY
|
||||||
|
eglSwapBuffersWithDamageKHR(EGLDisplay dpy, EGLSurface surface,
|
||||||
|
EGLint *rects, EGLint n_rects)
|
||||||
|
{
|
||||||
|
_EGLDisplay *disp = _eglLockDisplay(dpy);
|
||||||
|
_EGLSurface *surf = _eglLookupSurface(surface, disp);
|
||||||
|
_EGL_FUNC_START(disp, EGL_OBJECT_SURFACE_KHR, surf, EGL_FALSE);
|
||||||
|
return eglSwapBuffersWithDamageCommon(disp, surf, rects, n_rects);
|
||||||
|
}
|
||||||
|
|
||||||
EGLBoolean EGLAPIENTRY
|
EGLBoolean EGLAPIENTRY
|
||||||
eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
|
eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
|
||||||
{
|
{
|
||||||
@@ -2262,6 +2281,7 @@ eglGetProcAddress(const char *procname)
|
|||||||
{ "eglCreateWaylandBufferFromImageWL", (_EGLProc) eglCreateWaylandBufferFromImageWL },
|
{ "eglCreateWaylandBufferFromImageWL", (_EGLProc) eglCreateWaylandBufferFromImageWL },
|
||||||
{ "eglPostSubBufferNV", (_EGLProc) eglPostSubBufferNV },
|
{ "eglPostSubBufferNV", (_EGLProc) eglPostSubBufferNV },
|
||||||
{ "eglSwapBuffersWithDamageEXT", (_EGLProc) eglSwapBuffersWithDamageEXT },
|
{ "eglSwapBuffersWithDamageEXT", (_EGLProc) eglSwapBuffersWithDamageEXT },
|
||||||
|
{ "eglSwapBuffersWithDamageKHR", (_EGLProc) eglSwapBuffersWithDamageKHR },
|
||||||
{ "eglGetPlatformDisplayEXT", (_EGLProc) eglGetPlatformDisplayEXT },
|
{ "eglGetPlatformDisplayEXT", (_EGLProc) eglGetPlatformDisplayEXT },
|
||||||
{ "eglCreatePlatformWindowSurfaceEXT", (_EGLProc) eglCreatePlatformWindowSurfaceEXT },
|
{ "eglCreatePlatformWindowSurfaceEXT", (_EGLProc) eglCreatePlatformWindowSurfaceEXT },
|
||||||
{ "eglCreatePlatformPixmapSurfaceEXT", (_EGLProc) eglCreatePlatformPixmapSurfaceEXT },
|
{ "eglCreatePlatformPixmapSurfaceEXT", (_EGLProc) eglCreatePlatformPixmapSurfaceEXT },
|
||||||
|
Reference in New Issue
Block a user