intel: Add assert check for blitting alignment.
authorPeter Clifton <pcjc2@cam.ac.uk>
Tue, 9 Nov 2010 22:00:36 +0000 (22:00 +0000)
committerEric Anholt <eric@anholt.net>
Tue, 9 Nov 2010 22:35:28 +0000 (14:35 -0800)
Also fixup code comment to reflect that the GPU requires DWORD
alignment, but in this case does not actually pass the value "in
DWORDs" as I previously stated.

src/mesa/drivers/dri/intel/intel_blit.c

index 711889883067f0363ee234ed4c2c8d4f8f262d6b..c2917e9b07e79847a7ba4fb94f29669b3dd06fc2 100644 (file)
@@ -483,8 +483,8 @@ intel_emit_linear_blit(struct intel_context *intel,
    /* Blits are in a different ringbuffer so we don't use them. */
    assert(intel->gen < 6);
 
-   /* The pitch hits the GPU as a is a signed value, IN DWORDs.
-    * But we want width to match pitch. Max width is (1 << 15 - 1),
+   /* The pitch given to the GPU must be DWORD aligned, and
+    * we want width to match pitch. Max width is (1 << 15 - 1),
     * rounding that down to the nearest DWORD is 1 << 15 - 4
     */
    pitch = MIN2(size, (1 << 15) - 4);
@@ -502,6 +502,7 @@ intel_emit_linear_blit(struct intel_context *intel,
    dst_offset += pitch * height;
    size -= pitch * height;
    assert (size < (1 << 15));
+   assert ((size & 3) == 0); /* Pitch must be DWORD aligned */
    if (size != 0) {
       ok = intelEmitCopyBlit(intel, 1,
                             size, src_bo, src_offset, I915_TILING_NONE,