[PATCH 4/6] wined3d: Add support for 3D textures in wined3d_device_copy_sub_resource_region().

Józef Kucia jkucia at codeweavers.com
Fri Mar 17 06:57:55 CDT 2017


Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 dlls/wined3d/device.c | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index cda9e18..033c490 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4003,7 +4003,7 @@ HRESULT CDECL wined3d_device_copy_sub_resource_region(struct wined3d_device *dev
         dst_box.front = 0;
         dst_box.back = 1;
     }
-    else if (dst_resource->type == WINED3D_RTYPE_TEXTURE_2D)
+    else
     {
         struct wined3d_texture *dst_texture = texture_from_resource(dst_resource);
         struct wined3d_texture *src_texture = texture_from_resource(src_resource);
@@ -4035,13 +4035,12 @@ HRESULT CDECL wined3d_device_copy_sub_resource_region(struct wined3d_device *dev
 
         if (!src_box)
         {
-
             b.left = 0;
             b.top = 0;
+            b.front = 0;
             b.right = wined3d_texture_get_level_width(src_texture, src_level);
             b.bottom = wined3d_texture_get_level_height(src_texture, src_level);
-            b.front = 0;
-            b.back = 1;
+            b.back = wined3d_texture_get_level_depth(src_texture, src_level);
             src_box = &b;
         }
         else if (FAILED(wined3d_texture_check_box_dimensions(src_texture, src_level, src_box)))
@@ -4052,10 +4051,10 @@ HRESULT CDECL wined3d_device_copy_sub_resource_region(struct wined3d_device *dev
 
         dst_box.left = dst_x;
         dst_box.top = dst_y;
+        dst_box.front = dst_z;
         dst_box.right = dst_x + (src_box->right - src_box->left);
         dst_box.bottom = dst_y + (src_box->bottom - src_box->top);
-        dst_box.front = 0;
-        dst_box.back = 1;
+        dst_box.back = dst_z + (src_box->back - src_box->front);
         if (FAILED(wined3d_texture_check_box_dimensions(dst_texture,
                 dst_sub_resource_idx % dst_texture->level_count, &dst_box)))
         {
@@ -4063,11 +4062,6 @@ HRESULT CDECL wined3d_device_copy_sub_resource_region(struct wined3d_device *dev
             return WINED3DERR_INVALIDCALL;
         }
     }
-    else
-    {
-        FIXME("Not implemented for %s resources.\n", debug_d3dresourcetype(dst_resource->type));
-        return WINED3DERR_INVALIDCALL;
-    }
 
     wined3d_cs_emit_copy_sub_resource(device->cs, dst_resource, dst_sub_resource_idx, &dst_box,
             src_resource, src_sub_resource_idx, src_box);
-- 
2.10.2




More information about the wine-patches mailing list