diff options
author | Eric Anholt <eric@anholt.net> | 2009-06-22 15:23:38 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2009-06-23 19:31:12 -0700 |
commit | 1593a1bb3435728806f66fff72a90e72a9616083 (patch) | |
tree | 7c9a893d038ca0739a9fc17a2363e0fff01f2df1 /src/mesa/drivers | |
parent | 8f81a6468fdbc7320800ea497791e3e1b8f782ca (diff) |
intel: Bail on blits with non-tile-aligned offsets.
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_blit.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c index e0596a5531..75d315d82b 100644 --- a/src/mesa/drivers/dri/intel/intel_blit.c +++ b/src/mesa/drivers/dri/intel/intel_blit.c @@ -225,10 +225,18 @@ intelEmitCopyBlit(struct intel_context *intel, dri_bo *aper_array[3]; BATCH_LOCALS; - if (dst_tiling == I915_TILING_Y) - return GL_FALSE; - if (src_tiling == I915_TILING_Y) - return GL_FALSE; + if (dst_tiling != I915_TILING_NONE) { + if (dst_offset & 4095) + return GL_FALSE; + if (dst_tiling == I915_TILING_Y) + return GL_FALSE; + } + if (src_tiling != I915_TILING_NONE) { + if (src_offset & 4095) + return GL_FALSE; + if (src_tiling == I915_TILING_Y) + return GL_FALSE; + } /* do space/cliprects check before going any further */ do { @@ -561,8 +569,12 @@ intelEmitImmediateColorExpandBlit(struct intel_context *intel, int dwords = ALIGN(src_size, 8) / 4; uint32_t opcode, br13, blit_cmd; - if (dst_tiling == I915_TILING_Y) - return GL_FALSE; + if (dst_tiling != I915_TILING_NONE) { + if (dst_offset & 4095) + return GL_FALSE; + if (dst_tiling == I915_TILING_Y) + return GL_FALSE; + } assert( logic_op - GL_CLEAR >= 0 ); assert( logic_op - GL_CLEAR < 0x10 ); |