[Development] Qt3D on windows

Sean Harmer sean.harmer at kdab.com
Mon Oct 13 11:35:32 CEST 2014


On 13/10/2014 10:27, Agocs Laszlo wrote:
> Hi Sean,
>
> What Gunnar refers to is a pattern we use in a few places to get things functioning correctly with certain embedded GLES implementations. With such drivers, creating sharing contexts on different threads behaves incorrectly as you won't actually get sharing. The workaround was to create all contexts on the main/gui thread. This may not be relevant to you in Qt3D, but good to keep it in mind.

Ah right I see now. Thanks for the explanation. Right now, this isn't an 
issue as we're not sharing contexts but we'll bear it in mind for the 
future.

Cheers,

Sean

>
> Cheers,
> Laszlo
>
> ________________________________________
> From: development-bounces+laszlo.agocs=theqtcompany.com at qt-project.org <development-bounces+laszlo.agocs=theqtcompany.com at qt-project.org> on behalf of Sean Harmer <sean.harmer at kdab.com>
> Sent: Monday, October 13, 2014 10:47 AM
> To: development at qt-project.org
> Subject: Re: [Development] Qt3D on windows
>
> Hey Gunnar,
>
> On 13/10/2014 06:48, Gunnar Sletta wrote:
>> On 12 Oct 2014, at 22:18, Sean Harmer <sean.harmer at kdab.com> wrote:
>>
>>> On 12/10/2014 21:08, Ray Donnelly wrote:
>>>> On Sun, Oct 12, 2014 at 8:56 PM, Sean Harmer <sean.harmer at kdab.com> wrote:
>>>>> Hi,
>>>>>
>>>>> just a quick heads up that Qt3D's wip/newapi branch now displays content
>>>>> usign threaded rendering on windows. I've tested with MSVC 2012 OpenGL
>>>>> x86_64 build with nVidia driver. Your mileage may vary with other
>>>>> drivers, compilers and OpenGL configurations. I wouldn't be surprised to
>>>>> find a few places need tweaks with a dynamic OpenGL build.
>>>> Angle doesn't do multithreaded rendering, will it be possible to use
>>>> Qt3D on Angle?
>>> Well, we're only doing actual GL calls on a single thread, it just
>>> happens that it's not the main thread.
>> Does that include the QOpenGLContext creation? We've thus far required that QOpenGLContext gets created on the GUI thread and then moved to the rendering thread.
> Yes, this includes creating the context on a non-GUI thread. Before
> tackling this in Qt3D I made a simple QtGui + OpenGL example that loops
> a number of times and in each loop creates a QWindow (on the GUI thread)
> and spawns a QThread subclass which creates a QOpenGLContext and then
> renders with it.
>
> Without any synchronisation I was getting strange crashes inside the QPA
> which iirc may be related to the use of the static context inside the
> QPA. However, as long as I serialise the QWindow::create() and the
> QOpenGLContext::create() calls between the two threads it works
> perfectly having the GL context created on a non-gui thread.
>
> I'll see if this is also the case on other platforms (i.e. if it's a
> limitation of the windows QPA). From the MSDN docs and reading around it
> looks like it should be fine to create hDCs on additional threads as
> long as each hDC is only used on one thread at a time. The window hWND
> has affinity with the creating thread which must be the GUI thread in Qt.
>
> I'll see about extracting the example I was using and adding it to QtGui.
>
> Cheers,
>
> Sean
>
>> cheers,
>> Gunnar
>>
>>> If ANGLE supports that then yes,
>>> we have an ES 2 backend that can be used. If not we'll need to try to
>>> come up with an alternative solution but to be honest we have enough
>>> variations dealing with real OpenGL implementations so we shall see how
>>> much of a time sink it becomes.
>>>
>>> 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
>> _______________________________________________
>> Development mailing list
>> Development at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/development
>
> --
> 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
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development


-- 
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




More information about the Development mailing list