Update yuv->rgb conversion programs to write to src_sample regs
The YUV->RGB code was written to write directly to the dataport registers, but that didn't work for the compositing functions (cause still unknown). This change makes that code write RGB values to the src_sample registers as with the other sample computation fragments.
This commit is contained in:
parent
b01d582e23
commit
fb6ed8b8b5
|
|
@ -30,18 +30,30 @@ include(`exa_wm.g4i')
|
|||
|
||||
define(`YCbCr_base', `src_sample_base')
|
||||
|
||||
define(`Cr', `src_sample_r')
|
||||
define(`Cr', `src_sample_r_01')
|
||||
define(`Cr_01', `src_sample_r_01')
|
||||
define(`Cr_23', `src_sample_r_23')
|
||||
|
||||
define(`Y', `src_sample_g')
|
||||
define(`Y', `src_sample_g_01')
|
||||
define(`Y_01', `src_sample_g_01')
|
||||
define(`Y_23', `src_sample_g_23')
|
||||
|
||||
define(`Cb', `src_sample_b')
|
||||
define(`Cb', `src_sample_b_01')
|
||||
define(`Cb_01', `src_sample_b_01')
|
||||
define(`Cb_23', `src_sample_b_23')
|
||||
|
||||
define(`Crn', `mask_sample_r_01')
|
||||
define(`Crn_01', `mask_sample_r_01')
|
||||
define(`Crn_23', `mask_sample_r_23')
|
||||
|
||||
define(`Yn', `mask_sample_g_01')
|
||||
define(`Yn_01', `mask_sample_g_01')
|
||||
define(`Yn_23', `mask_sample_g_23')
|
||||
|
||||
define(`Cbn', `mask_sample_b_01')
|
||||
define(`Cbn_01', `mask_sample_b_01')
|
||||
define(`Cbn_23', `mask_sample_b_23')
|
||||
|
||||
/* color space conversion function:
|
||||
* R = Clamp ( 1.164(Y-16/255) + 1.596(Cr-128/255), 0, 1)
|
||||
* G = Clamp ( 1.164(Y-16/255) - 0.813(Cr-128/255) - 0.392(Cb-128/255), 0, 1)
|
||||
|
|
@ -58,45 +70,45 @@ define(`Cb_23', `src_sample_b_23')
|
|||
|
||||
/* Normalize Y, Cb and Cr:
|
||||
*
|
||||
* Y = (Y - 16/255) * 1.164
|
||||
* Cr = Cr - 128 / 255
|
||||
* Cb = Cb - 128 / 255
|
||||
* Yn = (Y - 16/255) * 1.164
|
||||
* Crn = Cr - 128 / 255
|
||||
* Cbn = Cb - 128 / 255
|
||||
*/
|
||||
add (16) Y<1>F Y<8,8,1>F -0.0627451F { compr align1 };
|
||||
mul (16) Y<1>F Y<8,8,1>F 1.164F { compr align1 };
|
||||
add (16) Yn<1>F Y<8,8,1>F -0.0627451F { compr align1 };
|
||||
mul (16) Yn<1>F Yn<8,8,1>F 1.164F { compr align1 };
|
||||
|
||||
add (16) Cr<1>F Cr<8,8,1>F -0.501961F { compr align1 };
|
||||
add (16) Crn<1>F Cr<8,8,1>F -0.501961F { compr align1 };
|
||||
|
||||
add (16) Cb<1>F Cb<8,8,1>F -0.501961F { compr align1 };
|
||||
add (16) Cbn<1>F Cb<8,8,1>F -0.501961F { compr align1 };
|
||||
|
||||
/*
|
||||
* R = Y + Cr * 1.596
|
||||
*/
|
||||
mul (8) null Cr_01<8,8,1>F 1.596F { align1 };
|
||||
mac.sat (8) data_port_r_01<1>F Y_01<8,8,1>F 1F { align1 };
|
||||
mul (8) null Cr_23<8,8,1>F 1.596F { align1 };
|
||||
mac.sat (8) data_port_r_23<1>F Y_23<8,8,1>F 1F { align1 };
|
||||
mul (8) null Crn_01<8,8,1>F 1.596F { align1 };
|
||||
mac.sat (8) src_sample_r_01<1>F Yn_01<8,8,1>F 1F { align1 };
|
||||
mul (8) null Crn_23<8,8,1>F 1.596F { align1 };
|
||||
mac.sat (8) src_sample_r_23<1>F Yn_23<8,8,1>F 1F { align1 };
|
||||
|
||||
/*
|
||||
* G = Cr * -0.813 + Cb * -0.392 + Y
|
||||
* G = Crn * -0.813 + Cbn * -0.392 + Y
|
||||
*/
|
||||
mul (8) null Cr_01<8,8,1>F -0.813F { align1 };
|
||||
mac (8) null Cb_01<8,8,1>F -0.392F { align1 };
|
||||
mac.sat (8) data_port_g_01<1>F Y_01<8,8,1>F 1F { align1 };
|
||||
mul (8) null Cr_23<8,8,1>F -0.813F { align1 };
|
||||
mac (8) null Cb_23<8,8,1>F -0.392F { align1 };
|
||||
mac.sat (8) data_port_g_23<1>F Y_23<8,8,1>F 1F { align1 };
|
||||
mul (8) null Crn_01<8,8,1>F -0.813F { align1 };
|
||||
mac (8) null Cbn_01<8,8,1>F -0.392F { align1 };
|
||||
mac.sat (8) src_sample_g_01<1>F Yn_01<8,8,1>F 1F { align1 };
|
||||
mul (8) null Crn_23<8,8,1>F -0.813F { align1 };
|
||||
mac (8) null Cbn_23<8,8,1>F -0.392F { align1 };
|
||||
mac.sat (8) src_sample_g_23<1>F Yn_23<8,8,1>F 1F { align1 };
|
||||
|
||||
/*
|
||||
* B = Cb * 2.017 + Y
|
||||
* B = Cbn * 2.017 + Y
|
||||
*/
|
||||
mul (8) null Cb_01<8,8,1>F 2.017F { align1 };
|
||||
mac.sat (8) data_port_b_01<1>F Y_01<8,8,1>F 1F { align1 };
|
||||
mul (8) null Cb_23<8,8,1>F 2.017F { align1 };
|
||||
mac.sat (8) data_port_b_23<1>F Y_23<8,8,1>F 1F { align1 };
|
||||
mul (8) null Cbn_01<8,8,1>F 2.017F { align1 };
|
||||
mac.sat (8) src_sample_b_01<1>F Yn_01<8,8,1>F 1F { align1 };
|
||||
mul (8) null Cbn_23<8,8,1>F 2.017F { align1 };
|
||||
mac.sat (8) src_sample_b_23<1>F Yn_23<8,8,1>F 1F { align1 };
|
||||
|
||||
/*
|
||||
* A = 1.0
|
||||
*/
|
||||
mov (8) data_port_a_01<1>F 1.0F { align1 };
|
||||
mov (8) data_port_a_23<1>F 1.0F { align1 };
|
||||
mov (8) src_sample_a_01<1>F 1.0F { align1 };
|
||||
mov (8) src_sample_a_23<1>F 1.0F { align1 };
|
||||
|
|
|
|||
|
|
@ -1,20 +1,20 @@
|
|||
{ 0x00802040, 0x22007fbd, 0x008d0200, 0xbd808081 },
|
||||
{ 0x00802041, 0x22007fbd, 0x008d0200, 0x3f94fdf4 },
|
||||
{ 0x00802040, 0x21c07fbd, 0x008d01c0, 0xbf008084 },
|
||||
{ 0x00802040, 0x22407fbd, 0x008d0240, 0xbf008084 },
|
||||
{ 0x00600041, 0x20007fbc, 0x008d01c0, 0x3fcc49ba },
|
||||
{ 0x80600048, 0x20407fbe, 0x008d0200, 0x3f800000 },
|
||||
{ 0x00600041, 0x20007fbc, 0x008d01e0, 0x3fcc49ba },
|
||||
{ 0x80600048, 0x20c07fbe, 0x008d0220, 0x3f800000 },
|
||||
{ 0x00600041, 0x20007fbc, 0x008d01c0, 0xbf5020c5 },
|
||||
{ 0x00600048, 0x20007fbc, 0x008d0240, 0xbec8b439 },
|
||||
{ 0x80600048, 0x20607fbe, 0x008d0200, 0x3f800000 },
|
||||
{ 0x00600041, 0x20007fbc, 0x008d01e0, 0xbf5020c5 },
|
||||
{ 0x00600048, 0x20007fbc, 0x008d0260, 0xbec8b439 },
|
||||
{ 0x80600048, 0x20e07fbe, 0x008d0220, 0x3f800000 },
|
||||
{ 0x00600041, 0x20007fbc, 0x008d0240, 0x40011687 },
|
||||
{ 0x80600048, 0x20807fbe, 0x008d0200, 0x3f800000 },
|
||||
{ 0x00600041, 0x20007fbc, 0x008d0260, 0x40011687 },
|
||||
{ 0x80600048, 0x21007fbe, 0x008d0220, 0x3f800000 },
|
||||
{ 0x00600001, 0x20a003fe, 0x00000000, 0x3f800000 },
|
||||
{ 0x00600001, 0x212003fe, 0x00000000, 0x3f800000 },
|
||||
{ 0x00802040, 0x23007fbd, 0x008d0200, 0xbd808081 },
|
||||
{ 0x00802041, 0x23007fbd, 0x008d0300, 0x3f94fdf4 },
|
||||
{ 0x00802040, 0x22c07fbd, 0x008d01c0, 0xbf008084 },
|
||||
{ 0x00802040, 0x23407fbd, 0x008d0240, 0xbf008084 },
|
||||
{ 0x00600041, 0x20007fbc, 0x008d02c0, 0x3fcc49ba },
|
||||
{ 0x80600048, 0x21c07fbd, 0x008d0300, 0x3f800000 },
|
||||
{ 0x00600041, 0x20007fbc, 0x008d02e0, 0x3fcc49ba },
|
||||
{ 0x80600048, 0x21e07fbd, 0x008d0320, 0x3f800000 },
|
||||
{ 0x00600041, 0x20007fbc, 0x008d02c0, 0xbf5020c5 },
|
||||
{ 0x00600048, 0x20007fbc, 0x008d0340, 0xbec8b439 },
|
||||
{ 0x80600048, 0x22007fbd, 0x008d0300, 0x3f800000 },
|
||||
{ 0x00600041, 0x20007fbc, 0x008d02e0, 0xbf5020c5 },
|
||||
{ 0x00600048, 0x20007fbc, 0x008d0360, 0xbec8b439 },
|
||||
{ 0x80600048, 0x22207fbd, 0x008d0320, 0x3f800000 },
|
||||
{ 0x00600041, 0x20007fbc, 0x008d0340, 0x40011687 },
|
||||
{ 0x80600048, 0x22407fbd, 0x008d0300, 0x3f800000 },
|
||||
{ 0x00600041, 0x20007fbc, 0x008d0360, 0x40011687 },
|
||||
{ 0x80600048, 0x22607fbd, 0x008d0320, 0x3f800000 },
|
||||
{ 0x00600001, 0x228003fd, 0x00000000, 0x3f800000 },
|
||||
{ 0x00600001, 0x22a003fd, 0x00000000, 0x3f800000 },
|
||||
|
|
|
|||
Loading…
Reference in New Issue