Swap region / Swap with hint

#1

Hi, I need to render/swap into a region of a window.
In OpenGL (Win32) there seems to be this perfect glAddSwapHintRectWIN function.
Is there something similar in Vulkan via extension or whatever?

#2

VK_KHR_incremental_present maybe

#3

Perfect!
So I will simply pass the x,y,width,height data to the shader where I want the scene to be mapped to and later use VK_KHR_incremental_present so no other window content is touched and thus I can draw OpenGL and Vulkan in the same window side-by-side. Unlimited power!

Thanks!

#4

… You really don’t need incremental present for that. Just have one render to an image that’s shared by both, then have the other API receive that image and show it along with the stuff rendered by that API.

#5

“receive that image” … I assume there is GPU memory sharing possible between OpenGL and Vulkan?
Because I don’t want to sacrifice efficiency by down- and uploading the data again.

Btw: I have an OpenGL and a Vulkan engine (almost with the same internal structure, something I’m very proud of, especially the async multithreading(Vulkan)/pseudomultithreading(OpenGL)) working with the same data and I want them in the same window.

#6

Yes.

#7

I assume you mean VK_NV_external_memory.
But this extension is only for Nvidia cards. What about AMD and Intel?
I couldn’t find a general extension.

Besides, this side-by-side is just an example.

#8

Do you see an “NV” on the ends of the structs I linked to? I didn’t point to an extension; I pointed to core Vulkan 1.1 functionality. It’s not even a KHR extension in 1.1; it’s just part of Vulkan.

#9

Ah, no sorry. I didn’t see the link.

Thanks.

I hope this helps someone having a similar problem.

#10

After I implemented the " VK_KHR_incremental_present" stuff I noticed my graphics card doesn’t support it.
I have a GeForce GTX 1070 and just upgraded drivers and Vulkan SDK.
It seems the support for this extension is limited at best.

What options do I have to only update a subsection of a window with vulkan and the available extensions for a 1070?
(Except sharing the result over to OpenGL and do the HintSwap call there.)

I mean I can’t imagine being the only one rendering stuff in windows together with 2D and other 3D content. (Qt & Co.)