zink: Only #include <vulkan/vulkan_core.h> instead #include <vulkan/vulkan.h> in kopper_interface.h
It's pulled too much system dependent headers before this commit when #include <vulkan/vulkan.h> directly, Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19491>
This commit is contained in:
@@ -35,17 +35,7 @@
|
|||||||
#define KOPPER_INTERFACE_H
|
#define KOPPER_INTERFACE_H
|
||||||
|
|
||||||
#include <GL/internal/dri_interface.h>
|
#include <GL/internal/dri_interface.h>
|
||||||
#include <vulkan/vulkan.h>
|
#include <vulkan/vulkan_core.h>
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
||||||
#include <xcb/xcb.h>
|
|
||||||
#include <vulkan/vulkan_xcb.h>
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
#include <vulkan/vulkan_wayland.h>
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#include <vulkan/vulkan_win32.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct __DRIkopperExtensionRec __DRIkopperExtension;
|
typedef struct __DRIkopperExtensionRec __DRIkopperExtension;
|
||||||
typedef struct __DRIkopperLoaderExtensionRec __DRIkopperLoaderExtension;
|
typedef struct __DRIkopperLoaderExtensionRec __DRIkopperLoaderExtension;
|
||||||
@@ -80,19 +70,23 @@ struct __DRIkopperExtensionRec {
|
|||||||
* Kopper loader extension.
|
* Kopper loader extension.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct for storage the union of all platform depdendent
|
||||||
|
* Vk*SurfaceCreateInfo* type, all platform Vk*SurfaceCreateInfo* contains
|
||||||
|
* uint32_t flags and at most two extra pointer besides bos header.
|
||||||
|
* For example:
|
||||||
|
* VkWin32SurfaceCreateInfoKHR contains flags, hinstance and hwnd besides bos header
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct kopper_vk_surface_create_storage {
|
||||||
|
/* First two fields are copied from VkBaseOutStructure for easily access shared properties */
|
||||||
|
VkStructureType sType;
|
||||||
|
struct VkBaseOutStructure *pNext;
|
||||||
|
intptr_t padding[3];
|
||||||
|
};
|
||||||
|
|
||||||
struct kopper_loader_info {
|
struct kopper_loader_info {
|
||||||
union {
|
struct kopper_vk_surface_create_storage bos;
|
||||||
VkBaseOutStructure bos;
|
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
||||||
VkXcbSurfaceCreateInfoKHR xcb;
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
VkWaylandSurfaceCreateInfoKHR wl;
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
VkWin32SurfaceCreateInfoKHR win32;
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
int has_alpha;
|
int has_alpha;
|
||||||
int initial_swap_interval;
|
int initial_swap_interval;
|
||||||
};
|
};
|
||||||
|
@@ -34,6 +34,7 @@
|
|||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <vulkan/vulkan.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <xf86drm.h>
|
#include <xf86drm.h>
|
||||||
#include "drm-uapi/drm_fourcc.h"
|
#include "drm-uapi/drm_fourcc.h"
|
||||||
@@ -2653,12 +2654,14 @@ static const __DRIswrastLoaderExtension swrast_loader_extension = {
|
|||||||
.putImage2 = dri2_wl_swrast_put_image2,
|
.putImage2 = dri2_wl_swrast_put_image2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static_assert(sizeof(struct kopper_vk_surface_create_storage) >= sizeof(VkWaylandSurfaceCreateInfoKHR), "");
|
||||||
|
|
||||||
static void
|
static void
|
||||||
kopperSetSurfaceCreateInfo(void *_draw, struct kopper_loader_info *out)
|
kopperSetSurfaceCreateInfo(void *_draw, struct kopper_loader_info *out)
|
||||||
{
|
{
|
||||||
struct dri2_egl_surface *dri2_surf = _draw;
|
struct dri2_egl_surface *dri2_surf = _draw;
|
||||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(dri2_surf->base.Resource.Display);
|
struct dri2_egl_display *dri2_dpy = dri2_egl_display(dri2_surf->base.Resource.Display);
|
||||||
VkWaylandSurfaceCreateInfoKHR *wlsci = &out->wl;
|
VkWaylandSurfaceCreateInfoKHR *wlsci = (VkWaylandSurfaceCreateInfoKHR *)&out->bos;
|
||||||
|
|
||||||
wlsci->sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
|
wlsci->sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
|
||||||
wlsci->pNext = NULL;
|
wlsci->pNext = NULL;
|
||||||
|
@@ -35,6 +35,7 @@
|
|||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <vulkan/vulkan.h>
|
||||||
#ifdef HAVE_LIBDRM
|
#ifdef HAVE_LIBDRM
|
||||||
#include <xf86drm.h>
|
#include <xf86drm.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -1323,19 +1324,22 @@ static const __DRIswrastLoaderExtension swrast_loader_extension = {
|
|||||||
.getImage = swrastGetImage,
|
.getImage = swrastGetImage,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static_assert(sizeof(struct kopper_vk_surface_create_storage) >= sizeof(VkXcbSurfaceCreateInfoKHR), "");
|
||||||
|
|
||||||
static void
|
static void
|
||||||
kopperSetSurfaceCreateInfo(void *_draw, struct kopper_loader_info *ci)
|
kopperSetSurfaceCreateInfo(void *_draw, struct kopper_loader_info *ci)
|
||||||
{
|
{
|
||||||
struct dri2_egl_surface *dri2_surf = _draw;
|
struct dri2_egl_surface *dri2_surf = _draw;
|
||||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(dri2_surf->base.Resource.Display);
|
struct dri2_egl_display *dri2_dpy = dri2_egl_display(dri2_surf->base.Resource.Display);
|
||||||
|
VkXcbSurfaceCreateInfoKHR *xcb = (VkXcbSurfaceCreateInfoKHR *)&ci->bos;
|
||||||
|
|
||||||
if (dri2_surf->base.Type != EGL_WINDOW_BIT)
|
if (dri2_surf->base.Type != EGL_WINDOW_BIT)
|
||||||
return;
|
return;
|
||||||
ci->xcb.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
|
xcb->sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
|
||||||
ci->xcb.pNext = NULL;
|
xcb->pNext = NULL;
|
||||||
ci->xcb.flags = 0;
|
xcb->flags = 0;
|
||||||
ci->xcb.connection = dri2_dpy->conn;
|
xcb->connection = dri2_dpy->conn;
|
||||||
ci->xcb.window = dri2_surf->drawable;
|
xcb->window = dri2_surf->drawable;
|
||||||
ci->has_alpha = dri2_surf->depth == 32;
|
ci->has_alpha = dri2_surf->depth == 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -85,19 +85,25 @@ kopper_CreateSurface(struct zink_screen *screen, struct kopper_displaytarget *cd
|
|||||||
VkStructureType type = cdt->info.bos.sType;
|
VkStructureType type = cdt->info.bos.sType;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||||
case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR:
|
case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR: {
|
||||||
error = VKSCR(CreateXcbSurfaceKHR)(screen->instance, &cdt->info.xcb, NULL, &surface);
|
VkXcbSurfaceCreateInfoKHR *xcb = (VkXcbSurfaceCreateInfoKHR *)&cdt->info.bos;
|
||||||
|
error = VKSCR(CreateXcbSurfaceKHR)(screen->instance, xcb, NULL, &surface);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||||
case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR:
|
case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR: {
|
||||||
error = VKSCR(CreateWaylandSurfaceKHR)(screen->instance, &cdt->info.wl, NULL, &surface);
|
VkWaylandSurfaceCreateInfoKHR *wlsci = (VkWaylandSurfaceCreateInfoKHR *)&cdt->info.bos;
|
||||||
|
error = VKSCR(CreateWaylandSurfaceKHR)(screen->instance, wlsci, NULL, &surface);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||||
case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR:
|
case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR: {
|
||||||
error = VKSCR(CreateWin32SurfaceKHR)(screen->instance, &cdt->info.win32, NULL, &surface);
|
VkWin32SurfaceCreateInfoKHR *win32 = (VkWin32SurfaceCreateInfoKHR *)&cdt->info.bos;
|
||||||
|
error = VKSCR(CreateWin32SurfaceKHR)(screen->instance, win32, NULL, &surface);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
unreachable("unsupported!");
|
unreachable("unsupported!");
|
||||||
@@ -176,19 +182,25 @@ find_dt_entry(struct zink_screen *screen, const struct kopper_displaytarget *cdt
|
|||||||
struct hash_entry *he = NULL;
|
struct hash_entry *he = NULL;
|
||||||
switch (cdt->type) {
|
switch (cdt->type) {
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||||
case KOPPER_X11:
|
case KOPPER_X11: {
|
||||||
he = _mesa_hash_table_search_pre_hashed(&screen->dts, cdt->info.xcb.window, (void*)(uintptr_t)cdt->info.xcb.window);
|
VkXcbSurfaceCreateInfoKHR *xcb = (VkXcbSurfaceCreateInfoKHR *)&cdt->info.bos;
|
||||||
|
he = _mesa_hash_table_search_pre_hashed(&screen->dts, xcb->window, (void*)(uintptr_t)xcb->window);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||||
case KOPPER_WAYLAND:
|
case KOPPER_WAYLAND: {
|
||||||
he = _mesa_hash_table_search(&screen->dts, cdt->info.wl.surface);
|
VkWaylandSurfaceCreateInfoKHR *wlsci = (VkWaylandSurfaceCreateInfoKHR *)&cdt->info.bos;
|
||||||
|
he = _mesa_hash_table_search(&screen->dts, wlsci->surface);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||||
case KOPPER_WIN32:
|
case KOPPER_WIN32: {
|
||||||
he = _mesa_hash_table_search(&screen->dts, cdt->info.win32.hwnd);
|
VkWin32SurfaceCreateInfoKHR *win32 = (VkWin32SurfaceCreateInfoKHR *)&cdt->info.bos;
|
||||||
|
he = _mesa_hash_table_search(&screen->dts, win32->hwnd);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
unreachable("unsupported!");
|
unreachable("unsupported!");
|
||||||
@@ -425,19 +437,25 @@ zink_kopper_displaytarget_create(struct zink_screen *screen, unsigned tex_usage,
|
|||||||
simple_mtx_lock(&screen->dt_lock);
|
simple_mtx_lock(&screen->dt_lock);
|
||||||
switch (cdt->type) {
|
switch (cdt->type) {
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||||
case KOPPER_X11:
|
case KOPPER_X11: {
|
||||||
_mesa_hash_table_insert_pre_hashed(&screen->dts, cdt->info.xcb.window, (void*)(uintptr_t)cdt->info.xcb.window, cdt);
|
VkXcbSurfaceCreateInfoKHR *xcb = (VkXcbSurfaceCreateInfoKHR *)&cdt->info.bos;
|
||||||
|
_mesa_hash_table_insert_pre_hashed(&screen->dts, xcb->window, (void*)(uintptr_t)xcb->window, cdt);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||||
case KOPPER_WAYLAND:
|
case KOPPER_WAYLAND: {
|
||||||
_mesa_hash_table_insert(&screen->dts, cdt->info.wl.surface, cdt);
|
VkWaylandSurfaceCreateInfoKHR *wlsci = (VkWaylandSurfaceCreateInfoKHR *)&cdt->info.bos;
|
||||||
|
_mesa_hash_table_insert(&screen->dts, wlsci->surface, cdt);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||||
case KOPPER_WIN32:
|
case KOPPER_WIN32: {
|
||||||
_mesa_hash_table_insert(&screen->dts, cdt->info.win32.hwnd, cdt);
|
VkWin32SurfaceCreateInfoKHR *win32 = (VkWin32SurfaceCreateInfoKHR *)&cdt->info.bos;
|
||||||
|
_mesa_hash_table_insert(&screen->dts, win32->hwnd, cdt);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
unreachable("unsupported!");
|
unreachable("unsupported!");
|
||||||
|
@@ -421,8 +421,9 @@ kopper_get_pixmap_buffer(struct kopper_drawable *cdraw,
|
|||||||
__DRIscreen *cur_screen;
|
__DRIscreen *cur_screen;
|
||||||
struct kopper_loader_info *info = &cdraw->info;
|
struct kopper_loader_info *info = &cdraw->info;
|
||||||
assert(info->bos.sType == VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR);
|
assert(info->bos.sType == VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR);
|
||||||
xcb_connection_t *conn = info->xcb.connection;
|
VkXcbSurfaceCreateInfoKHR *xcb = (VkXcbSurfaceCreateInfoKHR *)&info->bos;
|
||||||
pixmap = info->xcb.window;
|
xcb_connection_t *conn = xcb->connection;
|
||||||
|
pixmap = xcb->window;
|
||||||
|
|
||||||
if (cdraw->image)
|
if (cdraw->image)
|
||||||
return cdraw->image->texture;
|
return cdraw->image->texture;
|
||||||
|
@@ -37,6 +37,7 @@
|
|||||||
#include "stw_winsys.h"
|
#include "stw_winsys.h"
|
||||||
|
|
||||||
#ifdef GALLIUM_ZINK
|
#ifdef GALLIUM_ZINK
|
||||||
|
#include <vulkan/vulkan.h>
|
||||||
#include "kopper_interface.h"
|
#include "kopper_interface.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -125,14 +126,18 @@ stw_pipe_blit(struct pipe_context *pipe,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef GALLIUM_ZINK
|
#ifdef GALLIUM_ZINK
|
||||||
|
|
||||||
|
static_assert(sizeof(struct kopper_vk_surface_create_storage) >= sizeof(VkWin32SurfaceCreateInfoKHR), "");
|
||||||
|
|
||||||
static void
|
static void
|
||||||
stw_st_fill_private_loader_data(struct stw_st_framebuffer *stwfb, struct kopper_loader_info *out)
|
stw_st_fill_private_loader_data(struct stw_st_framebuffer *stwfb, struct kopper_loader_info *out)
|
||||||
{
|
{
|
||||||
out->win32.sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR;
|
VkWin32SurfaceCreateInfoKHR *win32 = (VkWin32SurfaceCreateInfoKHR *)&out->bos;
|
||||||
out->win32.pNext = NULL;
|
win32->sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR;
|
||||||
out->win32.flags = 0;
|
win32->pNext = NULL;
|
||||||
out->win32.hinstance = GetModuleHandle(NULL);
|
win32->flags = 0;
|
||||||
out->win32.hwnd = stwfb->fb->hWnd;
|
win32->hinstance = GetModuleHandle(NULL);
|
||||||
|
win32->hwnd = stwfb->fb->hWnd;
|
||||||
out->has_alpha = true;
|
out->has_alpha = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -33,6 +33,7 @@
|
|||||||
#include "drisw_priv.h"
|
#include "drisw_priv.h"
|
||||||
#include <X11/extensions/shmproto.h>
|
#include <X11/extensions/shmproto.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <vulkan/vulkan.h>
|
||||||
#include "util/u_debug.h"
|
#include "util/u_debug.h"
|
||||||
#include "kopper_interface.h"
|
#include "kopper_interface.h"
|
||||||
#include "loader_dri_helper.h"
|
#include "loader_dri_helper.h"
|
||||||
@@ -367,16 +368,19 @@ static const __DRIswrastLoaderExtension swrastLoaderExtension = {
|
|||||||
.getImage2 = swrastGetImage2,
|
.getImage2 = swrastGetImage2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static_assert(sizeof(struct kopper_vk_surface_create_storage) >= sizeof(VkXcbSurfaceCreateInfoKHR), "");
|
||||||
|
|
||||||
static void
|
static void
|
||||||
kopperSetSurfaceCreateInfo(void *_draw, struct kopper_loader_info *out)
|
kopperSetSurfaceCreateInfo(void *_draw, struct kopper_loader_info *out)
|
||||||
{
|
{
|
||||||
__GLXDRIdrawable *draw = _draw;
|
__GLXDRIdrawable *draw = _draw;
|
||||||
|
VkXcbSurfaceCreateInfoKHR *xcb = (VkXcbSurfaceCreateInfoKHR *)&out->bos;
|
||||||
|
|
||||||
out->xcb.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
|
xcb->sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
|
||||||
out->xcb.pNext = NULL;
|
xcb->pNext = NULL;
|
||||||
out->xcb.flags = 0;
|
xcb->flags = 0;
|
||||||
out->xcb.connection = XGetXCBConnection(draw->psc->dpy);
|
xcb->connection = XGetXCBConnection(draw->psc->dpy);
|
||||||
out->xcb.window = draw->xDrawable;
|
xcb->window = draw->xDrawable;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const __DRIkopperLoaderExtension kopperLoaderExtension = {
|
static const __DRIkopperLoaderExtension kopperLoaderExtension = {
|
||||||
|
Reference in New Issue
Block a user