diff options
author | Kristian Høgsberg <[email protected]> | 2012-07-05 14:19:48 -0400 |
---|---|---|
committer | Kristian Høgsberg <[email protected]> | 2012-07-11 15:28:35 -0400 |
commit | 379eb47ea61c87c9ac071fa6d93e49ae3f02ac2c (patch) | |
tree | 0edd148ee5870f6dae465edb0d4908c8326e2c16 /src/egl/wayland | |
parent | 95bc0527e9f81c62cbfe02dace94e73d9950d04d (diff) |
wayland-drm: Pass struct wl_drm_buffer to the driver
We're going to extend this to support multi-plane buffers, so pass this
to the driver so it can access the details.
Diffstat (limited to 'src/egl/wayland')
-rw-r--r-- | src/egl/wayland/wayland-drm/wayland-drm.c | 19 | ||||
-rw-r--r-- | src/egl/wayland/wayland-drm/wayland-drm.h | 18 |
2 files changed, 18 insertions, 19 deletions
diff --git a/src/egl/wayland/wayland-drm/wayland-drm.c b/src/egl/wayland/wayland-drm/wayland-drm.c index 5f831b3487f..af176b72d12 100644 --- a/src/egl/wayland/wayland-drm/wayland-drm.c +++ b/src/egl/wayland/wayland-drm/wayland-drm.c @@ -56,22 +56,13 @@ struct wl_drm { struct wayland_drm_callbacks *callbacks; }; -struct wl_drm_buffer { - struct wl_buffer buffer; - struct wl_drm *drm; - uint32_t format; - - void *driver_buffer; -}; - static void destroy_buffer(struct wl_resource *resource) { struct wl_drm_buffer *buffer = resource->data; struct wl_drm *drm = buffer->drm; - drm->callbacks->release_buffer(drm->user_data, - buffer->driver_buffer); + drm->callbacks->release_buffer(drm->user_data, buffer); free(buffer); } @@ -129,12 +120,10 @@ drm_create_buffer(struct wl_client *client, struct wl_resource *resource, buffer->buffer.width = width; buffer->buffer.height = height; buffer->format = format; + buffer->offset0 = 0; + buffer->stride0 = stride; - buffer->driver_buffer = - drm->callbacks->reference_buffer(drm->user_data, name, - width, height, - stride, format); - + drm->callbacks->reference_buffer(drm->user_data, name, buffer); if (buffer->driver_buffer == NULL) { wl_resource_post_error(resource, WL_DRM_ERROR_INVALID_NAME, diff --git a/src/egl/wayland/wayland-drm/wayland-drm.h b/src/egl/wayland/wayland-drm/wayland-drm.h index bec50a5539f..f3df7eeaddd 100644 --- a/src/egl/wayland/wayland-drm/wayland-drm.h +++ b/src/egl/wayland/wayland-drm/wayland-drm.h @@ -9,14 +9,24 @@ struct wl_drm; +struct wl_drm_buffer { + struct wl_buffer buffer; + struct wl_drm *drm; + uint32_t format; + uint32_t driver_format; + int32_t offset0; + int32_t stride0; + + void *driver_buffer; +}; + struct wayland_drm_callbacks { int (*authenticate)(void *user_data, uint32_t id); - void *(*reference_buffer)(void *user_data, uint32_t name, - int32_t width, int32_t height, - uint32_t stride, uint32_t format); + void (*reference_buffer)(void *user_data, uint32_t name, + struct wl_drm_buffer *buffer); - void (*release_buffer)(void *user_data, void *buffer); + void (*release_buffer)(void *user_data, struct wl_drm_buffer *buffer); }; struct wl_drm * |