On Sat, 2014-03-29 at 17:53 +0800, Daniel Kurtz wrote: > Since we are now allocating from the heap, there should no longer be > necessary, or desirable to chop up the DoGetImage() buffer.
Maybe not necessary, but probably still desirable. In the PutImage direction we have a similar phenomenon: libX11 doesn't generate bigreqs for PutImage, so things get chunked up at around the 256k smallreq size. You can make it use bigreqs [1], but if you do, large puts are actually slower, at least as measured by x11perf -putimage500. I didn't investigate far enough to get a graph of throughput versus write size, but I would expect to see knees in the curve corresponding to a) unix socket buffer size b) dcache sizes and associativity. I would also expect to see different curves for dumb framebuffers compared to drivers that can finish the request with DMA, since they'd exert different pressure on the dcache. So there probably is an optimal size for performance, and it probably does vary across systems, and the optimal size is probably not ever the whole image in one shot. Even if it were, I'd be uncomfortable with trying only one allocation and BadAlloc'ing if it fails, purely from a QOI perspective that's pretty lame. [1] - http://ajax.fedorapeople.org/libX11-bigreqify-putimage.patch - ajax _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
