ac: change legacy_surf_level::slice_size to dword units
[mesa.git] / src / gallium / drivers / r600 / evergreen_state.c
index dcbc6862832bcb8ca9ddb87127382ed3e6c9b7f4..a9982b591551c687bece779003312e34b63d5e8f 100644 (file)
@@ -3667,7 +3667,7 @@ static void evergreen_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;
                bank_h = eg_bank_wh(rsrc->surface.u.legacy.bankh);
                bank_w = eg_bank_wh(rsrc->surface.u.legacy.bankw);
@@ -3692,7 +3692,7 @@ static void evergreen_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;
                bank_h = eg_bank_wh(rdst->surface.u.legacy.bankh);
                bank_w = eg_bank_wh(rdst->surface.u.legacy.bankw);
@@ -3809,10 +3809,10 @@ static void evergreen_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;
                evergreen_dma_copy_buffer(rctx, dst, src, dst_offset, src_offset,
                                        src_box->height * src_pitch);