felixdoerre / primus_vk

Vulkan GPU-offloading layer
BSD 2-Clause "Simplified" License
229 stars 17 forks source link

Use VK external fd extensions (they are core 1.1 spec) #25

Closed boberfly closed 5 years ago

boberfly commented 5 years ago

Hi all,

I was wondering if it's possible to use these extensions for better syncing between the display's swapchan with the rendering device's images?

https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VK_KHR_external_memory

https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VK_KHR_external_fence

https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VK_KHR_external_semaphore

I'd like to implement this but I am not very adept at the current codebase. After discovering https://github.com/felixdoerre/primus_vk/issues/24 I did notice it was full of hitches.

Cheers

felixdoerre commented 5 years ago

As already discussed in #2 the external fd extensions can only be used to share memory between two applications accessing the same device. Exporting memory and importing it to another physical device is not possible with that extensions. It can be seen in this table (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#external-memory-handle-types-compatibility) that the device and driver UUID must match.

As to external fences and semaphores I can not see where additional synchronization is needed in the current source code where those extensions can help.

On my system I don't observe any hitches. All games I tested so far run fluently.

felixdoerre commented 5 years ago

I already have #2 open for thought and ideas how to reduce image copy, but at the moment there seems no solution. So I am closing this issue as duplicate of #2.