Update to EGL_MESA_drm_image from mesa master

Woo, running on stock mesa now.
dev
Kristian Høgsberg 14 years ago
parent d6a4787ed7
commit b12fcceeb7
  1. 5
      TODO
  2. 6
      clients/gears.c
  3. 4
      clients/window.c
  4. 4
      compositor-drm.c
  5. 6
      compositor-x11.c
  6. 13
      compositor.c
  7. 6
      drm.c

@ -3,6 +3,11 @@ Core wayland protocol
- generate pointer_focus (and drag focus) on raise/lower, move - generate pointer_focus (and drag focus) on raise/lower, move
windows, all kinds of changes in surface stacking. windows, all kinds of changes in surface stacking.
- make a client side circular buffer of pending ping requests with
callbacks and data. if buffer fills up, just iterate until an
entry becomes available. wl_display_ping(dpy, func, data), basically.
func is called when the reply comes in for the ping request.
- glyph cache - glyph cache
- dnd, figure out large object transfer: through wayland protocol or - dnd, figure out large object transfer: through wayland protocol or

@ -249,9 +249,9 @@ resize_window(struct gears *gears)
EGLint attribs[] = { EGLint attribs[] = {
EGL_WIDTH, 0, EGL_WIDTH, 0,
EGL_HEIGHT, 0, EGL_HEIGHT, 0,
EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA, EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
EGL_IMAGE_USE_MESA, EGL_IMAGE_USE_SHARE_MESA | EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SHARE_MESA |
EGL_IMAGE_USE_SCANOUT_MESA, EGL_DRM_BUFFER_USE_SCANOUT_MESA,
EGL_NONE EGL_NONE
}; };

@ -246,8 +246,8 @@ display_create_surface(struct display *display,
EGLint image_attribs[] = { EGLint image_attribs[] = {
EGL_WIDTH, 0, EGL_WIDTH, 0,
EGL_HEIGHT, 0, EGL_HEIGHT, 0,
EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA, EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
EGL_IMAGE_USE_MESA, EGL_IMAGE_USE_SCANOUT_MESA, EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SCANOUT_MESA,
EGL_NONE EGL_NONE
}; };

@ -377,8 +377,8 @@ create_output_for_connector(struct drm_compositor *ec,
EGLint handle, stride, attribs[] = { EGLint handle, stride, attribs[] = {
EGL_WIDTH, 0, EGL_WIDTH, 0,
EGL_HEIGHT, 0, EGL_HEIGHT, 0,
EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA, EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
EGL_IMAGE_USE_MESA, EGL_IMAGE_USE_SCANOUT_MESA, EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SCANOUT_MESA,
EGL_NONE EGL_NONE
}; };

@ -334,8 +334,8 @@ x11_compositor_create_output(struct x11_compositor *c, int width, int height)
EGLint attribs[] = { EGLint attribs[] = {
EGL_WIDTH, 0, EGL_WIDTH, 0,
EGL_HEIGHT, 0, EGL_HEIGHT, 0,
EGL_IMAGE_STRIDE_MESA, 0, EGL_DRM_BUFFER_STRIDE_MESA, 0,
EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA, EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
EGL_NONE EGL_NONE
}; };
@ -413,7 +413,7 @@ x11_compositor_create_output(struct x11_compositor *c, int width, int height)
attribs[5] = buffers[0].pitch / 4; attribs[5] = buffers[0].pitch / 4;
output->image = output->image =
eglCreateImageKHR(c->base.display, c->base.context, eglCreateImageKHR(c->base.display, c->base.context,
EGL_DRM_IMAGE_MESA, EGL_DRM_BUFFER_MESA,
(EGLClientBuffer) buffers[0].name, (EGLClientBuffer) buffers[0].name,
attribs); attribs);
free(reply); free(reply);

@ -224,8 +224,8 @@ create_pointer_images(struct wlsc_compositor *ec)
EGLint image_attribs[] = { EGLint image_attribs[] = {
EGL_WIDTH, 0, EGL_WIDTH, 0,
EGL_HEIGHT, 0, EGL_HEIGHT, 0,
EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA, EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
EGL_IMAGE_USE_MESA, EGL_IMAGE_USE_SCANOUT_MESA, EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SCANOUT_MESA,
EGL_NONE EGL_NONE
}; };
@ -1041,7 +1041,11 @@ wl_drag_reset(struct wl_drag *drag)
wl_array_init(&drag->types); wl_array_init(&drag->types);
drag->source = NULL; drag->source = NULL;
drag->target = NULL;
/* FIXME: We need to reset drag->target too, but can't right
* now because we need it for send/drop.
*
* drag->target = NULL; */
drag->time = 0; drag->time = 0;
drag->pointer_focus = NULL; drag->pointer_focus = NULL;
} }
@ -1134,7 +1138,8 @@ static void
drag_send(struct wl_client *client, drag_send(struct wl_client *client,
struct wl_drag *drag, struct wl_array *contents) struct wl_drag *drag, struct wl_array *contents)
{ {
wl_client_post_event(client, &drag->base, WL_DRAG_DROP, contents); wl_client_post_event(drag->target,
&drag->base, WL_DRAG_DROP, contents);
} }
static void static void

@ -74,8 +74,8 @@ drm_create_buffer(struct wl_client *client, struct wl_drm *drm_base,
EGLint attribs[] = { EGLint attribs[] = {
EGL_WIDTH, 0, EGL_WIDTH, 0,
EGL_HEIGHT, 0, EGL_HEIGHT, 0,
EGL_IMAGE_STRIDE_MESA, 0, EGL_DRM_BUFFER_STRIDE_MESA, 0,
EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA, EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
EGL_NONE EGL_NONE
}; };
@ -108,7 +108,7 @@ drm_create_buffer(struct wl_client *client, struct wl_drm *drm_base,
buffer->visual = visual; buffer->visual = visual;
buffer->image = eglCreateImageKHR(compositor->display, buffer->image = eglCreateImageKHR(compositor->display,
compositor->context, compositor->context,
EGL_DRM_IMAGE_MESA, EGL_DRM_BUFFER_MESA,
(EGLClientBuffer) name, attribs); (EGLClientBuffer) name, attribs);
if (buffer->image == NULL) { if (buffer->image == NULL) {
/* FIXME: Define a real exception event instead of /* FIXME: Define a real exception event instead of

Loading…
Cancel
Save