vulkan: Add new cast macros for VkIcd types
authorChad Versace <chadversary@chromium.org>
Tue, 10 Jan 2017 21:23:06 +0000 (13:23 -0800)
committerChad Versace <chadversary@chromium.org>
Thu, 12 Jan 2017 17:42:32 +0000 (09:42 -0800)
commitc085bfcec9915879e97a33c5235cf21607c72318
treee584bf514b0c4856f8b5c5f0c4ebfdb6a2af0b3f
parenta61528fa33f8d7f39167e62da6d9317ed84c43b8
vulkan: Add new cast macros for VkIcd types

We can't import the latest vk_icd.h because the new header breaks the
Mesa build. This patch defines new casting macros,
ICD_DEFINE_NONDISP_HANDLE_CASTS() and ICD_FROM_HANDLE(), which can
handle both the old and new vk_icd.h, and will prevent the build from
breaking when we update the header.

In the old vk_icd.h, types were defined as:

  typedef struct _VkIcdFoo {
    ...
  } VkIcdFoo;

Commit 6ebba1f6 in the Vulkan loader changed the above to

  typedef {
    ...
  } VkIcdFoo;

because the old definitions violated the C and C++ specs. According to
the specs, identifiers that begins with an underscore followed by an
uppercase letter are reserved. (It's pedantic, I know), See the Github
issue referenced below.

References: https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/7
References: https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/commit/6ebba1f630015af7a78767a15c1e74ba9b23601c
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Cc: mesa-stable@lists.freedesktop.org
src/amd/vulkan/radv_wsi.c
src/intel/vulkan/anv_wsi.c
src/vulkan/wsi/wsi_common.h
src/vulkan/wsi/wsi_common_wayland.c
src/vulkan/wsi/wsi_common_x11.c