intel/blorp: Stop using the X/YOffset field of RENDER_SURFACE_STATE
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 30 Aug 2016 18:18:39 +0000 (11:18 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 13 Sep 2016 02:42:57 +0000 (19:42 -0700)
commit4e03edf1890d4b0a0dd131085b9e04aa4fbf6b12
tree74ff3d2d7f81fb9af17410dedec2d36bb21a85fd
parentc170606fc68d1504c9dc34b4672b5bb08d719079
intel/blorp: Stop using the X/YOffset field of RENDER_SURFACE_STATE

While it can be useful, the field has substantial limtations.  In
particular, the bittom 2 or 3 bits is missing so your offset always has to
be a multiple of 4 or 8.  While surface alignments usually work out to make
this ok, when you start trying to fake compressed surfaces as uncompressed
(which we will want to do) this falls apart.  The easiest solution is to
simply align all offsets to a tile boundary and munge the regions we're
copying to account for the intratile offset.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
src/intel/blorp/blorp_blit.c
src/intel/blorp/blorp_genX_exec.h
src/intel/blorp/blorp_priv.h