Home | History | Annotate | Download | only in dri2

Lines Matching refs:dri2_surf

80 droid_window_dequeue_buffer(struct dri2_egl_surface *dri2_surf)
82 if (dri2_surf->window->dequeueBuffer(dri2_surf->window, &dri2_surf->buffer))
85 dri2_surf->buffer->common.incRef(&dri2_surf->buffer->common);
86 dri2_surf->window->lockBuffer(dri2_surf->window, dri2_surf->buffer);
92 droid_window_enqueue_buffer(struct dri2_egl_surface *dri2_surf)
94 dri2_surf->window->queueBuffer(dri2_surf->window, dri2_surf->buffer);
96 dri2_surf->buffer->common.decRef(&dri2_surf->buffer->common);
97 dri2_surf->buffer = NULL;
103 droid_window_cancel_buffer(struct dri2_egl_surface *dri2_surf)
106 droid_window_enqueue_buffer(dri2_surf);
110 droid_alloc_local_buffer(struct dri2_egl_surface *dri2_surf,
114 dri2_egl_display(dri2_surf->base.Resource.Display);
116 if (att >= ARRAY_SIZE(dri2_surf->local_buffers))
119 if (!dri2_surf->local_buffers[att]) {
120 dri2_surf->local_buffers[att] =
122 dri2_surf->base.Width, dri2_surf->base.Height);
125 return dri2_surf->local_buffers[att];
129 droid_free_local_buffers(struct dri2_egl_surface *dri2_surf)
132 dri2_egl_display(dri2_surf->base.Resource.Display);
135 for (i = 0; i < ARRAY_SIZE(dri2_surf->local_buffers); i++) {
136 if (dri2_surf->local_buffers[i]) {
138 dri2_surf->local_buffers[i]);
139 dri2_surf->local_buffers[i] = NULL;
151 struct dri2_egl_surface *dri2_surf;
152 dri2_surf = calloc(1, sizeof *dri2_surf);
153 if (!dri2_surf) {
158 if (!_eglInitSurface(&dri2_surf->base, disp, type, conf, attrib_list))
178 window->query(window, NATIVE_WINDOW_WIDTH, &dri2_surf->base.Width);
179 window->query(window, NATIVE_WINDOW_HEIGHT, &dri2_surf->base.Height);
182 dri2_surf->dri_drawable =
185 dri2_surf);
186 if (dri2_surf->dri_drawable == NULL) {
193 dri2_surf->window = window;
196 return &dri2_surf->base;
199 free(dri2_surf);
233 struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surf);
238 droid_free_local_buffers(dri2_surf);
240 if (dri2_surf->base.Type == EGL_WINDOW_BIT) {
241 if (dri2_surf->buffer)
242 droid_window_cancel_buffer(dri2_surf);
244 dri2_surf->window->common.decRef(&dri2_surf->window->common);
247 (*dri2_dpy->core->destroyDrawable)(dri2_surf->dri_drawable);
249 free(dri2_surf);
259 struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw);
262 if (dri2_surf->base.Type != EGL_WINDOW_BIT)
267 if (ctx && ctx->DrawSurface == &dri2_surf->base)
271 (*dri2_dpy->flush->flush)(dri2_surf->dri_drawable);
273 if (dri2_surf->buffer)
274 droid_window_enqueue_buffer(dri2_surf);
276 (*dri2_dpy->flush->invalidate)(dri2_surf->dri_drawable);
386 droid_get_buffers_parse_attachments(struct dri2_egl_surface *dri2_surf,
391 /* fill dri2_surf->buffers */
395 assert(num_buffers < ARRAY_SIZE(dri2_surf->buffers));
396 buf = &dri2_surf->buffers[num_buffers];
400 if (dri2_surf->base.Type == EGL_WINDOW_BIT) {
402 buf->name = get_native_buffer_name(dri2_surf->buffer);
403 buf->cpp = get_format_bpp(dri2_surf->buffer->format);
404 buf->pitch = dri2_surf->buffer->stride * buf->cpp;
418 local = droid_alloc_local_buffer(dri2_surf,
446 struct dri2_egl_surface *dri2_surf = loaderPrivate;
448 dri2_egl_display(dri2_surf->base.Resource.Display);
451 if (dri2_surf->base.Type == EGL_WINDOW_BIT) {
453 if (!dri2_surf->buffer && !droid_window_dequeue_buffer(dri2_surf))
457 if (dri2_surf->base.Width != dri2_surf->buffer->width ||
458 dri2_surf->base.Height != dri2_surf->buffer->height) {
459 droid_free_local_buffers(dri2_surf);
460 dri2_surf->base.Width = dri2_surf->buffer->width;
461 dri2_surf->base.Height = dri2_surf->buffer->height;
465 dri2_surf->buffer_count =
466 droid_get_buffers_parse_attachments(dri2_surf, attachments, count);
469 *width = dri2_surf->base.Width;
471 *height = dri2_surf->base.Height;
473 *out_count = dri2_surf->buffer_count;;
475 return dri2_surf->buffers;