[Interest] Quick2 OpenGL inefficiency?

Jani Tykka jtykka at broadsoft.com
Wed Apr 6 11:12:24 CEST 2016


Thank you for your suggestions.
We did implement rendering with using two FBOs, using glTexSubImage2D and
OpenGL directly without Qt wrappers.
The performance is quite good in most cases.

Noticed that there is still a huge performance difference between
MacBookPro Retina (wo/ external GPU) and
Mac Air with even slower CPU and Intel integrated. On Air the rendering is
really fast and it uses lot less CPU.
( Same video call on Air ~120% and ~340% on MBP. ) The only difference
seems to be the Retina.
 Is there anything that can be done to improve FBO based rendering on
Retina?
Something like disabling 'the retina awareness' for FBOs? We can´t do that
for the whole application for obvious reasons.

 Thanks


On Tue, Mar 8, 2016 at 9:40 AM, Filip Piechocki <fpiechocki at gmail.com>
wrote:

> I don't know how you produce the video frames, but check that the software
> you are using might be able to produce OpenGL texture directly (not the
> buffer data). If not then here are some useful links:
>
> http://stackoverflow.com/questions/9863969/updating-a-texture-in-opengl-with-glteximage2d
> http://www.gamedev.net/topic/641283-fastest-way-to-stream-video-to-texture/
>
> So basically you'll need to use glTexSubImage2D directly (and you probably
> do not need QImage at all) and for custom OpenGL rendering you can use
> QQuickFramebufferObject as your DisplayItem:
>
> http://blog.qt.io/blog/2015/05/11/integrating-custom-opengl-rendering-with-qt-quick-via-qquickframebufferobject/
>
> On Tue, Mar 8, 2016 at 7:00 AM, Jani Tykka <jtykka at broadsoft.com> wrote:
>
>> I'm creating the image from buffer which is unsigned char buffer
>> containing video frame data
>> QImage( buffer, width, height, QImage::Format_RGB32 );
>>
>>
>>
>> On Mon, Mar 7, 2016 at 10:05 PM, Filip Piechocki <fpiechocki at gmail.com>
>> wrote:
>> >
>> > How are you generating those images? What do they represent?
>> >
>> > On Mar 7, 2016 20:55, "Jani Tykka" <jtykka at broadsoft.com> wrote:
>> >>
>> >> Images are passed from another thread in rate 15-30 fps. Is there an
>> example available how to achieve Image to OpenGL texture and use it in
>> scene graph?
>> >>
>> >> On Mon, Mar 7, 2016 at 5:11 PM, Filip Piechocki <fpiechocki at gmail.com>
>> wrote:
>> >>>
>> >>> And where it comes from? How frequent it happens? Probably the best
>> thing here would be to generate this image as an OpenGL texture and then
>> use in the Qt's scene graph.
>> >>>
>> >>> On Mon, Mar 7, 2016 at 4:04 PM, Jani Tykka <jtykka at broadsoft.com>
>> wrote:
>> >>>>
>> >>>> Yes, the image is always changed when the update is invoked.
>> >>>>
>> >>>> On Mon, Mar 7, 2016 at 4:43 PM, Filip Piechocki <
>> fpiechocki at gmail.com> wrote:
>> >>>>>
>> >>>>> Hi,
>> >>>>>
>> >>>>> Why are you re-creating the texture on every node update? Does the
>> m_Renderer->getImage() really changes? My first guess would be that the
>> texture creation from image is the most costly part here (uploading the
>> texture to GPU?) and I would do this only if necessary (the image really
>> changes).
>> >>>>>
>> >>>>> BR,
>> >>>>> Filip
>> >>>>>
>> >>>>> On Mon, Mar 7, 2016 at 3:04 PM, Jani Tykka <jtykka at broadsoft.com>
>> wrote:
>> >>>>>>
>> >>>>>> Hi,
>> >>>>>>
>> >>>>>> We are rendering QImages on QQuickItem as following:
>> >>>>>>
>> >>>>>> QSGNode * DisplayItem::updatePaintNode( QSGNode * node,
>> UpdatePaintNodeData * /*data*/ )
>> >>>>>>
>> >>>>>> {
>> >>>>>>
>> >>>>>> QSGSimpleTextureNode * n = static_cast< QSGSimpleTextureNode* >(
>> node );
>> >>>>>>
>> >>>>>> if ( !n )
>> >>>>>>
>> >>>>>> n = new QSGSimpleTextureNode;
>> >>>>>>
>> >>>>>>
>> >>>>>> n->setRect( 0, 0, width(), height() );
>> >>>>>>
>> >>>>>>
>> >>>>>> delete m_Texture;
>> >>>>>>
>> >>>>>>
>> >>>>>> m_Texture = window()->createTextureFromImage(
>> m_Renderer->getImage() );
>> >>>>>>
>> >>>>>> n->setTexture( m_Texture );
>> >>>>>>
>> >>>>>>
>> >>>>>> return n;
>> >>>>>>
>> >>>>>> }
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> It seems that computers with separate GPU there is a decent amount
>> of CPU utilised. We are running into problems if the machine lacks GPU,
>> then with large images the CPU usage grows drastically. Any suggestions how
>> to improve large image painting on QQuickItem? With Quick1 and painting
>> directly on HWND/CocoaWindow we didn't experience this high CPU usage.
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> This email is intended solely for the person or entity to which it
>> is addressed and may contain confidential and/or privileged information. If
>> you are not the intended recipient and have received this email in error,
>> please notify BroadSoft, Inc. immediately by replying to this message, and
>> destroy all copies of this message, along with any attachment, prior to
>> reading, distributing or copying it.
>> >>>>>>
>> >>>>>> _______________________________________________
>> >>>>>> Interest mailing list
>> >>>>>> Interest at qt-project.org
>> >>>>>> http://lists.qt-project.org/mailman/listinfo/interest
>> >>>>>>
>> >>>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>> Jani Tykkä
>> >>>> Development Manager | BroadSoft, Inc. | +358 44 596 0587 |
>> jtykka at broadsoft.com
>> >>>>
>> >>>>
>> >>>> This email is intended solely for the person or entity to which it
>> is addressed and may contain confidential and/or privileged information. If
>> you are not the intended recipient and have received this email in error,
>> please notify BroadSoft, Inc. immediately by replying to this message, and
>> destroy all copies of this message, along with any attachment, prior to
>> reading, distributing or copying it.
>> >>>
>> >>>
>> >>
>> >>
>> >>
>> >> --
>> >> Jani Tykkä
>> >> Development Manager | BroadSoft, Inc. | +358 44 596 0587 |
>> jtykka at broadsoft.com
>> >>
>> >>
>> >> This email is intended solely for the person or entity to which it is
>> addressed and may contain confidential and/or privileged information. If
>> you are not the intended recipient and have received this email in error,
>> please notify BroadSoft, Inc. immediately by replying to this message, and
>> destroy all copies of this message, along with any attachment, prior to
>> reading, distributing or copying it.
>>
>>
>>
>>
>> --
>> Jani Tykkä
>> Development Manager | BroadSoft, Inc. | +358 44 596 0587 |
>> jtykka at broadsoft.com
>>
>>
>> This email is intended solely for the person or entity to which it is
>> addressed and may contain confidential and/or privileged information. If
>> you are not the intended recipient and have received this email in error,
>> please notify BroadSoft, Inc. immediately by replying to this message, and
>> destroy all copies of this message, along with any attachment, prior to
>> reading, distributing or copying it.
>>
>
>


-- 
*Jani Tykkä*
Development Manager | BroadSoft, Inc. | +358 44 596 0587 |
jtykka at broadsoft.com

-- 


This email is intended solely for the person or entity to which it is 
addressed and may contain confidential and/or privileged information. If 
you are not the intended recipient and have received this email in error, 
please notify BroadSoft, Inc. immediately by replying to this message, and 
destroy all copies of this message, along with any attachment, prior to 
reading, distributing or copying it.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20160406/b86a018a/attachment.html>


More information about the Interest mailing list