mesa: replace VP/FP/ATIfs _Enabled flags with helper functions
[mesa.git] / src / mesa / drivers / dri / r200 / r200_maos_arrays.c
index 249c0bbc11d2ef7236f5d08d786c010ed7a1e8bc..60f851be56ce90be01e576c9db0adc21bfe41996 100644 (file)
@@ -29,14 +29,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 /*
  * Authors:
- *   Keith Whitwell <keith@tungstengraphics.com>
+ *   Keith Whitwell <keithw@vmware.com>
  */
 
 #include "main/glheader.h"
 #include "main/mtypes.h"
-#include "main/colormac.h"
 #include "main/imports.h"
 #include "main/macros.h"
+#include "main/state.h"
 
 #include "swrast_setup/swrast_setup.h"
 #include "math/m_translate.h"
@@ -70,40 +70,10 @@ do {                                                \
 } while (0)
 #endif
 
-static void r200_emit_vecfog(GLcontext *ctx, struct radeon_aos *aos,
-                            GLvoid *data, int stride, int count)
-{
-       radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
-       uint32_t *out;
-       int i;
-       int size = 1;
-
-       if (stride == 0) {
-               radeonAllocDmaRegion(rmesa, &aos->bo, &aos->offset, size * 4, 32);
-               count = 1;
-               aos->stride = 0;
-       } else {
-               radeonAllocDmaRegion(rmesa, &aos->bo, &aos->offset, size * 4, 32);
-               aos->stride = size;
-       }
-
-       aos->components = size;
-       aos->count = count;
-
-       radeon_bo_map(aos->bo, 1);
-       out = (uint32_t*)((char*)aos->bo->ptr + aos->offset);
-       for (i = 0; i < count; i++) {
-         out[0] = r200ComputeFogBlendFactor( ctx, *(GLfloat *)data );
-         out++;
-         data += stride;
-       }
-       radeon_bo_unmap(aos->bo);
-}
-
 /* Emit any changed arrays to new GART memory, re-emit a packet to
  * update the arrays.  
  */
-void r200EmitArrays( GLcontext *ctx, GLubyte *vimap_rev )
+void r200EmitArrays( struct gl_context *ctx, GLubyte *vimap_rev )
 {
    r200ContextPtr rmesa = R200_CONTEXT( ctx );
    struct vertex_buffer *VB = &TNL_CONTEXT( ctx )->vb;
@@ -145,7 +115,7 @@ void r200EmitArrays( GLcontext *ctx, GLubyte *vimap_rev )
            /* special handling to fix up fog. Will get us into trouble with vbos...*/
            assert(attrib == VERT_ATTRIB_FOG);
            if (!rmesa->radeon.tcl.aos[i].bo) {
-              if (ctx->VertexProgram._Enabled)
+              if (_mesa_arb_vertex_program_enabled(ctx))
                  rcommon_emit_vector( ctx,
                                       &(rmesa->radeon.tcl.aos[nr]),
                                       (char *)VB->AttribPtr[attrib]->data,
@@ -153,11 +123,11 @@ void r200EmitArrays( GLcontext *ctx, GLubyte *vimap_rev )
                                       VB->AttribPtr[attrib]->stride,
                                       count);
               else
-                r200_emit_vecfog( ctx,
-                                  &(rmesa->radeon.tcl.aos[nr]),
-                                  (char *)VB->AttribPtr[attrib]->data,
-                                  VB->AttribPtr[attrib]->stride,
-                                  count);
+                rcommon_emit_vecfog( ctx,
+                                     &(rmesa->radeon.tcl.aos[nr]),
+                                     (char *)VB->AttribPtr[attrib]->data,
+                                     VB->AttribPtr[attrib]->stride,
+                                     count);
            }
            vfmt0 |= R200_VTX_DISCRETE_FOG;
            goto after_emit;
@@ -196,10 +166,12 @@ void r200EmitArrays( GLcontext *ctx, GLubyte *vimap_rev )
               /* fallthrough */
            case 4:
               vfmt0 |= R200_VTX_W1;
-           break;
+              /* fallthrough */
            }
+           break;
         default:
            assert(0);
+           emitsize = 0;
         }
         if (!rmesa->radeon.tcl.aos[nr].bo) {
           rcommon_emit_vector( ctx,