turnip: add x11 wsi
Copied from radv Signed-off-by: Jonathan Marek <jonathan@marek.ca> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
df9f2adfa3
commit
3cd44839fa
|
@ -81,6 +81,15 @@ libtu_files = files(
|
||||||
tu_deps = []
|
tu_deps = []
|
||||||
tu_flags = []
|
tu_flags = []
|
||||||
|
|
||||||
|
if with_platform_x11
|
||||||
|
tu_deps += dep_xcb_dri3
|
||||||
|
tu_flags += [
|
||||||
|
'-DVK_USE_PLATFORM_XCB_KHR',
|
||||||
|
'-DVK_USE_PLATFORM_XLIB_KHR',
|
||||||
|
]
|
||||||
|
libtu_files += files('tu_wsi_x11.c')
|
||||||
|
endif
|
||||||
|
|
||||||
if with_platform_wayland
|
if with_platform_wayland
|
||||||
tu_deps += dep_wayland_client
|
tu_deps += dep_wayland_client
|
||||||
tu_flags += '-DVK_USE_PLATFORM_WAYLAND_KHR'
|
tu_flags += '-DVK_USE_PLATFORM_WAYLAND_KHR'
|
||||||
|
@ -92,6 +101,11 @@ if with_platform_drm
|
||||||
libtu_files += files('tu_wsi_display.c')
|
libtu_files += files('tu_wsi_display.c')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if with_xlib_lease
|
||||||
|
tu_deps += [dep_xcb_xrandr, dep_xlib_xrandr]
|
||||||
|
tu_flags += '-DVK_USE_PLATFORM_XLIB_XRANDR_EXT'
|
||||||
|
endif
|
||||||
|
|
||||||
libvulkan_freedreno = shared_library(
|
libvulkan_freedreno = shared_library(
|
||||||
'vulkan_freedreno',
|
'vulkan_freedreno',
|
||||||
[libtu_files, tu_entrypoints, tu_extensions_c, tu_format_table_c, freedreno_xml_header_files],
|
[libtu_files, tu_entrypoints, tu_extensions_c, tu_format_table_c, freedreno_xml_header_files],
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
/*
|
||||||
|
* Copyright © 2016 Red Hat.
|
||||||
|
* Copyright © 2016 Bas Nieuwenhuizen
|
||||||
|
*
|
||||||
|
* based mostly on anv driver which is:
|
||||||
|
* Copyright © 2015 Intel Corporation
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice (including the next
|
||||||
|
* paragraph) shall be included in all copies or substantial portions of the
|
||||||
|
* Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
* IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <X11/Xlib-xcb.h>
|
||||||
|
#include <X11/xshmfence.h>
|
||||||
|
#include <xcb/xcb.h>
|
||||||
|
#include <xcb/dri3.h>
|
||||||
|
#include <xcb/present.h>
|
||||||
|
|
||||||
|
#include "wsi_common_x11.h"
|
||||||
|
#include "tu_private.h"
|
||||||
|
|
||||||
|
VkBool32 tu_GetPhysicalDeviceXcbPresentationSupportKHR(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
uint32_t queueFamilyIndex,
|
||||||
|
xcb_connection_t* connection,
|
||||||
|
xcb_visualid_t visual_id)
|
||||||
|
{
|
||||||
|
TU_FROM_HANDLE(tu_physical_device, device, physicalDevice);
|
||||||
|
|
||||||
|
return wsi_get_physical_device_xcb_presentation_support(
|
||||||
|
&device->wsi_device,
|
||||||
|
queueFamilyIndex,
|
||||||
|
connection, visual_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
VkBool32 tu_GetPhysicalDeviceXlibPresentationSupportKHR(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
uint32_t queueFamilyIndex,
|
||||||
|
Display* dpy,
|
||||||
|
VisualID visualID)
|
||||||
|
{
|
||||||
|
TU_FROM_HANDLE(tu_physical_device, device, physicalDevice);
|
||||||
|
|
||||||
|
return wsi_get_physical_device_xcb_presentation_support(
|
||||||
|
&device->wsi_device,
|
||||||
|
queueFamilyIndex,
|
||||||
|
XGetXCBConnection(dpy), visualID);
|
||||||
|
}
|
||||||
|
|
||||||
|
VkResult tu_CreateXcbSurfaceKHR(
|
||||||
|
VkInstance _instance,
|
||||||
|
const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface)
|
||||||
|
{
|
||||||
|
TU_FROM_HANDLE(tu_instance, instance, _instance);
|
||||||
|
const VkAllocationCallbacks *alloc;
|
||||||
|
assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR);
|
||||||
|
|
||||||
|
if (pAllocator)
|
||||||
|
alloc = pAllocator;
|
||||||
|
else
|
||||||
|
alloc = &instance->alloc;
|
||||||
|
|
||||||
|
return wsi_create_xcb_surface(alloc, pCreateInfo, pSurface);
|
||||||
|
}
|
||||||
|
|
||||||
|
VkResult tu_CreateXlibSurfaceKHR(
|
||||||
|
VkInstance _instance,
|
||||||
|
const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface)
|
||||||
|
{
|
||||||
|
TU_FROM_HANDLE(tu_instance, instance, _instance);
|
||||||
|
const VkAllocationCallbacks *alloc;
|
||||||
|
|
||||||
|
assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR);
|
||||||
|
|
||||||
|
if (pAllocator)
|
||||||
|
alloc = pAllocator;
|
||||||
|
else
|
||||||
|
alloc = &instance->alloc;
|
||||||
|
|
||||||
|
return wsi_create_xlib_surface(alloc, pCreateInfo, pSurface);
|
||||||
|
}
|
Loading…
Reference in New Issue