[PATCH 00/10] winevulkan

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