<div dir="ltr">This week we (CloudOn) did a kick off for the openGL project,<div>mainly reviewing OpenGL, and what we know of the requirements for the project.</div><div><br></div><div>My conclusions so far (feel free to correct them. i'm an OpenGL noob):</div><div><br></div><div>1. We should use OpenGL 3.0 ES API - i.e use the 3.0 ES API subset, even when using non OpenGL ES (e.g on linux, osx, windows)</div><div>2. Use cases:<br></div><div><br></div><div>     a. Tiled rendering (i.e mobile) -</div><div><br></div><div>         i. OpenGL renders to a memory buffer. It would be best if the tile memory would have been this memory buffer, but if not, then this memory buffer is later copied to the tile OpenGL context.</div><div>         ii. Context creation is handled by the Mobile app</div><div>         iii. this is the simple case</div><div><br></div><div>    b. Window (i.e Desktop) -</div><div><br></div><div>        i. LibreOffice's SalInstance should create an OpenGL window, and provide the openGL context (enabling the option can be denoted via a compilation flag). This needs to be done per OS, though possibly, can be simplified via abstraction frameworks such as SDL, or what have you. Possibly, this task is a good candidate for mentoring</div><div>        ii. the rendering is done via 3 buffers: 2 buffers (front and back) for de-interlacing, and 1 back layer buffer for actual rendering. Additionally, for stuff like copy area, we might require temp buffers for bit blit, and resending these bitmaps back to the GPU. Would be happy to find a better solution, as it sounds like copying the same bitmap 4 times...</div><div>        iii. this is the complex case, and as such, arguably, we should begin the work on tiled rendering, then apply the solution on the window / Desktop case, in a later iteration.</div><div><br></div><div>3. Shaders - For simplicity and performance (i.e to not compile shaders again and again), we should use one costant naive Vertex shader all the time, and one constant Fragment shader, which uses if statements to differentiate between 2 states - solid color, and texture. AFAIK, VCL does not use any other more complex rendering. Note also, that if statements in GLSL are optimized on the GPU, so using them should not cost performance.</div><div><br></div><div>4. Text - would be rendered using the current software implementation, and rendered via openGL, as bitmaps.</div><div><br></div><div>Considering these, action items are (VERY roughly):</div><div><br></div><div>A. add build flags if necessary</div><div>B. decide whether to approach tiled rendering first. If so, solve context creation on mobile apps. If not, implement the OpenGL context creation for SalInstances on all OSes</div><div>C. Write the shader</div><div>D. Replace the VCL primitive drawing functions one by one, with OpenGL counterparts</div><div>E. Handle the copy area case</div><div>F. Handle the Bitmap case</div><div>G. Handle the text case</div><div><br></div><div>if agreed upon, we could distribute the action items, and begin the actual work</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 17, 2014 at 1:10 PM, Michael Meeks <span dir="ltr"><<a href="mailto:michael.meeks@collabora.com" target="_blank">michael.meeks@collabora.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
On Wed, 2014-09-17 at 11:47 +0200, Jan-Marek Glogowski wrote:<br>
> AFAIK Miklos was Michaels suggestion for the mentoring - can't remember.<br>
<br>
</span>        Matus is the XFastParser expert =) I guess it'd be nice to have a small<br>
XFastParser unit test as well (as some sort of entry-level easy-hack<br>
there).<br>
<span class=""><br>
> Probably we should simply add a Wiki page for easier coordination?<br>
<br>
</span>        Sure - why not =)<br>
<br>
> Comments please<br>
<br>
        All sounds sensible, my hope is that we can mentor interactively and<br>
superimpose the two-weekly "what got done" meetings =)<br>
<br>
        Anyhow - exciting tasks !<br>
<br>
        ATB,<br>
<br>
                Michael.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
 <a href="mailto:michael.meeks@collabora.com">michael.meeks@collabora.com</a>  <><, Pseudo Engineer, itinerant idiot<br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><br><table border="0" cellpadding="0" cellspacing="0" style="font-family:arial;font-size:small"><tbody><tr><td style="width:51pt;padding:0.75pt" width="68"><pre style="font-family:'Droid Sans Mono','Lucida Console','Andale Mono','Courier New',Courier,monospace;font-size:12px;line-height:12px;color:rgb(0,0,0)"><img alt="appicon.png" height="63" src="http://site.cloudon.com/wp-content/uploads/2012/05/appicon.png" width="64" style="line-height:normal;color:rgb(34,34,34);font-family:Helvetica,sans-serif;font-size:9pt"><br></pre>
                                </td>
                                <td>
                                         </td>
                                <td style="width:207pt;padding:0.75pt" width="276">
                                        <p style="margin-right:0.4pt;margin-bottom:0.0001pt;margin-left:0.4pt">
                                                <strong>Ptyl Dragon</strong><br>
                                                <br>
                                                <a href="http://www.twitter.com/cloudoninc" style="color:rgb(17,85,204)" target="_blank"><span style="font-size:10pt;font-family:Helvetica,sans-serif;color:rgb(148,201,71);text-decoration:none">Twitter</span></a><span style="font-size:11.5pt;font-family:Helvetica,sans-serif"> </span><span style="font-size:10pt;font-family:Helvetica,sans-serif;color:rgb(102,102,102)">|</span><span style="font-size:11.5pt;font-family:Helvetica,sans-serif"> </span><a href="http://www.linkedin.com/company/cloudon" style="color:rgb(17,85,204)" target="_blank"><span style="font-size:10pt;font-family:Helvetica,sans-serif;color:rgb(148,201,71);text-decoration:none">LinkedIn</span></a><span style="font-size:10pt;font-family:Helvetica,sans-serif;color:rgb(102,102,102)"> |</span><span style="font-size:11.5pt;font-family:Helvetica,sans-serif"> </span><a href="http://www.facebook.com/cloudoninc" style="color:rgb(17,85,204)" target="_blank"><span style="font-size:10pt;font-family:Helvetica,sans-serif;color:rgb(148,201,71);text-decoration:none">Facebook</span></a><span style="font-size:11.5pt;font-family:Helvetica,sans-serif"> </span><span style="font-size:10pt;font-family:Helvetica,sans-serif;color:rgb(102,102,102)">|</span><span style="font-size:11.5pt;font-family:Helvetica,sans-serif"> </span><a href="http://site.cloudon.com/blog" style="color:rgb(17,85,204)" target="_blank"><span style="font-size:10pt;font-family:Helvetica,sans-serif;color:rgb(148,201,71);text-decoration:none">Blog</span></a></p>
                                </td>
                        </tr>
                </tbody>
        </table>
        <table border="0" cellpadding="0" cellspacing="0">
                <tbody>
                        <tr>
                                <td style="width:51.0pt;padding:.75pt .75pt .75pt .75pt" width="68">
                                         </td>
                                <td style="width:207.0pt;padding:.75pt .75pt .75pt .75pt" width="276">
                                        <p style="margin-top:0in;margin-right:.4pt;margin-bottom:0in;margin-left:.4pt;margin-bottom:.0001pt">
                                                 </p>
                                </td>
                        </tr>
                </tbody>
        </table>
</div>
<br></div>
</div>