[Mesa-dev] [PATCH v2] darwin: Suppress type conversion warnings for GLhandleARB

Emil Velikov emil.l.velikov at gmail.com
Thu Jul 2 05:16:19 PDT 2015


On 1 July 2015 at 00:33, Julien Isorce <julien.isorce at gmail.com> wrote:
> darwin: silence GLhandleARB convertions from and to GLuint
>
> This patch and its description are inspired from Jose Fonseca
> explanations and suggestions.
>
> With this patch the following logic applies and only if __APPLE__:
>
> When building mesa, GLhandleARB is defined as unsigned long and
> at some point casted to GLuint in gl fuction implementations.
> These exact points are where these errors and warnings appear.
>
> When building an application GLhandleARB is defined as void*.
> Later when calling a gl function, for example glBindAttribLocationARB,
> it will be dispatched to _mesa_BindAttribLocation. So internally
> void* will be treated as unsigned long which has the same size.
> So the same truncation happens when casting it to GLuint.
>
> Same when GLhandleARB appears as return value.
> For mesa it will be GLuint -> unsigned long.
> For an application it will be GLuint -> unsigned long -> void*.
> Note that the value will be preserved when casting back to GLuint.
>
> When GLhandleARB appears as a pointer there are also separate
> entry-points, i.e. _mesa_FuncNameARB. So the same logic can
> be applied.
>
> https://bugs.freedesktop.org/show_bug.cgi?id=66346
> Signed-off-by: Julien Isorce <julien.isorce at gmail.com>
> ---
>  configure.ac       | 2 +-
>  include/GL/glext.h | 5 +++++
>  2 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/configure.ac b/configure.ac
> index 7661bd9..1cd8e77 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1357,7 +1357,7 @@ if test "x$enable_dri" = xyes; then
>          fi
>          ;;
>      darwin*)
> -        DEFINES="$DEFINES -DGLX_ALIAS_UNSUPPORTED"
> +        DEFINES="$DEFINES -DGLX_ALIAS_UNSUPPORTED -DBUILDING_MESA"
>          if test "x$with_dri_drivers" = "xyes"; then
>              with_dri_drivers="swrast"
>          fi
> diff --git a/include/GL/glext.h b/include/GL/glext.h
> index a3873a6..e5f1d89 100644
> --- a/include/GL/glext.h
> +++ b/include/GL/glext.h
> @@ -3879,7 +3879,12 @@ GLAPI void APIENTRY glMinSampleShadingARB (GLfloat value);
>  #ifndef GL_ARB_shader_objects
>  #define GL_ARB_shader_objects 1
>  #ifdef __APPLE__
> +#ifdef BUILDING_MESA
> +/* Avoid uint <-> void* warnings */
> +typedef unsigned long GLhandleARB;
> +#else
>  typedef void *GLhandleARB;
> +#endif
Ideally we'll ship a header without this change, but that evolves
adding a hook at the build/install stage into the autotools build.
If you feel extra nice and do so that'll be greatly appreciated.

Either way
Reviewed-by: Emil Velikov <emil.l.velikov at gmail.com>

Cheers,
Emil


More information about the mesa-dev mailing list