The spec does say that the blitter is capable of transferring 64k scanlines in a single blit operation. Perhaps this was true, or is still true on some operations, but for all commands that we use, we are restricted to 16b signed:
For example, from the XY_SRC_COPY_CHROMA_BLT definition: > Destination Y2 Coordinate (Bottom) > 16 bit signed number. Signed-off-by: Ben Widawsky <b...@bwidawsk.net> --- src/mesa/drivers/dri/i965/intel_blit.c | 8 ++++++-- src/mesa/drivers/dri/i965/intel_copy_image.c | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/i965/intel_blit.c b/src/mesa/drivers/dri/i965/intel_blit.c index 9500bd7..ee2a4ef 100644 --- a/src/mesa/drivers/dri/i965/intel_blit.c +++ b/src/mesa/drivers/dri/i965/intel_blit.c @@ -190,11 +190,15 @@ intel_miptree_blit(struct brw_context *brw, * The BLT engine is capable of transferring very large quantities of * graphics data. Any graphics data read from and written to the * destination is permitted to represent a number of pixels that - * occupies up to 65,536 scan lines and up to 32,768 bytes per scan line - * at the destination. The maximum number of pixels that may be + * occupies up to 65,536 [sic] scan lines and up to 32,768 bytes per scan + * line at the destination. The maximum number of pixels that may be * represented per scan line’s worth of graphics data depends on the * color depth. * + * XXX: The spec is likely incorrect. The number of scanlines is represented + * in the blit command as a 16b signed number, thus 32,767 as the max number + * of scanlines. + * * Furthermore, intelEmitCopyBlit (which is called below) uses a signed * 16-bit integer to represent buffer pitch, so it can only handle buffer * pitches < 32k. diff --git a/src/mesa/drivers/dri/i965/intel_copy_image.c b/src/mesa/drivers/dri/i965/intel_copy_image.c index f4c7eff..bf6b5e7 100644 --- a/src/mesa/drivers/dri/i965/intel_copy_image.c +++ b/src/mesa/drivers/dri/i965/intel_copy_image.c @@ -53,11 +53,15 @@ copy_image_with_blitter(struct brw_context *brw, * The BLT engine is capable of transferring very large quantities of * graphics data. Any graphics data read from and written to the * destination is permitted to represent a number of pixels that - * occupies up to 65,536 scan lines and up to 32,768 bytes per scan line - * at the destination. The maximum number of pixels that may be + * occupies up to 65,536 [sic] scan lines and up to 32,768 bytes per scan + * line at the destination. The maximum number of pixels that may be * represented per scan line’s worth of graphics data depends on the * color depth. * + * XXX: The spec is likely incorrect. The number of scanlines is represented + * in the blit command as a 16b signed number, thus 32,767 as the max number + * of scanlines. + * * Furthermore, intelEmitCopyBlit (which is called below) uses a signed * 16-bit integer to represent buffer pitch, so it can only handle buffer * pitches < 32k. -- 2.3.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev