+ if (t2d.offset || t2d.r.x || t2d.r.y ||
+ t2d.r.width != pixman_image_get_width(res->image)) {
Will this work with stride != t2d.r.width * bpp?
Those cases should take the if branch above and loop over all lines to
handle it correctly.
Exactly, but it looks like to me that it doesn't (at least not always).
Ah, you mean we should better check something like
t2d.r.width * bpp != pixman_image_get_stride() ?
That should check exactly the same thing as we never create resources
with extra padding where width * bpp != stride.