[PATCH 00/10] winevulkan

Roderick Colenbrander thunderbird2k at gmail.com
Tue Feb 20 00:29:37 CST 2018


Hi all,

This is the first wave of patches for my Vulkan ICD for Wine. There have
been many changes and improvements since I first posted my work.

In particular there is a winevulkan library now, which implements common code
between ICDs instead of winex11 and other drivers being the ICD. In Vulkan
there is no clear OpenGL / WGL separation, but I managed to separate things
into Window System Integration (WSI) and a few core Vulkan functions.

Feature wise the ICD will be at Vulkan 1.0.51 and core functionality and
various extension will work. Two features not there yet are child window
rendering and application provided memory allocators. Memory allocation
will come later and for child window rendering I haven't found any application
using it yet.

The code has been tested with many Vulkan applications and major games
e.g. Doom and Wolfenstein II thanks to my testers. All seem to work quite well.

The full 40+ patches can be found here:
https://github.com/roderickc/wine-vulkan

See my github page as well for instructions how to use the ICD (registry keys,
json file). I intend to add this into Wine later. Not sure yet how. Registry
keys can automate using DllRegisterServer. Not sure yet how we want to deal
with the json file. We can either bundle it as a file somehow or I could
generate it from DllRegisterServer. Not sure what is preferred.

See khronos documentation for details on the ICD interface:
https://github.com/LunarG/VulkanSamples/blob/master/loader/LoaderAndLayerInterface.md

Thanks,
Roderick

Roderick Colenbrander (10):
  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.
  winex11: Add Vulkan stubs.
  winex11: Implement vkEnumerateInstanceExtensionProperties.
  winevulkan/winex11: Implement vkCreateInstance.
  winevulkan: Add instance funcs stubs.
  winevulkan: Implement vkDestroyInstance.

 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         |  235 ++++
 dlls/winevulkan/vulkan_private.h |   51 +
 dlls/winevulkan/vulkan_thunks.c  |  104 ++
 dlls/winevulkan/vulkan_thunks.h  |   12 +
 dlls/winevulkan/winevulkan.spec  |    2 +
 dlls/winex11.drv/Makefile.in     |    3 +-
 dlls/winex11.drv/init.c          |   16 +
 dlls/winex11.drv/vulkan.c        |  151 +++
 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            | 2678 ++++++++++++++++++++++++++++++++++++++
 include/wine/vulkan_driver.h     |   23 +
 30 files changed, 3390 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/vulkan_thunks.h
 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.14.3




More information about the wine-devel mailing list