Reviewed-by: Marek Olšák <mar...@gmail.com> Marek
On Sat, Jan 26, 2013 at 12:49 AM, <alexdeuc...@gmail.com> wrote: > From: Alex Deucher <alexander.deuc...@amd.com> > > Need to add the virtual address. > > Signed-off-by: Alex Deucher <alexander.deuc...@amd.com> > --- > src/gallium/drivers/r600/r600.h | 4 ++-- > src/gallium/drivers/r600/r600_hw_context.c | 11 +++++++---- > 2 files changed, 9 insertions(+), 6 deletions(-) > > diff --git a/src/gallium/drivers/r600/r600.h b/src/gallium/drivers/r600/r600.h > index 93604fb..06e914f 100644 > --- a/src/gallium/drivers/r600/r600.h > +++ b/src/gallium/drivers/r600/r600.h > @@ -172,8 +172,8 @@ void r600_context_streamout_end(struct r600_context *ctx); > void r600_need_cs_space(struct r600_context *ctx, unsigned num_dw, boolean > count_draw_in); > void r600_context_block_emit_dirty(struct r600_context *ctx, struct > r600_block *block, unsigned pkt_flags); > void r600_cp_dma_copy_buffer(struct r600_context *rctx, > - struct pipe_resource *dst, unsigned dst_offset, > - struct pipe_resource *src, unsigned src_offset, > + struct pipe_resource *dst, unsigned long > dst_offset, > + struct pipe_resource *src, unsigned long > src_offset, > unsigned size); > > int evergreen_context_init(struct r600_context *ctx); > diff --git a/src/gallium/drivers/r600/r600_hw_context.c > b/src/gallium/drivers/r600/r600_hw_context.c > index caebf5c..e13b502 100644 > --- a/src/gallium/drivers/r600/r600_hw_context.c > +++ b/src/gallium/drivers/r600/r600_hw_context.c > @@ -1065,8 +1065,8 @@ void r600_context_streamout_end(struct r600_context > *ctx) > #define CP_DMA_MAX_BYTE_COUNT ((1 << 21) - 8) > > void r600_cp_dma_copy_buffer(struct r600_context *rctx, > - struct pipe_resource *dst, unsigned dst_offset, > - struct pipe_resource *src, unsigned src_offset, > + struct pipe_resource *dst, unsigned long > dst_offset, > + struct pipe_resource *src, unsigned long > src_offset, > unsigned size) > { > struct radeon_winsys_cs *cs = rctx->cs; > @@ -1079,6 +1079,9 @@ void r600_cp_dma_copy_buffer(struct r600_context *rctx, > return; > } > > + dst_offset += r600_resource_va(&rctx->screen->screen, dst); > + src_offset += r600_resource_va(&rctx->screen->screen, src); > + > /* We flush the caches, because we might read from or write > * to resources which are bound right now. */ > rctx->flags |= R600_CONTEXT_INVAL_READ_CACHES | > @@ -1112,9 +1115,9 @@ void r600_cp_dma_copy_buffer(struct r600_context *rctx, > > r600_write_value(cs, PKT3(PKT3_CP_DMA, 4, 0)); > r600_write_value(cs, src_offset); /* SRC_ADDR_LO [31:0] > */ > - r600_write_value(cs, sync); /* CP_SYNC [31] | > SRC_ADDR_HI [7:0] */ > + r600_write_value(cs, sync | ((src_offset >> 32) & 0xff)); > /* CP_SYNC [31] | SRC_ADDR_HI [7:0] */ > r600_write_value(cs, dst_offset); /* DST_ADDR_LO [31:0] > */ > - r600_write_value(cs, 0); /* DST_ADDR_HI [7:0] > */ > + r600_write_value(cs, (dst_offset >> 32) & 0xff); > /* DST_ADDR_HI [7:0] */ > r600_write_value(cs, byte_count); /* COMMAND [29:22] | > BYTE_COUNT [20:0] */ > > r600_write_value(cs, PKT3(PKT3_NOP, 0, 0)); > -- > 1.7.7.5 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev