Home | History | Annotate | Download | only in dri2

Lines Matching refs:dri2_surf

158 droid_window_dequeue_buffer(struct dri2_egl_surface *dri2_surf)
162 if (dri2_surf->window->dequeueBuffer(dri2_surf->window, &dri2_surf->buffer,
193 dri2_surf->buffer->common.incRef(&dri2_surf->buffer->common);
199 droid_window_enqueue_buffer(_EGLDisplay *disp, struct dri2_egl_surface *dri2_surf)
222 dri2_surf->window->queueBuffer(dri2_surf->window, dri2_surf->buffer,
225 dri2_surf->buffer->common.decRef(&dri2_surf->buffer->common);
226 dri2_surf->buffer = NULL;
230 if (dri2_surf->dri_image_back) {
231 dri2_dpy->image->destroyImage(dri2_surf->dri_image_back);
232 dri2_surf->dri_image_back = NULL;
239 droid_window_cancel_buffer(_EGLDisplay *disp, struct dri2_egl_surface *dri2_surf)
242 droid_window_enqueue_buffer(disp, dri2_surf);
246 droid_alloc_local_buffer(struct dri2_egl_surface *dri2_surf,
250 dri2_egl_display(dri2_surf->base.Resource.Display);
252 if (att >= ARRAY_SIZE(dri2_surf->local_buffers))
255 if (!dri2_surf->local_buffers[att]) {
256 dri2_surf->local_buffers[att] =
258 dri2_surf->base.Width, dri2_surf->base.Height);
261 return dri2_surf->local_buffers[att];
265 droid_free_local_buffers(struct dri2_egl_surface *dri2_surf)
268 dri2_egl_display(dri2_surf->base.Resource.Display);
271 for (i = 0; i < ARRAY_SIZE(dri2_surf->local_buffers); i++) {
272 if (dri2_surf->local_buffers[i]) {
274 dri2_surf->local_buffers[i]);
275 dri2_surf->local_buffers[i] = NULL;
287 struct dri2_egl_surface *dri2_surf;
291 dri2_surf = calloc(1, sizeof *dri2_surf);
292 if (!dri2_surf) {
297 if (!_eglInitSurface(&dri2_surf->base, disp, type, conf, attrib_list))
317 window->query(window, NATIVE_WINDOW_WIDTH, &dri2_surf->base.Width);
318 window->query(window, NATIVE_WINDOW_HEIGHT, &dri2_surf->base.Height);
322 dri2_surf->base.GLColorspace);
326 dri2_surf->dri_drawable =
328 dri2_surf);
329 if (dri2_surf->dri_drawable == NULL) {
336 dri2_surf->window = window;
339 return &dri2_surf->base;
342 free(dri2_surf);
368 struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surf);
370 droid_free_local_buffers(dri2_surf);
372 if (dri2_surf->base.Type == EGL_WINDOW_BIT) {
373 if (dri2_surf->buffer)
374 droid_window_cancel_buffer(disp, dri2_surf);
376 dri2_surf->window->common.decRef(&dri2_surf->window->common);
379 if (dri2_surf->dri_image_back) {
381 dri2_dpy->image->destroyImage(dri2_surf->dri_image_back);
382 dri2_surf->dri_image_back = NULL;
385 if (dri2_surf->dri_image_front) {
387 dri2_dpy->image->destroyImage(dri2_surf->dri_image_front);
388 dri2_surf->dri_image_front = NULL;
391 dri2_dpy->core->destroyDrawable(dri2_surf->dri_drawable);
393 free(dri2_surf);
399 update_buffers(struct dri2_egl_surface *dri2_surf)
401 if (dri2_surf->base.Type != EGL_WINDOW_BIT)
405 if (!dri2_surf->buffer && !droid_window_dequeue_buffer(dri2_surf)) {
411 if (dri2_surf->base.Width != dri2_surf->buffer->width ||
412 dri2_surf->base.Height != dri2_surf->buffer->height) {
413 droid_free_local_buffers(dri2_surf);
414 dri2_surf->base.Width = dri2_surf->buffer->width;
415 dri2_surf->base.Height = dri2_surf->buffer->height;
422 get_front_bo(struct dri2_egl_surface *dri2_surf, unsigned int format)
425 dri2_egl_display(dri2_surf->base.Resource.Display);
427 if (dri2_surf->dri_image_front)
430 if (dri2_surf->base.Type == EGL_WINDOW_BIT) {
437 } else if (dri2_surf->base.Type == EGL_PBUFFER_BIT) {
438 dri2_surf->dri_image_front =
440 dri2_surf->base.Width,
441 dri2_surf->base.Height,
444 dri2_surf);
445 if (!dri2_surf->dri_image_front) {
455 get_back_bo(struct dri2_egl_surface *dri2_surf, unsigned int format)
458 dri2_egl_display(dri2_surf->base.Resource.Display);
462 if (dri2_surf->dri_image_back)
465 if (dri2_surf->base.Type == EGL_WINDOW_BIT) {
466 if (!dri2_surf->buffer) {
471 fd = get_native_buffer_fd(dri2_surf->buffer);
477 fourcc = get_fourcc(dri2_surf->buffer->format);
479 pitch = dri2_surf->buffer->stride *
480 get_format_bpp(dri2_surf->buffer->format);
488 dri2_surf->dri_image_back =
490 dri2_surf->base.Width,
491 dri2_surf->base.Height,
497 dri2_surf);
498 if (!dri2_surf->dri_image_back) {
502 } else if (dri2_surf->base.Type == EGL_PBUFFER_BIT) {
535 struct dri2_egl_surface *dri2_surf = loaderPrivate;
541 if (update_buffers(dri2_surf) < 0)
545 if (get_front_bo(dri2_surf, format) < 0)
548 if (dri2_surf->dri_image_front) {
549 images->front = dri2_surf->dri_image_front;
555 if (get_back_bo(dri2_surf, format) < 0)
558 if (dri2_surf->dri_image_back) {
559 images->back = dri2_surf->dri_image_back;
571 struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw);
573 if (dri2_surf->base.Type != EGL_WINDOW_BIT)
578 if (dri2_surf->buffer)
579 droid_window_enqueue_buffer(disp, dri2_surf);
581 dri2_dpy->flush->invalidate(dri2_surf->dri_drawable);
765 struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surf);
768 if (dri2_surf->base.Type == EGL_WINDOW_BIT && dri2_surf->window) {
769 dri2_surf->window->query(dri2_surf->window,
775 if (dri2_surf->base.Type == EGL_WINDOW_BIT && dri2_surf->window) {
776 dri2_surf->window->query(dri2_surf->window,
839 droid_get_buffers_parse_attachments(struct dri2_egl_surface *dri2_surf,
844 /* fill dri2_surf->buffers */
848 assert(num_buffers < ARRAY_SIZE(dri2_surf->buffers));
849 buf = &dri2_surf->buffers[num_buffers];
853 if (dri2_surf->base.Type == EGL_WINDOW_BIT) {
855 buf->name = get_native_buffer_name(dri2_surf->buffer);
856 buf->cpp = get_format_bpp(dri2_surf->buffer->format);
857 buf->pitch = dri2_surf->buffer->stride * buf->cpp;
871 local = droid_alloc_local_buffer(dri2_surf,
899 struct dri2_egl_surface *dri2_surf = loaderPrivate;
901 if (update_buffers(dri2_surf) < 0)
904 dri2_surf->buffer_count =
905 droid_get_buffers_parse_attachments(dri2_surf, attachments, count);
908 *width = dri2_surf->base.Width;
910 *height = dri2_surf->base.Height;
912 *out_count = dri2_surf->buffer_count;
914 return dri2_surf->buffers;