From 071357096e682e9af59ad45ea5abc444ab431837 Mon Sep 17 00:00:00 2001 From: Michal Krol Date: Tue, 21 Mar 2006 10:37:40 +0000 Subject: 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; --- src/mesa/swrast/s_arbshader.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/mesa/swrast/s_arbshader.c') diff --git a/src/mesa/swrast/s_arbshader.c b/src/mesa/swrast/s_arbshader.c index c915b97d6e..ba146dd1bb 100644 --- a/src/mesa/swrast/s_arbshader.c +++ b/src/mesa/swrast/s_arbshader.c @@ -40,14 +40,16 @@ void _swrast_exec_arbshader (GLcontext *ctx, struct sw_span *span) struct gl2_program_intf **pro; GLuint i; - pro = ctx->ShaderObjects.CurrentProgram; - if (pro == NULL) + if (!ctx->ShaderObjects._FragmentShaderPresent) return; + pro = ctx->ShaderObjects.CurrentProgram; + if (!ctx->ShaderObjects._VertexShaderPresent) + (**pro).UpdateFixedUniforms (pro); for (i = span->start; i < span->end; i++) { - /* only run shader on active fragments */ - if (span->array->mask[i]) { + /* only run shader on active fragments */ + if (span->array->mask[i]) { GLfloat vec[4]; GLuint j; GLboolean discard; @@ -91,7 +93,7 @@ void _swrast_exec_arbshader (GLcontext *ctx, struct sw_span *span) UNCLAMPED_FLOAT_TO_CHAN(span->array->rgba[i][BCOMP], vec[2]); UNCLAMPED_FLOAT_TO_CHAN(span->array->rgba[i][ACOMP], vec[3]); } - } + } } } -- cgit v1.2.3