[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