tgsi/ureg: make the dst register match the src indirection
[mesa.git] / src / gallium / auxiliary / draw / draw_pt_vsplit_tmp.h
index 10842a36e8ad622a3d44ef01d1860f984ff21fa5..2e94705609fd2ca088648ad79c0c21e606387456 100644 (file)
@@ -38,8 +38,7 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit,
                                     unsigned istart, unsigned icount)
 {
    struct draw_context *draw = vsplit->draw;
-   const ELT_TYPE *ib = (const ELT_TYPE *)
-      ((const char *) draw->pt.user.elts + draw->pt.index_buffer.offset);
+   const ELT_TYPE *ib = (const ELT_TYPE *) draw->pt.user.elts;
    const unsigned min_index = draw->pt.user.min_index;
    const unsigned max_index = draw->pt.user.max_index;
    const int elt_bias = draw->pt.user.eltBias;
@@ -56,7 +55,9 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit,
 
       for (i = 0; i < icount; i++) {
          ELT_TYPE idx = ib[i];
-         assert(idx >= min_index && idx <= max_index);
+         if (idx < min_index || idx > max_index) {
+            debug_printf("warning: index out of range\n");
+         }
       }
       draw_elts = (const ushort *) ib;
    }
@@ -70,7 +71,7 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit,
    if (max_index - min_index > icount - 1)
       return FALSE;
 
-   if (elt_bias < 0 && min_index < -elt_bias)
+   if (elt_bias < 0 && (int) min_index < -elt_bias)
       return FALSE;
 
    /* why this check? */
@@ -87,7 +88,9 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit,
          for (i = 0; i < icount; i++) {
             ELT_TYPE idx = ib[i];
 
-            assert(idx >= min_index && idx <= max_index);
+            if (idx < min_index || idx > max_index) {
+               debug_printf("warning: index out of range\n");
+            }
             vsplit->draw_elts[i] = (ushort) idx;
          }
       }
@@ -95,7 +98,9 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit,
          for (i = 0; i < icount; i++) {
             ELT_TYPE idx = ib[i];
 
-            assert(idx >= min_index && idx <= max_index);
+            if (idx < min_index || idx > max_index) {
+               debug_printf("warning: index out of range\n");
+            }
             vsplit->draw_elts[i] = (ushort) (idx - min_index);
          }
       }
@@ -122,8 +127,7 @@ CONCAT(vsplit_segment_cache_, ELT_TYPE)(struct vsplit_frontend *vsplit,
                                         boolean close, unsigned iclose)
 {
    struct draw_context *draw = vsplit->draw;
-   const ELT_TYPE *ib = (const ELT_TYPE *)
-      ((const char *) draw->pt.user.elts + draw->pt.index_buffer.offset);
+   const ELT_TYPE *ib = (const ELT_TYPE *) draw->pt.user.elts;
    const int ibias = draw->pt.user.eltBias;
    unsigned i;
 
@@ -154,19 +158,19 @@ CONCAT(vsplit_segment_cache_, ELT_TYPE)(struct vsplit_frontend *vsplit,
    }
    else {
       if (spoken) {
-         if (ib[ispoken] < -ibias)
+         if ((int) ib[ispoken] < -ibias)
             return;
          ADD_CACHE(vsplit, ib[ispoken] + ibias);
       }
 
       for (i = spoken; i < icount; i++) {
-         if (ib[istart + i] < -ibias)
+         if ((int) ib[istart + i] < -ibias)
             return;
          ADD_CACHE(vsplit, ib[istart + i] + ibias);
       }
 
       if (close) {
-         if (ib[iclose] < -ibias)
+         if ((int) ib[iclose] < -ibias)
             return;
          ADD_CACHE(vsplit, ib[iclose] + ibias);
       }