static boolean ximage_surface_validate(struct native_surface *nsurf, uint attachment_mask, unsigned int *seq_num, struct pipe_resource **textures, int *width, int *height) { struct ximage_surface *xsurf = ximage_surface(nsurf); uint w, h; if (!ximage_surface_update_buffers(&xsurf->base, attachment_mask)) return FALSE; if (seq_num) *seq_num = xsurf->client_stamp; if (textures) resource_surface_get_resources(xsurf->rsurf, textures, attachment_mask); resource_surface_get_size(xsurf->rsurf, &w, &h); if (width) *width = w; if (height) *height = h; return TRUE; }
static boolean wayland_surface_validate(struct native_surface *nsurf, uint attachment_mask, unsigned int *seq_num, struct pipe_resource **textures, int *width, int *height) { struct wayland_surface *surface = wayland_surface(nsurf); if (surface->type == WL_WINDOW_SURFACE) wayland_window_surface_handle_resize(surface); if (!resource_surface_add_resources(surface->rsurf, attachment_mask | surface->attachment_mask)) return FALSE; if (textures) resource_surface_get_resources(surface->rsurf, textures, attachment_mask); if (seq_num) *seq_num = surface->sequence_number; resource_surface_get_size(surface->rsurf, (uint *) width, (uint *) height); if (surface->type == WL_PIXMAP_SURFACE) wayland_pixmap_surface_initialize(surface); return TRUE; }
static boolean fbdev_surface_validate(struct native_surface *nsurf, uint attachment_mask, unsigned int *seq_num, struct pipe_resource **textures, int *width, int *height) { struct fbdev_surface *fbsurf = fbdev_surface(nsurf); if (!resource_surface_add_resources(fbsurf->rsurf, attachment_mask)) return FALSE; if (textures) resource_surface_get_resources(fbsurf->rsurf, textures, attachment_mask); if (seq_num) *seq_num = fbsurf->sequence_number; if (width) *width = fbsurf->width; if (height) *height = fbsurf->height; return TRUE; }