Ejemplo n.º 1
0
void
fbCopyWindowProc (DrawablePtr	pSrcDrawable,
		  DrawablePtr	pDstDrawable,
		  GCPtr		pGC,
		  BoxPtr	pbox,
		  int		nbox,
		  int		dx,
		  int		dy,
		  Bool		reverse,
		  Bool		upsidedown,
		  Pixel		bitplane,
		  void		*closure)
{
    FbBits	*src;
    FbStride	srcStride;
    int		srcBpp;
    int		srcXoff, srcYoff;
    FbBits	*dst;
    FbStride	dstStride;
    int		dstBpp;
    int		dstXoff, dstYoff;
    
    fbGetDrawable (pSrcDrawable, src, srcStride, srcBpp, srcXoff, srcYoff);
    fbGetDrawable (pDstDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
    
    while (nbox--)
    {
	fbBlt (src + (pbox->y1 + dy + srcYoff) * srcStride,
	       srcStride,
	       (pbox->x1 + dx + srcXoff) * srcBpp,
    
	       dst + (pbox->y1 + dstYoff) * dstStride,
	       dstStride,
	       (pbox->x1 + dstXoff) * dstBpp,
    
	       (pbox->x2 - pbox->x1) * dstBpp,
	       (pbox->y2 - pbox->y1),
    
	       GXcopy,
	       FB_ALLONES,
	       dstBpp,
    
	       reverse,
	       upsidedown);
	pbox++;
    }

    fbFinishAccess (pDstDrawable);
    fbFinishAccess (pSrcDrawable);
}
Ejemplo n.º 2
0
int
main (void)
{
	int pagesize;
	FbBits *src;
	FbBits *dst;
	int srcX, dstX;
	int bpp;
	int alu = 1;
	FbBits pm = 0xffffffff;

	pagesize = getpagesize();

	src = mmap(NULL, 2 * pagesize, PROT_READ|PROT_WRITE, MAP_ANON, -1, 0);
	assert(src);

	dst = mmap(NULL, 2 * pagesize, PROT_READ|PROT_WRITE, MAP_ANON, -1, 0);
	assert(dst);

	mprotect((char *)src + pagesize, pagesize, PROT_NONE);
	src = (FbBits *)((char *)src + (pagesize - sizeof map));
	memcpy (src, map, sizeof map);

	for (bpp = 8; bpp <= 32; bpp += 8)
		for (dstX = 0; dstX < 64; dstX += bpp)
			for (srcX = 0; srcX < 32; srcX += bpp)
				fbBlt(src, 1, srcX, dst, 256, dstX,
				    (32 - srcX), 2, alu, pm, bpp, 0, 0);

	for (bpp = 8; bpp <= 32; bpp += 8)
		for (dstX = 0; dstX < 64; dstX += bpp)
			for (srcX = 0; srcX < 32; srcX += bpp)
				fbBlt(src, 1, srcX, dst, 256, dstX,
				    (64 - srcX), 1, alu, pm, bpp, 0, 0);

	return 0;
}