Mesa (master): mesa: consolidate clip plane update code
Brian Paul
brianp at kemper.freedesktop.org
Sat Mar 19 21:50:26 UTC 2011
Module: Mesa
Branch: master
Commit: ec4a21b0e21e8c706f26db5308fb267b6979b631
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ec4a21b0e21e8c706f26db5308fb267b6979b631
Author: Brian Paul <brianp at vmware.com>
Date: Sat Mar 19 14:17:41 2011 -0600
mesa: consolidate clip plane update code
---
src/mesa/main/clip.c | 28 ++++++++++++++--------------
src/mesa/main/clip.h | 5 +++++
src/mesa/main/enable.c | 13 ++-----------
3 files changed, 21 insertions(+), 25 deletions(-)
diff --git a/src/mesa/main/clip.c b/src/mesa/main/clip.c
index be8ce42..ba2028c 100644
--- a/src/mesa/main/clip.c
+++ b/src/mesa/main/clip.c
@@ -32,11 +32,20 @@
#include "math/m_matrix.h"
+/**
+ * Update derived clip plane state.
+ */
+void
+_mesa_update_clip_plane(struct gl_context *ctx, GLuint plane)
+{
+ if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top))
+ _math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
-/**********************************************************************/
-/* Get/Set User clip-planes. */
-/**********************************************************************/
-
+ /* Clip-Space Plane = Eye-Space Plane * Projection Matrix */
+ _mesa_transform_vector(ctx->Transform._ClipUserPlane[plane],
+ ctx->Transform.EyeUserPlane[plane],
+ ctx->ProjectionMatrixStack.Top->inv);
+}
void GLAPIENTRY
@@ -78,17 +87,8 @@ _mesa_ClipPlane( GLenum plane, const GLdouble *eq )
FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
COPY_4FV(ctx->Transform.EyeUserPlane[p], equation);
- /* Update derived state. This state also depends on the projection
- * matrix, and is recalculated on changes to the projection matrix by
- * code in _mesa_update_state().
- */
if (ctx->Transform.ClipPlanesEnabled & (1 << p)) {
- if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top))
- _math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
-
- _mesa_transform_vector( ctx->Transform._ClipUserPlane[p],
- ctx->Transform.EyeUserPlane[p],
- ctx->ProjectionMatrixStack.Top->inv );
+ _mesa_update_clip_plane(ctx, p);
}
if (ctx->Driver.ClipPlane)
diff --git a/src/mesa/main/clip.h b/src/mesa/main/clip.h
index 11431dc..a8e6d76 100644
--- a/src/mesa/main/clip.h
+++ b/src/mesa/main/clip.h
@@ -33,6 +33,11 @@
#include "glheader.h"
+struct gl_context;
+
+extern void
+_mesa_update_clip_plane(struct gl_context *ctx, GLuint plane);
+
extern void GLAPIENTRY
_mesa_ClipPlane( GLenum plane, const GLdouble *equation );
diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c
index f247092..60255d7 100644
--- a/src/mesa/main/enable.c
+++ b/src/mesa/main/enable.c
@@ -29,6 +29,7 @@
#include "glheader.h"
+#include "clip.h"
#include "context.h"
#include "enable.h"
#include "light.h"
@@ -310,17 +311,7 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
if (state) {
ctx->Transform.ClipPlanesEnabled |= (1 << p);
-
- if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top))
- _math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
-
- /* This derived state also calculated in clip.c and
- * from _mesa_update_state() on changes to EyeUserPlane
- * and ctx->ProjectionMatrix respectively.
- */
- _mesa_transform_vector( ctx->Transform._ClipUserPlane[p],
- ctx->Transform.EyeUserPlane[p],
- ctx->ProjectionMatrixStack.Top->inv );
+ _mesa_update_clip_plane(ctx, p);
}
else {
ctx->Transform.ClipPlanesEnabled &= ~(1 << p);
More information about the mesa-commit
mailing list