Mesa (mesa_7_7_branch): svga: Fix the guest offset of piecewise buffer DMAs .
Jose Fonseca
jrfonseca at kemper.freedesktop.org
Mon Feb 22 19:38:21 UTC 2010
Module: Mesa
Branch: mesa_7_7_branch
Commit: 69cf45cdae25c5676394d014fff904b466279a28
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=69cf45cdae25c5676394d014fff904b466279a28
Author: José Fonseca <jfonseca at vmware.com>
Date: Mon Feb 22 19:20:25 2010 +0000
svga: Fix the guest offset of piecewise buffer DMAs.
It was being erroneously set equal to the host offset, but it should be
zero.
---
src/gallium/drivers/svga/svga_cmd.c | 9 +++++----
src/gallium/drivers/svga/svga_cmd.h | 3 ++-
src/gallium/drivers/svga/svga_screen_buffer.c | 4 ++--
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/gallium/drivers/svga/svga_cmd.c b/src/gallium/drivers/svga/svga_cmd.c
index a0da7d7..04307d1 100644
--- a/src/gallium/drivers/svga/svga_cmd.c
+++ b/src/gallium/drivers/svga/svga_cmd.c
@@ -478,7 +478,8 @@ SVGA3D_BufferDMA(struct svga_winsys_context *swc,
struct svga_winsys_surface *host,
SVGA3dTransferType transfer, // IN
uint32 size, // IN
- uint32 offset, // IN
+ uint32 guest_offset, // IN
+ uint32 host_offset, // IN
SVGA3dSurfaceDMAFlags flags) // IN
{
SVGA3dCmdSurfaceDMA *cmd;
@@ -517,19 +518,19 @@ SVGA3D_BufferDMA(struct svga_winsys_context *swc,
cmd->transfer = transfer;
box = (SVGA3dCopyBox *)&cmd[1];
- box->x = offset;
+ box->x = host_offset;
box->y = 0;
box->z = 0;
box->w = size;
box->h = 1;
box->d = 1;
- box->srcx = offset;
+ box->srcx = guest_offset;
box->srcy = 0;
box->srcz = 0;
pSuffix = (SVGA3dCmdSurfaceDMASuffix *)((uint8_t*)cmd + sizeof *cmd + sizeof *box);
pSuffix->suffixSize = sizeof *pSuffix;
- pSuffix->maximumOffset = offset + size;
+ pSuffix->maximumOffset = guest_offset + size;
pSuffix->flags = flags;
swc->commit(swc);
diff --git a/src/gallium/drivers/svga/svga_cmd.h b/src/gallium/drivers/svga/svga_cmd.h
index 8041054..da9fc43 100644
--- a/src/gallium/drivers/svga/svga_cmd.h
+++ b/src/gallium/drivers/svga/svga_cmd.h
@@ -111,7 +111,8 @@ SVGA3D_BufferDMA(struct svga_winsys_context *swc,
struct svga_winsys_surface *host,
SVGA3dTransferType transfer,
uint32 size,
- uint32 offset,
+ uint32 guest_offset,
+ uint32 host_offset,
SVGA3dSurfaceDMAFlags flags);
/*
diff --git a/src/gallium/drivers/svga/svga_screen_buffer.c b/src/gallium/drivers/svga/svga_screen_buffer.c
index 7499bd7..639ca1a 100644
--- a/src/gallium/drivers/svga/svga_screen_buffer.c
+++ b/src/gallium/drivers/svga/svga_screen_buffer.c
@@ -714,13 +714,13 @@ svga_buffer_upload_piecewise(struct svga_screen *ss,
ret = SVGA3D_BufferDMA(svga->swc,
hwbuf, sbuf->handle,
SVGA3D_WRITE_HOST_VRAM,
- size, offset, sbuf->dma.flags);
+ size, 0, offset, sbuf->dma.flags);
if(ret != PIPE_OK) {
svga_context_flush(svga, NULL);
ret = SVGA3D_BufferDMA(svga->swc,
hwbuf, sbuf->handle,
SVGA3D_WRITE_HOST_VRAM,
- size, offset, sbuf->dma.flags);
+ size, 0, offset, sbuf->dma.flags);
assert(ret == PIPE_OK);
}
More information about the mesa-commit
mailing list