Neil,
I've been thinking about this same thing.  My one comment is that it might
be good to call that function after the driver has installed its
extensions.  That way you can make meta extensions dependant on driver
extensions.  Not sure how useful that is though.
--Jason Ekstrand
On Jun 13, 2014 5:59 PM, "Neil Roberts" <n...@linux.intel.com> wrote:

> This adds a function called _mesa_init_driver_extensions that is called by
> all
> DRI-based drivers. The intention is that any extensions that are
> implemented
> directly by _mesa_init_driver_functions without any driver-specific
> entrypoints will be enabled here.
> ---
>  src/mesa/drivers/common/driverfuncs.c          | 8 ++++++++
>  src/mesa/drivers/common/driverfuncs.h          | 2 ++
>  src/mesa/drivers/dri/i915/intel_extensions.c   | 3 +++
>  src/mesa/drivers/dri/i965/intel_extensions.c   | 3 +++
>  src/mesa/drivers/dri/nouveau/nouveau_context.c | 1 +
>  src/mesa/drivers/dri/r200/r200_context.c       | 2 ++
>  src/mesa/drivers/dri/radeon/radeon_context.c   | 2 ++
>  src/mesa/drivers/dri/swrast/swrast.c           | 1 +
>  8 files changed, 22 insertions(+)
>
> diff --git a/src/mesa/drivers/common/driverfuncs.c
> b/src/mesa/drivers/common/driverfuncs.c
> index 6ece5d8..ee8b390 100644
> --- a/src/mesa/drivers/common/driverfuncs.c
> +++ b/src/mesa/drivers/common/driverfuncs.c
> @@ -326,3 +326,11 @@ _mesa_init_driver_state(struct gl_context *ctx)
>
>     ctx->Driver.DrawBuffer(ctx, ctx->Color.DrawBuffer[0]);
>  }
> +
> +/**
> + * Enable extensions that are available for all DRI-based drivers.
> + */
> +void
> +_mesa_init_driver_extensions(struct gl_context *ctx)
> +{
> +}
> diff --git a/src/mesa/drivers/common/driverfuncs.h
> b/src/mesa/drivers/common/driverfuncs.h
> index 6b9a900..520c059 100644
> --- a/src/mesa/drivers/common/driverfuncs.h
> +++ b/src/mesa/drivers/common/driverfuncs.h
> @@ -33,5 +33,7 @@ _mesa_init_driver_functions(struct dd_function_table
> *driver);
>  extern void
>  _mesa_init_driver_state(struct gl_context *ctx);
>
> +extern void
> +_mesa_init_driver_extensions(struct gl_context *ctx);
>
>  #endif
> diff --git a/src/mesa/drivers/dri/i915/intel_extensions.c
> b/src/mesa/drivers/dri/i915/intel_extensions.c
> index 76f608e..3a8744a 100644
> --- a/src/mesa/drivers/dri/i915/intel_extensions.c
> +++ b/src/mesa/drivers/dri/i915/intel_extensions.c
> @@ -31,6 +31,7 @@
>  #include "intel_context.h"
>  #include "intel_extensions.h"
>  #include "intel_reg.h"
> +#include "drivers/common/driverfuncs.h"
>  #include "utils.h"
>
>  /**
> @@ -44,6 +45,8 @@ intelInitExtensions(struct gl_context *ctx)
>
>     assert(intel->gen == 2 || intel->gen == 3);
>
> +   _mesa_init_driver_extensions(ctx);
> +
>     ctx->Extensions.ARB_draw_elements_base_vertex = true;
>     ctx->Extensions.ARB_explicit_attrib_location = true;
>     ctx->Extensions.ARB_framebuffer_object = true;
> diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c
> b/src/mesa/drivers/dri/i965/intel_extensions.c
> index 39d0ab5..fe47464 100644
> --- a/src/mesa/drivers/dri/i965/intel_extensions.c
> +++ b/src/mesa/drivers/dri/i965/intel_extensions.c
> @@ -31,6 +31,7 @@
>  #include "intel_batchbuffer.h"
>  #include "intel_reg.h"
>  #include "utils.h"
> +#include "drivers/common/driverfuncs.h"
>
>  /**
>   * Test if we can use MI_LOAD_REGISTER_MEM from an untrusted batchbuffer.
> @@ -162,6 +163,8 @@ intelInitExtensions(struct gl_context *ctx)
>
>     assert(brw->gen >= 4);
>
> +   _mesa_init_driver_extensions(ctx);
> +
>     ctx->Extensions.ARB_buffer_storage = true;
>     ctx->Extensions.ARB_depth_buffer_float = true;
>     ctx->Extensions.ARB_depth_clamp = true;
> diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c
> b/src/mesa/drivers/dri/nouveau/nouveau_context.c
> index f8c8dc3..ad7ee86 100644
> --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c
> +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c
> @@ -183,6 +183,7 @@ nouveau_context_init(struct gl_context *ctx, gl_api
> api,
>         }
>
>         /* Enable any supported extensions. */
> +        _mesa_init_driver_extensions(ctx);
>         ctx->Extensions.EXT_blend_color = true;
>         ctx->Extensions.EXT_blend_minmax = true;
>         ctx->Extensions.EXT_texture_filter_anisotropic = true;
> diff --git a/src/mesa/drivers/dri/r200/r200_context.c
> b/src/mesa/drivers/dri/r200/r200_context.c
> index 71dfcf3..93ca23d 100644
> --- a/src/mesa/drivers/dri/r200/r200_context.c
> +++ b/src/mesa/drivers/dri/r200/r200_context.c
> @@ -366,6 +366,8 @@ GLboolean r200CreateContext( gl_api api,
>     _math_matrix_ctr( &rmesa->tmpmat );
>     _math_matrix_set_identity( &rmesa->tmpmat );
>
> +   _mesa_init_driver_extensions(ctx);
> +
>     ctx->Extensions.ARB_occlusion_query = true;
>     ctx->Extensions.ARB_point_sprite = true;
>     ctx->Extensions.ARB_texture_border_clamp = true;
> diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c
> b/src/mesa/drivers/dri/radeon/radeon_context.c
> index 1ceb4ab..fd8e95b 100644
> --- a/src/mesa/drivers/dri/radeon/radeon_context.c
> +++ b/src/mesa/drivers/dri/radeon/radeon_context.c
> @@ -328,6 +328,8 @@ r100CreateContext( gl_api api,
>        _math_matrix_set_identity( &rmesa->tmpmat[i] );
>     }
>
> +   _mesa_init_driver_extensions(ctx);
> +
>     ctx->Extensions.ARB_occlusion_query = true;
>     ctx->Extensions.ARB_texture_border_clamp = true;
>     ctx->Extensions.ARB_texture_cube_map = true;
> diff --git a/src/mesa/drivers/dri/swrast/swrast.c
> b/src/mesa/drivers/dri/swrast/swrast.c
> index 8881381..71e2184 100644
> --- a/src/mesa/drivers/dri/swrast/swrast.c
> +++ b/src/mesa/drivers/dri/swrast/swrast.c
> @@ -720,6 +720,7 @@ dri_create_context(gl_api api,
>      }
>
>      _mesa_meta_init(mesaCtx);
> +    _mesa_init_driver_extensions(mesaCtx);
>      _mesa_enable_sw_extensions(mesaCtx);
>
>      _mesa_compute_version(mesaCtx);
> --
> 1.9.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to