From: Roderick Colenbrander Subject: Re: [PATCH 08/10] winevulkan/winex11: Implement vkCreateInstance. Message-Id: Date: Wed, 21 Feb 2018 11:33:20 -0800 In-Reply-To: References: <20180220062947.4192-1-thunderbird2k@gmail.com> <20180220062947.4192-9-thunderbird2k@gmail.com> On Wed, Feb 21, 2018 at 4:22 AM, Henri Verbeet wrote: > On 20 February 2018 at 09:59, Roderick Colenbrander > wrote: >> @@ -80,6 +80,7 @@ AC_ARG_WITH(sane, AS_HELP_STRING([--without-sane],[do not use SANE (scanner >> AC_ARG_WITH(tiff, AS_HELP_STRING([--without-tiff],[do not use TIFF])) >> AC_ARG_WITH(udev, AS_HELP_STRING([--without-udev],[do not use udev (plug and play support)])) >> AC_ARG_WITH(v4l, AS_HELP_STRING([--without-v4l],[do not use v4l1 (v4l support)])) >> +AC_ARG_WITH(vulkan, AS_HELP_STRING([--without-vulkan],[do not use vulkan])) > [do not use Vulkan], I suppose. > >> + [libvulkan ${notice_platform}development files not found, vulkan won't be supported.]) > "Vulkan" > >> +static void *wine_vk_alloc_dispatchable_object(size_t size) >> +{ >> + struct wine_vk_dispatchable_object *object = heap_alloc(size); >> + >> + if (!object) >> + return NULL; >> + >> + /* Set special header for ICD loader. */ >> + ((struct wine_vk_base*)object)->loader_magic = VULKAN_ICD_MAGIC_VALUE; >> + >> + return object; >> +} > struct wine_vk_dispatchable_object doesn't seem to add a lot. I.e.: > > struct wine_vk_base *object; > > if (!(object = heap_alloc(size))) > return NULL; > > object->loader_magic = VULKAN_ICD_MAGIC_VALUE; > > return object; > It is simple right now. Long-term will become more involved (and may add wine_vk_alloc too) when adding VkAllocationCallbacks. Need to track more state like VkSystemAllocationScope, pointers back to user callbacks and a user object. >> static VkResult WINAPI wine_vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, >> VkInstance *pInstance) >> { >> - TRACE("%p %p %p\n", pCreateInfo, pAllocator, pInstance); >> - return vk_funcs->p_vkCreateInstance(pCreateInfo, pAllocator, pInstance); >> + VkInstance instance = NULL; > I think "struct VkInstance_T *instance;" may be clearer, but perhaps > it doesn't matter all that much. Thanks for catching I intended to use _T when I need to look inside the object, but skipped this.