summaryrefslogtreecommitdiff
path: root/src/mesa/shader/slang/slang_execute_x86.c
diff options
context:
space:
mode:
authorMichal Krol <mjkrol@gmail.org>2006-03-21 10:37:40 +0000
committerMichal Krol <mjkrol@gmail.org>2006-03-21 10:37:40 +0000
commit071357096e682e9af59ad45ea5abc444ab431837 (patch)
tree99fba2183fe97981f7c309d99b206b39e43f5bec /src/mesa/shader/slang/slang_execute_x86.c
parent519b23b21f9cd6945fd17cdb26e7a6f531cdeec0 (diff)
GLSL fixes:
- generate error on NULL pointers in glShaderSourceARB; - reinstall program object, if current, in glLinkProgramARB; - vertex and fragment shaders are optional in program object; - floor asm was wrongly computed for x86 back-end; - allow for (void) idiom in function prototypes; - all fixed-state uniforms are updated; - local variable initializers are working; - implement texture* and shadow* functions for vertex processor; - generate error if too many arguments in general constructor; - trim unused data in general constructor; - struct r-value field select was badly relocated; Changes: - add derived state gl_fog_attrib::_Scale; - add derived state gl_light::_CosCutoffNeg;
Diffstat (limited to 'src/mesa/shader/slang/slang_execute_x86.c')
-rw-r--r--src/mesa/shader/slang/slang_execute_x86.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/mesa/shader/slang/slang_execute_x86.c b/src/mesa/shader/slang/slang_execute_x86.c
index 781aeb97db..16e1575767 100644
--- a/src/mesa/shader/slang/slang_execute_x86.c
+++ b/src/mesa/shader/slang/slang_execute_x86.c
@@ -112,6 +112,11 @@ static GLfloat do_ceilf (GLfloat x)
return CEILF (x);
}
+static GLfloat do_floorf (GLfloat x)
+{
+ return FLOORF (x);
+}
+
static GLvoid do_print_float (GLfloat x)
{
_mesa_printf ("slang print: %f\n", x);
@@ -294,13 +299,10 @@ static GLvoid codegen_assem (codegen_ctx *G, slang_assembly *a)
x87_fstp (&G->f, x86_deref (G->r_esp));
break;
case slang_asm_float_floor:
- set_fpu_round_neg_inf (G);
- x87_fld (&G->f, x86_deref (G->r_esp));
- x87_fprndint (&G->f);
+ x86_call (&G->f, (GLubyte *) do_floorf);
x87_fstp (&G->f, x86_deref (G->r_esp));
break;
case slang_asm_float_ceil:
- /* TODO: use frndint */
x86_call (&G->f, (GLubyte *) do_ceilf);
x87_fstp (&G->f, x86_deref (G->r_esp));
break;