i965: Require pixel alignment for GPU copy blit
authorCody Northrop <cody@lunarg.com>
Mon, 15 Sep 2014 22:14:20 +0000 (16:14 -0600)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 17 Dec 2014 00:04:14 +0000 (16:04 -0800)
commit83e8bb5b1a50c0105b642d559999f07fa64a982f
tree51489087e39805dced9ec8218e382fb17610cd63
parentfc016bc0f3d83bbf3eb968938f4bc9df55214ecd
i965: Require pixel alignment for GPU copy blit

The blitter will start at a pixel's natural alignment. For PBOs, if the
provided offset if not aligned, bits will get dropped.

This change adds offset alignment check for src and dst, kicking back if
the requirements are not met.

The change is based on following verbiage from BSPEC:
 Color pixel sizes supported are 8, 16, and 32 bits per pixel (bpp).
 All pixels are naturally aligned.

Found in the following locations:
page 35 of intel-gfx-prm-osrc-hsw-blitter.pdf
page 29 of ivb_ihd_os_vol1_part4.pdf
page 29 of snb_ihd_os_vol1_part5.pdf

This behavior was observed with Steam Big Picture rendering incorrect
icon colors.  The fix has been tested on Ubuntu and SteamOS on Haswell.

Signed-off-by: Cody Northrop <cody@lunarg.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83908
Reviewed-by: Neil Roberts <neil@linux.intel.com>
src/mesa/drivers/dri/i915/intel_blit.c
src/mesa/drivers/dri/i965/intel_blit.c