Hey, I was just peeking through src/mesa/x86/3dnow.c and I found this
message:
/* There's a bug somewhere in the 3dnow_normal.S file that causes
* bad shading. Disable for now.
ASSIGN_NORM_GROUP( 3dnow );
*/
So I got a bit curious and decided to check out src/mesa/x86/3dnow_normal.S
in Mesa-6.5.3. I found a small bug in _mesa_3dnow_rescale_normals at line
838.
Specifically:
DEC_L ( EDX ) /* decrement normal counter */
JA ( LLBL (G3R_rescale) )
This is attempting to use the fact that most x86 ALU operations set the
EFLAGS register, and branch based upon that result without having to do a
compare. However, this won't work because the DEC instruction does not set
the EFLAGS register like ADD and SUB do. This needs to be:
SUB_L( CONST(1), EDX)
JA ( LLBL (G3R_rescale) ) /* JNZ would be more appropriate */
There is at least one other place that this is done, and I believe that this
might be causing the bug that is mentioned in src/mesa/x86/3dnow.c
I have never submitted code to Mesa before, but if someone could point me in
the right direction as to how this is done, I would like to fix this bug.
Thanks,
Patrick Baggett
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev