We're going to want to make a small testcase for this so we can reliably reproduce it on a variety of configurations without remembering to test it. Some of our paths should handle this correctly. Some of them don't, and it's a bug we're likely to regress on repeatedly.
pseudocode:
for (i = 100; i < 10000; i *= 1.5) {
/* This would get 1.5GB max size. <32 bits, but > aperture size
* because I don't want to think about -ENOMEM or overflow handling
*/
pix = XCreatePixmap(32, i, i);
picture = XRenderCreatePicture(pix);
XFreePixmap(pix);
/* hit a HW accel path */
XRenderFillRectangle(picture, PictOpSrc, &color, 0, 0, i, i);
/* hit a SW path */
XRenderFillRectangle(picture, PictOpConjointOver, &color, 0, 0, i, i);
We're going to want to make a small testcase for this so we can reliably reproduce it on a variety of configurations without remembering to test it. Some of our paths should handle this correctly. Some of them don't, and it's a bug we're likely to regress on repeatedly.
pseudocode:
for (i = 100; i < 10000; i *= 1.5) {
/* This would get 1.5GB max size. <32 bits, but > aperture size
* because I don't want to think about -ENOMEM or overflow handling
*/
pix = XCreatePixmap(32, i, i); cture(pix) ;
picture = XRenderCreatePi
XFreePixmap(pix);
/* hit a HW accel path */ ctangle( picture, PictOpSrc, &color, 0, 0, i, i);
XRenderFillRe
/* hit a SW path */ ctangle( picture, PictOpConjointOver, &color, 0, 0, i, i);
XRenderFillRe
XFreePicture( picture) ;
}