[Mesa-dev] [PATCH 1/2] dri: Use designated initializers for DRI extension structs

Matt Turner mattst88 at gmail.com
Mon Nov 19 14:14:24 PST 2012


On Mon, Nov 19, 2012 at 1:53 PM, Chad Versace
<chad.versace at linux.intel.com> wrote:
> The dri directory is compiled with -std=c99. There is no excuse to not use
> designated initializers.
>
> As a nice benefit, the code is now more friendly to grep. Without
> designated initializers, psychic prowess is required to find the
> initialization of DRI extension function pointers with grep.  I have
> observed several people, when they first encounter the DRI code, fail at
> statically chasing the DRI function pointers due to this problem.
>
> Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
> ---
>  src/mesa/drivers/dri/common/dri_util.c | 57 ++++++++++++++++++----------------
>  1 file changed, 30 insertions(+), 27 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c
> index 983bbea..917b946 100644
> --- a/src/mesa/drivers/dri/common/dri_util.c
> +++ b/src/mesa/drivers/dri/common/dri_util.c
> @@ -563,40 +563,43 @@ dri2GetAPIMask(__DRIscreen *screen)
>
>  /** Core interface */
>  const __DRIcoreExtension driCoreExtension = {
> -    { __DRI_CORE, __DRI_CORE_VERSION },
> -    NULL,
> -    driDestroyScreen,
> -    driGetExtensions,
> -    driGetConfigAttrib,
> -    driIndexConfigAttrib,
> -    NULL,
> -    driDestroyDrawable,
> -    NULL,
> -    NULL,
> -    driCopyContext,
> -    driDestroyContext,
> -    driBindContext,
> -    driUnbindContext
> +    .base = { __DRI_CORE, __DRI_CORE_VERSION },
> +
> +    .createNewScreen            = NULL,
> +    .destroyScreen              = driDestroyScreen,
> +    .getExtensions              = driGetExtensions,
> +    .getConfigAttrib            = driGetConfigAttrib,
> +    .indexConfigAttrib          = driIndexConfigAttrib,
> +    .createNewDrawable          = NULL,
> +    .destroyDrawable            = driDestroyDrawable,
> +    .swapBuffers                = NULL,
> +    .createNewContext           = NULL,
> +    .copyContext                = driCopyContext,
> +    .destroyContext             = driDestroyContext,
> +    .bindContext                = driBindContext,
> +    .unbindContext              = driUnbindContext
>  };
>
>  /** DRI2 interface */
>  const __DRIdri2Extension driDRI2Extension = {
> -    { __DRI_DRI2, 3 },
> -    dri2CreateNewScreen,
> -    dri2CreateNewDrawable,
> -    dri2CreateNewContext,
> -    dri2GetAPIMask,
> -    dri2CreateNewContextForAPI,
> -    dri2AllocateBuffer,
> -    dri2ReleaseBuffer,
> -    dri2CreateContextAttribs
> +    .base = { __DRI_DRI2, 3 },
> +
> +    .createNewScreen            = dri2CreateNewScreen,
> +    .createNewDrawable          = dri2CreateNewDrawable,
> +    .createNewContext           = dri2CreateNewContext,
> +    .getAPIMask                 = dri2GetAPIMask,
> +    .createNewContextForAPI     = dri2CreateNewContextForAPI,
> +    .allocateBuffer             = dri2AllocateBuffer,
> +    .releaseBuffer              = dri2ReleaseBuffer,
> +    .createContextAttribs       = dri2CreateContextAttribs
>  };
>
>  const __DRI2configQueryExtension dri2ConfigQueryExtension = {
> -   { __DRI2_CONFIG_QUERY, __DRI2_CONFIG_QUERY_VERSION },
> -   dri2ConfigQueryb,
> -   dri2ConfigQueryi,
> -   dri2ConfigQueryf,
> +   .base = { __DRI2_CONFIG_QUERY, __DRI2_CONFIG_QUERY_VERSION },
> +
> +   .configQueryb        = dri2ConfigQueryb,
> +   .configQueryi        = dri2ConfigQueryi,
> +   .configQueryf        = dri2ConfigQueryf,
>  };
>
>  void
> --
> 1.7.11.7

I remember getting really annoyed trying to read this code before, so
yes please.

Reviewed-by: Matt Turner <mattst88 at gmail.com>


More information about the mesa-dev mailing list