diff --git a/vulkan-minimal/Makefile b/vulkan-minimal/Makefile index ddd7bc1..0d91100 100644 --- a/vulkan-minimal/Makefile +++ b/vulkan-minimal/Makefile @@ -2,10 +2,7 @@ TARGET=vulkan-minimal GLSL_VALIDATOR=../glslangValidator -VULKAN_SO_NAME=vulkan_intel -VULKAN_SO_PATH=~/devel/build/lib - -all: Makefile $(TARGET) vert.spv frag.spv +all: $(TARGET) vert.spv frag.spv vert.spv: shader.vert $(GLSL_VALIDATOR) -V shader.vert @@ -13,12 +10,11 @@ vert.spv: shader.vert frag.spv: shader.frag $(GLSL_VALIDATOR) -V shader.frag -$(TARGET): main.c vert.spv frag.spv +$(TARGET): Makefile main.c vert.spv frag.spv gcc -ggdb -O0 -Wall -std=c99 \ -DCURRENT_DIR=\"`pwd`\" \ `pkg-config --libs --cflags xcb` \ - -L $(VULKAN_SO_PATH) \ - -l$(VULKAN_SO_NAME) \ + -lvulkan \ -o $(TARGET) \ main.c diff --git a/vulkan-minimal/main.c b/vulkan-minimal/main.c index 80467ea..13522a4 100644 --- a/vulkan-minimal/main.c +++ b/vulkan-minimal/main.c @@ -36,12 +36,15 @@ #define WIDTH 640 #define HEIGHT 480 +/* This is only necessary if program is linked to a Vulkan vendor driver\ + * directly + */ PFN_vkVoidFunction vk_icdGetInstanceProcAddr (VkInstance instance, const char* pName); - -#define GET_ICD_PROC_ADDR(api, symbol) \ +#define GET_ICD_PROC_ADDR(api, symbol) \ api.symbol = (PFN_vk ##symbol) vk_icdGetInstanceProcAddr(NULL, "vk" #symbol); + #define GET_PROC_ADDR(api, symbol) \ api.symbol = (PFN_vk ##symbol) api.GetInstanceProcAddr(NULL, "vk" #symbol); @@ -187,7 +190,12 @@ main (int32_t argc, char* argv[]) /* ======================================================================= */ /* load inital API entry points */ - GET_ICD_PROC_ADDR (vk, GetInstanceProcAddr); + + /* if program is linked against a Vulkan loader */ + vk.GetInstanceProcAddr = vkGetInstanceProcAddr; + /* otherwise, */ + /* GET_ICD_PROC_ADDR (vk, GetInstanceProcAddr); */ + GET_PROC_ADDR (vk, EnumerateInstanceLayerProperties); GET_PROC_ADDR (vk, EnumerateInstanceExtensionProperties); GET_PROC_ADDR (vk, CreateInstance);