[Mesa-dev] [PATCH 3/6] i965: Create and use #defines for blitter constraints
Ben Widawsky
benjamin.widawsky at intel.com
Mon Mar 9 21:43:33 PDT 2015
Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
---
src/mesa/drivers/dri/i965/intel_blit.c | 11 ++++++-----
src/mesa/drivers/dri/i965/intel_blit.h | 3 +++
src/mesa/drivers/dri/i965/intel_copy_image.c | 7 ++++---
src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 9 +++++----
4 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/intel_blit.c b/src/mesa/drivers/dri/i965/intel_blit.c
index ee2a4ef..b93794b 100644
--- a/src/mesa/drivers/dri/i965/intel_blit.c
+++ b/src/mesa/drivers/dri/i965/intel_blit.c
@@ -206,8 +206,8 @@ intel_miptree_blit(struct brw_context *brw,
* As a result of these two limitations, we can only use the blitter to do
* this copy when the miptree's pitch is less than 32k.
*/
- if (src_mt->pitch >= 32768 ||
- dst_mt->pitch >= 32768) {
+ if (src_mt->pitch >= INTEL_MAX_BLIT_PITCH ||
+ dst_mt->pitch >= INTEL_MAX_BLIT_PITCH) {
perf_debug("Falling back due to >=32k pitch\n");
return false;
}
@@ -244,9 +244,10 @@ intel_miptree_blit(struct brw_context *brw,
* value. The values we're working with are unsigned, so make sure we don't
* overflow.
*/
- if (src_x >= 32768 || src_y >= 32768 || dst_x >= 32768 || dst_y >= 32768) {
- perf_debug("Falling back due to >=32k offset [src(%d, %d) dst(%d, %d)]\n",
- src_x, src_y, dst_x, dst_y);
+ if (src_x >= INTEL_MAX_BLIT_PITCH || src_y >= INTEL_MAX_BLIT_ROWS ||
+ dst_x >= INTEL_MAX_BLIT_PITCH || dst_y >= INTEL_MAX_BLIT_ROWS) {
+ perf_debug("Falling back due to >=%dk offset [src(%d, %d) dst(%d, %d)]\n",
+ src_x, src_y, dst_x, dst_y, INTEL_MAX_BLIT_PITCH >> 20);
return false;
}
diff --git a/src/mesa/drivers/dri/i965/intel_blit.h b/src/mesa/drivers/dri/i965/intel_blit.h
index f563939..531d329 100644
--- a/src/mesa/drivers/dri/i965/intel_blit.h
+++ b/src/mesa/drivers/dri/i965/intel_blit.h
@@ -30,6 +30,9 @@
#include "brw_context.h"
+#define INTEL_MAX_BLIT_PITCH 32768
+#define INTEL_MAX_BLIT_ROWS 32768
+
bool
intelEmitCopyBlit(struct brw_context *brw,
GLuint cpp,
diff --git a/src/mesa/drivers/dri/i965/intel_copy_image.c b/src/mesa/drivers/dri/i965/intel_copy_image.c
index bf6b5e7..689e9c7 100644
--- a/src/mesa/drivers/dri/i965/intel_copy_image.c
+++ b/src/mesa/drivers/dri/i965/intel_copy_image.c
@@ -69,9 +69,10 @@ copy_image_with_blitter(struct brw_context *brw,
* As a result of these two limitations, we can only use the blitter to do
* this copy when the miptree's pitch is less than 32k.
*/
- if (src_mt->pitch >= 32768 ||
- dst_mt->pitch >= 32768) {
- perf_debug("Falling back due to >=32k pitch\n");
+ if (src_mt->pitch >= INTEL_MAX_BLIT_PITCH ||
+ dst_mt->pitch >= INTEL_MAX_BLIT_PITCH) {
+ perf_debug("Falling back due to >=%dk pitch\n",
+ INTEL_MAX_BLIT_PITCH >> 20);
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 cc422d3..16bd151 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -501,8 +501,9 @@ intel_miptree_choose_tiling(struct brw_context *brw,
if (minimum_pitch < 64)
return I915_TILING_NONE;
- if (ALIGN(minimum_pitch, 512) >= 32768 ||
- mt->total_width >= 32768 || mt->total_height >= 32768) {
+ if (ALIGN(minimum_pitch, 512) >= INTEL_MAX_BLIT_PITCH ||
+ mt->total_width >= INTEL_MAX_BLIT_PITCH ||
+ mt->total_height >= INTEL_MAX_BLIT_ROWS) {
perf_debug("%dx%d miptree too large to blit, falling back to untiled",
mt->total_width, mt->total_height);
return I915_TILING_NONE;
@@ -2296,11 +2297,11 @@ can_blit_slice(struct intel_mipmap_tree *mt,
uint32_t image_x;
uint32_t image_y;
intel_miptree_get_image_offset(mt, level, slice, &image_x, &image_y);
- if (image_x >= 32768 || image_y >= 32768)
+ if (image_x >= INTEL_MAX_BLIT_PITCH || image_y >= INTEL_MAX_BLIT_ROWS)
return false;
/* See intel_miptree_blit() for details on the 32k pitch limit. */
- if (mt->pitch >= 32768)
+ if (mt->pitch >= INTEL_MAX_BLIT_PITCH)
return false;
return true;
--
2.3.1
More information about the mesa-dev
mailing list