[Mesa-dev] [PATCH 05/13] nouveau: Enable EXT_texture_env_dot3 on NV10 and NV20

Ilia Mirkin imirkin at alum.mit.edu
Wed Aug 24 18:57:57 UTC 2016


On Wed, Aug 24, 2016 at 2:46 PM, Ian Romanick <idr at freedesktop.org> wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> GL_DOT3_RGB_EXT and GL_DOT3_RGBA_EXT. are nearly identical to
> GL_DOT3_RGB and GL_DOT3_RGBA.  The only difference is the _EXT
> versions do not apply the post-scale.  Just smash logscale to 0 so
> that RC_OUT_SCALE_1 is always used.
>
> NOTE: I have not actually tested this.
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
>  src/mesa/drivers/dri/nouveau/nv10_context.c    |  1 +
>  src/mesa/drivers/dri/nouveau/nv10_state_frag.c | 16 +++++++++++++++-
>  src/mesa/drivers/dri/nouveau/nv20_context.c    |  1 +
>  3 files changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/nouveau/nv10_context.c b/src/mesa/drivers/dri/nouveau/nv10_context.c
> index 00a9358..7a86ba2 100644
> --- a/src/mesa/drivers/dri/nouveau/nv10_context.c
> +++ b/src/mesa/drivers/dri/nouveau/nv10_context.c
> @@ -448,6 +448,7 @@ nv10_context_create(struct nouveau_screen *screen, gl_api api,
>         ctx->Extensions.ARB_texture_env_crossbar = true;
>         ctx->Extensions.ARB_texture_env_combine = true;
>         ctx->Extensions.ARB_texture_env_dot3 = true;
> +       ctx->Extensions.EXT_texture_env_dot3 = true;
>         ctx->Extensions.NV_fog_distance = true;
>         ctx->Extensions.NV_texture_rectangle = true;
>         if (ctx->Mesa_DXTn) {
> diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
> index e78eac3..c6e4bb0 100644
> --- a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
> +++ b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
> @@ -276,6 +276,20 @@ setup_combiner(struct combiner_state *rc)
>                 rc->out = RC_OUT_DOT_AB;
>                 break;
>
> +       case GL_DOT3_RGB_EXT:
> +       case GL_DOT3_RGBA_EXT:
> +               INPUT_ARG(rc, A, 0, NORMALIZE);
> +               INPUT_ARG(rc, B, 1, NORMALIZE);
> +
> +               rc->out = RC_OUT_DOT_AB;
> +
> +               /* The EXT version of the DOT3 extension does not support the
> +                * scale factor, but the ARB version (and the version in
> +                * OpenGL 1.3) does.
> +                */
> +               rc->logscale = 0;

rc->logscale comes from _CurrentCombine->ScaleShiftRGB/A -- I guess
not a lot of harm in just forcing it here, but it'd be a little
cleaner if that were not necessary. In the current state, though, this
is

Acked-by: Ilia Mirkin <imirkin at alum.mit.edu>

> +               break;
> +
>         default:
>                 assert(0);
>         }
> @@ -305,7 +319,7 @@ nv10_get_general_combiner(struct gl_context *ctx, int i,
>         if (ctx->Texture.Unit[i]._Current) {
>                 INIT_COMBINER(RGB, ctx, &rc_c, i);
>
> -               if (rc_c.mode == GL_DOT3_RGBA)
> +               if (rc_c.mode == GL_DOT3_RGBA || rc_c.mode == GL_DOT3_RGBA_EXT)
>                         rc_a = rc_c;
>                 else
>                         INIT_COMBINER(A, ctx, &rc_a, i);
> diff --git a/src/mesa/drivers/dri/nouveau/nv20_context.c b/src/mesa/drivers/dri/nouveau/nv20_context.c
> index 14329a2..ec638c0 100644
> --- a/src/mesa/drivers/dri/nouveau/nv20_context.c
> +++ b/src/mesa/drivers/dri/nouveau/nv20_context.c
> @@ -459,6 +459,7 @@ nv20_context_create(struct nouveau_screen *screen, gl_api api,
>         ctx->Extensions.ARB_texture_env_crossbar = true;
>         ctx->Extensions.ARB_texture_env_combine = true;
>         ctx->Extensions.ARB_texture_env_dot3 = true;
> +       ctx->Extensions.EXT_texture_env_dot3 = true;
>         ctx->Extensions.NV_fog_distance = true;
>         ctx->Extensions.NV_texture_rectangle = true;
>         if (ctx->Mesa_DXTn) {
> --
> 2.5.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list