path: root/src/vulkan
AgeCommit message (Collapse)AuthorFilesLines
2017-06-08Android: vulkan: fix build error due to extra )Rob Herring1-1/+1
Commit 621b3410f5f8 ("util/vulkan: Move Vulkan utilities to src/vulkan/util") broke the Android build with the following error: build/core/ error: external/mesa3d/src/vulkan/ libmesa_vulkan_util: Unused source files: util/vk_util.h). Fixes: 621b3410f5f8 ("util/vulkan: Move Vulkan utilities to src/vulkan/util") Reviewed-by: Tapani Pälli <> Cc: Alex Smith <> Signed-off-by: Rob Herring <>
2017-06-06radv/vulkan: Move radv_get_driver_version to src/vulkan/utilAlex Smith3-0/+52
This means it can be reused for other Vulkan drivers. Also fix up a typo, need to search for '.' in the version string rather than ','. v2: Remove unneeded temporary version variable (Emil, Eric) Signed-off-by: Alex Smith <> Reviewed-by: Emil Velikov <> Reviewed-by: Eric Engestrom <> Reviewed-by: Jason Ekstrand <>
2017-06-06util/vulkan: Move Vulkan utilities to src/vulkan/utilAlex Smith8-4/+309
We have Vulkan utilities in both src/util and src/vulkan/util. The latter seems a more appropriate place for Vulkan-specific things, so move them there. v2: Android build system changes (from Tapani Pälli) Signed-off-by: Alex Smith <> Reviewed-by: Emil Velikov <> Reviewed-by: Eric Engestrom <> Acked-by: Jason Ekstrand <>
2017-05-20vulkan/wsi/wayland: Fix proxy wrappers for swapchain recreationPhilipp Zabel1-3/+10
Before the swapchain event queue is destroyed, all proxy objects that reference it must be dropped. Otherwise we risk a use-after-free if a frame callback event or buffer release events are received afterwards. This happens when an application destroys and recreates a swapchain in FIFO mode between two frames without using the VkSwapchainCreateInfoKHR::oldSwapchain mechanism to keep the old swapchain until after the next redraw. Fixes: 5034c615582a ("vulkan/wsi/wayland: Use proxy wrappers for swapchain") Signed-off-by: Philipp Zabel <> Reviewed-by: Daniel Stone <> Cc:
2017-05-19vulkan: automake: remove unused VULKAN_LIB_DEPS variableEmil Velikov1-6/+0
Signed-off-by: Emil Velikov <> Reviewed-by: Eric Engestrom <>
2017-05-19configure: check once for DRI3 dependenciesEmil Velikov1-2/+1
Currently we are having the XCB_DRI3 dependencies duplicated, partially. Just do a once-off check and add all of the respective CFLAGS/LIBS where needed. As a nice side effect this helps us solve a couple of FIXMEs. DRI3 is not a thing w/o X11 so disable it in such cases. Cc: Signed-off-by: Emil Velikov <> Reviewed-by: Eric Engestrom <>
2017-05-19vulkan/wsi/wayland: Use proxy wrappers for swapchainDaniel Stone1-16/+36
Though most swapchain operations used a queue, they were racy in that the object was created with the queue only set later, meaning that its event could potentially be dispatched from the default queue in between these two steps. Use proxy wrappers to avoid this race, also assigning wl_buffers created for the swapchain to the event queue. Signed-off-by: Daniel Stone <> Reviewed-by: Lionel Landwerlin <> Cc:
2017-05-19vulkan/wsi/wayland: Use per-display event queueDaniel Stone1-12/+32
Calling random callbacks on the display's event queue is hostile, as we may call into client code when it least expects it. Create our own event queue, one per wsi_wl_display, and use that for the registry. Signed-off-by: Daniel Stone <> Reviewed-by: Lionel Landwerlin <> Cc:
2017-05-19vulkan/wsi/wayland: Remove roundtrip when creating imageDaniel Stone1-1/+0
There's no need to call wl_display_roundtrip() after trying to create a buffer through wl_drm; if it succeeds then everything is fine, and if it fails, then we get a fatal protocol error so can't recover anyway. Additionally, doing a roundtrip on the default / main application queue, is destructive anyway, so would need to be its own queue. Signed-off-by: Daniel Stone <> Reviewed-by: Lionel Landwerlin <> Cc:
2017-05-19vulkan: Fix Wayland uninitialised registryDaniel Stone1-4/+5
Untangle the exit cleanup paths so we don't try to use the registry variable before it's been initialised. Signed-off-by: Daniel Stone <> Reviewed-by: Lionel Landwerlin <> Cc:
2017-05-16vulkan/wsi/wayland: Add support for VK_KHR_get_surface_capabilities2Jason Ekstrand1-0/+38
Reviewed-by: Samuel Iglesias Gonsálvez <>
2017-05-16vulkan/wsi/x11: Add support for VK_KHR_get_surface_capabilities2Jason Ekstrand1-0/+32
Reviewed-by: Samuel Iglesias Gonsálvez <>
2017-05-16vulkan/wsi: Add get_capabilities2 and get_formats2d interface pointersJason Ekstrand1-0/+8
Reviewed-by: Samuel Iglesias Gonsálvez <>
2017-05-16vulkan/wsi: Use vk_outarray for surface_get_formatsJason Ekstrand2-30/+21
Reviewed-by: Samuel Iglesias Gonsálvez <>
2017-05-16vulkan: Update registry and headers to 1.0.49Jason Ekstrand1-12/+155
Reviewed-by: Samuel Iglesias Gonsálvez <>
2017-04-03vulkan/wsi/wayland: Pass damage through to the compositorJason Ekstrand1-1/+15
Reviewed-by: Lionel Landwerlin <> Reviewed-by: Daniel Stone <>
2017-04-03vulkan/wsi: Plumb present regions through the common codeJason Ekstrand3-3/+6
Reviewed-by: Lionel Landwerlin <> Reviewed-by: Daniel Stone <> Acked-by: Dave Airlie <>
2017-04-03vulkan/wsi: Fix some line wrappingJason Ekstrand1-1/+4
Reviewed-by: Lionel Landwerlin <> Reviewed-by: Daniel Stone <>
2017-03-31vulkan: Bump the header and XML to the latest public versionJason Ekstrand1-473/+625
2017-03-13vulkan/wsi: include builddir for generated headersJuan A. Suarez Romero1-0/+1
wayland-drm-client-protocol.h is generated in builddir, so when builddir != srcdir the header is not found, and compilation of wsi_common_wayland.c will fail. Reviewed-by: Emil Velikov <>
2017-03-13vulkan/wsi: Generate wayland protocol headers separately from EGLJason Ekstrand4-5/+23
Previously, we were depending on EGL for generating the headers and providing the protocol symbols. However, since neither Vulkan driver actually wants to link against EGL, this is kind of pointless. It also creates a weird build dependency. v2 [Jason] - Add missing wsi/ prefix, MKDIR_GEN v3 [Emil Velikov] - include BUILT_SOURCES/generation rules outside of conditional Reviewed-by: Emil Velikov <> Reviewed-by: Jason Ekstrand <>
2017-03-04android: fix outdir for gen_enum_to_str filesTapani Pälli1-1/+2
when files are being generated the value of $intermediates var content can be completely random, this makes sure that outdir is the wanted one. Fixes: 3f2cb699 ("android: vulkan: add support for libmesa_vulkan_util") Signed-off-by: Tapani Pälli <> Reviewed-by: Eric Engestrom <> Acked-by: Emil Velikov <>
2017-03-01vulkan/wsi: Improve the DRI3 error messageJacob Lifshay1-10/+41
This commit improves the message by telling them that they could probably enable DRI3. More importantly, it includes a little heuristic to check to see if we're running on AMD or NVIDIA's proprietary X11 drivers and, if we are, doesn't emit the warning. This way, users with both a discrete card and Intel graphics don't get the warning when they're just running on the discrete card. Bugzilla: Co-authored-by: Jason Ekstrand <> Reviewed-by: Kai Wasserbäch <> Reviewed-by: Jason Ekstrand <> Tested-by: Rene Lindsay <> Acked-by: Dave Airlie <> Cc: "17.0" <>
2017-02-28vulkan: provide vk.xml as argument to the python generatorEmil Velikov3-5/+4
Do not hardcode the file in the python script, but pass it via the build system(s). The latter is the only one that should know about the file location/tree structure. Cc: Dylan Baker <> Signed-off-by: Emil Velikov <> Reviewed-by: Jason Ekstrand <> Reviewed-by: Eric Engestrom <>
2017-02-28automake: vulkan: rename/reuse VULKAN_UTIL_{GENERATED_,}FILES listEmil Velikov3-7/+5
Signed-off-by: Emil Velikov <>
2017-02-28android: vulkan: add support for libmesa_vulkan_utilMauro Rossi3-3/+66
The following changes are implemented: Add src/vulkan/ to build libmesa_vulkan_util add src/vulkan to SUBDIR to build new module intel/vulkan: fix libmesa_vulkan_util,vk_enum_to_str.h dependencies Add -o OUTPUT_PATH option in src/vulkan/util/ script Use -o OUTPUT_PATH option in automake generation rules for vk_enum_to_str.{c,h} Fixes: e9dcb17 "vulkan/util: Add generator for enum_to_str functions" Fixes: 8e03250 "vulkan: Combine wsi and util makefiles" Reviewed-by: Dylan Baker <> Reviewed-by: Emil Velikov <> [Emil Velikov] - Move parser within main() - Use --outdir instead of -o Signed-off-by: Emil Velikov <>
2017-02-27vulkan: Update registry and headers to 1.0.42Jason Ekstrand1-111/+1039
This brings in a bunch of new extensions
2017-02-27vulkan/wsi/radv: add initial prime support (v1.1)Dave Airlie4-5/+69
This is a complete rewrite of my previous rfc patches. This adds the ability to present to a different GPU that rendering using a driver side operation that can copy from the tiled to linear shared image. This does prime support completely in the swapchain present code, and each queue has a precreated command buffer for each image and for the each queue family. This means presenting should work on graphics and compute queues and transfer in the future. v1.1: initialise needs_linear_copy in swapchain. Reviewed-by: Bas Nieuwenhuizen <> Tested-by: Mike Lothian <> Signed-off-by: Dave Airlie <>
2017-02-23vulkan/wsi: move image count to shared structure.Dave Airlie3-26/+24
For prime support I need to access this, so move it in advance. [airlied: fix int->uint32_t] Reviewed-by: Jason Ekstrand <> Signed-off-by: Dave Airlie <>
2017-02-22vulkan: Fix gen_enum_to_str in out of tree buildsDylan Baker1-1/+5
In some configurations the util directory is created when building out of tree, but not others. This patch ensures that it's created. Signed-off-by: Dylan Baker <> Reviewed-by: Matt Turner <> Reviewed-and-Tested-by: Mike Lothian <>
2017-02-22vulkan: Combine wsi and util makefilesDylan Baker5-38/+32
Reviewed-by: Matt Turner <>
2017-02-22vulkan/util: Add generator for enum_to_str functionsDylan Baker3-0/+195
This adds a python generator to produce enum_to_str functions for Vulkan from the vk.xml API description. It supports extensions as well as core API features, and the generator works with both python2 and python3. Signed-off-by: Dylan Baker <> Acked-by: Matt Turner <> Acked-by: Jason Ekstrand <>
2017-02-20vulkan/wsi/x11: add support to detect if we can support rendering (v3)Dave Airlie5-1/+74
This adds support to radv_GetPhysicalDeviceXlibPresentationSupportKHR and radv_GetPhysicalDeviceXcbPresentationSupportKHR to check if the local device file descriptor is compatible with the descriptor retrieved from the X server via DRI3. This will stop radv binding to an X server until we have prime support in place. Hopefully apps use this API before trying to render things. v2: drop unneeded function, don't leak memory. (jekstrand) v3: also check in surface_get_support callback. Reviewed-by: Jason Ekstrand <> Signed-off-by: Dave Airlie <>
2017-01-25vulkan/wsi: Lower the maximum image sizesJason Ekstrand2-2/+4
Reviewed-by: Lionel Landwerlin <> Cc: "17.0" <>
2017-01-25vulkan/wsi/wayland: Handle VK_INCOMPLETE for GetPresentModesJason Ekstrand1-3/+5
Reviewed-by: Lionel Landwerlin <> Cc: "17.0" <>
2017-01-25vulkan/wsi/wayland: Handle VK_INCOMPLETE for GetFormatsJason Ekstrand1-7/+9
Reviewed-by: Lionel Landwerlin <> Cc: "17.0" <>
2017-01-24vulkan: import latest registry for 1.0.39 extensions.Dave Airlie1-42/+408
Acked-by: Jason Ekstrand <> Signed-off-by: Dave Airlie <>
2017-01-19vulkan/wsi: clarify the severity of lack of DRI3 v2Andres Rodriguez1-2/+4
The current message sounds like a small warning, clarify that it can result in lack of presentation support and application crashes. v2: add "if they do" (Bas) Bugzilla: Signed-off-by: Andres Rodriguez <> Acked-by: Jason ekstrand <> Acked-by: Bas Nieuwenhuizen <> Reviewed-by: Emil Velikov <>
2017-01-14vulkan: add API registryLionel Landwerlin1-0/+4903
Signed-off: Lionel Landwerlin <> Acked-by: Jason Ekstrand <>
2017-01-12vulkan: Add new cast macros for VkIcd typesChad Versace3-4/+22
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: References: Reviewed-by: Emil Velikov <> Cc:
2016-12-22vulkan/wsi/x11: don't crash on null wsi x11 connectionArda Coskunses1-0/+3
Without this check driver crash when application window closed unexpectedly. Acked-by: Edward O'Callaghan <> Reviewed-by: Jason Ekstrand <> Cc: "13.0" <>
2016-12-22vulkan/wsi/x11: don't crash on null visualArda Coskunses1-0/+3
When application window closed unexpectedly due to lost window visualtypes getting invlaid parameters which is causing a crash. Necessary check is added to prevent the crash. Reviewed-by: Jason Ekstrand <> Cc: "13.0" <>
2016-12-07vulkan: use STATIC_ASSERT instead of static_assertEdward O'Callaghan2-2/+2
Following the spirit of commit 23d1799f, fixes compilation warnings on Android build due to lack of C11 features. Signed-off-by: Edward O'Callaghan <> Reviewed-by: Jason Ekstrand <>
2016-11-30vulkan/wsi/x11: Destroy Present event context when destroying swapchainMichel Dänzer1-0/+6
Without this, the X server may accumulate stale Present event contexts if a client creates and destroys multiple swapchains using the same window. v2: Based on Chris Wilson's review: * Use xcb_present_select_input_checked so that protocol errors generated by old X servers can be handled gracefully * Use xcb_discard_reply() instead of free(xcb_request_check()) v3: Rebased on top of this code having been refactored out of anv Reviewed-by: Dave Airlie <>
2016-11-28vulkan/wsi: Fix resource leak in success path of wsi_queue_init()Gwan-gyeong Mun1-0/+1
It fixes leakage of pthread_condattr resource on wsi_queue_init() Cc: "13.0" <> Signed-off-by: Mun Gwan-gyeong <> Reviewed-by: Emil Velikov <> Reviewed-by: Eduardo Lima Mitev <>
2016-11-16wsi: fix VK_INCOMPLETE for vkGetSwapchainImagesKHRDave Airlie2-10/+22
This fixes the x11 and wayland backends to not assert: dEQP-VK.wsi.xcb.swapchain.get_images.incomplete Reviewed-by: Jason Ekstrand <> Cc: "13.0" <> Signed-off-by: Dave Airlie <>
2016-11-10vulkan/wsi/x11: Implement FIFO mode.Jason Ekstrand1-10/+164
This implements VK_PRESENT_MODE_FIFO_KHR for X11. Unfortunately, due to the way the present extension works, we have to manage the queue of presented images in a separate thread. Signed-off-by: Jason Ekstrand <> Reviewed-by: Eric Engestrom <> Reviewed-by: Dave Airlie <> Cc: "13.0" <>
2016-11-10vulkan/wsi: Report the correct min/maxImageCountJason Ekstrand2-26/+20
From the Vulkan spec 1.0.32 section 29.6 docs for vkAcquireNextImageKHR: "Let n be the total number of images in the swapchain, m be the value of VkSurfaceCapabilitiesKHR::minImageCount, and a be the number of presentable images that the application has currently acquired (i.e. images acquired with vkAcquireNextImageKHR, but not yet presented with vkQueuePresentKHR). vkAcquireNextImageKHR can always succeed if a ≤ n - m at the time vkAcquireNextImageKHR is called. vkAcquireNextImageKHR should not be called if a > n - m with a timeout of UINT64_MAX; in such a case, vkAcquireNextImageKHR may block indefinitely." With minImageCount == 2 (as it was previously, the client is allowed to acquire all but one image withoutblocking. If we really need 4 images for mailbox mode + pageflipping, then we need to request a minimum of 4 images up-front. This is a bit unfortunate because it means we will always consume 4 images. In the future, we may be able to optimize this a bit by waiting until the server starts to flip and returning OUT_OF_DATE to get the client to re-allocate with more images or something like that. Signed-off-by: Jason Ekstrand <> Reviewed-by: Dave Airlie <> Cc: "13.0" <>
2016-11-10vulkan/wsi: Add a thread-safe queue implementationKevin Strasser2-1/+156
In order to support FIFO mode without blocking the application on calls to vkQueuePresentKHR it is necessary to enqueue the request and defer calling the server until the next vblank period. The xcb present api doesn't offer a way to register a callback, so we will have to spawn a worker thread that will wait for a request to be added to the queue, call to the server, and then make the image available for reuse. This commit introduces the queue data structure needed to implement this. Signed-off-by: Jason Ekstrand <> Reviewed-by: Eric Engestrom <> Reviewed-by: Dave Airlie <> Cc: "13.0" <>
2016-11-09vulkan/wsi/wayland: Clean up some error handling pathsJason Ekstrand1-0/+8
This gets rid of all the memory leaks reported by the WSI CTS tests. Signed-off-by: Jason Ekstrand <> Reviewed-by: Dave Airlie <> Cc: "13.0" <>