On 5/18/21 11:06 AM, Georg Lehmann wrote:
On 17.05.21 22:00, Derek Lesho wrote:
Signed-off-by: Derek Lesho dlesho@codeweavers.com
This patch is dead code, being used later for VK_KHR_external_memory_fd. I was informed that commits like this are normal for winevulkan, since exposing an extension w/ stubs can break applications.
dlls/winevulkan/make_vulkan | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 7f76d328fc8..7e1d7c0f043 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -120,6 +120,9 @@ UNSUPPORTED_EXTENSIONS = [ "VK_NV_external_memory_win32", ] +# Extensions which aren't present on the win32 platform, but which winevulkan may use. +UNEXPOSED_EXTENSIONS = []
# The Vulkan loader provides entry-points for core functionality and important # extensions. Based on vulkan-1.def this amounts to WSI extensions on 1.0.51. CORE_EXTENSIONS = [ @@ -521,7 +524,7 @@ class VkEnumValue(object): class VkFunction(object): - def __init__(self, _type=None, name=None, params=[], extensions=[], alias=None): + def __init__(self, _type=None, name=None, params=[], alias=None): self.extensions = [] self.name = name self.type = _type @@ -665,6 +668,9 @@ class VkFunction(object): def needs_private_thunk(self): return self.thunk_type == ThunkType.PRIVATE + def needs_exposed(self): + return not any(x for x in self.extensions if x in UNEXPOSED_EXTENSIONS)
Shouldn't this be all instead of any? If we support any extension the function should be exposed, even if it's also provided by another extension that we don't expose.
Yep, I realized this while replying to Liam's mail.
def pfn(self, prefix="p", call_conv=None, conv=False): """ Create function pointer. """ @@ -2656,6 +2662,9 @@ class VkGenerator(object): if not vk_func.is_required(): continue + if not vk_func.needs_exposed(): + continue
if vk_func.is_global_func(): continue @@ -2676,6 +2685,8 @@ class VkGenerator(object): for ext in self.registry.extensions: if ext["type"] != "device": continue + if ext["name"] in UNEXPOSED_EXTENSIONS: + continue f.write(" "{0}",\n".format(ext["name"])) f.write("};\n\n") @@ -2685,6 +2696,8 @@ class VkGenerator(object): for ext in self.registry.extensions: if ext["type"] != "instance": continue + if ext["name"] in UNEXPOSED_EXTENSIONS: + continue f.write(" "{0}",\n".format(ext["name"])) f.write("};\n\n") @@ -2746,6 +2759,8 @@ class VkGenerator(object): for vk_func in self.registry.funcs.values(): if not vk_func.is_required(): continue + if not vk_func.needs_exposed(): + continue if vk_func.loader_thunk_type == ThunkType.NONE: continue @@ -2767,6 +2782,8 @@ class VkGenerator(object): continue if vk_func.needs_thunk() and not vk_func.needs_private_thunk(): continue + if not vk_func.needs_exposed(): + continue if vk_func.is_core_func(): f.write("{0};\n".format(vk_func.prototype("WINAPI", prefix=prefix))) @@ -2874,6 +2891,8 @@ class VkGenerator(object): for vk_func in self.registry.funcs.values(): if not vk_func.is_required(): continue + if not vk_func.needs_exposed(): + continue if vk_func.loader_thunk_type != ThunkType.PUBLIC: continue @@ -2883,6 +2902,8 @@ class VkGenerator(object): for vk_func in self.registry.device_funcs: if not vk_func.is_required(): continue + if not vk_func.needs_exposed(): + continue f.write(" {{"{0}", &{0}}},\n".format(vk_func.name)) f.write("};\n\n") @@ -2891,6 +2912,8 @@ class VkGenerator(object): for vk_func in self.registry.phys_dev_funcs: if not vk_func.is_required(): continue + if not vk_func.needs_exposed(): + continue f.write(" {{"{0}", &{0}}},\n".format(vk_func.name)) f.write("};\n\n") @@ -2899,6 +2922,8 @@ class VkGenerator(object): for vk_func in self.registry.instance_funcs: if not vk_func.is_required(): continue + if not vk_func.needs_exposed(): + continue f.write(" {{"{0}", &{0}}},\n".format(vk_func.name)) f.write("};\n\n") @@ -2956,6 +2981,8 @@ class VkGenerator(object): for vk_func in self.registry.funcs.values(): if not vk_func.is_required(): continue + if not vk_func.needs_exposed(): + continue if vk_func.loader_thunk_type == ThunkType.NONE: continue