[Mesa-dev] [PATCH 04/21] nouveau: Enable extensions by just setting the flags

Francisco Jerez currojerez at riseup.net
Tue Aug 30 03:40:53 PDT 2011


"Ian Romanick" <idr at freedesktop.org> writes:

> From: Ian Romanick <ian.d.romanick at intel.com>
>
> Core Mesa already does the dispatch offset remapping for every
> function that could possibly ever be supported.  There's no need to
> continue using that cruft in the driver.
>
> Since the call to _mesa_enable_imaging_extensions (via
> driInitExtensions) is removed, EXT_blend_color, EXT_blend_logic_op,
> EXT_blend_minmax, and EXT_blend_subtract are explicitly added to the
> list.
>
> Cc: Ben Skeggs <bskeggs at redhat.com>
> Cc: Francisco Jerez <currojerez at riseup.net>
> Cc: Viktor Novotný <noviktor at seznam.cz>

Reviewed-by: Francisco Jerez <currojerez at riseup.net>

> ---
>  src/mesa/drivers/dri/nouveau/nouveau_context.c |   44 ++++++++++-------------
>  src/mesa/drivers/dri/nouveau/nv10_context.c    |   14 +++-----
>  src/mesa/drivers/dri/nouveau/nv20_context.c    |   14 +++-----
>  3 files changed, 29 insertions(+), 43 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c
> index 22b9957..1c35578 100644
> --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c
> +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c
> @@ -24,6 +24,7 @@
>   *
>   */
>  
> +#include <stdbool.h>
>  #include "nouveau_driver.h"
>  #include "nouveau_context.h"
>  #include "nouveau_bufferobj.h"
> @@ -41,30 +42,6 @@
>  #include "tnl/tnl.h"
>  #include "tnl/t_context.h"
>  
> -#define need_GL_EXT_framebuffer_object
> -#define need_GL_EXT_fog_coord
> -#define need_GL_EXT_secondary_color
> -
> -#include "main/remap_helper.h"
> -
> -static const struct dri_extension nouveau_extensions[] = {
> -	{ "GL_ARB_multitexture",	NULL },
> -	{ "GL_ARB_texture_env_add",	NULL },
> -	{ "GL_ARB_texture_mirrored_repeat", NULL },
> -	{ "GL_EXT_fog_coord",		GL_EXT_fog_coord_functions },
> -	{ "GL_EXT_framebuffer_blit",	NULL },
> -	{ "GL_EXT_framebuffer_object",	GL_EXT_framebuffer_object_functions },
> -	{ "GL_EXT_packed_depth_stencil", NULL},
> -	{ "GL_EXT_secondary_color",	GL_EXT_secondary_color_functions },
> -	{ "GL_EXT_stencil_wrap",	NULL },
> -	{ "GL_EXT_texture_env_combine",	NULL },
> -	{ "GL_EXT_texture_filter_anisotropic", NULL },
> -	{ "GL_EXT_texture_lod_bias",	NULL },
> -	{ "GL_NV_blend_square",         NULL },
> -	{ "GL_NV_texture_env_combine4",	NULL },
> -	{ NULL,				NULL }
> -};
> -
>  static void
>  nouveau_channel_flush_notify(struct nouveau_channel *chan)
>  {
> @@ -140,7 +117,24 @@ nouveau_context_init(struct gl_context *ctx, struct nouveau_screen *screen,
>  	nctx->hw.chan->user_private = nctx;
>  
>  	/* Enable any supported extensions. */
> -	driInitExtensions(ctx, nouveau_extensions, GL_TRUE);
> +	ctx->Extensions.ARB_multitexture = true;
> +	ctx->Extensions.ARB_texture_mirrored_repeat = true;
> +	ctx->Extensions.EXT_blend_color = true;
> +	ctx->Extensions.EXT_blend_logic_op = true;
> +	ctx->Extensions.EXT_blend_minmax = true;
> +	ctx->Extensions.EXT_blend_subtract = true;
> +	ctx->Extensions.EXT_fog_coord = true;
> +	ctx->Extensions.EXT_framebuffer_blit = true;
> +	ctx->Extensions.EXT_framebuffer_object = true;
> +	ctx->Extensions.EXT_packed_depth_stencil = true;
> +	ctx->Extensions.EXT_secondary_color = true;
> +	ctx->Extensions.EXT_stencil_wrap = true;
> +	ctx->Extensions.EXT_texture_env_add = true;
> +	ctx->Extensions.EXT_texture_env_combine = true;
> +	ctx->Extensions.EXT_texture_filter_anisotropic = true;
> +	ctx->Extensions.EXT_texture_lod_bias = true;
> +	ctx->Extensions.NV_blend_square = true;
> +	ctx->Extensions.NV_texture_env_combine4 = true;
>  
>  	return GL_TRUE;
>  }
> diff --git a/src/mesa/drivers/dri/nouveau/nv10_context.c b/src/mesa/drivers/dri/nouveau/nv10_context.c
> index 8074b4b..da0ef2b 100644
> --- a/src/mesa/drivers/dri/nouveau/nv10_context.c
> +++ b/src/mesa/drivers/dri/nouveau/nv10_context.c
> @@ -24,6 +24,7 @@
>   *
>   */
>  
> +#include <stdbool.h>
>  #include "main/state.h"
>  #include "nouveau_driver.h"
>  #include "nouveau_context.h"
> @@ -34,14 +35,6 @@
>  #include "nv04_driver.h"
>  #include "nv10_driver.h"
>  
> -static const struct dri_extension nv10_extensions[] = {
> -	{ "GL_ARB_texture_env_crossbar", NULL },
> -	{ "GL_EXT_texture_rectangle",	NULL },
> -	{ "GL_ARB_texture_env_combine", NULL },
> -	{ "GL_ARB_texture_env_dot3",    NULL },
> -	{ NULL,				NULL }
> -};
> -
>  static GLboolean
>  use_fast_zclear(struct gl_context *ctx, GLbitfield buffers)
>  {
> @@ -439,7 +432,10 @@ nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visua
>  	if (!nouveau_context_init(ctx, screen, visual, share_ctx))
>  		goto fail;
>  
> -	driInitExtensions(ctx, nv10_extensions, GL_FALSE);
> +	ctx->Extensions.ARB_texture_env_crossbar = true;
> +	ctx->Extensions.ARB_texture_env_combine = true;
> +	ctx->Extensions.ARB_texture_env_dot3 = true;
> +	ctx->Extensions.NV_texture_rectangle = true;
>  
>  	/* GL constants. */
>  	ctx->Const.MaxTextureLevels = 12;
> diff --git a/src/mesa/drivers/dri/nouveau/nv20_context.c b/src/mesa/drivers/dri/nouveau/nv20_context.c
> index e0483b2..2766851 100644
> --- a/src/mesa/drivers/dri/nouveau/nv20_context.c
> +++ b/src/mesa/drivers/dri/nouveau/nv20_context.c
> @@ -24,6 +24,7 @@
>   *
>   */
>  
> +#include <stdbool.h>
>  #include "nouveau_driver.h"
>  #include "nouveau_context.h"
>  #include "nouveau_fbo.h"
> @@ -34,14 +35,6 @@
>  #include "nv10_driver.h"
>  #include "nv20_driver.h"
>  
> -static const struct dri_extension nv20_extensions[] = {
> -	{ "GL_ARB_texture_env_crossbar", NULL },
> -	{ "GL_EXT_texture_rectangle",	NULL },
> -	{ "GL_ARB_texture_env_combine", NULL },
> -	{ "GL_ARB_texture_env_dot3",    NULL },
> -	{ NULL,				NULL }
> -};
> -
>  static void
>  nv20_clear(struct gl_context *ctx, GLbitfield buffers)
>  {
> @@ -453,7 +446,10 @@ nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visua
>  	if (!nouveau_context_init(ctx, screen, visual, share_ctx))
>  		goto fail;
>  
> -	driInitExtensions(ctx, nv20_extensions, GL_FALSE);
> +	ctx->Extensions.ARB_texture_env_crossbar = true;
> +	ctx->Extensions.ARB_texture_env_combine = true;
> +	ctx->Extensions.ARB_texture_env_dot3 = true;
> +	ctx->Extensions.NV_texture_rectangle = true;
>  
>  	/* GL constants. */
>  	ctx->Const.MaxTextureCoordUnits = NV20_TEXTURE_UNITS;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 229 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20110830/8bc624b3/attachment.pgp>


More information about the mesa-dev mailing list