On Wed, 29 Jan 2003 07:59:30 -0700
Brian Paul <[EMAIL PROTECTED]> wrote:
> >>> Since these functions are globally exported, it might be worth it to
> >>> write a quick test that calls the various
> >>> _transform_normalize_normals functions to make sure that they all
> >>> produces the same (or close enough) results.
> >>
> >>
> >> And:
> >> _transform_normalize_normals_no_rot
> >> _transform_rescale_normals_no_rot
> >> _transform_rescale_normals
> >> _transform_normals_no_rot
> >> _transform_normals
> >> _normalize_normals
> >> _rescale_normals
> >>
> >> These should be tested too, while we're at it.
> >
> >
> > Agreed.
> >
> > Brian: If such tests do get written, where should they live in the tree?
>
> There's a number of test routines in the src/math/m_debug_*.c files. I think
> that would be the place to add more if needed.
It's all there. Even benchmarking is included. It just needs to be
recompiled with DEBUG and RUN_DEBUG_BENCHMARK defined.
I downloaded Mesa CVS and configured it with --enable-debug and
--enable-profile. When I started a GL app with the correct library path
I got this:
cpu vendor: AuthenticAMD
cpu name: AMD Duron(tm) processor
MMX cpu detected.
3DNow! cpu detected.
-----------------------------
(i = 0, j = 0)
1.177931 -0.033552 [ratio = -2.848425e-02 - 29 bit missed]
0.841573 0.728316 [ratio = 8.654217e-01 - 21 bit missed]
0.735570 -0.684420 [ratio = -9.304624e-01 - 25 bit missed]
Mesa implementation error: _mesa_normal_tab[0][NORM_NORMALIZE] failed test (3DNow!)
Please report to the Mesa bug database at www.mesa3d.org
Mesa: Mesa DEBUG build Jan 29 2003 21:43:51
A patch to fix this is attached. Basically the same kind of problem as
before. Now it reports no more problems :) in any of the math functions
tested on my Duron. This should be about everything except SSE.
Felix
__\|/__ ___ ___ ___
__Tsch��_______\_6 6_/___/__ \___/__ \___/___\___You can do anything,___
_____Felix_______\�/\ \_____\ \_____\ \______U___just not everything____
[EMAIL PROTECTED] >o<__/ \___/ \___/ at the same time!
Index: 3dnow_normal.S
===================================================================
RCS file: /cvsroot/dri/xc/xc/extras/Mesa/src/X86/3dnow_normal.S,v
retrieving revision 1.6
diff -u -r1.6 3dnow_normal.S
--- 3dnow_normal.S 28 Jan 2003 22:44:07 -0000 1.6
+++ 3dnow_normal.S 29 Jan 2003 21:26:08 -0000
@@ -731,13 +731,13 @@
PREFETCHW ( REGIND(EAX) )
- MOVQ ( MM0, MM3 ) /* x1 | x0 */
- ADD_L ( STRIDE, ECX ) /* next normal */
-
PREFETCH ( REGIND(ECX) )
MOVQ ( REGIND(ECX), MM0 ) /* x1 | x0 */
MOVD ( REGOFF(8, ECX), MM1 ) /* | x2 */
+
+ MOVQ ( MM0, MM3 ) /* x1 | x0 */
+ ADD_L ( STRIDE, ECX ) /* next normal */
PFMUL ( MM0, MM3 ) /* x1*x1 | x0*x0 */
MOVQ ( MM1, MM4 ) /* | x2 */