Home | History | Annotate | Download | only in dri2

Lines Matching refs:dri2_surf

47    struct dri2_egl_surface *dri2_surf = surf->dri_private;
51 if (dri2_surf->current == NULL) {
56 bo = dri2_surf->current->bo;
59 dri2_surf->current->locked = 1;
60 dri2_surf->current = NULL;
70 struct dri2_egl_surface *dri2_surf = surf->dri_private;
73 for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) {
74 if (dri2_surf->color_buffers[i].bo == bo) {
75 dri2_surf->color_buffers[i].locked = 0;
84 struct dri2_egl_surface *dri2_surf = surf->dri_private;
87 for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++)
88 if (!dri2_surf->color_buffers[i].locked)
101 struct dri2_egl_surface *dri2_surf;
108 dri2_surf = calloc(1, sizeof *dri2_surf);
109 if (!dri2_surf) {
114 if (!_eglInitSurface(&dri2_surf->base, disp, type, conf, attrib_list))
125 dri2_surf->gbm_surf = surf;
126 dri2_surf->base.Width = surf->base.width;
127 dri2_surf->base.Height = surf->base.height;
128 surf->dri_private = dri2_surf;
135 dri2_surf->base.GLColorspace);
138 dri2_surf->dri_drawable =
140 dri2_surf->gbm_surf);
145 dri2_surf->dri_drawable =
147 dri2_surf->gbm_surf);
150 if (dri2_surf->dri_drawable == NULL) {
155 return &dri2_surf->base;
158 free(dri2_surf);
191 struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surf);
194 dri2_dpy->core->destroyDrawable(dri2_surf->dri_drawable);
196 for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) {
197 if (dri2_surf->color_buffers[i].bo)
198 gbm_bo_destroy(dri2_surf->color_buffers[i].bo);
202 if (dri2_surf->dri_buffers[i])
204 dri2_surf->dri_buffers[i]);
213 get_back_bo(struct dri2_egl_surface *dri2_surf)
216 dri2_egl_display(dri2_surf->base.Resource.Display);
217 struct gbm_dri_surface *surf = dri2_surf->gbm_surf;
221 if (dri2_surf->back == NULL) {
222 for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) {
223 if (!dri2_surf->color_buffers[i].locked &&
224 dri2_surf->color_buffers[i].age >= age) {
225 dri2_surf->back = &dri2_surf->color_buffers[i];
226 age = dri2_surf->color_buffers[i].age;
231 if (dri2_surf->back == NULL)
233 if (dri2_surf->back->bo == NULL)
234 dri2_surf->back->bo = gbm_bo_create(&dri2_dpy->gbm_dri->base.base,
237 if (dri2_surf->back->bo == NULL)
244 get_swrast_front_bo(struct dri2_egl_surface *dri2_surf)
247 dri2_egl_display(dri2_surf->base.Resource.Display);
248 struct gbm_dri_surface *surf = dri2_surf->gbm_surf;
250 if (dri2_surf->current == NULL) {
251 assert(!dri2_surf->color_buffers[0].locked);
252 dri2_surf->current = &dri2_surf->color_buffers[0];
255 if (dri2_surf->current->bo == NULL)
256 dri2_surf->current->bo = gbm_bo_create(&dri2_dpy->gbm_dri->base.base,
259 if (dri2_surf->current->bo == NULL)
266 back_bo_to_dri_buffer(struct dri2_egl_surface *dri2_surf, __DRIbuffer *buffer)
269 dri2_egl_display(dri2_surf->base.Resource.Display);
273 bo = (struct gbm_dri_bo *) dri2_surf->back->bo;
286 get_aux_bo(struct dri2_egl_surface *dri2_surf,
290 dri2_egl_display(dri2_surf->base.Resource.Display);
291 __DRIbuffer *b = dri2_surf->dri_buffers[attachment];
296 dri2_surf->base.Width,
297 dri2_surf->base.Height);
298 dri2_surf->dri_buffers[attachment] = b;
314 struct dri2_egl_surface *dri2_surf = loaderPrivate;
317 dri2_surf->buffer_count = 0;
320 assert(dri2_surf->buffer_count < 5);
324 if (get_back_bo(dri2_surf) < 0) {
328 back_bo_to_dri_buffer(dri2_surf, &dri2_surf->buffers[j]);
331 if (get_aux_bo(dri2_surf, attachments[i], attachments[i + 1],
332 &dri2_surf->buffers[j]) < 0) {
344 *width = dri2_surf->base.Width;
345 *height = dri2_surf->base.Height;
347 return dri2_surf->buffers;
391 struct dri2_egl_surface *dri2_surf = loaderPrivate;
394 if (get_back_bo(dri2_surf) < 0)
397 bo = (struct gbm_dri_bo *) dri2_surf->back->bo;
415 struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw);
419 dri2_dpy->core->swapBuffers(dri2_surf->dri_drawable);
421 if (dri2_surf->base.Type == EGL_WINDOW_BIT) {
422 if (dri2_surf->current)
424 for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++)
425 if (dri2_surf->color_buffers[i].age > 0)
426 dri2_surf->color_buffers[i].age++;
430 if (get_back_bo(dri2_surf) < 0) {
435 dri2_surf->current = dri2_surf->back;
436 dri2_surf->current->age = 1;
437 dri2_surf->back = NULL;
441 dri2_dpy->flush->invalidate(dri2_surf->dri_drawable);
451 struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surface);
453 if (get_back_bo(dri2_surf) < 0) {
458 return dri2_surf->back->age;
524 struct dri2_egl_surface *dri2_surf = loaderPrivate;
532 if (get_swrast_front_bo(dri2_surf) < 0)
535 bo = gbm_dri_bo(dri2_surf->current->bo);
558 struct dri2_egl_surface *dri2_surf = loaderPrivate;
562 if (get_swrast_front_bo(dri2_surf) < 0)
565 dri2_surf->current->bo);