[Mesa-dev] [PATCH 1/2] i965/tiled_memcpy: Support a signed linear pitch

Jason Ekstrand jason at jlekstrand.net
Wed Jan 28 03:36:25 PST 2015


Cc: Chad Versace <chad.versace at intel.com>
---
 src/mesa/drivers/dri/i965/intel_tiled_memcpy.c | 30 +++++++++++++-------------
 src/mesa/drivers/dri/i965/intel_tiled_memcpy.h |  4 ++--
 2 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
index 284374f..f2b35cb 100644
--- a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
+++ b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
@@ -127,7 +127,7 @@ rgba8_copy(void *dst, const void *src, size_t bytes)
 typedef void (*tile_copy_fn)(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
                              uint32_t y0, uint32_t y1,
                              char *dst, const char *src,
-                             uint32_t src_pitch,
+                             int32_t linear_pitch,
                              uint32_t swizzle_bit,
                              mem_copy_fn mem_copy);
 
@@ -140,7 +140,7 @@ static inline void
 linear_to_xtiled(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
                  uint32_t y0, uint32_t y1,
                  char *dst, const char *src,
-                 uint32_t src_pitch,
+                 int32_t src_pitch,
                  uint32_t swizzle_bit,
                  mem_copy_fn mem_copy)
 {
@@ -149,7 +149,7 @@ linear_to_xtiled(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
     */
    uint32_t xo, yo;
 
-   src += y0 * src_pitch;
+   src += (ptrdiff_t)y0 * src_pitch;
 
    for (yo = y0 * xtile_width; yo < y1 * xtile_width; yo += xtile_width) {
       /* Bits 9 and 10 of the copy destination offset control swizzling.
@@ -181,7 +181,7 @@ static inline void
 linear_to_ytiled(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
                  uint32_t y0, uint32_t y1,
                  char *dst, const char *src,
-                 uint32_t src_pitch,
+                 int32_t src_pitch,
                  uint32_t swizzle_bit,
                  mem_copy_fn mem_copy)
 {
@@ -210,7 +210,7 @@ linear_to_ytiled(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
 
    uint32_t x, yo;
 
-   src += y0 * src_pitch;
+   src += (ptrdiff_t)y0 * src_pitch;
 
    for (yo = y0 * column_width; yo < y1 * column_width; yo += column_width) {
       uint32_t xo = xo1;
@@ -242,7 +242,7 @@ static inline void
 xtiled_to_linear(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
                  uint32_t y0, uint32_t y1,
                  char *dst, const char *src,
-                 uint32_t dst_pitch,
+                 int32_t dst_pitch,
                  uint32_t swizzle_bit,
                  mem_copy_fn mem_copy)
 {
@@ -251,7 +251,7 @@ xtiled_to_linear(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
     */
    uint32_t xo, yo;
 
-   dst += y0 * dst_pitch;
+   dst += (ptrdiff_t)y0 * dst_pitch;
 
    for (yo = y0 * xtile_width; yo < y1 * xtile_width; yo += xtile_width) {
       /* Bits 9 and 10 of the copy destination offset control swizzling.
@@ -283,7 +283,7 @@ static inline void
 ytiled_to_linear(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
                  uint32_t y0, uint32_t y1,
                  char *dst, const char *src,
-                 uint32_t dst_pitch,
+                 int32_t dst_pitch,
                  uint32_t swizzle_bit,
                  mem_copy_fn mem_copy)
 {
@@ -312,7 +312,7 @@ ytiled_to_linear(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
 
    uint32_t x, yo;
 
-   dst += y0 * dst_pitch;
+   dst += (ptrdiff_t)y0 * dst_pitch;
 
    for (yo = y0 * column_width; yo < y1 * column_width; yo += column_width) {
       uint32_t xo = xo1;
@@ -349,7 +349,7 @@ static FLATTEN void
 linear_to_xtiled_faster(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
                         uint32_t y0, uint32_t y1,
                         char *dst, const char *src,
-                        uint32_t src_pitch,
+                        int32_t src_pitch,
                         uint32_t swizzle_bit,
                         mem_copy_fn mem_copy)
 {
@@ -385,7 +385,7 @@ static FLATTEN void
 linear_to_ytiled_faster(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
                         uint32_t y0, uint32_t y1,
                         char *dst, const char *src,
-                        uint32_t src_pitch,
+                        int32_t src_pitch,
                         uint32_t swizzle_bit,
                         mem_copy_fn mem_copy)
 {
@@ -421,7 +421,7 @@ static FLATTEN void
 xtiled_to_linear_faster(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
                         uint32_t y0, uint32_t y1,
                         char *dst, const char *src,
-                        uint32_t dst_pitch,
+                        int32_t dst_pitch,
                         uint32_t swizzle_bit,
                         mem_copy_fn mem_copy)
 {
@@ -457,7 +457,7 @@ static FLATTEN void
 ytiled_to_linear_faster(uint32_t x0, uint32_t x1, uint32_t x2, uint32_t x3,
                         uint32_t y0, uint32_t y1,
                         char *dst, const char *src,
-                        uint32_t dst_pitch,
+                        int32_t dst_pitch,
                         uint32_t swizzle_bit,
                         mem_copy_fn mem_copy)
 {
@@ -495,7 +495,7 @@ void
 linear_to_tiled(uint32_t xt1, uint32_t xt2,
                 uint32_t yt1, uint32_t yt2,
                 char *dst, const char *src,
-                uint32_t dst_pitch, uint32_t src_pitch,
+                uint32_t dst_pitch, int32_t src_pitch,
                 bool has_swizzling,
                 uint32_t tiling,
                 mem_copy_fn mem_copy)
@@ -586,7 +586,7 @@ void
 tiled_to_linear(uint32_t xt1, uint32_t xt2,
                 uint32_t yt1, uint32_t yt2,
                 char *dst, const char *src,
-                uint32_t dst_pitch, uint32_t src_pitch,
+                int32_t dst_pitch, uint32_t src_pitch,
                 bool has_swizzling,
                 uint32_t tiling,
                 mem_copy_fn mem_copy)
diff --git a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.h b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.h
index f64a32a..3ff0d71 100644
--- a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.h
+++ b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.h
@@ -41,7 +41,7 @@ void
 linear_to_tiled(uint32_t xt1, uint32_t xt2,
                 uint32_t yt1, uint32_t yt2,
                 char *dst, const char *src,
-                uint32_t dst_pitch, uint32_t src_pitch,
+                uint32_t dst_pitch, int32_t src_pitch,
                 bool has_swizzling,
                 uint32_t tiling,
                 mem_copy_fn mem_copy);
@@ -50,7 +50,7 @@ void
 tiled_to_linear(uint32_t xt1, uint32_t xt2,
                 uint32_t yt1, uint32_t yt2,
                 char *dst, const char *src,
-                uint32_t dst_pitch, uint32_t src_pitch,
+                int32_t dst_pitch, uint32_t src_pitch,
                 bool has_swizzling,
                 uint32_t tiling,
                 mem_copy_fn mem_copy);
-- 
2.2.2



More information about the mesa-dev mailing list