d3d10core: Add support for map_type flags D3D10_MAP_READ, D3D10_MAP_WRITE_NO_OVERWRITE and D3D10_MAP_DISCARD.

Johannes Brandstätter jbrandst at 2ds.eu
Tue Sep 23 05:55:29 CDT 2014


---
 dlls/d3d10core/buffer.c | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/dlls/d3d10core/buffer.c b/dlls/d3d10core/buffer.c
index 875ff90..0e43738 100644
--- a/dlls/d3d10core/buffer.c
+++ b/dlls/d3d10core/buffer.c
@@ -161,15 +161,35 @@ static UINT STDMETHODCALLTYPE d3d10_buffer_GetEvictionPriority(ID3D10Buffer *ifa
 static HRESULT STDMETHODCALLTYPE d3d10_buffer_Map(ID3D10Buffer *iface, D3D10_MAP map_type, UINT map_flags, void **data)
 {
     struct d3d10_buffer *buffer = impl_from_ID3D10Buffer(iface);
+    DWORD wine_map_flags = 0;
 
     TRACE("iface %p, map_type %u, map_flags %#x, data %p.\n", iface, map_type, map_flags, data);
 
     if (map_type != D3D10_MAP_READ_WRITE)
-        FIXME("Ignoring map_type %#x.\n", map_type);
+    {
+        switch (map_type)
+        {
+            case D3D10_MAP_READ:
+                wine_map_flags = WINED3D_MAP_READONLY;
+                break;
+
+            case D3D10_MAP_WRITE_DISCARD:
+                wine_map_flags = WINED3D_MAP_DISCARD;
+                break;
+
+            case D3D10_MAP_WRITE_NO_OVERWRITE:
+                wine_map_flags = WINED3D_MAP_NOOVERWRITE;
+                break;
+
+            default:
+                FIXME("Ignoring map_type %#x.\n", map_type);
+        }
+    }
+
     if (map_flags)
         FIXME("Ignoring map_flags %#x.\n", map_flags);
 
-    return wined3d_buffer_map(buffer->wined3d_buffer, 0, 0, (BYTE **)data, 0);
+    return wined3d_buffer_map(buffer->wined3d_buffer, 0, 0, (BYTE **)data, wine_map_flags);
 }
 
 static void STDMETHODCALLTYPE d3d10_buffer_Unmap(ID3D10Buffer *iface)
-- 
2.1.0




More information about the wine-patches mailing list