UYVY format implementation, fixes #4682.
This commit is contained in:
@@ -346,6 +346,7 @@ update_src_stride(voodoo_t *voodoo)
|
|||||||
break;
|
break;
|
||||||
case SRC_FORMAT_COL_32_BPP:
|
case SRC_FORMAT_COL_32_BPP:
|
||||||
case SRC_FORMAT_COL_YUYV:
|
case SRC_FORMAT_COL_YUYV:
|
||||||
|
case SRC_FORMAT_COL_UYVY:
|
||||||
bpp = 32;
|
bpp = 32;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -731,6 +732,13 @@ do_screen_to_screen_line(voodoo_t *voodoo, uint8_t *src_p, int use_x_dir, int sr
|
|||||||
src_data_yuv = *(uint32_t *) &src_p[src_x_real];
|
src_data_yuv = *(uint32_t *) &src_p[src_x_real];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case SRC_FORMAT_COL_UYVY:
|
||||||
|
{
|
||||||
|
src_data_yuv = *(uint32_t *) &src_p[src_x_real];
|
||||||
|
src_data_yuv = ((src_data_yuv & 0xFF00) >> 8) | ((src_data_yuv & 0xFF) << 8) |
|
||||||
|
((src_data_yuv & 0xFF000000) >> 8) | ((src_data_yuv & 0xFF0000) << 8);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fatal("banshee_do_screen_to_screen_blt: unknown srcFormat %08x\n", voodoo->banshee_blt.srcFormat);
|
fatal("banshee_do_screen_to_screen_blt: unknown srcFormat %08x\n", voodoo->banshee_blt.srcFormat);
|
||||||
@@ -744,7 +752,8 @@ do_screen_to_screen_line(voodoo_t *voodoo, uint8_t *src_p, int use_x_dir, int sr
|
|||||||
src_data = (b >> 3) | ((g >> 2) << 5) | ((r >> 3) << 11);
|
src_data = (b >> 3) | ((g >> 2) << 5) | ((r >> 3) << 11);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((voodoo->banshee_blt.srcFormat & SRC_FORMAT_COL_MASK) == SRC_FORMAT_COL_YUYV) {
|
if ((voodoo->banshee_blt.srcFormat & SRC_FORMAT_COL_MASK) == SRC_FORMAT_COL_YUYV
|
||||||
|
|| (voodoo->banshee_blt.srcFormat & SRC_FORMAT_COL_MASK) == SRC_FORMAT_COL_UYVY) {
|
||||||
if (((voodoo->banshee_blt.dstFormat & DST_FORMAT_COL_MASK) == DST_FORMAT_COL_24_BPP) ||
|
if (((voodoo->banshee_blt.dstFormat & DST_FORMAT_COL_MASK) == DST_FORMAT_COL_24_BPP) ||
|
||||||
((voodoo->banshee_blt.dstFormat & DST_FORMAT_COL_MASK) == DST_FORMAT_COL_32_BPP)) {
|
((voodoo->banshee_blt.dstFormat & DST_FORMAT_COL_MASK) == DST_FORMAT_COL_32_BPP)) {
|
||||||
uint32_t rgbcol[2] = { 0, 0 };
|
uint32_t rgbcol[2] = { 0, 0 };
|
||||||
@@ -1488,6 +1497,7 @@ voodoo_2d_reg_writel(voodoo_t *voodoo, uint32_t addr, uint32_t val)
|
|||||||
break;
|
break;
|
||||||
case SRC_FORMAT_COL_32_BPP:
|
case SRC_FORMAT_COL_32_BPP:
|
||||||
case SRC_FORMAT_COL_YUYV:
|
case SRC_FORMAT_COL_YUYV:
|
||||||
|
case SRC_FORMAT_COL_UYVY:
|
||||||
voodoo->banshee_blt.src_bpp = 32;
|
voodoo->banshee_blt.src_bpp = 32;
|
||||||
break;
|
break;
|
||||||
case SRC_FORMAT_COL_16_BPP:
|
case SRC_FORMAT_COL_16_BPP:
|
||||||
|
Reference in New Issue
Block a user