[Development] The Dynamic OpenGL on Windows Change
Björn Breitmeyer
bjoern.breitmeyer at kdab.com
Fri Feb 28 13:16:01 CET 2014
Since i haven't followed the discussion in detail, based on which assumptions
do you plan to use a dynamic switch. Exported GL Symbols from QtGui sounds
like a very bad idea. Relying on QOpenGLFunctions makes more sense.
But right now i don't really see how this buys anybody anything, you usually
need to know which renderer to use, usually there is a switch in software if
they have different rederers so the user can change them if they don't work
as expected. I have never really seen any runtime detection that works really
well.
Best regards
Björn Breitmeyer
--
Björn Breitmeyer | bjoern.breitmeyer at kdab.com | Software Engineer
KDAB (Deutschland) GmbH&Co KG, a KDAB Group company
Germany: +49-30-521325470, Sweden (HQ): +46-563-540090
KDAB - Qt Experts - Platform-independent software solutions
Am Freitag, 28. Februar 2014, 11:49:56 schrieb Agocs Laszlo:
> You cannot include multiple GL headers. In a dynamic build you have the
> desktop GL header ( + qopenglext.h), just like in a 'desktop' build. This
> does not change at all.
> Runtime errors are not a problem since all ES-specific paths are guarded by
> the appropriate condition.
> I realize however that there are genuine concerns around exporting all the
> symbols from QtGui, and that the approach will most likely not scale to
> other platforms. A compromise could be to revert the change for 5.3 (since
> it is anyway behind an experimental configuration option) and instead try
> gradually introducing an alternative approach in future releases:
> 1. Leave code that directly calls OpenGL functions alone. Instead, extend
> QOpenGLFunctions with the common subset of OpenGL 1.x and ES2 functions
> which are missing today. This would allow writing
> context->functions()->glClear() etc. which is not possible today.
> 2. Once this is in place, all of qtbase and qtdeclarative (and later all
> other modules) have to be changed to stop directly calling OpenGL
> functions. Instead, they must rely on QOpenGLFunctions (which they most
> likely do already for GL 2 specific calls anyhow).
> 3. QOpenGLFunctions gets platform specific backends that perform dynamic
> loading of the OpenGL implementation. For example, the Windows backend
> would do the tests for choosing between desktop - Angle and then
> dynamically load the selected implementation. QtGui stops linking to
> opengl32/libegl/libglesv2.
> 4. The windowing system interfacing code, for example all the usage of WGL
> and EGL in the windows platform plugin, has to be placed behind a new
> private wrapper similar to QOpenGLFunctions. This could expose an EGL-style
> API, with platform specific backends that provide an implementation using
> the dynamically resolved EGL/WGL/GLX functions.
> Another alternative would be to continue betting on Angle as the primary
> OpenGL enabler on Windows, and investigate how well the software rasterizer
> fallback in D3D11-based Angle works. As I understand this would be
> available on Win7+ in VS2012+ builds. If this could solve the issues we see
> today with virtual machines and machines without decent drivers, it might
> reduce the urgency for needing a true dynamic GL solution.
> Cheers,
> Laszlo
>
> -----Original Message-----
> From: Sean Harmer [mailto:sean.harmer at kdab.com]
> Sent: 28. februar 2014 11:41
> To: development at qt-project.org
> Cc: Gunnar Sletta; Agocs Laszlo
> Subject: Re: Re: [Development] The Dynamic OpenGL on Windows Change
>
> Hi Gunnar,
>
> On Friday 28 February 2014 07:14:24 Gunnar Sletta wrote:
>
> > On 27 Feb 2014, at 22:17, Agocs Laszlo <Laszlo.Agocs at digia.com> wrote:
> >
> > > On Thu, Feb 27, 2014 at 02:28:26PM +0000, Sean Harmer wrote:
> > >
> > >> The apparent problem that this is attempting to address is the need
> > >> for
> > >> both ANGLE and desktop OpenGL builds of Qt on windows. As you know Qt
> > >
> > >
> > > As pointed out by Friedmann earlier, the big picture is a somewhat more
> > > complicated. This is just the beginning.
> >
> > ...
> >
> > And I agree to all this. It is a good change, and I'm happy to see it.
> >
> > Also, I would be very surprised if the added if-statements inside Qt
> > makes
> > much of a difference to performance. As long as that logic stays
> > primarily
> > inside Qt, it also doesn't hurt application complexity.
>
>
> What I don't understand, and which is quite likely entirely my fault as I'm
>
rather sleep-deprived recently (new baby), is that to me it seems like
> situations such as trying to use desktop GL with an ES 2 build or vice
> versa would have until now resulted in compile time errors. Now they will
> become potential runtime errors (e.g. GL_INVALID_ENUM). Also, is it safe in
> #include the ES2 headers on top of the desktop ones now and in the future?
> That's a genuine question, I honestly don't know.
>
> If everybody else is happy to live with this then I'll shut up. We should
> still consider if it makes sense for QtGui to export these symbols or
> whether
they should be moved to a new library though.
>
> Cheers,
>
> Sean
> --
> Dr Sean Harmer | sean.harmer at kdab.com | Managing Director UK
> Klarälvdalens Datakonsult AB, a KDAB Group company
> Tel. Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
> KDAB - Qt Experts - Platform-independent software solutions
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4854 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/development/attachments/20140228/465ab0b8/attachment.bin>
More information about the Development
mailing list