<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:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Cambria;
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 2.0cm 70.85pt 2.0cm;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:489756087;
        mso-list-type:hybrid;
        mso-list-template-ids:-1840992114 67829775 67829785 67829787 67829775 67829785 67829787 67829775 67829785 67829787;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FI" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Cambria","serif"">Hello all,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Cambria","serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Cambria","serif"">I am new to Mesa development (and in particular the i965 driver). I am currently trying to gain an understanding of Mesa’s implementation with mostly an eye on (just) the i965 driver.
 Some questions:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Cambria","serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Cambria","serif"">There are some docs in docs, how up to date are those documents? In particular I saw this: (<span style="color:black"> from User Topics/Shading Language on the side bar)<o:p></o:p></span></span></p>
<p class="MsoListParagraph" style="margin-left:38.25pt;text-indent:-18.0pt"><span lang="EN-US" style="font-family:"Cambria","serif";color:black"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:18.0pt;background:white"><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">a.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">    
</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">Shading language programs are compiled into low-level programs very similar to those of GL_ARB_vertex/fragment_program.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt;text-indent:-18.0pt;background:white">
<span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">b.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">   
</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">All vector types (vec2, vec3, vec4, bvec2, etc) currently occupy full float[4] registers.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:18.0pt;background:white"><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">c.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">    
</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">Float constants and variables are packed so that up to four floats can occupy one program parameter/register.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:18.0pt;background:white"><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">d.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">   
</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">All function calls are inlined.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:18.0pt;background:white"><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">e.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">   
</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">Shaders which use too many registers will not compile.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:18.0pt;background:white"><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">f.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">    
</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">The quality of generated code is pretty good, register usage is fair.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:18.0pt;background:white"><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">g.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">   
</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">Shader error detection and reporting of errors (InfoLog) is not very good yet.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:18.0pt;background:white"><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">h.</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">   
</span><span lang="EN-US" style="font-family:"Cambria","serif";color:#222222">The ftransform() function doesn't necessarily match the results of fixed-function transformation.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:18.0pt;text-indent:-18.0pt;background:white">
<span lang="EN-US" style="font-family:"Cambria","serif";color:#222222"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:18.0pt;text-indent:-18.0pt;background:white">
<span lang="EN-US" style="font-family:"Cambria","serif";color:black">My questions are:<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo1;background:white">
<![if !supportLists]><span lang="EN-US" style="font-family:"Cambria","serif""><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span lang="EN-US" style="font-family:"Cambria","serif";color:black">for item (a), I thought Mesa was using a custom IR that sorted of looked like LISP, is that correct? Is (a) even correct? For that matter where does the assembly
 style shader magicks fit in? [even though the asm interface is old, it is used in common user-oriented games, like Doom3 for example]. Additionally, there are extensions out there that update the asm interface for GL3 and GL4 features. Are those extensions
 already implemented in Mesa?</span><span lang="EN-US" style="font-family:"Cambria","serif""><o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo1;background:white">
<![if !supportLists]><span lang="EN-US" style="font-family:"Cambria","serif""><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span lang="EN-US" style="font-family:"Cambria","serif";color:black">my question for item (b) mostly concerns the i965 driver. First a disclaimer: I am quite *<b>new</b>* so some of my starting points might be utterly wrong. My
 understanding of the i965 so far is that it strongly prefers to work with SIMD commands (I guess operating on vec4’s typically). One idea is that compiling of fragment shaders would break all operations down to scalar operations and then the shader would be
 re-assembled to process 4 fragments at a time by “combining” the shader commands of 4 fragments from 4 scalar ops into one vec4 op. Is this already done? [I have memory of seeing a slide from Ian R. that the i965 driver draws 8(or was it 4) pixels “at a time”].</span><span lang="EN-US" style="font-family:"Cambria","serif""><o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo1;background:white">
<![if !supportLists]><span lang="EN-US" style="font-family:"Cambria","serif""><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span lang="EN-US" style="font-family:"Cambria","serif";color:black">related to (d), but not exactly the same: how are branches related to (non-unrollable) loops handled? in particular nested loops?</span><span lang="EN-US" style="font-family:"Cambria","serif""><o:p></o:p></span></p>
<p class="MsoListParagraph" style="background:white"><span lang="EN-US" style="font-family:"Cambria","serif""><o:p> </o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Cambria","serif"">There is also some doxygen stuff found in doxygen, some of it (for example glapi.doxy) seems to being suffering from bit rot (for glapi.doxy it points to
 a directory that does not even exist anymore). On a related note, where are the beans about the dispatch table?
<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Cambria","serif""><o:p> </o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Cambria","serif"">Also, is src/mesa/state_tracker part of Mesa main or Gallium stuff? Taking a quick, non-careful look, it looks like state tracking is handled by bits running
 around in mesa/main, is that correct?<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Cambria","serif""><o:p> </o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Cambria","serif"">What is the general rule of thumb of code that belongs in mesa/main vs further down to the drivers/dri/XXX (for me XXX-i965).<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Cambria","serif""><o:p> </o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Cambria","serif"">Best Regards<o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Cambria","serif"">-Kevin Rogovin
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p></o:p></span></p>
</div>
<p>---------------------------------------------------------------------<br>
Intel Finland Oy<br>
Registered Address: PL 281, 00181 Helsinki <br>
Business Identity Code: 0357606 - 4 <br>
Domiciled in Helsinki </p>

<p>This e-mail and any attachments may contain confidential material for<br>
the sole use of the intended recipient(s). Any review or distribution<br>
by others is strictly prohibited. If you are not the intended<br>
recipient, please contact the sender and delete all copies.</p></body>
</html>