[PATCH 0/9 v2] winevulkan: Add vulkan ICD.

Roderick Colenbrander thunderbird2k at gmail.com
Mon Nov 6 02:08:16 CST 2017


Hi all,

This is a rework of my previous ICD patch series. Instead of the
graphics drivers implementing the ICD interface there is now a
winevulkan proxy library. It determines the appropriate driver
through the HWND.

The series defines a Vulkan driver interface. Originally I expected
this to consist of the 2 Vulkan ICD calls vk_icdGetInstanceProcAddress
and vk_icdNegotiateICDInterfaceVersion. Instead, exposing the global
Vulkan calls vkCreateInstance and vkEnumerateInstanceExtensionProperties
made more sense. They are the only directly exposed Vulkan APIs; all others
depend on object state and are generally exposed through dispatch tables
on objects. I don't expect other driver calls to be needed.

For now the easiest way to load the ICD is to add a registry key:
[HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\Drivers\]
"C:\Windows\System32\winevulkan.json"=dword:00000000

winevulkan.json:
{
    "file_format_version": "1.0.0",
    "ICD": {
        "library_path": "c:\\windows\\system32\\winevulkan.dll",
        "api_version": "1.0.51"
    }
}

The Vulkan Loader is required to run applications. It can be obtained
through the Vulkan SDK. At this point no applications work, but with
another 5-6 patches vulkaninfo demo as distributed by the Vulkan SDK will
function.

Thanks,
Roderick

Roderick Colenbrander (9):
  vulkan: Add initial Wine vulkan header.
  winevulkan: Add stub ICD.
  winevulkan: Implement vk_icdNegotiateICDInterfaceVersion.
  winevulkan: Implement global Vulkan function stubs and loading.
  winevulkan: Define vulkan driver interface and call it.
  winex11: Add Vulkan stubs and call them from winevulkan.
  winex11: Implement vkEnumerateInstanceExtensionProperties.
  winex11: Implement vkCreateInstance.
  winevulkan: Add instance funcs stubs.

 configure.ac                     |   10 +
 dlls/gdi32/Makefile.in           |    3 +-
 dlls/gdi32/dibdrv/dc.c           |    2 +
 dlls/gdi32/driver.c              |    6 +
 dlls/gdi32/enhmfdrv/dc.c         |    1 +
 dlls/gdi32/enhmfdrv/init.c       |    1 +
 dlls/gdi32/freetype.c            |    1 +
 dlls/gdi32/gdi32.spec            |    3 +
 dlls/gdi32/mfdrv/init.c          |    1 +
 dlls/gdi32/path.c                |    1 +
 dlls/gdi32/vulkan.c              |   41 +
 dlls/wineandroid.drv/init.c      |    1 +
 dlls/winemac.drv/gdi.c           |    1 +
 dlls/wineps.drv/init.c           |    1 +
 dlls/winevulkan/Makefile.in      |    8 +
 dlls/winevulkan/version.rc       |   27 +
 dlls/winevulkan/vulkan.c         |  164 +++
 dlls/winevulkan/vulkan_private.h |   15 +
 dlls/winevulkan/vulkan_thunks.c  |  105 ++
 dlls/winevulkan/winevulkan.spec  |    2 +
 dlls/winex11.drv/Makefile.in     |    3 +-
 dlls/winex11.drv/init.c          |   16 +
 dlls/winex11.drv/vulkan.c        |  186 +++
 dlls/winex11.drv/x11drv.h        |    1 +
 dlls/winex11.drv/xrender.c       |    1 +
 include/config.h.in              |    3 +
 include/wine/gdi_driver.h        |    5 +-
 include/wine/vulkan.h            | 2367 ++++++++++++++++++++++++++++++++++++++
 include/wine/vulkan_driver.h     |   40 +
 29 files changed, 3013 insertions(+), 3 deletions(-)
 create mode 100644 dlls/gdi32/vulkan.c
 create mode 100644 dlls/winevulkan/Makefile.in
 create mode 100644 dlls/winevulkan/version.rc
 create mode 100644 dlls/winevulkan/vulkan.c
 create mode 100644 dlls/winevulkan/vulkan_private.h
 create mode 100644 dlls/winevulkan/vulkan_thunks.c
 create mode 100644 dlls/winevulkan/winevulkan.spec
 create mode 100644 dlls/winex11.drv/vulkan.c
 create mode 100644 include/wine/vulkan.h
 create mode 100644 include/wine/vulkan_driver.h

-- 
2.13.6




More information about the wine-patches mailing list