diff options
Diffstat (limited to 'src/sna/sna_io.c')
-rw-r--r-- | src/sna/sna_io.c | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/src/sna/sna_io.c b/src/sna/sna_io.c index d32bd583..d03280ed 100644 --- a/src/sna/sna_io.c +++ b/src/sna/sna_io.c @@ -465,13 +465,9 @@ fallback: } br13 = 0xcc << 16; - switch (cpp) { - default: - case 4: cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; - br13 |= 1 << 25; /* RGB8888 */ - case 2: br13 |= 1 << 24; /* RGB565 */ - case 1: break; - } + br13 |= sna_br13_color_depth(cpp * 4); + if (cpp == 4) + cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; kgem_set_mode(kgem, KGEM_BLT, dst_bo); if (!kgem_check_batch(kgem, 10) || @@ -1042,13 +1038,9 @@ tile: br13 >>= 2; } br13 |= 0xcc << 16; - switch (dst->drawable.bitsPerPixel) { - default: - case 32: cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; - br13 |= 1 << 25; /* RGB8888 */ - case 16: br13 |= 1 << 24; /* RGB565 */ - case 8: break; - } + br13 |= sna_br13_color_depth(dst->drawable.bitsPerPixel); + if (dst->drawable.bitsPerPixel == 32) + cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; kgem_set_mode(kgem, KGEM_BLT, dst_bo); if (!kgem_check_batch(kgem, 10) || @@ -1548,13 +1540,9 @@ tile: br13 >>= 2; } br13 |= 0xcc << 16; - switch (dst->drawable.bitsPerPixel) { - default: - case 32: cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; - br13 |= 1 << 25; /* RGB8888 */ - case 16: br13 |= 1 << 24; /* RGB565 */ - case 8: break; - } + br13 |= sna_br13_color_depth(dst->drawable.bitsPerPixel); + if (dst->drawable.bitsPerPixel == 32) + cmd |= BLT_WRITE_ALPHA | BLT_WRITE_RGB; kgem_set_mode(kgem, KGEM_BLT, dst_bo); if (!kgem_check_batch(kgem, 10) || |