diff options
-rw-r--r-- | src/mesa/main/enable.c | 8 | ||||
-rw-r--r-- | src/mesa/tnl/t_context.h | 4 | ||||
-rw-r--r-- | src/mesa/tnl/t_vb_program.c | 2 | ||||
-rw-r--r-- | src/mesa/tnl/t_vb_vertex.c | 18 |
4 files changed, 24 insertions, 8 deletions
diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index d066153fc2c..4c1f46102d1 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -36,8 +36,6 @@ #include "simple_list.h" #include "mtypes.h" #include "enums.h" -#include "math/m_matrix.h" -#include "math/m_xform.h" #include "api_arrayelt.h" @@ -951,12 +949,6 @@ _mesa_set_enable(GLcontext *ctx, GLenum cap, GLboolean state) case GL_DEPTH_CLAMP: if (ctx->Transform.DepthClamp == state) return; - /* Neither the x86 nor sparc asm cliptest functions have been updated - * for ARB_depth_clamp, so force the C paths. - */ - if (state) - init_c_cliptest(); - CHECK_EXTENSION(ARB_depth_clamp, cap); FLUSH_VERTICES(ctx, _NEW_TRANSFORM); ctx->Transform.DepthClamp = state; diff --git a/src/mesa/tnl/t_context.h b/src/mesa/tnl/t_context.h index c19eb3df3cb..6137c2d2fe5 100644 --- a/src/mesa/tnl/t_context.h +++ b/src/mesa/tnl/t_context.h @@ -548,4 +548,8 @@ typedef struct #define MAX_TYPES TYPE_IDX(GL_DOUBLE)+1 /* 0xa + 1 */ +extern void +tnl_clip_prepare(GLcontext *ctx); + + #endif diff --git a/src/mesa/tnl/t_vb_program.c b/src/mesa/tnl/t_vb_program.c index 5d89f8bc313..c10a27614ff 100644 --- a/src/mesa/tnl/t_vb_program.c +++ b/src/mesa/tnl/t_vb_program.c @@ -131,6 +131,8 @@ do_ndc_cliptest(GLcontext *ctx, struct vp_stage_data *store) store->ormask = 0; store->andmask = CLIP_FRUSTUM_BITS; + tnl_clip_prepare(ctx); + if (tnl->NeedNdcCoords) { VB->NdcPtr = _mesa_clip_tab[VB->ClipPtr->size]( VB->ClipPtr, diff --git a/src/mesa/tnl/t_vb_vertex.c b/src/mesa/tnl/t_vb_vertex.c index 6a746417c87..4734754ea40 100644 --- a/src/mesa/tnl/t_vb_vertex.c +++ b/src/mesa/tnl/t_vb_vertex.c @@ -118,6 +118,22 @@ static void (*(usercliptab[5]))( GLcontext *, }; +void +tnl_clip_prepare(GLcontext *ctx) +{ + /* Neither the x86 nor sparc asm cliptest functions have been updated + * for ARB_depth_clamp, so force the C paths. + */ + if (ctx->Transform.DepthClamp) { + static GLboolean c_funcs_installed = GL_FALSE; + if (!c_funcs_installed) { + init_c_cliptest(); + c_funcs_installed = GL_TRUE; + } + } +} + + static GLboolean run_vertex_stage( GLcontext *ctx, struct tnl_pipeline_stage *stage ) @@ -129,6 +145,8 @@ static GLboolean run_vertex_stage( GLcontext *ctx, if (ctx->VertexProgram._Current) return GL_TRUE; + tnl_clip_prepare(ctx); + if (ctx->_NeedEyeCoords) { /* Separate modelview transformation: * Use combined ModelProject to avoid some depth artifacts |