mirror of
https://github.com/X11Libre/xf86-video-amdgpu.git
synced 2026-03-24 01:24:31 +00:00
dri3: add open_client support which is just open with an extra argument that we don't use
This commit is contained in:
@@ -290,6 +290,33 @@ amdgpu_dri3_import_syncobj(ClientPtr client, ScreenPtr screen,
|
|||||||
return &amdgpu_syncobj->base;
|
return &amdgpu_syncobj->base;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int open_card_node(ScreenPtr screen, int *out);
|
||||||
|
static int open_render_node(ScreenPtr screen, int *out);
|
||||||
|
static int amdgpu_dri3_open(ScreenPtr screen, RRProviderPtr provider, int *out);
|
||||||
|
|
||||||
|
static int
|
||||||
|
amdgpu_dri3_open_client(ClientPtr client, ScreenPtr screen,
|
||||||
|
RRProviderPtr provider, int *out)
|
||||||
|
{
|
||||||
|
return amdgpu_dri3_open(screen, provider, out);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
amdgpu_dri3_open(ScreenPtr screen, RRProviderPtr provider, int *out)
|
||||||
|
{
|
||||||
|
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
|
||||||
|
AMDGPUEntPtr pAMDGPUEnt = AMDGPUEntPriv(scrn);
|
||||||
|
int ret = BadAlloc;
|
||||||
|
|
||||||
|
if (pAMDGPUEnt->render_node)
|
||||||
|
ret = open_render_node(screen, out);
|
||||||
|
|
||||||
|
if (ret != Success)
|
||||||
|
ret = open_card_node(screen, out);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int open_card_node(ScreenPtr screen, int *out)
|
static int open_card_node(ScreenPtr screen, int *out)
|
||||||
{
|
{
|
||||||
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
|
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
|
||||||
@@ -350,22 +377,6 @@ static int open_render_node(ScreenPtr screen, int *out)
|
|||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
amdgpu_dri3_open(ScreenPtr screen, RRProviderPtr provider, int *out)
|
|
||||||
{
|
|
||||||
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
|
|
||||||
AMDGPUEntPtr pAMDGPUEnt = AMDGPUEntPriv(scrn);
|
|
||||||
int ret = BadAlloc;
|
|
||||||
|
|
||||||
if (pAMDGPUEnt->render_node)
|
|
||||||
ret = open_render_node(screen, out);
|
|
||||||
|
|
||||||
if (ret != Success)
|
|
||||||
ret = open_card_node(screen, out);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PixmapPtr amdgpu_dri3_pixmap_from_fd(ScreenPtr screen,
|
static PixmapPtr amdgpu_dri3_pixmap_from_fd(ScreenPtr screen,
|
||||||
int fd,
|
int fd,
|
||||||
CARD16 width,
|
CARD16 width,
|
||||||
@@ -897,8 +908,10 @@ amdgpu_dri3_get_drawable_modifiers(DrawablePtr draw, uint32_t format,
|
|||||||
|
|
||||||
static dri3_screen_info_rec amdgpu_dri3_screen_info = {
|
static dri3_screen_info_rec amdgpu_dri3_screen_info = {
|
||||||
.version = 4,
|
.version = 4,
|
||||||
|
/* Version 1 */
|
||||||
.open = amdgpu_dri3_open,
|
.open = amdgpu_dri3_open,
|
||||||
.pixmap_from_fd = amdgpu_dri3_pixmap_from_fd,
|
.pixmap_from_fd = amdgpu_dri3_pixmap_from_fd,
|
||||||
|
.open_client = amdgpu_dri3_open_client,
|
||||||
/* Version 1.1 */
|
/* Version 1.1 */
|
||||||
.fd_from_pixmap = amdgpu_dri3_fd_from_pixmap,
|
.fd_from_pixmap = amdgpu_dri3_fd_from_pixmap,
|
||||||
/* Version 1.2 */
|
/* Version 1.2 */
|
||||||
|
|||||||
Reference in New Issue
Block a user