gl-renderer: Add return value to attach handlers

It's good to know if we succeeded or failed to import our buffers. This
will also later make for a more smooth transition when we start
returning a gl_buffer_state from them.

Signed-off-by: Daniel Stone <daniels@collabora.com>
dev
Daniel Stone 3 years ago
parent bb624754f1
commit 428ae215e8
  1. 44
      libweston/renderer-gl/gl-renderer.c

@ -1980,7 +1980,7 @@ ensure_textures(struct gl_surface_state *gs, GLenum target, int num_textures)
glBindTexture(target, 0); glBindTexture(target, 0);
} }
static void static bool
gl_renderer_attach_shm(struct weston_surface *es, struct weston_buffer *buffer, gl_renderer_attach_shm(struct weston_surface *es, struct weston_buffer *buffer,
struct wl_shm_buffer *shm_buffer) struct wl_shm_buffer *shm_buffer)
{ {
@ -2152,7 +2152,7 @@ gl_renderer_attach_shm(struct weston_surface *es, struct weston_buffer *buffer,
unsupported: unsupported:
weston_log("warning: unknown or unsupported shm buffer format: %08x\n", weston_log("warning: unknown or unsupported shm buffer format: %08x\n",
wl_shm_buffer_get_format(shm_buffer)); wl_shm_buffer_get_format(shm_buffer));
return; return false;
} }
/* Only allocate a texture if it doesn't match existing one. /* Only allocate a texture if it doesn't match existing one.
@ -2180,6 +2180,8 @@ unsupported:
ensure_textures(gs, GL_TEXTURE_2D, num_planes); ensure_textures(gs, GL_TEXTURE_2D, num_planes);
} }
return true;
} }
static bool static bool
@ -2243,7 +2245,7 @@ gl_renderer_fill_buffer_info(struct weston_compositor *ec,
return true; return true;
} }
static void static bool
gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer) gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer)
{ {
struct weston_compositor *ec = es->compositor; struct weston_compositor *ec = es->compositor;
@ -2266,7 +2268,7 @@ gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer)
EGL_TEXTURE_FORMAT, &format)) { EGL_TEXTURE_FORMAT, &format)) {
weston_log("eglQueryWaylandBufferWL failed\n"); weston_log("eglQueryWaylandBufferWL failed\n");
gl_renderer_print_egl_error_state(); gl_renderer_print_egl_error_state();
return; return false;
} }
switch (format) { switch (format) {
@ -2317,7 +2319,7 @@ gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer)
weston_log("failed to create img for plane %d\n", i); weston_log("failed to create img for plane %d\n", i);
while (--i >= 0) while (--i >= 0)
egl_image_unref(gb->images[i]); egl_image_unref(gb->images[i]);
return; return false;
} }
glActiveTexture(GL_TEXTURE0 + i); glActiveTexture(GL_TEXTURE0 + i);
@ -2329,6 +2331,8 @@ gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer)
gb->height = buffer->height; gb->height = buffer->height;
gb->buffer_type = BUFFER_TYPE_EGL; gb->buffer_type = BUFFER_TYPE_EGL;
gb->y_inverted = (buffer->buffer_origin == ORIGIN_TOP_LEFT); gb->y_inverted = (buffer->buffer_origin == ORIGIN_TOP_LEFT);
return true;
} }
static void static void
@ -2889,7 +2893,7 @@ gl_renderer_import_dmabuf(struct weston_compositor *ec,
return true; return true;
} }
static void static bool
gl_renderer_attach_dmabuf(struct weston_surface *surface, gl_renderer_attach_dmabuf(struct weston_surface *surface,
struct weston_buffer *buffer, struct weston_buffer *buffer,
struct linux_dmabuf_buffer *dmabuf) struct linux_dmabuf_buffer *dmabuf)
@ -2913,7 +2917,7 @@ gl_renderer_attach_dmabuf(struct weston_surface *surface,
surface->is_opaque = pixel_format_is_opaque(buffer->pixel_format); surface->is_opaque = pixel_format_is_opaque(buffer->pixel_format);
if (dmabuf->direct_display) if (dmabuf->direct_display)
return; return true;
image = linux_dmabuf_buffer_get_user_data(dmabuf); image = linux_dmabuf_buffer_get_user_data(dmabuf);
@ -2933,6 +2937,8 @@ gl_renderer_attach_dmabuf(struct weston_surface *surface,
} }
gb->shader_variant = image->shader_variant; gb->shader_variant = image->shader_variant;
return true;
} }
static const struct weston_drm_format_array * static const struct weston_drm_format_array *
@ -3000,7 +3006,7 @@ out:
return ret; return ret;
} }
static void static bool
gl_renderer_attach_solid(struct weston_surface *surface, gl_renderer_attach_solid(struct weston_surface *surface,
struct weston_buffer *buffer) struct weston_buffer *buffer)
{ {
@ -3020,6 +3026,8 @@ gl_renderer_attach_solid(struct weston_surface *surface,
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);
return true;
} }
static void static void
@ -3027,6 +3035,7 @@ gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer)
{ {
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;
bool ret = false;
int i; int i;
weston_buffer_reference(&gs->buffer_ref, buffer, weston_buffer_reference(&gs->buffer_ref, buffer,
@ -3052,21 +3061,24 @@ gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer)
switch (buffer->type) { switch (buffer->type) {
case WESTON_BUFFER_SHM: case WESTON_BUFFER_SHM:
gl_renderer_attach_shm(es, buffer, buffer->shm_buffer); ret = gl_renderer_attach_shm(es, buffer, buffer->shm_buffer);
return; break;
case WESTON_BUFFER_DMABUF: case WESTON_BUFFER_DMABUF:
gl_renderer_attach_dmabuf(es, buffer, buffer->dmabuf); ret = gl_renderer_attach_dmabuf(es, buffer, buffer->dmabuf);
return; break;
case WESTON_BUFFER_RENDERER_OPAQUE: case WESTON_BUFFER_RENDERER_OPAQUE:
gl_renderer_attach_egl(es, buffer); ret = gl_renderer_attach_egl(es, buffer);
return; break;
case WESTON_BUFFER_SOLID: case WESTON_BUFFER_SOLID:
gl_renderer_attach_solid(es, buffer); ret = gl_renderer_attach_solid(es, buffer);
return; break;
default: default:
break; break;
} }
if (ret)
return;
weston_log("unhandled buffer type!\n"); weston_log("unhandled buffer type!\n");
weston_buffer_reference(&gs->buffer_ref, NULL, weston_buffer_reference(&gs->buffer_ref, NULL,
BUFFER_WILL_NOT_BE_ACCESSED); BUFFER_WILL_NOT_BE_ACCESSED);

Loading…
Cancel
Save