[RFC PATCH 3/4] winevulkan: Add support for named video resources.

Zebediah Figura (she/her) zfigura at codeweavers.com
Mon May 3 15:14:56 CDT 2021


Hello Derek, it looks like you've put a lot of thought into this 
problem. I assume you've already discussed this privately in detail with 
our Direct3D maintainers, but for the benefit of the rest of us, I have 
a few questions:


1. How do you plan to accomodate the following (whether in the near or 
distant future):

  * CL_KHR_d3d11_sharing

  * CL_KHR_gl_sharing

  * Shared resources in d3d9-11, when using the OpenGL backend

  * Shared resources in d3d12

  * Shared resources between d3d9-12 devices, when using wined3d or 
libvkd3d on Windows

  * Shared resources between d3d9-12 devices and OpenGL or Vulkan, when 
using wined3d or libvkd3d on Windows


2. What is the reason for the "weak" reference counting introduced in 
this patch?


3. Why is winevideo.sys necessary at all, if wine_server_fd_to_handle() 
and wine_server_handle_to_fd() provide the necessary wrapping of an 
external FD object?


4. What kind of objects are Vulkan or Direct3D shared handles on 
Windows? E.g. what does NtQueryObject(ObjectTypeInformation) return? Are 
named Vulkan objects implemented using the NT namespace? How is this 
different between e.g. D3D11_RESOURCE_MISC_SHARED and 
D3D11_RESOURCE_MISC_SHARED_NTHANDLE, or between 
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT and 
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT?


5. Are D3D11_RESOURCE_MISC_SHARED / KMT handles cross-process? If not, 
should they be implemented using a process-local handle table somewhere 
instead of using NT handles? (Could/should we use D3DKMT* APIs from gdi32?)


6. Would it make more sense to use wineserver to manage shared resources 
instead of a separate driver, and thereby avoid introducing hacks into 
ntoskrnl?



More information about the wine-devel mailing list