[Mesa-dev] [PATCH 1/2] loader/dri3: add get_dri_screen() to the vtable
Emil Velikov
emil.l.velikov at gmail.com
Thu Oct 6 14:56:38 UTC 2016
On 6 October 2016 at 15:13, Martin Peres <martin.peres at linux.intel.com> wrote:
> This allows querying the current active screen from the
> loader's common code.
>
> Signed-off-by: Martin Peres <martin.peres at linux.intel.com>
> ---
> src/egl/drivers/dri2/platform_x11_dri3.c | 12 ++++++++++++
> src/glx/dri3_glx.c | 11 +++++++++++
> src/loader/loader_dri3_helper.h | 1 +
> 3 files changed, 24 insertions(+)
>
> diff --git a/src/egl/drivers/dri2/platform_x11_dri3.c b/src/egl/drivers/dri2/platform_x11_dri3.c
> index 31649fe..d93f5bc 100644
> --- a/src/egl/drivers/dri2/platform_x11_dri3.c
> +++ b/src/egl/drivers/dri2/platform_x11_dri3.c
> @@ -103,6 +103,17 @@ egl_dri3_get_dri_context(struct loader_dri3_drawable *draw)
> return dri2_ctx->dri_context;
> }
>
> +static __DRIscreen *
> +egl_dri3_get_dri_screen(struct loader_dri3_drawable *draw)
> +{
> + _EGLContext *ctx = _eglGetCurrentContext();
> + struct dri2_egl_context *dri2_ctx;
> + if (!ctx)
> + return NULL;
<thinking out loud>
Only the loader_dri3 code seems to do this NULL check. I'm wondering
how likely it is to hit.
At the same time, many places could/should check if we have a dummyctx
(via _eglIsCurrentThreadDummy) yet they don't bother.
We had a similar (bug) hunt on the GLX side recently and we should
audit the EGL codepaths one of these days.
</thinking out loud>
> + dri2_ctx = dri2_egl_context(ctx);
> + return dri2_egl_display(dri2_ctx->base.Resource.Display)->dri_screen;
> +}
> +
> static void
> egl_dri3_flush_drawable(struct loader_dri3_drawable *draw, unsigned flags)
> {
> @@ -119,6 +130,7 @@ static struct loader_dri3_vtable egl_dri3_vtable = {
> .set_drawable_size = egl_dri3_set_drawable_size,
> .in_current_context = egl_dri3_in_current_context,
> .get_dri_context = egl_dri3_get_dri_context,
> + .get_dri_screen = egl_dri3_get_dri_screen,
> .flush_drawable = egl_dri3_flush_drawable,
> .show_fps = NULL,
> };
> diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c
> index 90d7bba..3bc2e1b 100644
> --- a/src/glx/dri3_glx.c
> +++ b/src/glx/dri3_glx.c
> @@ -132,6 +132,16 @@ glx_dri3_get_dri_context(struct loader_dri3_drawable *draw)
> return (gc != &dummyContext) ? dri3Ctx->driContext : NULL;
> }
>
> +static __DRIscreen *
> +glx_dri3_get_dri_screen(struct loader_dri3_drawable *draw)
> +{
> + struct glx_context *gc = __glXGetCurrentContext();
> + struct dri3_context *pcp = (struct dri3_context *) __glXGetCurrentContext();
s/__glXGetCurrentContext()/gc/
With this small fix the series is:
Cc: mesa-stable at lists.freedesktop.org
Reviewed-by: Emil Velikov <emil.velikov at collabora.com>
Thanks,
Emil
More information about the mesa-dev
mailing list