r300g: abort if a vertex buffer offset is not dword-aligned
[mesa.git] / src / gallium / drivers / r300 / r300_emit.c
index 19acdaba621bbc834fdc4c0d3d79cf0af14032ec..7dc7c1d0efcf4692737af76c4b40887fac52527a 100644 (file)
@@ -832,6 +832,15 @@ void r300_emit_aos(struct r300_context* r300, unsigned offset)
     unsigned packet_size = (aos_count * 3 + 1) / 2;
     CS_LOCALS(r300);
 
+    for (i = 0; i < aos_count; i++) {
+        if ((vbuf[velem[i].vertex_buffer_index].buffer_offset + velem[i].src_offset) % 4 != 0) {
+            /* XXX We must align the buffer. */
+            assert(0);
+            fprintf(stderr, "r300: Unaligned vertex buffer offsets aren't supported, aborting..\n");
+            abort();
+        }
+    }
+
     BEGIN_CS(2 + packet_size + aos_count * 2);
     OUT_CS_PKT3(R300_PACKET3_3D_LOAD_VBPNTR, packet_size);
     OUT_CS(aos_count);