Paul Gofman : wined3d: Invalidate _SYSMEM location when mapping opengl buffer.

Alexandre Julliard julliard at winehq.org
Wed Feb 13 15:30:41 CST 2019


Module: wine
Branch: master
Commit: a5ffdff2edb75cd06e6b57a00ea7d7628928a5c4
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=a5ffdff2edb75cd06e6b57a00ea7d7628928a5c4

Author: Paul Gofman <gofmanp at gmail.com>
Date:   Tue Feb 12 19:20:56 2019 +0300

wined3d: Invalidate _SYSMEM location when mapping opengl buffer.

Signed-off-by: Paul Gofman <gofmanp at gmail.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/d3d9/tests/device.c | 4 ++--
 dlls/wined3d/buffer.c    | 3 +++
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c
index f2bb3a4..17e3b5d 100644
--- a/dlls/d3d9/tests/device.c
+++ b/dlls/d3d9/tests/device.c
@@ -13256,14 +13256,14 @@ static void test_vertex_buffer_read_write(void)
     hr = IDirect3DVertexBuffer9_Lock(buffer, 0, sizeof(tri), (void **)&data, 0);
     ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
     for (i = 0; i < 3; ++i)
-        todo_wine ok(data[i] == 3.0f, "Got unexpected value %.8e, i %u.\n", data[i], i);
+        ok(data[i] == 3.0f, "Got unexpected value %.8e, i %u.\n", data[i], i);
     hr = IDirect3DVertexBuffer9_Unlock(buffer);
     ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
 
     hr = IDirect3DVertexBuffer9_Lock(buffer, 0, sizeof(tri), (void **)&data, D3DLOCK_NOOVERWRITE);
     ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
     for (i = 0; i < 3; ++i)
-        todo_wine ok(data[i] == 3.0f, "Got unexpected value %.8e, i %u.\n", data[i], i);
+        ok(data[i] == 3.0f, "Got unexpected value %.8e, i %u.\n", data[i], i);
     hr = IDirect3DVertexBuffer9_Unlock(buffer);
     ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
 
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index 020116d..1069d05 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -1057,7 +1057,10 @@ static HRESULT wined3d_buffer_gl_map(struct wined3d_buffer_gl *buffer_gl,
                 wined3d_buffer_load_location(&buffer_gl->b, context, WINED3D_LOCATION_BUFFER);
 
             if (flags & WINED3D_MAP_WRITE)
+            {
+                wined3d_buffer_invalidate_location(&buffer_gl->b, WINED3D_LOCATION_SYSMEM);
                 buffer_invalidate_bo_range(&buffer_gl->b, dirty_offset, dirty_size);
+            }
 
             if ((flags & WINED3D_MAP_DISCARD) && buffer_gl->b.resource.heap_memory)
                 wined3d_buffer_evict_sysmem(&buffer_gl->b);




More information about the wine-cvs mailing list