Merge remote branch 'origin/master' into radeon-rewrite
[mesa.git] / src / mesa / drivers / dri / r200 / r200_maos_arrays.c
index 278e00442c84c88ba8a72ef65aadf5830daa355e..5dbc202330b258ac0d14c1e0a3998b429cbb0774 100644 (file)
@@ -75,37 +75,29 @@ static void r200_emit_vecfog(GLcontext *ctx, struct radeon_aos *aos,
 {
        radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
        uint32_t *out;
-       uint32_t bo_size;
        int i;
        int size = 1;
 
-       memset(aos, 0, sizeof(struct radeon_aos));
        if (stride == 0) {
-               bo_size = size * 4;
+               radeonAllocDmaRegion(rmesa, &aos->bo, &aos->offset, size * 4, 32);
                count = 1;
                aos->stride = 0;
        } else {
-               bo_size = size * count * 4;
+               radeonAllocDmaRegion(rmesa, &aos->bo, &aos->offset, size * 4, 32);
                aos->stride = size;
        }
-       aos->bo = radeon_bo_open(rmesa->radeonScreen->bom,
-                                0, bo_size, 32, RADEON_GEM_DOMAIN_GTT, 0);
-       aos->offset = 0;
+
        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.  
  */
@@ -113,7 +105,6 @@ void r200EmitArrays( GLcontext *ctx, GLubyte *vimap_rev )
 {
    r200ContextPtr rmesa = R200_CONTEXT( ctx );
    struct vertex_buffer *VB = &TNL_CONTEXT( ctx )->vb;
-   //   struct radeon_dma_region **component = rmesa->tcl.aos_components;
    GLuint nr = 0;
    GLuint vfmt0 = 0, vfmt1 = 0;
    GLuint count = VB->Count;
@@ -151,7 +142,7 @@ 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.vertex_data[i].buf) {
+           if (!rmesa->tcl.aos[i].bo) {
               if (ctx->VertexProgram._Enabled)
                  rcommon_emit_vector( ctx,
                                       &(rmesa->tcl.aos[nr]),
@@ -208,7 +199,7 @@ void r200EmitArrays( GLcontext *ctx, GLubyte *vimap_rev )
         default:
            assert(0);
         }
-        if (!rmesa->tcl.vertex_data[i].buf) {
+        if (!rmesa->tcl.aos[nr].bo) {
           rcommon_emit_vector( ctx,
                                &(rmesa->tcl.aos[nr]),
                                (char *)VB->AttribPtr[attrib]->data,
@@ -219,7 +210,6 @@ void r200EmitArrays( GLcontext *ctx, GLubyte *vimap_rev )
 after_emit:
         assert(nr < 12);
         nr++;
-        //      component[nr++] = &rmesa->tcl.vertex_data[i];
       }
    }
 
@@ -240,7 +230,8 @@ void r200ReleaseArrays( GLcontext *ctx, GLuint newinputs )
    int i;
    for (i = 0; i < rmesa->tcl.nr_aos_components; i++) {
      if (rmesa->tcl.aos[i].bo) {
-       rmesa->tcl.aos[i].bo = radeon_bo_unref(rmesa->tcl.aos[i].bo);
+       radeon_bo_unref(rmesa->tcl.aos[i].bo);
+       rmesa->tcl.aos[i].bo = NULL;
      }
    }
 }