"Fossies" - the Fresh Open Source Software Archive

Member "mesa-20.1.8/src/amd/vulkan/radv_wsi_x11.c" (16 Sep 2020, 3701 Bytes) of package /linux/misc/mesa-20.1.8.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "radv_wsi_x11.c" see the Fossies "Dox" file reference documentation.

    1 /*
    2  * Copyright © 2016 Red Hat.
    3  * Copyright © 2016 Bas Nieuwenhuizen
    4  *
    5  * based mostly on anv driver which is:
    6  * Copyright © 2015 Intel Corporation
    7  *
    8  * Permission is hereby granted, free of charge, to any person obtaining a
    9  * copy of this software and associated documentation files (the "Software"),
   10  * to deal in the Software without restriction, including without limitation
   11  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
   12  * and/or sell copies of the Software, and to permit persons to whom the
   13  * Software is furnished to do so, subject to the following conditions:
   14  *
   15  * The above copyright notice and this permission notice (including the next
   16  * paragraph) shall be included in all copies or substantial portions of the
   17  * Software.
   18  *
   19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   20  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   21  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
   22  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   23  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
   24  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
   25  * IN THE SOFTWARE.
   26  */
   27 
   28 #include <X11/Xlib-xcb.h>
   29 #include <X11/xshmfence.h>
   30 #include <xcb/xcb.h>
   31 #include <xcb/dri3.h>
   32 #include <xcb/present.h>
   33 
   34 #include "wsi_common_x11.h"
   35 #include "radv_private.h"
   36 
   37 VkBool32 radv_GetPhysicalDeviceXcbPresentationSupportKHR(
   38     VkPhysicalDevice                            physicalDevice,
   39     uint32_t                                    queueFamilyIndex,
   40     xcb_connection_t*                           connection,
   41     xcb_visualid_t                              visual_id)
   42 {
   43    RADV_FROM_HANDLE(radv_physical_device, device, physicalDevice);
   44 
   45    return wsi_get_physical_device_xcb_presentation_support(
   46       &device->wsi_device,
   47       queueFamilyIndex,
   48       connection, visual_id);
   49 }
   50 
   51 VkBool32 radv_GetPhysicalDeviceXlibPresentationSupportKHR(
   52     VkPhysicalDevice                            physicalDevice,
   53     uint32_t                                    queueFamilyIndex,
   54     Display*                                    dpy,
   55     VisualID                                    visualID)
   56 {
   57    RADV_FROM_HANDLE(radv_physical_device, device, physicalDevice);
   58 
   59    return wsi_get_physical_device_xcb_presentation_support(
   60       &device->wsi_device,
   61       queueFamilyIndex,
   62       XGetXCBConnection(dpy), visualID);
   63 }
   64 
   65 VkResult radv_CreateXcbSurfaceKHR(
   66     VkInstance                                  _instance,
   67     const VkXcbSurfaceCreateInfoKHR*            pCreateInfo,
   68     const VkAllocationCallbacks*                pAllocator,
   69     VkSurfaceKHR*                               pSurface)
   70 {
   71    RADV_FROM_HANDLE(radv_instance, instance, _instance);
   72    const VkAllocationCallbacks *alloc;
   73    assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR);
   74 
   75    if (pAllocator)
   76      alloc = pAllocator;
   77    else
   78      alloc = &instance->alloc;
   79 
   80    return wsi_create_xcb_surface(alloc, pCreateInfo, pSurface);
   81 }
   82 
   83 VkResult radv_CreateXlibSurfaceKHR(
   84     VkInstance                                  _instance,
   85     const VkXlibSurfaceCreateInfoKHR*           pCreateInfo,
   86     const VkAllocationCallbacks*                pAllocator,
   87     VkSurfaceKHR*                               pSurface)
   88 {
   89    RADV_FROM_HANDLE(radv_instance, instance, _instance);
   90    const VkAllocationCallbacks *alloc;
   91 
   92    assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR);
   93 
   94    if (pAllocator)
   95      alloc = pAllocator;
   96    else
   97      alloc = &instance->alloc;
   98 
   99    return wsi_create_xlib_surface(alloc, pCreateInfo, pSurface);
  100 }