glamor: Fix copy-like Render operations between 15 and 16 depth.
Reading and writing to 16-depth pixmaps using PICT_x1r5g5b5 ends up failing, unless you're doing a straight copy at the same bpp where the misinterpretation matches on both sides. Fixes rendercheck/blend/over and renderhceck/blend/src in piglit. Please cherry-pick this to active stable branches. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
bc415fb1e0
commit
510c860564
|
@ -512,6 +512,14 @@ static int
|
||||||
compatible_formats(CARD8 op, PicturePtr dst, PicturePtr src)
|
compatible_formats(CARD8 op, PicturePtr dst, PicturePtr src)
|
||||||
{
|
{
|
||||||
if (op == PictOpSrc) {
|
if (op == PictOpSrc) {
|
||||||
|
/* We can't do direct copies between different depths at 16bpp
|
||||||
|
* because r,g,b are allocated to different bits.
|
||||||
|
*/
|
||||||
|
if (dst->pDrawable->bitsPerPixel == 16 &&
|
||||||
|
dst->pDrawable->depth != src->pDrawable->depth) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (src->format == dst->format)
|
if (src->format == dst->format)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue