loader,glx: add render_gpu tag psc->driScreen and psc->fd
v1: add render_gpu_tag (Pierre-Eric) Signed-off-by: Yogesh Mohan Marimuthu <yogesh.mohanmarimuthu@amd.com> Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13422>
This commit is contained in:

committed by
Marge Bot

parent
c712419c1a
commit
1c5b61eefb
@@ -122,7 +122,7 @@ glx_dri3_get_dri_screen(void)
|
||||
struct glx_context *gc = __glXGetCurrentContext();
|
||||
struct dri3_screen *psc = (struct dri3_screen *) gc->psc;
|
||||
|
||||
return (gc != &dummyContext && psc) ? psc->driScreen : NULL;
|
||||
return (gc != &dummyContext && psc) ? psc->driScreenRenderGPU : NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -283,15 +283,15 @@ dri3_create_context_attribs(struct glx_screen *base,
|
||||
pcp->renderType = dca.render_type;
|
||||
|
||||
pcp->driContext =
|
||||
psc->image_driver->createContextAttribs(psc->driScreen,
|
||||
dca.api,
|
||||
config ? config->driConfig
|
||||
: NULL,
|
||||
shared,
|
||||
num_ctx_attribs / 2,
|
||||
ctx_attribs,
|
||||
error,
|
||||
pcp);
|
||||
psc->image_driver->createContextAttribs(psc->driScreenRenderGPU,
|
||||
dca.api,
|
||||
config ? config->driConfig
|
||||
: NULL,
|
||||
shared,
|
||||
num_ctx_attribs / 2,
|
||||
ctx_attribs,
|
||||
error,
|
||||
pcp);
|
||||
|
||||
if (pcp->driContext == NULL)
|
||||
goto error_exit;
|
||||
@@ -364,7 +364,7 @@ dri3_create_drawable(struct glx_screen *base, XID xDrawable,
|
||||
if (loader_dri3_drawable_init(XGetXCBConnection(base->dpy),
|
||||
xDrawable,
|
||||
glx_to_loader_dri3_drawable_type(type),
|
||||
psc->driScreen, psc->driScreenDisplayGPU,
|
||||
psc->driScreenRenderGPU, psc->driScreenDisplayGPU,
|
||||
psc->is_different_gpu, has_multibuffer,
|
||||
psc->prefer_back_buffer_reuse,
|
||||
config->driConfig,
|
||||
@@ -592,10 +592,10 @@ dri3_destroy_screen(struct glx_screen *base)
|
||||
}
|
||||
close(psc->fd_display_gpu);
|
||||
}
|
||||
loader_dri3_close_screen(psc->driScreen);
|
||||
psc->core->destroyScreen(psc->driScreen);
|
||||
loader_dri3_close_screen(psc->driScreenRenderGPU);
|
||||
psc->core->destroyScreen(psc->driScreenRenderGPU);
|
||||
driDestroyConfigs(psc->driver_configs);
|
||||
close(psc->fd);
|
||||
close(psc->fd_render_gpu);
|
||||
free(psc);
|
||||
}
|
||||
|
||||
@@ -611,7 +611,7 @@ dri3_set_swap_interval(__GLXDRIdrawable *pdraw, int interval)
|
||||
struct dri3_drawable *priv = (struct dri3_drawable *) pdraw;
|
||||
struct dri3_screen *psc = (struct dri3_screen *) priv->base.psc;
|
||||
|
||||
if (!dri_valid_swap_interval(psc->driScreen, psc->config, interval))
|
||||
if (!dri_valid_swap_interval(psc->driScreenRenderGPU, psc->config, interval))
|
||||
return GLX_BAD_VALUE;
|
||||
|
||||
loader_dri3_set_swap_interval(&priv->loader_drawable, interval);
|
||||
@@ -696,7 +696,7 @@ dri3_bind_extensions(struct dri3_screen *psc, struct glx_display * priv,
|
||||
unsigned mask;
|
||||
int i;
|
||||
|
||||
extensions = psc->core->getExtensions(psc->driScreen);
|
||||
extensions = psc->core->getExtensions(psc->driScreenRenderGPU);
|
||||
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_EXT_swap_control");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_EXT_swap_control_tear");
|
||||
@@ -705,7 +705,7 @@ dri3_bind_extensions(struct dri3_screen *psc, struct glx_display * priv,
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_SGI_make_current_read");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_INTEL_swap_event");
|
||||
|
||||
mask = psc->image_driver->getAPIMask(psc->driScreen);
|
||||
mask = psc->image_driver->getAPIMask(psc->driScreenRenderGPU);
|
||||
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile");
|
||||
@@ -759,7 +759,7 @@ dri3_get_driver_name(struct glx_screen *glx_screen)
|
||||
{
|
||||
struct dri3_screen *psc = (struct dri3_screen *)glx_screen;
|
||||
|
||||
return loader_get_driver_for_fd(psc->fd);
|
||||
return loader_get_driver_for_fd(psc->fd_render_gpu);
|
||||
}
|
||||
|
||||
static const struct glx_screen_vtable dri3_screen_vtable = {
|
||||
@@ -799,7 +799,7 @@ dri3_create_screen(int screen, struct glx_display * priv)
|
||||
if (psc == NULL)
|
||||
return NULL;
|
||||
|
||||
psc->fd = -1;
|
||||
psc->fd_render_gpu = -1;
|
||||
psc->fd_display_gpu = -1;
|
||||
|
||||
if (!glx_screen_init(&psc->base, screen, priv)) {
|
||||
@@ -807,8 +807,8 @@ dri3_create_screen(int screen, struct glx_display * priv)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
psc->fd = loader_dri3_open(c, RootWindow(priv->dpy, screen), None);
|
||||
if (psc->fd < 0) {
|
||||
psc->fd_render_gpu = loader_dri3_open(c, RootWindow(priv->dpy, screen), None);
|
||||
if (psc->fd_render_gpu < 0) {
|
||||
int conn_error = xcb_connection_has_error(c);
|
||||
|
||||
glx_screen_cleanup(&psc->base);
|
||||
@@ -821,14 +821,14 @@ dri3_create_screen(int screen, struct glx_display * priv)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
psc->fd_display_gpu = fcntl(psc->fd, F_DUPFD_CLOEXEC, 3);
|
||||
psc->fd = loader_get_user_preferred_fd(psc->fd, &psc->is_different_gpu);
|
||||
psc->fd_display_gpu = fcntl(psc->fd_render_gpu, F_DUPFD_CLOEXEC, 3);
|
||||
psc->fd_render_gpu = loader_get_user_preferred_fd(psc->fd_render_gpu, &psc->is_different_gpu);
|
||||
if (!psc->is_different_gpu) {
|
||||
close(psc->fd_display_gpu);
|
||||
psc->fd_display_gpu = -1;
|
||||
}
|
||||
|
||||
driverName = loader_get_driver_for_fd(psc->fd);
|
||||
driverName = loader_get_driver_for_fd(psc->fd_render_gpu);
|
||||
if (!driverName) {
|
||||
ErrorMessageF("No driver found\n");
|
||||
goto handle_error;
|
||||
@@ -867,13 +867,13 @@ dri3_create_screen(int screen, struct glx_display * priv)
|
||||
}
|
||||
}
|
||||
|
||||
psc->driScreen =
|
||||
psc->image_driver->createNewScreen2(screen, psc->fd,
|
||||
psc->driScreenRenderGPU =
|
||||
psc->image_driver->createNewScreen2(screen, psc->fd_render_gpu,
|
||||
pdp->loader_extensions,
|
||||
extensions,
|
||||
&driver_configs, psc);
|
||||
|
||||
if (psc->driScreen == NULL) {
|
||||
if (psc->driScreenRenderGPU == NULL) {
|
||||
ErrorMessageF("glx: failed to create dri3 screen\n");
|
||||
goto handle_error;
|
||||
}
|
||||
@@ -957,32 +957,32 @@ dri3_create_screen(int screen, struct glx_display * priv)
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_EXT_buffer_age");
|
||||
|
||||
if (psc->config->base.version > 1 &&
|
||||
psc->config->configQuerys(psc->driScreen, "glx_extension_override",
|
||||
psc->config->configQuerys(psc->driScreenRenderGPU, "glx_extension_override",
|
||||
&tmp) == 0)
|
||||
__glXParseExtensionOverride(&psc->base, tmp);
|
||||
|
||||
if (psc->config->base.version > 1 &&
|
||||
psc->config->configQuerys(psc->driScreen,
|
||||
psc->config->configQuerys(psc->driScreenRenderGPU,
|
||||
"indirect_gl_extension_override",
|
||||
&tmp) == 0)
|
||||
__IndirectGlParseExtensionOverride(&psc->base, tmp);
|
||||
|
||||
if (psc->config->base.version > 1) {
|
||||
uint8_t force = false;
|
||||
if (psc->config->configQueryb(psc->driScreen, "force_direct_glx_context",
|
||||
if (psc->config->configQueryb(psc->driScreenRenderGPU, "force_direct_glx_context",
|
||||
&force) == 0) {
|
||||
psc->base.force_direct_context = force;
|
||||
}
|
||||
|
||||
uint8_t invalid_glx_destroy_window = false;
|
||||
if (psc->config->configQueryb(psc->driScreen,
|
||||
if (psc->config->configQueryb(psc->driScreenRenderGPU,
|
||||
"allow_invalid_glx_destroy_window",
|
||||
&invalid_glx_destroy_window) == 0) {
|
||||
psc->base.allow_invalid_glx_destroy_window = invalid_glx_destroy_window;
|
||||
}
|
||||
|
||||
uint8_t keep_native_window_glx_drawable = false;
|
||||
if (psc->config->configQueryb(psc->driScreen,
|
||||
if (psc->config->configQueryb(psc->driScreenRenderGPU,
|
||||
"keep_native_window_glx_drawable",
|
||||
&keep_native_window_glx_drawable) == 0) {
|
||||
psc->base.keep_native_window_glx_drawable = keep_native_window_glx_drawable;
|
||||
@@ -996,7 +996,7 @@ dri3_create_screen(int screen, struct glx_display * priv)
|
||||
psc->prefer_back_buffer_reuse = 1;
|
||||
if (psc->is_different_gpu && psc->rendererQuery) {
|
||||
unsigned value;
|
||||
if (psc->rendererQuery->queryInteger(psc->driScreen,
|
||||
if (psc->rendererQuery->queryInteger(psc->driScreenRenderGPU,
|
||||
__DRI2_RENDERER_PREFER_BACK_BUFFER_REUSE,
|
||||
&value) == 0)
|
||||
psc->prefer_back_buffer_reuse = value;
|
||||
@@ -1011,14 +1011,14 @@ handle_error:
|
||||
glx_config_destroy_list(configs);
|
||||
if (visuals)
|
||||
glx_config_destroy_list(visuals);
|
||||
if (psc->driScreen)
|
||||
psc->core->destroyScreen(psc->driScreen);
|
||||
psc->driScreen = NULL;
|
||||
if (psc->driScreenRenderGPU)
|
||||
psc->core->destroyScreen(psc->driScreenRenderGPU);
|
||||
psc->driScreenRenderGPU = NULL;
|
||||
if (psc->driScreenDisplayGPU)
|
||||
psc->core->destroyScreen(psc->driScreenDisplayGPU);
|
||||
psc->driScreenDisplayGPU = NULL;
|
||||
if (psc->fd >= 0)
|
||||
close(psc->fd);
|
||||
if (psc->fd_render_gpu >= 0)
|
||||
close(psc->fd_render_gpu);
|
||||
if (psc->fd_display_gpu >= 0)
|
||||
close(psc->fd_display_gpu);
|
||||
if (psc->driver)
|
||||
|
Reference in New Issue
Block a user