Józef Kucia : ddraw: Implement D3DOP_TEXTURELOAD.
Module: wine Branch: stable Commit: 6798a5b5331a8d73b199e829053f347b5e00c324 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6798a5b5331a8d73b199e82905... Author: Józef Kucia <jkucia(a)codeweavers.com> Date: Mon Feb 6 14:12:11 2017 +0100 ddraw: Implement D3DOP_TEXTURELOAD. Signed-off-by: Józef Kucia <jkucia(a)codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit 19d85623cf4d5540be709de3040a298700c4a8eb) Signed-off-by: Michael Stefaniuc <mstefani(a)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:
participants (1)
-
Alexandre Julliard