mesa: replace VP/FP/ATIfs _Enabled flags with helper functions
[mesa.git] / src / mesa / drivers / dri / r200 / r200_maos_arrays.c
index 5dbc202330b258ac0d14c1e0a3998b429cbb0774..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,38 +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;
-
-       out = (uint32_t*)((char*)aos->bo->ptr + aos->offset);
-       for (i = 0; i < count; i++) {
-         out[0] = r200ComputeFogBlendFactor( ctx, *(GLfloat *)data );
-         out++;
-         data += stride;
-       }
-}
-
 /* 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;
@@ -142,20 +114,20 @@ void r200EmitArrays( GLcontext *ctx, GLubyte *vimap_rev )
         case 3:
            /* special handling to fix up fog. Will get us into trouble with vbos...*/
            assert(attrib == VERT_ATTRIB_FOG);
-           if (!rmesa->tcl.aos[i].bo) {
-              if (ctx->VertexProgram._Enabled)
+           if (!rmesa->radeon.tcl.aos[i].bo) {
+              if (_mesa_arb_vertex_program_enabled(ctx))
                  rcommon_emit_vector( ctx,
-                                      &(rmesa->tcl.aos[nr]),
+                                      &(rmesa->radeon.tcl.aos[nr]),
                                       (char *)VB->AttribPtr[attrib]->data,
                                       1,
                                       VB->AttribPtr[attrib]->stride,
                                       count);
               else
-                r200_emit_vecfog( ctx,
-                                  &(rmesa->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;
@@ -194,14 +166,16 @@ void r200EmitArrays( GLcontext *ctx, GLubyte *vimap_rev )
               /* fallthrough */
            case 4:
               vfmt0 |= R200_VTX_W1;
-           break;
+              /* fallthrough */
            }
+           break;
         default:
            assert(0);
+           emitsize = 0;
         }
-        if (!rmesa->tcl.aos[nr].bo) {
+        if (!rmesa->radeon.tcl.aos[nr].bo) {
           rcommon_emit_vector( ctx,
-                               &(rmesa->tcl.aos[nr]),
+                               &(rmesa->radeon.tcl.aos[nr]),
                                (char *)VB->AttribPtr[attrib]->data,
                                emitsize,
                                VB->AttribPtr[attrib]->stride,
@@ -220,18 +194,6 @@ after_emit:
       rmesa->hw.vtx.cmd[VTX_VTXFMT_1] = vfmt1;
    }
 
-   rmesa->tcl.nr_aos_components = nr;
+   rmesa->radeon.tcl.aos_count = nr;
 }
 
-
-void r200ReleaseArrays( GLcontext *ctx, GLuint newinputs )
-{
-   r200ContextPtr rmesa = R200_CONTEXT( ctx );
-   int i;
-   for (i = 0; i < rmesa->tcl.nr_aos_components; i++) {
-     if (rmesa->tcl.aos[i].bo) {
-       radeon_bo_unref(rmesa->tcl.aos[i].bo);
-       rmesa->tcl.aos[i].bo = NULL;
-     }
-   }
-}