X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgallium%2Fdrivers%2Fr600%2Fr600_state.c;h=cbf860f45f6cdd788371472eae365b429e051ca1;hb=dbad0acfaf2930648d85b49f9795c36e077888f8;hp=3102905537969784c29a2e74514b12756e7bede7;hpb=65123ee62cd66cdffe2c4193a3e28e811d73ff65;p=mesa.git diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 31029055379..cbf860f45f6 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -2881,7 +2881,7 @@ static boolean r600_dma_copy_tile(struct r600_context *rctx, z = src_z; base = rsrc->surface.u.legacy.level[src_level].offset; addr = rdst->surface.u.legacy.level[dst_level].offset; - addr += rdst->surface.u.legacy.level[dst_level].slice_size * dst_z; + addr += (uint64_t)rdst->surface.u.legacy.level[dst_level].slice_size_dw * 4 * dst_z; addr += dst_y * pitch + dst_x * bpp; } else { /* L2T */ @@ -2900,7 +2900,7 @@ static boolean r600_dma_copy_tile(struct r600_context *rctx, z = dst_z; base = rdst->surface.u.legacy.level[dst_level].offset; addr = rsrc->surface.u.legacy.level[src_level].offset; - addr += rsrc->surface.u.legacy.level[src_level].slice_size * src_z; + addr += (uint64_t)rsrc->surface.u.legacy.level[src_level].slice_size_dw * 4 * src_z; addr += src_y * pitch + src_x * bpp; } /* check that we are in dw/base alignment constraint */ @@ -3005,10 +3005,10 @@ static void r600_dma_copy(struct pipe_context *ctx, * dst_pitch == src_pitch */ src_offset= rsrc->surface.u.legacy.level[src_level].offset; - src_offset += rsrc->surface.u.legacy.level[src_level].slice_size * src_box->z; + src_offset += (uint64_t)rsrc->surface.u.legacy.level[src_level].slice_size_dw * 4 * src_box->z; src_offset += src_y * src_pitch + src_x * bpp; dst_offset = rdst->surface.u.legacy.level[dst_level].offset; - dst_offset += rdst->surface.u.legacy.level[dst_level].slice_size * dst_z; + dst_offset += (uint64_t)rdst->surface.u.legacy.level[dst_level].slice_size_dw * 4 * dst_z; dst_offset += dst_y * dst_pitch + dst_x * bpp; size = src_box->height * src_pitch; /* must be dw aligned */