[Mesa-dev] [PATCH v3] glx: fix error code when there is no context bound

Emil Velikov emil.l.velikov at gmail.com
Mon May 30 13:35:10 UTC 2016


On 30 May 2016 at 07:53, Tapani Pälli <tapani.palli at intel.com> wrote:
> From: Bernard Kilarski <bernard.r.kilarski at intel.com>
>
> v2: change all related NULL checks to check against dummyContext
> v3: really check for dummyContext *only* when ctx was from
>     __glXGetCurrentContext
>
> Signed-off-by: Bernard Kilarski <bernard.r.kilarski at intel.com>
> Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> Cc: "11.2" <mesa-stable at lists.freedesktop.org>
> ---
>  src/glx/glx_pbuffer.c             |  2 +-
>  src/glx/glxcmds.c                 | 12 ++++++------
>  src/glx/query_renderer.c          |  4 ++--
>  src/glx/tests/fake_glx_screen.cpp |  6 +++++-
>  4 files changed, 14 insertions(+), 10 deletions(-)
>

> +++ b/src/glx/glxcmds.c
There are a lot more places that need this fix.

glXWaitGL, glXWaitX glXUseXFont glXSwapBuffers (multiple cases, split
the apple bits?), glXGetCurrentDisplay, __glXSwapIntervalMESA,
__glXGetSwapIntervalMESA, __glXCopySubBufferMESA


And some more in
 - apple/apple_xgl_api_stereo.c
__applegl_glDrawBuffer __applegl_glDrawBuffers

 - apple/apple_xgl_api_viewport.c
__applegl_glViewport
Might be worth splitting the Apple changes and CCing Jeremy to test/ack.

 - glx_error.c
__glXSendError


> +++ b/src/glx/tests/fake_glx_screen.cpp
> @@ -75,7 +75,11 @@ indirect_create_context_attribs(struct glx_screen *base,
>     return indirect_create_context(base, config_base, shareList, 0);
>  }
>
> -__thread void *__glX_tls_Context = NULL;
> +/* This is necessary so that we don't have to link with glxcurrent.c
> + * which would require us to link with X libraries and what not.
> + */
> +struct glx_context dummyContext;
Seemingly not required atm, although it would be safer to initialize
it as in glxcurrent.c. Namely:

struct glx_context dummyContext = {
   &dummyBuffer[0],
   &dummyBuffer[0],
   &dummyBuffer[0],
   &dummyBuffer[__GLX_BUFFER_LIMIT_SIZE],
   sizeof(dummyBuffer),
   &dummyVtable
};

This way things won't explode in spectacular ways as we add more tests.

> +__thread void *__glX_tls_Context = &dummyContext;
>
Not 100% sure but I think we want to move this (and the dummyContext)
in the if !defined(GLX_USE_TLS) below ?

Regards,
Emil


More information about the mesa-dev mailing list