Mesa (master): d3d1x: fix Map

Luca Barbieri lb at kemper.freedesktop.org
Mon Sep 27 20:28:44 UTC 2010


Module: Mesa
Branch: master
Commit: a359eb80c5e141f625cfe42b4d97bf78cf25d128
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a359eb80c5e141f625cfe42b4d97bf78cf25d128

Author: Luca Barbieri <luca at luca-barbieri.com>
Date:   Mon Sep 27 21:40:13 2010 +0200

d3d1x: fix Map

---

 .../state_trackers/d3d1x/gd3d11/d3d11_context.h    |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_context.h b/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_context.h
index 4abb4ac..3611059 100644
--- a/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_context.h
+++ b/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_context.h
@@ -1433,6 +1433,10 @@ changed:
 		return sr;
 	}
 
+	/* TODO: deferred contexts will need a different implementation of this,
+	 * because we can't put the transfer info into the resource itself.
+	 * Also, there are very different restrictions, for obvious reasons.
+	 */
 	virtual HRESULT STDMETHODCALLTYPE Map(
 		ID3D11Resource *iresource,
 		unsigned subresource,
@@ -1445,8 +1449,7 @@ changed:
 		if(resource->transfers.count(subresource))
 			return E_FAIL;
 		pipe_subresource sr = d3d11_to_pipe_subresource(resource->resource, subresource);
-		pipe_box box;
-		d3d11_to_pipe_box(resource->resource, sr.level, 0);
+		pipe_box box = d3d11_to_pipe_box(resource->resource, sr.level, 0);
 		unsigned usage = 0;
 		if(map_type == D3D11_MAP_READ)
 			usage = PIPE_TRANSFER_READ;
@@ -1470,8 +1473,7 @@ changed:
 				return E_FAIL;
 		}
 		resource->transfers[subresource] = transfer;
-		pipe->transfer_map(pipe, transfer);
-		mapped_resource->pData = transfer->data;
+		mapped_resource->pData = pipe->transfer_map(pipe, transfer);
 		mapped_resource->RowPitch = transfer->stride;
 		mapped_resource->DepthPitch = transfer->slice_stride;
 		return S_OK;




More information about the mesa-commit mailing list