gl-renderer: Move EGL buffer error checks into attach_egl
Makes it more consistent with the others, and also easier to return success/fail. Signed-off-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
parent
8f56743590
commit
4519461439
|
@ -2244,14 +2244,14 @@ gl_renderer_fill_buffer_info(struct weston_compositor *ec,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer,
|
gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer)
|
||||||
uint32_t format)
|
|
||||||
{
|
{
|
||||||
struct weston_compositor *ec = es->compositor;
|
struct weston_compositor *ec = es->compositor;
|
||||||
struct gl_renderer *gr = get_renderer(ec);
|
struct gl_renderer *gr = get_renderer(ec);
|
||||||
struct gl_surface_state *gs = get_surface_state(es);
|
struct gl_surface_state *gs = get_surface_state(es);
|
||||||
struct gl_buffer_state *gb = &gs->buffer;
|
struct gl_buffer_state *gb = &gs->buffer;
|
||||||
EGLint attribs[5];
|
EGLint attribs[5];
|
||||||
|
EGLint format;
|
||||||
GLenum target;
|
GLenum target;
|
||||||
int i, num_planes;
|
int i, num_planes;
|
||||||
|
|
||||||
|
@ -2260,6 +2260,15 @@ gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer,
|
||||||
gb->images[i] = NULL;
|
gb->images[i] = NULL;
|
||||||
}
|
}
|
||||||
es->is_opaque = false;
|
es->is_opaque = false;
|
||||||
|
|
||||||
|
if (!gr->has_bind_display ||
|
||||||
|
!gr->query_buffer(gr->egl_display, buffer->legacy_buffer,
|
||||||
|
EGL_TEXTURE_FORMAT, &format)) {
|
||||||
|
weston_log("eglQueryWaylandBufferWL failed\n");
|
||||||
|
gl_renderer_print_egl_error_state();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
switch (format) {
|
switch (format) {
|
||||||
case EGL_TEXTURE_RGB:
|
case EGL_TEXTURE_RGB:
|
||||||
es->is_opaque = true;
|
es->is_opaque = true;
|
||||||
|
@ -3014,11 +3023,8 @@ gl_renderer_attach_solid(struct weston_surface *surface,
|
||||||
static void
|
static void
|
||||||
gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer)
|
gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer)
|
||||||
{
|
{
|
||||||
struct weston_compositor *ec = es->compositor;
|
|
||||||
struct gl_renderer *gr = get_renderer(ec);
|
|
||||||
struct gl_surface_state *gs = get_surface_state(es);
|
struct gl_surface_state *gs = get_surface_state(es);
|
||||||
struct gl_buffer_state *gb = &gs->buffer;
|
struct gl_buffer_state *gb = &gs->buffer;
|
||||||
EGLint format;
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
weston_buffer_reference(&gs->buffer_ref, buffer,
|
weston_buffer_reference(&gs->buffer_ref, buffer,
|
||||||
|
@ -3050,13 +3056,7 @@ gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer)
|
||||||
gl_renderer_attach_dmabuf(es, buffer, buffer->dmabuf);
|
gl_renderer_attach_dmabuf(es, buffer, buffer->dmabuf);
|
||||||
return;
|
return;
|
||||||
case WESTON_BUFFER_RENDERER_OPAQUE:
|
case WESTON_BUFFER_RENDERER_OPAQUE:
|
||||||
if (!gr->has_bind_display ||
|
gl_renderer_attach_egl(es, buffer);
|
||||||
!gr->query_buffer(gr->egl_display,
|
|
||||||
buffer->legacy_buffer,
|
|
||||||
EGL_TEXTURE_FORMAT, &format)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
gl_renderer_attach_egl(es, buffer, format);
|
|
||||||
return;
|
return;
|
||||||
case WESTON_BUFFER_SOLID:
|
case WESTON_BUFFER_SOLID:
|
||||||
gl_renderer_attach_solid(es, buffer);
|
gl_renderer_attach_solid(es, buffer);
|
||||||
|
@ -3066,10 +3066,6 @@ gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
weston_log("unhandled buffer type!\n");
|
weston_log("unhandled buffer type!\n");
|
||||||
if (gr->has_bind_display) {
|
|
||||||
weston_log("eglQueryWaylandBufferWL failed\n");
|
|
||||||
gl_renderer_print_egl_error_state();
|
|
||||||
}
|
|
||||||
weston_buffer_reference(&gs->buffer_ref, NULL,
|
weston_buffer_reference(&gs->buffer_ref, NULL,
|
||||||
BUFFER_WILL_NOT_BE_ACCESSED);
|
BUFFER_WILL_NOT_BE_ACCESSED);
|
||||||
weston_buffer_release_reference(&gs->buffer_release_ref, NULL);
|
weston_buffer_release_reference(&gs->buffer_release_ref, NULL);
|
||||||
|
|
Loading…
Reference in New Issue