gl-renderer: display_create needs surface type
In case the base EGLConfig is needed, gl_renderer_display_create() needs to know it should use EGL_WINDOW_BIT or EGL_PBUFFER_BIT. The PBUFFER case is added for when the headless backend will grow GL-renderer support. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
This commit is contained in:
parent
24756a8965
commit
411a7cfe67
|
@ -747,6 +747,7 @@ drm_backend_create_gl_renderer(struct drm_backend *b)
|
|||
if (gl_renderer->display_create(b->compositor,
|
||||
EGL_PLATFORM_GBM_KHR,
|
||||
(void *)b->gbm,
|
||||
EGL_WINDOW_BIT,
|
||||
format,
|
||||
n_formats) < 0) {
|
||||
return -1;
|
||||
|
|
|
@ -2773,6 +2773,7 @@ wayland_backend_create(struct weston_compositor *compositor,
|
|||
if (gl_renderer->display_create(compositor,
|
||||
EGL_PLATFORM_WAYLAND_KHR,
|
||||
b->parent.wl_display,
|
||||
EGL_WINDOW_BIT,
|
||||
wayland_formats,
|
||||
ARRAY_LENGTH(wayland_formats)) < 0) {
|
||||
weston_log("Failed to initialize the GL renderer; "
|
||||
|
|
|
@ -1813,6 +1813,7 @@ init_gl_renderer(struct x11_backend *b)
|
|||
|
||||
ret = gl_renderer->display_create(b->compositor, EGL_PLATFORM_X11_KHR,
|
||||
(void *) b->dpy,
|
||||
EGL_WINDOW_BIT,
|
||||
x11_formats,
|
||||
ARRAY_LENGTH(x11_formats));
|
||||
|
||||
|
|
|
@ -3354,6 +3354,7 @@ static int
|
|||
gl_renderer_display_create(struct weston_compositor *ec,
|
||||
EGLenum platform,
|
||||
void *native_display,
|
||||
EGLint egl_surface_type,
|
||||
const uint32_t *drm_formats,
|
||||
unsigned drm_formats_count)
|
||||
{
|
||||
|
@ -3427,13 +3428,11 @@ gl_renderer_display_create(struct weston_compositor *ec,
|
|||
goto fail_with_error;
|
||||
|
||||
if (!gr->has_configless_context) {
|
||||
EGLint surface_type = EGL_WINDOW_BIT;
|
||||
|
||||
if (!gr->has_surfaceless_context)
|
||||
surface_type |= EGL_PBUFFER_BIT;
|
||||
egl_surface_type |= EGL_PBUFFER_BIT;
|
||||
|
||||
gr->egl_config = gl_renderer_get_egl_config(gr,
|
||||
surface_type,
|
||||
egl_surface_type,
|
||||
drm_formats,
|
||||
drm_formats_count);
|
||||
if (gr->egl_config == EGL_NO_CONFIG_KHR) {
|
||||
|
|
|
@ -46,6 +46,8 @@ typedef void *EGLConfig;
|
|||
typedef intptr_t EGLNativeDisplayType;
|
||||
typedef intptr_t EGLNativeWindowType;
|
||||
#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0)
|
||||
#define EGL_PBUFFER_BIT 0x0001
|
||||
#define EGL_WINDOW_BIT 0x0004
|
||||
|
||||
#endif /* ENABLE_EGL */
|
||||
|
||||
|
@ -60,6 +62,7 @@ struct gl_renderer_interface {
|
|||
int (*display_create)(struct weston_compositor *ec,
|
||||
EGLenum platform,
|
||||
void *native_display,
|
||||
EGLint egl_surface_type,
|
||||
const uint32_t *drm_formats,
|
||||
unsigned drm_formats_count);
|
||||
|
||||
|
|
Loading…
Reference in New Issue