=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: ddraw: Implement D3DOP_TEXTURELOAD.

Alexandre Julliard julliard at winehq.org
Thu Apr 20 12:35:11 CDT 2017


Module: wine
Branch: stable
Commit: 6798a5b5331a8d73b199e829053f347b5e00c324
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6798a5b5331a8d73b199e829053f347b5e00c324

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Mon Feb  6 14:12:11 2017 +0100

ddraw: Implement D3DOP_TEXTURELOAD.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 19d85623cf4d5540be709de3040a298700c4a8eb)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 dlls/ddraw/executebuffer.c | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/dlls/ddraw/executebuffer.c b/dlls/ddraw/executebuffer.c
index 98e9404..393c52c 100644
--- a/dlls/ddraw/executebuffer.c
+++ b/dlls/ddraw/executebuffer.c
@@ -352,8 +352,30 @@ HRESULT d3d_execute_buffer_execute(struct d3d_execute_buffer *buffer,
                 break;
 
             case D3DOP_TEXTURELOAD:
-                WARN("TEXTURELOAD-s    (%u)\n", count);
-                instr += count * size;
+                TRACE("TEXTURELOAD    (%u)\n", count);
+
+                for (i = 0; i < count; ++i)
+                {
+                    D3DTEXTURELOAD *ci = (D3DTEXTURELOAD *)instr;
+                    struct ddraw_surface *dst, *src;
+
+                    instr += size;
+
+                    if (!(dst = ddraw_get_object(&device->handle_table,
+                            ci->hDestTexture - 1, DDRAW_HANDLE_SURFACE)))
+                    {
+                        WARN("Invalid destination texture handle %#x.\n", ci->hDestTexture);
+                        continue;
+                    }
+                    if (!(src = ddraw_get_object(&device->handle_table,
+                            ci->hSrcTexture - 1, DDRAW_HANDLE_SURFACE)))
+                    {
+                        WARN("Invalid source texture handle %#x.\n", ci->hSrcTexture);
+                        continue;
+                    }
+
+                    IDirect3DTexture2_Load(&dst->IDirect3DTexture2_iface, &src->IDirect3DTexture2_iface);
+                }
                 break;
 
             case D3DOP_EXIT:




More information about the wine-cvs mailing list