This fixes screenshots using 8k+ wide display setups in modesetting. Chris Wilson even recommended the changes in intel_mipmap_tree.c should read 131072 instead of 65535, but I for sure got confused by his explanation.
In any case, I would like to use this RFC patch as a forum to discuss why the fallback path is broken[1], and as to what should be the limits for HW-accelerated blits now that we got rid of the blitter usage on recent platforms. Tested-by: Martin Peres <martin.pe...@linux.intel.com> # HSW Cc: Chris Wilson <ch...@chris-wilson.co.uk> [1] https://fs.mupuf.org/corruption_8k%2B.png --- src/mesa/drivers/dri/i965/intel_blit.c | 2 +- src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mesa/drivers/dri/i965/intel_blit.c b/src/mesa/drivers/dri/i965/intel_blit.c index 90784c5b1958..458f8bd42857 100644 --- a/src/mesa/drivers/dri/i965/intel_blit.c +++ b/src/mesa/drivers/dri/i965/intel_blit.c @@ -403,7 +403,7 @@ emit_miptree_blit(struct brw_context *brw, * for linear surfaces and DWords for tiled surfaces. So the maximum * pitch is 32k linear and 128k tiled. */ - if (blt_pitch(src_mt) >= 32768 || blt_pitch(dst_mt) >= 32768) { + if (blt_pitch(src_mt) >= 65536 || blt_pitch(dst_mt) >= 65536) { perf_debug("Falling back due to >= 32k/128k pitch\n"); return false; } diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c index 6b89bf6848af..7347ea8b99d8 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c @@ -523,7 +523,7 @@ need_to_retile_as_linear(struct brw_context *brw, unsigned row_pitch, if (row_pitch < 64) return true; - if (ALIGN(row_pitch, 512) >= 32768) { + if (ALIGN(row_pitch, 512) >= 65536) { perf_debug("row pitch %u too large to blit, falling back to untiled", row_pitch); return true; @@ -3583,7 +3583,7 @@ can_blit_slice(struct intel_mipmap_tree *mt, unsigned int level, unsigned int slice) { /* See intel_miptree_blit() for details on the 32k pitch limit. */ - if (mt->surf.row_pitch >= 32768) + if (mt->surf.row_pitch >= 65536) return false; return true; -- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev