On 6 October 2016 at 15:13, Martin Peres <[email protected]> wrote:
> This allows querying the current active screen from the
> loader's common code.
>
> Signed-off-by: Martin Peres <[email protected]>
> ---
> 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: [email protected]
Reviewed-by: Emil Velikov <[email protected]>
Thanks,
Emil
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev