[Development] Qt 'minimal' platform no rendering alpha/opacity.

Agocs Laszlo laszlo.agocs at theqtcompany.com
Thu Apr 23 17:04:20 CEST 2015


It won't write anything to the framebuffer though. As long as you do not create an actual window (only use QOffscreenSurface, not QWindow) and do not call swapBuffers() there will be nothing written out. How and when the EGL implementation opens the framebuffer is not under Qt's or the application's control.


Best regards,

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 Paul Knopf <theonlylawislove at gmail.com>
Sent: Thursday, April 23, 2015 3:38 PM
To: Sean Harmer
Cc: development at qt-project.org
Subject: Re: [Development] Qt 'minimal' platform no rendering alpha/opacity.

Sean,

I took a look at the example, and this all looks good. However, I think my platform will still grab a handle to the framebuffer. I will be using an i.MX6 device, and the configuration would use the following EGLFS hook.

https://github.com/qtproject/qtbase/blob/befe1e37e28db95a79622d628a338feaa8eee77b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.cpp

QEglFSVivIntegration::platformInit(), it looks it still opens the framebuffer, even if we plan on doing only off-screen rendering. The problem is that, I need to open/close/manage the linux framebuffer myself, which is the whole point of doing offscreen rendering.

Maybe I can create a custom EGLFS hook, based off of viv, but return a dummy size, and do no initialization. If I am doing strictly off-screen rendering, can I be sure that "QEglFSVivIntegration::platformDisplay()", "QEglFSVivIntegration::createNativeWindow()", and "QEglFSVivIntegration::destroyNativeWindow()" will never be called?


On Mon, Apr 20, 2015 at 5:03 AM, Sean Harmer <sean.harmer at kdab.com<mailto:sean.harmer at kdab.com>> wrote:
On 20/04/2015 08:25, Paul Knopf wrote:
Thanks a lot! This worked. I now have a valid alpha component that I can send to my hard vendors API for FPGA video overlay.

With this said, I would REALLY like to support OpenGL (for Qt Quick 2/qml). Here is an image<http://i.imgur.com/hhlcbb9.jpg> of what I am trying to essentially do. What are your thoughts implementing this in Qt?

Here is what I need my monitor output to be.

The original buffer:   size  w         /  h         :   [R G B A][R G B A][R G B A][...]
The output i want:    size (w*.25) / (h*.25):    [R G B][A R G][B A R][G B A][...]

My thoughts are to Render OpenGL off screen (not using framebuffer), then have a thread that periodically captures the output (RGBA) and sends it my linux framebuffer. My output doesn't need high FPS. I understand that sending the extra alpha will increase the size of my resolution by 25%.. The FPGA component/board will identify itself as having a resolution of 1350 (1080 * .25) so that it can internally translate to 1080 with an alpha channel. Does the EGLFS support off-screen rendering? Maybe then, I could create 1080 opengl context off-screen, and then output it, including alpha, to the 1350 framebuffer.

OpenGL supports offscreen rendering as long as the QPA supports OpenGL.

* Create a QOffscreenSurface
* Create a QOpenGLContext
* Create a suitable Framebuffer Object with a colour texture attachment and most likely a depth and stencil attachment.
* Bind the FBO as the GL_BUFFER (both read and write binding points)
* Draw stuff
* Read back the texture attached to the FBO as needed

If you are wanting to use this approach to render Qt Quick 2 content, then take a look at the QQuickRenderControl class and accompanying example that ships with Qt.

Cheers,

Sean

--
Dr Sean Harmer | sean.harmer at kdab.com<mailto:sean.harmer at kdab.com> | Managing Director UK
Klarälvdalens Datakonsult AB, a KDAB Group company
Tel. Sweden (HQ) +46-563-540090<tel:%2B46-563-540090>, USA +1-866-777-KDAB(5322)
KDAB - Qt Experts - Platform-independent software solutions

_______________________________________________
Development mailing list
Development at qt-project.org<mailto:Development at qt-project.org>
http://lists.qt-project.org/mailman/listinfo/development




--
Thanks!

~Paul
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20150423/419c67d4/attachment.html>


More information about the Development mailing list