On Wed, Aug 24, 2016 at 2:46 PM, Ian Romanick <i...@freedesktop.org> wrote: > From: Ian Romanick <ian.d.roman...@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.roman...@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 <imir...@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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev