<div dir="ltr">This could be a pretty big minefield on Windows. Look at Chrome and Firefox. They had to introduce ANGLE to do dynamic <br>OpenGL->Direct3D translation, because there were too many OpenGL bugs and quirks, especially with Intel GPUs. Not to mention, that drivers installed from Windows update have often limited OpenGL support and not everyone installs drivers directly from GPU vendors. And yet they still have to use a driver/HW blacklist. I guess LO can get away with much simpler implementation, so it will not be as bad, but it's still something to consider.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 18, 2014 at 3:25 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">Hi Ptyl,<br>
<span class=""><br>
On Wed, 2014-09-17 at 21:08 +0300, Ptyl Dragon wrote:<br>
> Regarding this, from the little i've learned so far of OpenGL, the<br>
> main thing would be to avoid use the OpenGL extensions and API calls<br>
</span>> that don't exist in ES ... In other words, whatever feature of OpenGL<br>
<span class="">> we use, we should first ensure it exists in the target OpenGL ES<br>
> version we choose, on Android and iOS.<br>
><br>
</span>        Sounds sensible; there is a nice list of things to avoid here:<br>
chart2/opengl/README.deprecated. FWIW - I got some insight from Markus<br>
via some low bandwidth / Australian out-back telegraph which is perhaps<br>
helpful =) He says:<br>
<br>
        Sadly OpenGL ES is not a pure subset of normal OpenGL, at least<br>
        of the versions that we target, so we need to make sure in both<br>
        directions that the used features are available on both the<br>
        OpenGL target version as well as in the OpenGL ES target<br>
        version. Extensions can be used conditionally but core features<br>
        are a bigger problem there.<br>
<br>
        Actually I hope this is mostly a non-issue if we develop and debug this<br>
on a rich-platform rather than Android. Hopefully that way we only have<br>
to check we're not using things not available in GLES as you suggest.<br>
<br>
        To elaborate on that point - IMHO once we have the stack efficiently<br>
rendering to GL from VCL through drawinglayer etc. on the PC then it is<br>
~trivial to adapt this to tiled-rendering; it's just a different<br>
context / frame-buffer-object to render a part of the same scene to.<br>
<br>
        So - why develop for PC first not Android ? well Android is the Devil's<br>
Armpit of a development environment. It is extraordinarily hard, and<br>
unreliable to debug native code there - the development iteration is not<br>
'compile,run' but 'compile,zip,sign,hope-up-load-works,run' with the<br>
middle phases being not only slow but also un-reliable ;-) And that is<br>
before we get to the horrible issues of trying to debug broken OpenGL<br>
shaders etc. which is bad enough in a well maintained development<br>
environment ;-) nevermind on a remote machine with a confused GPU ;-) Of<br>
course we'll still have to audit / port that work to Android (which<br>
should be easy) after we're done but ... when it works the set of bugs<br>
to nail should be mercifully smaller I hope.<br>
<span class=""><br>
> In my mind, what would have worked better is to avoid the quasi mode,<br>
> do a pure OpenGL rendering, then integrating it in Desktop via a<br>
> desktop tiled rendering mechanism....though i guess that's a waterfall<br>
> in itself.<br>
<br>
</span>        I'd like to avoid that really; lets have the fewest moving parts at<br>
once - we may discover on desktop hardware that (if we can render much<br>
faster) there is no real need for tiling for desktop performance -<br>
though its always nice to be power efficient of course.<br>
<span class=""><br>
> I would think, the other platforms can "wait" since they are getting<br>
> decent performance already. But i can see why you would disagree with<br>
> me on this.<br>
><br>
</span>        For ease of development / debugging - it makes a huge amount of sense<br>
to develop this, at least initially on a PC platform I think.<br>
<span class=""><br>
> in our iOS implementation we solved the timer issues by considering<br>
> them as damaged areas, similar to areas changed by editing. Viewer<br>
> only functionality may not require this by default, but still, it can<br>
> solve this without getting rid of the timers. Still, i agree that in<br>
> the long run, the timer thing needs to "go".<br>
<br>
</span>        Yep - it's a longer term thing; but I quite like the idea of binning<br>
immediate rendering via some "just collect damage and re-render" model<br>
=) it is IMHO a premature optimization on modern hardware.<br>
<span class=""><br>
> Perhaps to do some actual help, i should begin with doing some easy<br>
> hacks on this front, just to get the taste of it.<br>
> Would be good if someone could give me something to actually do.<br>
<br>
</span>        Heh =) I'll fwd some ideas Kendy sent out - that is assuming you have a<br>
Linux VM somewhere with GL ? (would be useful to have anyway)<br>
<br>
        ATB,<br>
<span class="im HOEnZb"><br>
                Michael.<br>
<br>
--<br>
 <a href="mailto:michael.meeks@collabora.com">michael.meeks@collabora.com</a>  <><, Pseudo Engineer, itinerant idiot<br>
<br>
</span><div class="HOEnZb"><div class="h5">_______________________________________________<br>
LibreOffice mailing list<br>
<a href="mailto:LibreOffice@lists.freedesktop.org">LibreOffice@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/libreoffice" target="_blank">http://lists.freedesktop.org/mailman/listinfo/libreoffice</a><br>
</div></div></blockquote></div><br></div>