Hi,

Sean's summary is perfect. If you are after integrating your Vulkan renderer 
into a non-Quick app, use a QWindow and QWidget::createWindowContainer, like 
the D3D12 samples did. All you need is a native window handle (e.g. a HWND on 
Windows which is exactly what QWindow::winId() will give you; on other 
platforms there are backend-specific means to acquire the native window via 
QPlatformNativeInterface).

Integrating Vulkan rendering into an OpenGL-based Qt Quick scene can be more 
complicated, so at first I would rather look at the (unfortunately 
vendor-specific) GL_NV_draw_vulkan_image extension. This, in combination with 
GL_KHR_vulkan_glsl, is likely the easiest way to get started and combine the 
two worlds.

Right now Qt Quick is undergoing certain changes to make it more modular, 
focusing on OpenGL, D3D, and the QPainter-based 2D Renderer for the time being. 
This will allow multiple backends in the future, instead of being tied to 
OpenGL (or the current iteration of the separate, somewhat hackish 2D 
renderer). There are a number of issues to be investigated still, but we expect 
most of the work to become available in Qt 5.8 and beyond.

However, it is important to note that a full-blown Vulkan (or Metal for that 
matter) backend for Qt Quick is not something that will be rushed, so I 
wouldn't expect much on that front short-term. The benefits of the new 
low-level APIs are expected to be fairly limited for the workloads typical user 
interfaces generate. (this naturally does not apply to Qt 3D)

Best regards,
Laszlo
________________________________________
From: Development 
<[email protected]> on behalf of 
Sean Harmer <[email protected]>
Sent: Saturday, April 9, 2016 11:06:23 AM
To: [email protected]
Cc: Tom Kulaga
Subject: Re: [Development] Vulkan

On Saturday 09 April 2016 01:57:24 Tom Kulaga wrote:
> Hi All,
>
> Is anyone actively working on vulkan integration? Or even a QVulkanWidget?
> I saw that d3d12 had a preview widget so thought it was reasonable to ask.
>
> If anyone isn't I'm keen to have a crack. In terms of implementation, is it
> as naively simple as creating a new widget similar to the QOpenGLWidget
> one, just to get a drawable canvas up and running? I believe that on Linux
> a xcb_window_t is used for vulkan samples and deep in the QPA I saw it too.
>
> I was wondering if for a novice like me this would be feasible to actually
> do?
>
> Does the whole rendering stack need to transfer over to vulkan?

It all depends what level of integration you are after. Using a QWindow and
using Vulkan with it doesn't require much. Making something equivalent to
QOpenGLWidget is much more work as you have to worry about compositing
QPainter content into the window too.

Making a Vulkan backend for Qt Quick 2 is also more work, considerably more
work than much of the other low hanging fruits that could be used to improve
performance there on the existing OpenGL backend. Although, like the D3D12
backend it might give better results on windows (for Vulkan capable hardware).

Putting a Vulkan backend on Qt 3D is a very real possibility and one where
Vulkan could potentially make a big impact. This is something I want to
investigate later after we have done a stable release or two of Qt 3D. The
good thing is that Qt 3D's architecture maps very well to Vulkan (by design).

Some IHV's provide drivers that have OpenGL/Vulkan interop in that you can use
both Vulkan and OpenGL on the same surface which would be another interesting
option if this support becomes widespread.

If you want to have a go, then certainly nobody is going to stop you and you
may well get some help. We have some early proof of concept stuff we can look
to tidy up and publish along these lines.

Cheers,

Sean
--
Dr Sean Harmer | [email protected] | Managing Director UK
Klarälvdalens Datakonsult AB, a KDAB Group company
Tel. UK +44 (0)1625 809908, Sweden (HQ) +46-563-540090
KDAB - Qt Experts - Platform-independent software solutions
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to