[PATCH 02/10] winex11: Add stub Vulkan ICD

Józef Kucia joseph.kucia at gmail.com
Wed Nov 1 05:04:05 CDT 2017


On Tue, Oct 31, 2017 at 6:24 PM, Roderick Colenbrander
<thunderbird2k at gmail.com> wrote:
> Signed-off-by: Roderick Colenbrander <thunderbird2k at gmail.com>
> ---
>  configure.ac                      |  9 +++++++
>  dlls/winex11.drv/Makefile.in      |  1 +
>  dlls/winex11.drv/vulkan.c         | 54 +++++++++++++++++++++++++++++++++++++++
>  dlls/winex11.drv/winex11.drv.spec |  4 +++
>  include/config.h.in               |  3 +++
>  5 files changed, 71 insertions(+)
>  create mode 100644 dlls/winex11.drv/vulkan.c
>
> diff --git a/configure.ac b/configure.ac
> index c02253bb86..4766c0e6c0 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -78,6 +78,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]))
>  AC_ARG_WITH(xcomposite,AS_HELP_STRING([--without-xcomposite],[do not use the Xcomposite extension]),
>              [if test "x$withval" = "xno"; then ac_cv_header_X11_extensions_Xcomposite_h=no; fi])
>  AC_ARG_WITH(xcursor,   AS_HELP_STRING([--without-xcursor],[do not use the Xcursor extension]),
> @@ -1786,6 +1787,14 @@ then
>      WINE_WARNING([No sound system was found. Windows applications will be silent.])
>  fi
>
> +dnl *** Check for vulkan ***
> +if test "x$with_vulkan" != "xno"
> +then
> +    WINE_CHECK_SONAME(vulkan, vkGetInstanceProcAddr)
> +fi
> +WINE_NOTICE_WITH(vulkan,[test "x$ac_cv_lib_soname_vulkan" = "x"],
> +                 [libvulkan ${notice_platform}development files not found, vulkan won't be supported.])
> +
>  dnl **** Check for gcc specific options ****
>
>  AC_SUBST(EXTRACFLAGS,"")
> diff --git a/dlls/winex11.drv/Makefile.in b/dlls/winex11.drv/Makefile.in
> index 463eefdcfb..747f509b44 100644
> --- a/dlls/winex11.drv/Makefile.in
> +++ b/dlls/winex11.drv/Makefile.in
> @@ -20,6 +20,7 @@ C_SRCS = \
>         pen.c \
>         settings.c \
>         systray.c \
> +       vulkan.c \
>         window.c \
>         wintab.c \
>         x11drv_main.c \
> diff --git a/dlls/winex11.drv/vulkan.c b/dlls/winex11.drv/vulkan.c
> new file mode 100644
> index 0000000000..936e5620d2
> --- /dev/null
> +++ b/dlls/winex11.drv/vulkan.c
> @@ -0,0 +1,54 @@
> +/* X11DRV Vulkan ICD implementation
> + *
> + * Copyright 2017 Roderick Colenbrander
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
> + */
> +
> +#include "config.h"
> +#include "wine/port.h"
> +
> +#include "wine/debug.h"
> +#include "wine/vulkan.h"
> +
> +#ifdef SONAME_LIBVULKAN
> +
> +WINE_DEFAULT_DEBUG_CHANNEL(vulkan);
> +
> +void* WINAPI X11DRV_vk_icdGetInstanceProcAddr(VkInstance instance, const char* pName)

Please use consistent style for pointers. I think that "void * WINAPI"
and "const char *pName" would be preferred.

> +{
> +    FIXME("stub: %p, %s\n", instance, pName ? pName : "NULL");

Wouldn't it be better to use debugstr_a() or something similar? Please
also note that some strings in Vulkan API can be UTF-8 according to
the spec.

> +    return NULL;
> +}
> +
> +VkResult WINAPI X11DRV_vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pSupportedVersion)
> +{
> +    FIXME("stub: %p\n", pSupportedVersion);
> +    return VK_INCOMPLETE;
> +}
> +
> +#else /* No vulkan */
> +
> +void* WINAPI X11DRV_vk_icdGetInstanceProcAddr(VkInstance instance, const char* pName)
> +{
> +    return NULL;
> +}
> +
> +VkResult WINAPI X11DRV_vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pSupportedVersion)
> +{
> +    return VK_INCOMPLETE;
> +}
> +
> +#endif /* defined SONAME_LIBVULKAN */
> diff --git a/dlls/winex11.drv/winex11.drv.spec b/dlls/winex11.drv/winex11.drv.spec
> index 614f0b90f4..0932a2c88e 100644
> --- a/dlls/winex11.drv/winex11.drv.spec
> +++ b/dlls/winex11.drv/winex11.drv.spec
> @@ -78,3 +78,7 @@
>  @ stdcall ImeProcessKey(long long long ptr)
>  @ stdcall ImeGetRegisterWordStyle(long ptr)
>  @ stdcall ImeGetImeMenuItems(long long long ptr ptr long)
> +
> +# Vulkan
> +@ stdcall vk_icdGetInstanceProcAddr(ptr str) X11DRV_vk_icdGetInstanceProcAddr
> +@ stdcall vk_icdNegotiateLoaderICDInterfaceVersion(ptr) X11DRV_vk_icdNegotiateLoaderICDInterfaceVersion
> diff --git a/include/config.h.in b/include/config.h.in
> index a6ec41b5fa..444f4595d4 100644
> --- a/include/config.h.in
> +++ b/include/config.h.in
> @@ -1541,6 +1541,9 @@
>  /* Define to the soname of the libXxf86vm library. */
>  #undef SONAME_LIBXXF86VM
>
> +/* Define to the soname of the libvulkan library. */
> +#undef SONAME_LIBVULKAN
> +
>  /* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
>  #undef STAT_MACROS_BROKEN
>
> --
> 2.13.6
>
>
>



More information about the wine-devel mailing list