void vivante_unaccel_PushPixels(GCPtr pGC, PixmapPtr pBitmap, DrawablePtr pDrawable, int w, int h, int x, int y) { vivante_prepare_drawable(pDrawable, ACCESS_RW); vivante_prepare_drawable(&pBitmap->drawable, ACCESS_RO); vivante_prepare_gc(pGC); fbPushPixels(pGC, pBitmap, pDrawable, w, h, x, y); vivante_finish_gc(pGC); vivante_finish_drawable(&pBitmap->drawable, ACCESS_RO); vivante_finish_drawable(pDrawable, ACCESS_RW); }
static void radeon_glamor_push_pixels_nodstbo(GCPtr pGC, PixmapPtr pBitmap, DrawablePtr pDrawable, int w, int h, int x, int y) { ScrnInfoPtr scrn = xf86ScreenToScrn(pDrawable->pScreen); struct radeon_pixmap *priv = radeon_get_pixmap_private(pBitmap); if (radeon_glamor_prepare_access_cpu_ro(scrn, pBitmap, priv)) { fbPushPixels(pGC, pBitmap, pDrawable, w, h, x, y); radeon_glamor_finish_access_cpu(pBitmap); } }
void uxa_check_push_pixels(GCPtr pGC, PixmapPtr pBitmap, DrawablePtr pDrawable, int w, int h, int x, int y) { ScreenPtr screen = pDrawable->pScreen; UXA_FALLBACK(("from %p to %p (%c,%c)\n", pBitmap, pDrawable, uxa_drawable_location(&pBitmap->drawable), uxa_drawable_location(pDrawable))); if (uxa_prepare_access(pDrawable, UXA_ACCESS_RW)) { if (uxa_prepare_access(&pBitmap->drawable, UXA_ACCESS_RO)) { if (uxa_prepare_access_gc(pGC)) { fbPushPixels(pGC, pBitmap, pDrawable, w, h, x, y); uxa_finish_access_gc(pGC); } uxa_finish_access(&pBitmap->drawable, UXA_ACCESS_RO); } uxa_finish_access(pDrawable, UXA_ACCESS_RW); } }