diff options
Diffstat (limited to 'fedora-fixes.diff')
-rw-r--r-- | fedora-fixes.diff | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/fedora-fixes.diff b/fedora-fixes.diff new file mode 100644 index 000000000000..45d829108931 --- /dev/null +++ b/fedora-fixes.diff @@ -0,0 +1,149 @@ +diff --git a/Makefile.am b/Makefile.am +index 4ec1270..1f2011a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -2,16 +2,7 @@ CPPFLAGS = \ + $(MESA_CPPFLAGS) \ + -D_POSIX_C_SOURCE=200809L + +-common_CFLAGS = -Wall -O0 -g3 +- +-CFLAGS = -std=c11 \ +- $(common_CFLAGS) \ +- -Werror=implicit-function-declaration \ +- -Werror=missing-prototypes +- +-CXXFLAGS = -std=c++11 $(common_CFLAGS) +- +-noinst_PROGRAMS = vkcube ++bin_PROGRAMS = vkcube + + BUILT_SOURCES = \ + vkcube.vert.spv.h \ +@@ -33,4 +24,4 @@ vkcube_SOURCES = \ + CLEANFILES = $(BUILT_SOURCES) + + vkcube_CFLAGS = $(CFLAGS) $(MINIGBM_CPPFLAGS) $(LIBDRM_CFLAGS) $(WAYLAND_CFLAGS) +-vkcube_LDADD = $(MINIGBM_LDFLAGS) $(MESA_LDFLAGS) $(LIBDRM_LIBS) $(WAYLAND_LIBS) -lgbm -lm -lvulkan-1 -lpng16 -lxcb ++vkcube_LDADD = $(MINIGBM_LDFLAGS) $(MESA_LDFLAGS) $(LIBDRM_LIBS) $(WAYLAND_LIBS) -lgbm -lm -lvulkan -lpng16 -lxcb +diff --git a/main.c b/main.c +index 3014e76..5af7929 100644 +--- a/main.c ++++ b/main.c +@@ -73,7 +73,7 @@ fail_if(int cond, const char *format, ...) + } + + static void +-init_vk(struct vkcube *vc) ++init_vk(struct vkcube *vc, const char *extension) + { + vkCreateInstance(&(VkInstanceCreateInfo) { + .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, +@@ -81,7 +81,9 @@ init_vk(struct vkcube *vc) + .sType = VK_STRUCTURE_TYPE_APPLICATION_INFO, + .pApplicationName = "vkcube", + .apiVersion = VK_MAKE_VERSION(1, 0, 2), +- } ++ }, ++ .enabledExtensionCount = (extension != NULL), ++ .ppEnabledExtensionNames = &extension, + }, + NULL, + &vc->instance); +@@ -281,7 +283,7 @@ write_buffer(struct vkcube *vc, struct vkcube_buffer *b) + static void + init_headless(struct vkcube *vc) + { +- init_vk(vc); ++ init_vk(vc, NULL); + + struct vkcube_buffer *b = &vc->buffers[0]; + +@@ -430,7 +432,10 @@ init_kms(struct vkcube *vc) + + vc->gbm_device = gbm_create_device(vc->fd); + +- init_vk(vc); ++ init_vk(vc, NULL); ++ ++ PFN_vkCreateDmaBufImageINTEL create_dma_buf_image = ++ (PFN_vkCreateDmaBufImageINTEL)vkGetDeviceProcAddr(vc->device, "vkCreateDmaBufImageINTEL"); + + for (uint32_t i = 0; i < 2; i++) { + struct vkcube_buffer *b = &vc->buffers[i]; +@@ -441,17 +446,17 @@ init_kms(struct vkcube *vc) + + fd = gbm_bo_get_fd(b->gbm_bo); + stride = gbm_bo_get_stride(b->gbm_bo); +- vkCreateDmaBufImageINTEL(vc->device, +- &(VkDmaBufImageCreateInfo) { +- .sType = VK_STRUCTURE_TYPE_DMA_BUF_IMAGE_CREATE_INFO_INTEL, +- .fd = fd, +- .format = VK_FORMAT_R8G8B8A8_SRGB, +- .extent = { vc->width, vc->height, 1 }, +- .strideInBytes = stride +- }, +- NULL, +- &b->mem, +- &b->image); ++ create_dma_buf_image(vc->device, ++ &(VkDmaBufImageCreateInfo) { ++ .sType = VK_STRUCTURE_TYPE_DMA_BUF_IMAGE_CREATE_INFO_INTEL, ++ .fd = fd, ++ .format = VK_FORMAT_R8G8B8A8_SRGB, ++ .extent = { vc->width, vc->height, 1 }, ++ .strideInBytes = stride ++ }, ++ NULL, ++ &b->mem, ++ &b->image); + close(fd); + + b->stride = gbm_bo_get_stride(b->gbm_bo); +@@ -600,7 +605,7 @@ init_xcb(struct vkcube *vc) + + xcb_flush(vc->xcb.conn); + +- init_vk(vc); ++ init_vk(vc, VK_KHR_XCB_SURFACE_EXTENSION_NAME); + + if (!vkGetPhysicalDeviceXcbPresentationSupportKHR(vc->physical_device, 0, + vc->xcb.conn, +@@ -804,9 +809,14 @@ init_wayland(struct vkcube *vc) + xdg_surface_add_listener(vc->wl.xdg_surface, &xdg_surface_listener, vc); + xdg_surface_set_title(vc->wl.xdg_surface, "vkcube"); + +- init_vk(vc); ++ init_vk(vc, VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME); + +- if (!vkGetPhysicalDeviceWaylandPresentationSupportKHR(vc->physical_device, 0, ++ PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR get_physical_device_wayland_presentation_support = ++ (PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR) ++ vkGetDeviceProcAddr(vc->device, ++ "vkGetPhysicalDeviceWaylandPresentationSupportKHR"); ++ ++ if (!get_physical_device_wayland_presentation_support(vc->physical_device, 0, + vc->wl.display)) { + fprintf(stderr, "Vulkan not supported on given Wayland surface"); + abort(); +@@ -814,7 +824,10 @@ init_wayland(struct vkcube *vc) + + VkSurfaceKHR wsi_surface; + +- vkCreateWaylandSurfaceKHR(vc->instance, ++ PFN_vkCreateWaylandSurfaceKHR create_wayland_surface = ++ (PFN_vkCreateWaylandSurfaceKHR)vkGetInstanceProcAddr(vc->instance, "vkCreateWaylandSurfaceKHR"); ++ ++ create_wayland_surface(vc->instance, + &(VkWaylandSurfaceCreateInfoKHR) { + .sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR, + .display = vc->wl.display, +@@ -915,7 +928,7 @@ extern struct model cube_model; + int main(int argc, char *argv[]) + { + struct vkcube vc; +- bool headless; ++ bool headless = false; + + vc.model = cube_model; + vc.gbm_device = NULL; |