Merge branch 'mesa_7_5_branch'
[mesa.git] / src / gallium / auxiliary / draw / draw_pt_fetch_emit.c
index c71228a71cc970b0840c6a4fbfe17302f519f479..e7fe6b3b7687af024f8112b6dfc0b025320de0ea 100644 (file)
@@ -130,6 +130,10 @@ static void fetch_emit_prepare( struct draw_pt_middle_end *middle,
       unsigned output_format;
 
       switch (vinfo->attrib[i].emit) {
+      case EMIT_4UB:
+        output_format = PIPE_FORMAT_R8G8B8A8_UNORM;
+        emit_sz = 4 * sizeof(unsigned char);
+         break;
       case EMIT_4F:
         output_format = PIPE_FORMAT_R32G32B32A32_FLOAT;
         emit_sz = 4 * sizeof(float);
@@ -153,6 +157,8 @@ static void fetch_emit_prepare( struct draw_pt_middle_end *middle,
         output_format = PIPE_FORMAT_R32_FLOAT;
         emit_sz = 1 * sizeof(float);
          break;
+      case EMIT_OMIT:
+         continue;
       default:
          assert(0);
         output_format = PIPE_FORMAT_NONE;
@@ -263,7 +269,7 @@ static void fetch_emit_run( struct draw_pt_middle_end *middle,
 
    draw->render->unmap_vertices( draw->render, 
                                  0, 
-                                 (ushort)fetch_count );
+                                 (ushort)(fetch_count - 1) );
 
    /* XXX: Draw arrays path to avoid re-emitting index list again and
     * again.
@@ -319,7 +325,7 @@ static void fetch_emit_run_linear( struct draw_pt_middle_end *middle,
       }
    }
 
-   draw->render->unmap_vertices( draw->render, 0, count );
+   draw->render->unmap_vertices( draw->render, 0, count - 1 );
 
    /* XXX: Draw arrays path to avoid re-emitting index list again and
     * again.
@@ -370,7 +376,7 @@ static boolean fetch_emit_run_linear_elts( struct draw_pt_middle_end *middle,
                          count,
                          hw_verts );
 
-   draw->render->unmap_vertices( draw->render, 0, (ushort)count );
+   draw->render->unmap_vertices( draw->render, 0, (ushort)(count - 1) );
 
    /* XXX: Draw arrays path to avoid re-emitting index list again and
     * again.