Home | History | Annotate | Download | only in dri2

Lines Matching refs:dri2_surf

44    struct dri2_egl_surface *dri2_surf = surf->dri_private;
47 if (dri2_surf->current == NULL) {
52 bo = dri2_surf->current->bo;
53 dri2_surf->current->locked = 1;
54 dri2_surf->current = NULL;
63 struct dri2_egl_surface *dri2_surf = surf->dri_private;
66 for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) {
67 if (dri2_surf->color_buffers[i].bo == bo) {
68 dri2_surf->color_buffers[i].locked = 0;
77 struct dri2_egl_surface *dri2_surf = surf->dri_private;
80 for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++)
81 if (!dri2_surf->color_buffers[i].locked)
94 struct dri2_egl_surface *dri2_surf;
99 dri2_surf = malloc(sizeof *dri2_surf);
100 if (!dri2_surf) {
105 memset(dri2_surf, 0, sizeof *dri2_surf);
106 if (!_eglInitSurface(&dri2_surf->base, disp, type, conf, attrib_list))
114 dri2_surf->gbm_surf = surf;
115 dri2_surf->base.Width = surf->base.width;
116 dri2_surf->base.Height = surf->base.height;
117 surf->dri_private = dri2_surf;
123 dri2_surf->dri_drawable =
126 dri2_surf->gbm_surf);
128 if (dri2_surf->dri_drawable == NULL) {
133 return &dri2_surf->base;
136 free(dri2_surf);
154 struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surf);
160 (*dri2_dpy->core->destroyDrawable)(dri2_surf->dri_drawable);
162 for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) {
163 if (dri2_surf->color_buffers[i].bo)
164 gbm_bo_destroy(dri2_surf->color_buffers[i].bo);
168 if (dri2_surf->dri_buffers[i])
170 dri2_surf->dri_buffers[i]);
179 get_back_bo(struct dri2_egl_surface *dri2_surf, __DRIbuffer *buffer)
182 dri2_egl_display(dri2_surf->base.Resource.Display);
184 struct gbm_dri_surface *surf = dri2_surf->gbm_surf;
187 if (dri2_surf->back == NULL) {
188 for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) {
189 if (!dri2_surf->color_buffers[i].locked) {
190 dri2_surf->back = &dri2_surf->color_buffers[i];
196 if (dri2_surf->back == NULL)
198 if (dri2_surf->back->bo == NULL)
199 dri2_surf->back->bo = gbm_bo_create(&dri2_dpy->gbm_dri->base.base,
202 if (dri2_surf->back->bo == NULL)
205 bo = (struct gbm_dri_bo *) dri2_surf->back->bo;
220 get_aux_bo(struct dri2_egl_surface *dri2_surf,
224 dri2_egl_display(dri2_surf->base.Resource.Display);
225 __DRIbuffer *b = dri2_surf->dri_buffers[attachment];
230 dri2_surf->base.Width,
231 dri2_surf->base.Height);
232 dri2_surf->dri_buffers[attachment] = b;
248 struct dri2_egl_surface *dri2_surf = loaderPrivate;
251 dri2_surf->buffer_count = 0;
254 assert(dri2_surf->buffer_count < 5);
258 if (get_back_bo(dri2_surf, &dri2_surf->buffers[j]) < 0) {
264 if (get_aux_bo(dri2_surf, attachments[i], attachments[i + 1],
265 &dri2_surf->buffers[j]) < 0) {
277 *width = dri2_surf->base.Width;
278 *height = dri2_surf->base.Height;
280 return dri2_surf->buffers;
327 struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw);
329 if (dri2_surf->base.Type == EGL_WINDOW_BIT) {
330 if (dri2_surf->current)
332 dri2_surf->current = dri2_surf->back;
333 dri2_surf->back = NULL;
336 (*dri2_dpy->flush->flush)(dri2_surf->dri_drawable);
337 (*dri2_dpy->flush->invalidate)(dri2_surf->dri_drawable);