gallium-egl: Implement eglQueryWaylandBufferWL
Support this query for gallium EGL too. Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
This commit is contained in:
@@ -39,6 +39,10 @@
|
|||||||
#include "egl_g3d_st.h"
|
#include "egl_g3d_st.h"
|
||||||
#include "native.h"
|
#include "native.h"
|
||||||
|
|
||||||
|
#ifdef EGL_WL_bind_wayland_display
|
||||||
|
#include <wayland-drm.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the state tracker for the given context.
|
* Return the state tracker for the given context.
|
||||||
*/
|
*/
|
||||||
@@ -873,6 +877,32 @@ egl_g3d_unbind_wayland_display_wl(_EGLDriver *drv, _EGLDisplay *dpy,
|
|||||||
return gdpy->native->wayland_bufmgr->unbind_display(gdpy->native, wl_dpy);
|
return gdpy->native->wayland_bufmgr->unbind_display(gdpy->native, wl_dpy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static EGLBoolean
|
||||||
|
egl_g3d_query_wayland_buffer_wl(_EGLDriver *drv, _EGLDisplay *dpy,
|
||||||
|
struct wl_buffer *_buffer,
|
||||||
|
EGLint attribute, EGLint *value)
|
||||||
|
{
|
||||||
|
struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer;
|
||||||
|
struct pipe_resource *resource = buffer->driver_buffer;
|
||||||
|
|
||||||
|
if (!wayland_buffer_is_drm(&buffer->buffer))
|
||||||
|
return EGL_FALSE;
|
||||||
|
|
||||||
|
if (attribute == EGL_WAYLAND_BUFFER_COMPONENTS_WL) {
|
||||||
|
switch (resource->format) {
|
||||||
|
case PIPE_FORMAT_B8G8R8A8_UNORM:
|
||||||
|
*value = EGL_WAYLAND_BUFFER_RGBA_WL;
|
||||||
|
return EGL_TRUE;
|
||||||
|
case PIPE_FORMAT_B8G8R8X8_UNORM:
|
||||||
|
*value = EGL_WAYLAND_BUFFER_RGB_WL;
|
||||||
|
return EGL_TRUE;
|
||||||
|
default:
|
||||||
|
return EGL_FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return EGL_FALSE;
|
||||||
|
}
|
||||||
#endif /* EGL_WL_bind_wayland_display */
|
#endif /* EGL_WL_bind_wayland_display */
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -907,7 +937,7 @@ egl_g3d_init_driver_api(_EGLDriver *drv)
|
|||||||
#ifdef EGL_WL_bind_wayland_display
|
#ifdef EGL_WL_bind_wayland_display
|
||||||
drv->API.BindWaylandDisplayWL = egl_g3d_bind_wayland_display_wl;
|
drv->API.BindWaylandDisplayWL = egl_g3d_bind_wayland_display_wl;
|
||||||
drv->API.UnbindWaylandDisplayWL = egl_g3d_unbind_wayland_display_wl;
|
drv->API.UnbindWaylandDisplayWL = egl_g3d_unbind_wayland_display_wl;
|
||||||
|
drv->API.QueryWaylandBufferWL = egl_g3d_query_wayland_buffer_wl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
drv->API.CreateSyncKHR = egl_g3d_create_sync;
|
drv->API.CreateSyncKHR = egl_g3d_create_sync;
|
||||||
|
Reference in New Issue
Block a user