<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
 namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="City"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="place"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:宋体;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@宋体";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:Arial;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:Arial;
        color:navy;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:748313811;
        mso-list-type:hybrid;
        mso-list-template-ids:1116790178 885452162 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:1.75in;
        mso-level-number-position:left;
        margin-left:1.75in;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>The bug is that when our driver handles
the Over operation where source image has the alpha value and mask has the
alpha value, our driver does the wrong thing. It uses the mask's alpha value to
do the composite operation and omit the previous alpha value. The correct
formula is that the source(ARGB) should be multiplied with the mask alpha
value, then use the new alpha to do the OVER operation. I have done many
experiments to prove that and guys from xorg-devel mail groug gives me the
hint. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>In short, our driver is short of one pass
of Source*(alpha of mask) and wrongly use a*A+(1-a)*B to do the OVER operation.
See datasheet of Geode on GP_RASTER_MODE for detail.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I'll correct this huge bug and let you
know my result.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Thanks,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Frank<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face=宋体><span style='font-size:12.0pt;font-family:宋体'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> Huang, FrankR <br>
<b><span style='font-weight:bold'>Sent:</span></b> 2010</span></font><font
size=2 face=宋体><span lang=ZH-CN style='font-size:10.0pt;font-family:宋体'>年</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>5</span></font><font
size=2 face=宋体><span lang=ZH-CN style='font-size:10.0pt;font-family:宋体'>月</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>24</span></font><font
size=2 face=宋体><span lang=ZH-CN style='font-size:10.0pt;font-family:宋体'>日</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> 18:49<br>
<b><span style='font-weight:bold'>To:</span></b> Huang, FrankR;
xorg-driver-geode@lists.x.org; xorg-devel@lists.x.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [Xorg-driver-geode]
Rendering issue update</span></font><font face=宋体><span style='font-family:
宋体'><o:p></o:p></span></font></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Hi,all<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:.5in'><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'>I am now using the
rendercheck application from freedesktop to test the rendering issue of geode
driver. Many guys suggested me use this program to test our driver’s rendering
issue and do the bugs fixed. Now it is time to do that after I am clear of the
XRenderComposite() usage by my Xlib application.<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:.5in'><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'>That rendercheck
application is a huge test on render. But we can use some specific
tests(options) on our driver. Now following the suggestion on xorg-devel guy, I
want to use blend and composite test with SRC, then OVER… That could give more
information and full tests on our driver to fix bugs.<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:.5in'><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'>By the way, I have
modified the <st1:place w:st="on"><st1:City w:st="on">cairo</st1:City></st1:place>
library source code to let XRenderComposite() display the whole process of
progressbar drawing on the screen instead of pict. Please see 15700 bug on
freedesktop.<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:.5in'><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Thanks,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Frank <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
xorg-driver-geode-bounces+frankr.huang=amd.com@lists.x.org
[mailto:xorg-driver-geode-bounces+frankr.huang=amd.com@lists.x.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Huang, FrankR<br>
<b><span style='font-weight:bold'>Sent:</span></b> 2010</span></font><font
size=2 face=宋体><span lang=ZH-CN style='font-size:10.0pt;font-family:宋体'>年</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>5</span></font><font
size=2 face=宋体><span lang=ZH-CN style='font-size:10.0pt;font-family:宋体'>月</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>12</span></font><font
size=2 face=宋体><span lang=ZH-CN style='font-size:10.0pt;font-family:宋体'>日</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> 17:13<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">xorg-driver-geode@lists.x.org</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> [Xorg-driver-geode]
Rendering issue update</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Hi, all<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
For the rendering issue, I have written a simple Xlib program that triggers
geode HW rendering( lx_do_composite() ). What the application does is as below
:<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:1.75in;text-indent:-.25in;mso-list:l0 level1 lfo2'><![if !supportLists]><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><span
style='mso-list:Ignore'>1)<font size=1 face="Times New Roman"><span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span></font><![endif]><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>It creates a
100x100 window (color: white) for the destination picture<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:1.75in;text-indent:-.25in;mso-list:l0 level1 lfo2'><![if !supportLists]><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><span
style='mso-list:Ignore'>2)<font size=1 face="Times New Roman"><span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span></font><![endif]><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>It creates a
picture of 1x1 with the format PICT_x8r8g8b8(color: green) for the source
picture, the source picture has the repeat attribute.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:1.75in;text-indent:-.25in;mso-list:l0 level1 lfo2'><![if !supportLists]><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><span
style='mso-list:Ignore'>3)<font size=1 face="Times New Roman"><span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span></font><![endif]><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>It creates a
picture of 20x20 with the format PICT_a8(only alpha value to do alpha blend)
for the mask picture.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:1.75in;text-indent:-.25in;mso-list:l0 level1 lfo2'><![if !supportLists]><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'><span
style='mso-list:Ignore'>4)<font size=1 face="Times New Roman"><span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span></font><![endif]><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>Call the
XRenderComposite() to trigger. The dst_x and dst_y are all 50, width and height
are all 40. the mask_x and mask_y are all 5. So the alpha blend green region is
15x15<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'>See the result of Radeon_X1200.png.
It is the standard result. Run on my RS690/SB600 workstation. The rending
function FUNC_NAME(RadeonComposite) on X1200 will be called. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Because our driver can only support limit rendering, I choose this test case.
This will use lx_do_composite() in the geode LX. I don’t know why our driver
must require the pSrc-&gt;width and pSrc-&gt;height with value of 1 in
lx_prepare_composite(). I follow this requirement in this application. You can
see the HW rendering result with the picture of Geode_lx.png on geode platform.
Apparently, there must be some HW rendinging bug in our driver. I will use this
program instead of the progressbar gtk application to go on debugging.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Source code is in render_test.zip. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
You can compiled it with “gcc –g –v –Wall –o render main.c ops.c tests_10x10.c
–Lxxx –lX11 –lXrender”<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
With the help of this application’s debug, we will close to the root cause of
this long-long ago historical rendering bug on geode platform.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Thanks,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Frank<o:p></o:p></span></font></p>

</div>

</body>

</html>