summaryrefslogtreecommitdiff
path: root/codegen/vulkan/tests/htest.c
diff options
context:
space:
mode:
Diffstat (limited to 'codegen/vulkan/tests/htest.c')
-rw-r--r--codegen/vulkan/tests/htest.c71
1 files changed, 71 insertions, 0 deletions
diff --git a/codegen/vulkan/tests/htest.c b/codegen/vulkan/tests/htest.c
new file mode 100644
index 00000000..aba14d84
--- /dev/null
+++ b/codegen/vulkan/tests/htest.c
@@ -0,0 +1,71 @@
+//% gcc -c -Wall -I. -I../include htest.c
+
+// Copyright 2019-2021 The Khronos Group Inc.
+//
+// SPDX-License-Identifier: Apache-2.0
+
+// Simple compilation test for Vulkan headers, including all platform
+// headers.
+// To allow compilation in environments without one or more platforms, fake
+// headers for different platforms are supplied. They provide just the types
+// Vulkan platforms require.
+// When a new Vulkan platform is defined, the corresponding USE_PLATFORM
+// header definition, and any supporting fake platform headers, should be
+// defined here, along with a trivial compilation test using a Vulkan type
+// or function specific to that platform.
+
+// Enable each platform when vulkan.h is included
+
+#define VK_USE_PLATFORM_ANDROID_KHR // No headers needed
+#define VK_USE_PLATFORM_FUCHSIA // <zircon/types.h>
+#define VK_USE_PLATFORM_GGP // <ggp_c/vulkan_types.h>
+#define VK_USE_PLATFORM_IOS_MVK // No headers needed
+#define VK_USE_PLATFORM_MACOS_MVK // No headers needed
+#define VK_USE_PLATFORM_METAL_EXT // No headers needed
+#define VK_USE_PLATFORM_VI_NN // No headers needed
+#define VK_USE_PLATFORM_WAYLAND_KHR // <wayland-client.h>
+#define VK_USE_PLATFORM_WIN32_KHR // <windows.h>
+#define VK_USE_PLATFORM_XCB_KHR // <xcb/xcb.h>
+#define VK_USE_PLATFORM_XLIB_KHR // <X11/Xlib.h>
+#define VK_USE_PLATFORM_XLIB_XRANDR_EXT // <X11/extensions/Xrandr.h>
+#define VK_USE_PLATFORM_SCREEN_QNX // <screen/screen.h>
+#define VK_ENABLE_BETA_EXTENSIONS // No headers needed
+
+#include <vulkan/vulkan.h>
+
+// Sanity check with a type or function from each platform header in turn
+
+VkAndroidSurfaceCreateFlagsKHR android_flags;
+VkImagePipeSurfaceCreateFlagsFUCHSIA fuchsia_flags;
+VkStreamDescriptorSurfaceCreateFlagsGGP ggp_flags;
+VkIOSSurfaceCreateFlagsMVK ios_flags;
+VkMacOSSurfaceCreateFlagsMVK macos_flags;
+VkMetalSurfaceCreateFlagsEXT metal_flags;
+VkViSurfaceCreateFlagsNN vi_flags;
+VkWaylandSurfaceCreateFlagsKHR wayland_flags;
+VkWin32SurfaceCreateFlagsKHR win32_flags;
+VkXcbSurfaceCreateFlagsKHR xcb_flags;
+VkXlibSurfaceCreateFlagsKHR xlib_flags;
+VkScreenSurfaceCreateFlagsQNX screen_flags;
+
+int main(void) {
+ const VkInstanceCreateInfo instance_info = {
+ .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
+ .pNext = NULL,
+ .flags = 0,
+ .pApplicationInfo = NULL,
+ .enabledLayerCount = 0,
+ .ppEnabledLayerNames = NULL,
+ .enabledExtensionCount = 0,
+ .ppEnabledExtensionNames = NULL,
+ };
+ VkInstance instance;
+ vkCreateInstance(&instance_info, NULL, &instance);
+ vkDestroyInstance(instance, NULL);
+
+ // Test XLIB_XRANDR_EXT platform, which doesn't define a new type
+ VkResult xrandr_result = vkAcquireXlibDisplayEXT((VkPhysicalDevice)0, (Display *)NULL, (VkDisplayKHR)0);
+
+ (void)xrandr_result;
+ return 0;
+}