Assorted token renaming/removal, minor state changes, etc.
authorBrian <brian.paul@tungstengraphics.com>
Fri, 22 Jun 2007 18:47:04 +0000 (12:47 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Fri, 22 Jun 2007 18:47:04 +0000 (12:47 -0600)
src/mesa/pipe/p_defines.h
src/mesa/pipe/p_state.h
src/mesa/pipe/softpipe/sp_prim_cull.c
src/mesa/pipe/softpipe/sp_prim_twoside.c
src/mesa/pipe/softpipe/sp_prim_unfilled.c
src/mesa/pipe/softpipe/sp_quad_alpha_test.c
src/mesa/pipe/softpipe/sp_state_setup.c
src/mesa/state_tracker/st_atom_setup.c

index 550240e..7557310 100644 (file)
 #define PIPE_POLYGON_MODE_LINE  1
 #define PIPE_POLYGON_MODE_POINT 2
 
-/** Polygon cull mode */
-#define PIPE_POLYGON_CULL_NONE  0
-#define PIPE_POLYGON_CULL_FRONT 1
-#define PIPE_POLYGON_CULL_BACK  2
-#define PIPE_POLYGON_CULL_BOTH  3
-
-/** Polygon front winding order */
-#define PIPE_POLYGON_FRONT_CW   0
-#define PIPE_POLYGON_FRONT_CCW  1
+/** Polygon front/back window, also for culling */
+#define PIPE_WINDING_NONE 0
+#define PIPE_WINDING_CW   1
+#define PIPE_WINDING_CCW  2
+#define PIPE_WINDING_BOTH (PIPE_WINDING_CW | PIPE_WINDING_CCW)
 
+/** Stencil ops */
 #define PIPE_STENCIL_OP_KEEP       0
 #define PIPE_STENCIL_OP_ZERO       1
 #define PIPE_STENCIL_OP_REPLACE    2
index 8e68fac..b841181 100644 (file)
  * 
  **************************************************************************/
 
+
+/**
+ * Abstract graphics pipe state objects.
+ *
+ * Basic notes:
+ *   1. Want compact representations, so we use bitfields.
+ *   2. Put bitfields before other (GLfloat) fields.
+ */
+
+
 #ifndef PIPE_STATE_H
 #define PIPE_STATE_H
 
 #include "mtypes.h"
 
-#define WINDING_NONE 0
-#define WINDING_CW   1
-#define WINDING_CCW  2
-#define WINDING_BOTH (WINDING_CW | WINDING_CCW)
 
-#define FILL_POINT 1
-#define FILL_LINE  2
-#define FILL_TRI   3
-
-struct pipe_setup_state {
+/**
+ * Primitive (point/line/tri) setup info
+ */
+struct pipe_setup_state
+{
    GLuint flatshade:1;
    GLuint light_twoside:1;
 
-   GLuint front_winding:2;
+   GLuint front_winding:2;  /**< PIPE_WINDING_x */
 
-   GLuint cull_mode:2;
+   GLuint cull_mode:2;      /**< PIPE_WINDING_x */
 
-   GLuint fill_cw:2;
-   GLuint fill_ccw:2;
+   GLuint fill_cw:2;        /**< PIPE_POLYGON_MODE_x */
+   GLuint fill_ccw:2;       /**< PIPE_POLYGON_MODE_x */
 
    GLuint offset_cw:1;
    GLuint offset_ccw:1;
 
    GLuint scissor:1;
    GLuint poly_stipple:1;
-
-   GLuint pad:18;
+   GLuint poly_smooth:1;
 
    GLfloat offset_units;
    GLfloat offset_scale;
@@ -137,6 +142,7 @@ struct pipe_clear_color_state
    GLfloat color[4];
 };
 
+/** XXXX probably merge into pipe_setup_state */
 struct pipe_line_state
 {
    GLuint smooth:1;
@@ -146,6 +152,7 @@ struct pipe_line_state
    GLfloat width;
 };
 
+/** XXXX probably merge into pipe_setup_state */
 struct pipe_point_state
 {
    GLuint smooth:1;
@@ -154,16 +161,6 @@ struct pipe_point_state
    GLfloat attenuation[3];
 };
 
-struct pipe_polygon_state {
-   GLuint cull_mode:2;     /**< PIPE_POLYGON_CULL_x */
-   GLuint front_winding:1; /**< PIPE_POLYGON_FRONT_CCW,CW */
-   GLuint front_mode:2;    /**< PIPE_POLYGON_MODE_x */
-   GLuint back_mode:2;     /**< PIPE_POLYGON_MODE_x */
-   GLuint stipple:1;       /**< enable */
-   GLuint smooth:1;        /**< enable */
-   /* XXX Polygon offset? */
-};
-
 struct pipe_stencil_state {
    GLuint front_enabled:1;
    GLuint front_func:3;     /**< PIPE_FUNC_x */
@@ -215,6 +212,10 @@ struct pipe_sampler_state
    GLuint wrap_r:3;        /**< PIPE_TEX_WRAP_x */
    GLuint min_filter:3;    /**< PIPE_TEX_FILTER_x */
    GLuint mag_filter:1;    /**< PIPE_TEX_FILTER_LINEAR or _NEAREST */
+   GLuint compare:1;       /**< shadow/depth compare enabled? */
+   GLenum compare_mode:1;  /**< PIPE_TEX_COMPARE_x */
+   GLenum compare_func:3;  /**< PIPE_FUNC_x */
+   GLfloat shadow_ambient; /**< shadow test fail color/intensity */
    GLfloat min_lod;
    GLfloat max_lod;
    GLfloat lod_bias;
@@ -223,10 +224,6 @@ struct pipe_sampler_state
    GLint MaxLevel;      /**< max mipmap level, OpenGL 1.2 */
 #endif
    GLfloat max_anisotropy;
-   GLuint compare:1;       /**< shadow/depth compare enabled? */
-   GLenum compare_mode:1;  /**< PIPE_TEX_COMPARE_x */
-   GLenum compare_func:3;  /**< PIPE_FUNC_x */
-   GLfloat shadow_ambient; /**< shadow test fail color/intensity */
 };
 
 #endif
index 16920d4..63099fb 100644 (file)
@@ -29,6 +29,7 @@
  */
 #include "imports.h"
 
+#include "pipe/p_defines.h"
 #include "sp_context.h"
 #include "sp_prim.h"
 
@@ -75,8 +76,8 @@ static void cull_tri( struct prim_stage *stage,
    _mesa_printf("%s %f\n", __FUNCTION__, header->det );
 
    if (header->det != 0) {
-      GLuint mode = (header->det < 0) ? WINDING_CW : WINDING_CCW;
-   
+      GLuint mode = (header->det < 0) ? PIPE_WINDING_CW : PIPE_WINDING_CCW;
+
       if ((mode & cull_stage(stage)->mode) == 0)
         stage->next->tri( stage->next, header );
    }
index 8ac0b5c..5e9f218 100644 (file)
@@ -30,6 +30,7 @@
 #include "imports.h"
 #include "vf/vf.h"
 
+#include "pipe/p_defines.h"
 #include "sp_context.h"
 #include "sp_prim.h"
 
@@ -52,7 +53,7 @@ static void twoside_begin( struct prim_stage *stage )
 {
    struct twoside_stage *twoside = twoside_stage(stage);
 
-   twoside->facing = (stage->softpipe->setup.front_winding == WINDING_CW) ? -1 : 1;
+   twoside->facing = (stage->softpipe->setup.front_winding == PIPE_WINDING_CW) ? -1 : 1;
 
    stage->next->begin( stage->next );
 }
index 7314733..ab0dab0 100644 (file)
@@ -31,7 +31,7 @@
 
 #include "sp_context.h"
 #include "sp_prim.h"
-
+#include "pipe/p_defines.h"
 
 
 struct unfilled_stage {
@@ -113,17 +113,17 @@ static void unfilled_tri( struct prim_stage *stage,
    GLuint mode = unfilled->mode[header->det < 0];
   
    switch (mode) {
-   case FILL_TRI:
+   case PIPE_POLYGON_MODE_FILL:
       stage->next->tri( stage->next, header );
       break;
-
-   case FILL_LINE:
+   case PIPE_POLYGON_MODE_LINE:
       lines( stage, header );
       break;
-
-   case GL_POINT:
+   case PIPE_POLYGON_MODE_POINT:
       points( stage, header );
       break;
+   default:
+      abort();
    }   
 }
 
index f7cebca..0059b3a 100644 (file)
@@ -16,16 +16,8 @@ alpha_test_quad(struct quad_stage *qs, struct quad_header *quad)
 {
    struct softpipe_context *softpipe = qs->softpipe;
    GLuint j;
-   struct softpipe_surface *sps = softpipe_surface(softpipe->framebuffer.zbuf);
    const GLfloat ref = softpipe->alpha_test.ref;
 
-#if 0
-   assert(sps); /* shouldn't get here if there's no zbuffer */
-#else
-   if (!sps)
-      return;
-#endif
-
    switch (softpipe->alpha_test.func) {
    case PIPE_FUNC_NEVER:
       quad->mask = 0x0;
index 7be7d7f..a249ceb 100644 (file)
@@ -25,6 +25,7 @@
  * 
  **************************************************************************/
 
+#include "pipe/p_defines.h"
 #include "sp_context.h"
 #include "sp_state.h"
 #include "sp_prim.h"
@@ -39,8 +40,8 @@ static void validate_prim_pipe( struct softpipe_context *softpipe )
    /* TODO: make the current primitive part of the state and build
     * shorter pipelines for lines & points.
     */
-   if (softpipe->setup.fill_cw != FILL_TRI ||
-       softpipe->setup.fill_ccw != FILL_TRI) {
+   if (softpipe->setup.fill_cw != PIPE_POLYGON_MODE_FILL ||
+       softpipe->setup.fill_ccw != PIPE_POLYGON_MODE_FILL) {
 
       softpipe->prim.unfilled->next = next;
       next = softpipe->prim.unfilled;
index d88d403..fcda2b3 100644 (file)
 
 #include "st_context.h"
 #include "pipe/p_context.h"
+#include "pipe/p_defines.h"
 #include "st_atom.h"
 
 static GLuint translate_fill( GLenum mode )
 {
    switch (mode) {
-   case GL_POINT: return FILL_POINT;
-   case GL_LINE: return FILL_LINE;
-   case GL_FILL: return FILL_TRI;
-   default: assert(0); return 0;
+   case GL_POINT:
+      return PIPE_POLYGON_MODE_POINT;
+   case GL_LINE:
+      return PIPE_POLYGON_MODE_LINE;
+   case GL_FILL:
+      return PIPE_POLYGON_MODE_FILL;
+   default:
+      assert(0);
+      return 0;
    }
 }
 
@@ -49,10 +55,15 @@ static GLboolean get_offset_flag( GLuint fill_mode,
                                  const struct gl_polygon_attrib *Polygon )
 {
    switch (fill_mode) {
-   case FILL_POINT: return Polygon->OffsetPoint;
-   case FILL_LINE: return Polygon->OffsetLine;
-   case FILL_TRI: return Polygon->OffsetFill;
-   default: assert(0); return 0;
+   case PIPE_POLYGON_MODE_POINT:
+      return Polygon->OffsetPoint;
+   case PIPE_POLYGON_MODE_LINE:
+      return Polygon->OffsetLine;
+   case PIPE_POLYGON_MODE_FILL:
+      return Polygon->OffsetFill;
+   default:
+      assert(0);
+      return 0;
    }
 }
 
@@ -67,13 +78,13 @@ static void update_setup_state( struct st_context *st )
    /* _NEW_POLYGON, _NEW_BUFFERS
     */
    {
-      setup.front_winding = WINDING_CW;
+      setup.front_winding = PIPE_WINDING_CW;
        
       if (ctx->DrawBuffer && ctx->DrawBuffer->Name != 0)
-        setup.front_winding ^= WINDING_BOTH;
+        setup.front_winding ^= PIPE_WINDING_BOTH;
 
       if (ctx->Polygon.FrontFace != GL_CCW)
-        setup.front_winding ^= WINDING_BOTH;
+        setup.front_winding ^= PIPE_WINDING_BOTH;
    }
 
    /* _NEW_LIGHT
@@ -90,18 +101,23 @@ static void update_setup_state( struct st_context *st )
        ctx->Light.Model.TwoSide)
       setup.light_twoside = 1;
 
+   if (ctx->Polygon.SmoothFlag)
+      setup.poly_smooth = 1;
+
+   if (ctx->Polygon.StippleFlag)
+      setup.poly_stipple = 1;
 
    /* _NEW_POLYGON
     */
    if (ctx->Polygon.CullFlag) {
       if (ctx->Polygon.CullFaceMode == GL_FRONT_AND_BACK) {
-        setup.cull_mode = WINDING_BOTH;
+        setup.cull_mode = PIPE_WINDING_BOTH;
       }
       else if (ctx->Polygon.CullFaceMode == GL_FRONT) {
         setup.cull_mode = setup.front_winding;
       }
       else {
-        setup.cull_mode = setup.front_winding ^ WINDING_BOTH;
+        setup.cull_mode = setup.front_winding ^ PIPE_WINDING_BOTH;
       }
    }
 
@@ -111,7 +127,7 @@ static void update_setup_state( struct st_context *st )
       GLuint fill_front = translate_fill( ctx->Polygon.FrontMode );
       GLuint fill_back = translate_fill( ctx->Polygon.BackMode );
       
-      if (setup.front_winding == WINDING_CW) {
+      if (setup.front_winding == PIPE_WINDING_CW) {
         setup.fill_cw = fill_front;
         setup.fill_ccw = fill_back;
       }
@@ -122,11 +138,11 @@ static void update_setup_state( struct st_context *st )
 
       /* Simplify when culling is active:
        */
-      if (setup.cull_mode & WINDING_CW) {
+      if (setup.cull_mode & PIPE_WINDING_CW) {
         setup.fill_cw = setup.fill_ccw;
       }
       
-      if (setup.cull_mode & WINDING_CCW) {
+      if (setup.cull_mode & PIPE_WINDING_CCW) {
         setup.fill_ccw = setup.fill_cw;
       }
    }
@@ -136,19 +152,17 @@ static void update_setup_state( struct st_context *st )
     *
     * _NEW_POLYGON 
     */
-   if (setup.fill_cw != FILL_TRI)
-      setup.offset_cw = get_offset_flag( setup.fill_cw, 
-                                        &ctx->Polygon );
+   if (setup.fill_cw != PIPE_POLYGON_MODE_FILL)
+      setup.offset_cw = get_offset_flag( setup.fill_cw, &ctx->Polygon );
    
-   if (setup.fill_ccw != FILL_TRI)
-      setup.offset_ccw = get_offset_flag( setup.fill_ccw, 
-                                         &ctx->Polygon );
+   if (setup.fill_ccw != PIPE_POLYGON_MODE_FILL)
+      setup.offset_ccw = get_offset_flag( setup.fill_ccw, &ctx->Polygon );
 
 
    /* _NEW_BUFFERS, _NEW_POLYGON
     */
-   if (setup.fill_cw != FILL_TRI ||
-       setup.fill_ccw != FILL_TRI)
+   if (setup.fill_cw != PIPE_POLYGON_MODE_FILL ||
+       setup.fill_ccw != PIPE_POLYGON_MODE_FILL)
    {
       GLfloat mrd = (ctx->DrawBuffer ? 
                     ctx->DrawBuffer->_MRD :