[PATCH 1/3] wined3d: Call wined3d_cs_emit_update_sub_resource() directly in wined3d_texture_create().

Józef Kucia jkucia at codeweavers.com
Thu Oct 18 05:26:33 CDT 2018


Fixes a regression introduced by commit
490c6d548abab55ea0a3913d55eecd26f01d1949.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45996
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 dlls/wined3d/texture.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index 2244db5cb6f6..b8e7ef034891 100644
--- a/dlls/wined3d/texture.c
+++ b/dlls/wined3d/texture.c
@@ -3645,6 +3645,8 @@ HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct
     if (data)
     {
         unsigned int sub_count = level_count * layer_count;
+        unsigned int level, width, height, depth;
+        struct wined3d_box box;
         unsigned int i;
 
         for (i = 0; i < sub_count; ++i)
@@ -3660,8 +3662,14 @@ HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct
 
         for (i = 0; i < sub_count; ++i)
         {
-            wined3d_device_update_sub_resource(device, &object->resource,
-                    i, NULL, data[i].data, data[i].row_pitch, data[i].slice_pitch, 0);
+            level = i % object->level_count;
+            width = wined3d_texture_get_level_width(object, level);
+            height = wined3d_texture_get_level_height(object, level);
+            depth = wined3d_texture_get_level_depth(object, level);
+            wined3d_box_set(&box, 0, 0, width, height, 0, depth);
+
+            wined3d_cs_emit_update_sub_resource(device->cs, &object->resource,
+                    i, &box, data[i].data, data[i].row_pitch, data[i].slice_pitch);
         }
     }
 
-- 
2.18.1




More information about the wine-devel mailing list