FWIW this fails for GL_DOT3_RGBA_EXT but works for GL_DOT3_RGB_EXT [according to glean's texCombine test]. (I suspect the existing GL_DOT3_RGBA/RGB had a similar behavior.) I'm testing in a slightly unsupported environment - the NV25 graph class running on a NV34 (GeForce FX 5200), but I think it's legit.
Unfortunately I know *nothing* about register combiners. Any chance you could explain what *should* be happening wrt their hookup? [Or even better, glance at the code.] As part of the test, I'm getting this error: nouveau 0000:09:01.0: gr: intr 00100000 [ERROR] nsource 00000002 [DATA_ERROR] nstatus 02000000 [BAD_ARGUMENT] ch 3 [glean[1436]] subc 7 class 0597 mthd 0aa0 data 000020c0 Method 0aa0 is RC_OUT_ALPHA(0) [https://github.com/envytools/envytools/blob/master/rnndb/graph/nv20_3d.xml#L485], and data 20c0 decodes as $ lookup -a 25 -d SUBCHAN -- -v obj-class NV25_3D 0aa0 000020c0 RC_OUT_ALPHA[0] => { CD_OUTPUT = ZERO | AB_OUTPUT = SPARE0 | SUM_OUTPUT = ZERO | AB_DOT_PRODUCT | BIAS = NONE | SCALE = NONE } Thanks, -ilia On Wed, Aug 24, 2016 at 2:57 PM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > 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