Signed-off-by: Brendan Shanks bshanks@codeweavers.com ---
This patch has make_vulkan generate a 'loader/winevulkan.json.in' manifest file, it gets processed to 'loader/winevulkan.json', then installed by wine.inf to c:\windows\system32.
- winevulkan.json doesn't need any pre-processing, but '.in' was the only way I found to have it built/installed. Is there a better way?
- Is 'loader' the best place to generate the file? I feel like 'dlls/winevulkan' would be preferable, but that puts the file in a different place relative to wine.inf when running from the build tree or installed.
configure.ac | 1 + dlls/winevulkan/make_vulkan | 13 +++++++++++++ loader/Makefile.in | 3 ++- loader/wine.inf.in | 32 ++++++++++++++++++++++---------- loader/winevulkan.json.in | 7 +++++++ 5 files changed, 45 insertions(+), 11 deletions(-) create mode 100644 loader/winevulkan.json.in
diff --git a/configure.ac b/configure.ac index 7c3c6d2b67..5135a60a62 100644 --- a/configure.ac +++ b/configure.ac @@ -4099,6 +4099,7 @@ fonts \ loader/wine.inf \ loader/winebus.inf \ loader/winehid.inf \ +loader/winevulkan.json \ nls \ programs/msidb/msidb \ programs/msiexec/msiexec \ diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 3593410041..66543dceaf 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -71,6 +71,7 @@ WINE_VK_VERSION = (1, 1) WINE_VULKAN_H = "../../include/wine/vulkan.h" WINE_VULKAN_DRIVER_H = "../../include/wine/vulkan_driver.h" WINE_VULKAN_LOADER_SPEC = "../vulkan-1/vulkan-1.spec" +WINE_VULKAN_JSON = "../../loader/winevulkan.json.in" WINE_VULKAN_SPEC = "winevulkan.spec" WINE_VULKAN_THUNKS_C = "vulkan_thunks.c" WINE_VULKAN_THUNKS_H = "vulkan_thunks.h" @@ -3000,6 +3001,15 @@ def download_vk_xml(filename): if not os.path.isfile(filename): urllib.request.urlretrieve(url, filename)
+def generate_vulkan_json(f): + f.write("{\n") + f.write(" "file_format_version": "1.0.0",\n") + f.write(" "ICD": {\n") + f.write(" "library_path": "winevulkan.dll",\n") + f.write(" "api_version": "{0}"\n".format(VK_XML_VERSION)) + f.write(" }\n") + f.write("}\n") + def main(): parser = argparse.ArgumentParser() parser.add_argument("-v", "--verbose", action="count", default=0, help="increase output verbosity") @@ -3031,6 +3041,9 @@ def main(): with open(WINE_VULKAN_THUNKS_C, "w") as f: generator.generate_thunks_c(f, "wine_")
+ with open(WINE_VULKAN_JSON, "w") as f: + generate_vulkan_json(f) + with open(WINE_VULKAN_SPEC, "w") as f: generator.generate_vulkan_spec(f)
diff --git a/loader/Makefile.in b/loader/Makefile.in index f9b2fa9293..f3638fa4e0 100644 --- a/loader/Makefile.in +++ b/loader/Makefile.in @@ -10,7 +10,8 @@ SOURCES = \ wine.pl.UTF-8.man.in \ wine_info.plist.in \ winebus.inf.in \ - winehid.inf.in + winehid.inf.in \ + winevulkan.json.in
PROGRAMS = $(WINELOADER_PROGRAMS) INSTALL_LIB = $(WINELOADER_PROGRAMS) diff --git a/loader/wine.inf.in b/loader/wine.inf.in index 8267ef34dc..3ae4273671 100644 --- a/loader/wine.inf.in +++ b/loader/wine.inf.in @@ -30,7 +30,7 @@ signature="$CHICAGO$" RegisterDlls=RegisterDllsSection WineFakeDlls=FakeDllsWin32,FakeDlls UpdateInis=SystemIni -CopyFiles=InfFiles,NlsFiles +CopyFiles=InfFiles,NlsFiles,VulkanFiles AddReg=\ Classes,\ ContentIndex,\ @@ -48,13 +48,14 @@ AddReg=\ SessionMgr,\ Tapi,\ Timezones,\ - LicenseInformation + LicenseInformation,\ + Vulkan
[DefaultInstall.NT] RegisterDlls=RegisterDllsSection WineFakeDlls=FakeDllsWin32,FakeDlls UpdateInis=SystemIni -CopyFiles=InfFiles,NlsFiles +CopyFiles=InfFiles,NlsFiles,VulkanFiles AddReg=\ Classes,\ ContentIndex,\ @@ -73,14 +74,15 @@ AddReg=\ Tapi,\ Timezones,\ VersionInfo,\ - LicenseInformation + LicenseInformation,\ + Vulkan
[DefaultInstall.ntamd64] RegisterDlls=RegisterDllsSection WineFakeDlls=FakeDllsWin64,FakeDlls WinePreInstall=Wow64 UpdateInis=SystemIni -CopyFiles=InfFiles,NlsFiles +CopyFiles=InfFiles,NlsFiles,VulkanFiles AddReg=\ Classes,\ ContentIndex,\ @@ -100,14 +102,15 @@ AddReg=\ Tapi,\ Timezones,\ VersionInfo.ntamd64,\ - LicenseInformation + LicenseInformation,\ + Vulkan
[DefaultInstall.ntarm64] RegisterDlls=RegisterDllsSection WineFakeDlls=FakeDllsWin64,FakeDlls WinePreInstall=Wow64 UpdateInis=SystemIni -CopyFiles=InfFiles,NlsFiles +CopyFiles=InfFiles,NlsFiles,VulkanFiles AddReg=\ Classes,\ ContentIndex,\ @@ -127,12 +130,13 @@ AddReg=\ Tapi,\ Timezones,\ VersionInfo.ntamd64,\ - LicenseInformation + LicenseInformation,\ + Vulkan
[Wow64Install] RegisterDlls=RegisterDllsSection WineFakeDlls=FakeDllsWin32,FakeDllsWow64 -CopyFiles=NlsFiles +CopyFiles=NlsFiles,VulkanFiles AddReg=\ CurrentVersion,\ CurrentVersionWow64,\ @@ -142,7 +146,8 @@ AddReg=\ Misc,\ Tapi,\ VersionInfo.ntamd64,\ - LicenseInformation + LicenseInformation,\ + Vulkan
[Wow64Install.ntarm64] WineFakeDlls=FakeDllsWin32 @@ -3888,6 +3893,9 @@ HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-Solitaire-EnableGame",0x HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-SpiderSolitaire-EnableGame",0x10001,0x00000001 HKLM,Software\Wine\LicenseInformation,"Shell-PremiumInBoxGames-Chess-EnableGame",0x10001,0x00000001
+[Vulkan] +HKLM,Software\Khronos\Vulkan\Drivers,"%11%\winevulkan.json",0x10001,0 + [InfFiles] winebus.inf winehid.inf @@ -3965,9 +3973,13 @@ normnfd.nls normnfkc.nls normnfkd.nls
+[VulkanFiles] +winevulkan.json + [WineSourceDirs] NlsFiles=nls
[DestinationDirs] InfFiles = 17 NlsFiles = 11 +VulkanFiles = 11 diff --git a/loader/winevulkan.json.in b/loader/winevulkan.json.in new file mode 100644 index 0000000000..be1b278ddb --- /dev/null +++ b/loader/winevulkan.json.in @@ -0,0 +1,7 @@ +{ + "file_format_version": "1.0.0", + "ICD": { + "library_path": "winevulkan.dll", + "api_version": "1.1.130" + } +}