diff options
author | Yogesh Mohan Marimuthu <yogesh.mohanmarimuthu@amd.com> | 2023-01-23 16:34:40 +0530 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2023-01-24 12:51:35 +0000 |
commit | 1c5b61eefb9be69256552cfde1caf3b7e1d29614 (patch) | |
tree | 4d6a7133a41b47610a9cddc80d36976ad9216500 /src/glx | |
parent | c712419c1a1549562aea73c9533ce40edfc7b163 (diff) | |
download | mesa-1c5b61eefb9be69256552cfde1caf3b7e1d29614.tar.gz |
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>
Diffstat (limited to 'src/glx')
-rw-r--r-- | src/glx/dri3_glx.c | 76 | ||||
-rw-r--r-- | src/glx/dri3_priv.h | 9 | ||||
-rw-r--r-- | src/glx/dri_common_query_renderer.c | 4 |
3 files changed, 44 insertions, 45 deletions
diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index b3c82dc08e7..5a9ec959640 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -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) diff --git a/src/glx/dri3_priv.h b/src/glx/dri3_priv.h index 862ce32baba..0da2af92f68 100644 --- a/src/glx/dri3_priv.h +++ b/src/glx/dri3_priv.h @@ -73,7 +73,7 @@ struct dri3_display struct dri3_screen { struct glx_screen base; - __DRIscreen *driScreen; + __DRIscreen *driScreenRenderGPU; __GLXDRIscreen vtable; /* DRI screen is created for display GPU in case of prime. @@ -94,12 +94,11 @@ struct dri3_screen { const __DRIconfig **driver_configs; void *driver; - int fd; - bool is_different_gpu; - bool prefer_back_buffer_reuse; - + int fd_render_gpu; /* fd for display GPU in case of prime */ int fd_display_gpu; + bool is_different_gpu; + bool prefer_back_buffer_reuse; struct loader_dri3_extensions loader_dri3_ext; }; diff --git a/src/glx/dri_common_query_renderer.c b/src/glx/dri_common_query_renderer.c index 672e3bf314a..6d2a06689a9 100644 --- a/src/glx/dri_common_query_renderer.c +++ b/src/glx/dri_common_query_renderer.c @@ -137,7 +137,7 @@ dri3_query_renderer_integer(struct glx_screen *base, int attribute, if (psc->rendererQuery == NULL) return -1; - ret = psc->rendererQuery->queryInteger(psc->driScreen, dri_attribute, + ret = psc->rendererQuery->queryInteger(psc->driScreenRenderGPU, dri_attribute, value); dri_convert_context_profile_bits(attribute, value); @@ -159,7 +159,7 @@ dri3_query_renderer_string(struct glx_screen *base, int attribute, if (psc->rendererQuery == NULL) return -1; - return psc->rendererQuery->queryString(psc->driScreen, dri_attribute, value); + return psc->rendererQuery->queryString(psc->driScreenRenderGPU, dri_attribute, value); } #endif /* HAVE_DRI3 */ |