=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: dxgi: Implement d3d12_swapchain_GetBuffer().

Alexandre Julliard julliard at winehq.org
Thu May 31 15:56:56 CDT 2018


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

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Thu May 31 12:04:33 2018 +0200

dxgi: Implement d3d12_swapchain_GetBuffer().

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>

---

 dlls/dxgi/swapchain.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c
index a50a878..d7b7288 100644
--- a/dlls/dxgi/swapchain.c
+++ b/dlls/dxgi/swapchain.c
@@ -1012,10 +1012,18 @@ static HRESULT STDMETHODCALLTYPE d3d12_swapchain_Present(IDXGISwapChain3 *iface,
 static HRESULT STDMETHODCALLTYPE d3d12_swapchain_GetBuffer(IDXGISwapChain3 *iface,
         UINT buffer_idx, REFIID iid, void **surface)
 {
-    FIXME("iface %p, buffer_idx %u, iid %s, surface %p stub!\n",
+    struct d3d12_swapchain *swapchain = d3d12_swapchain_from_IDXGISwapChain3(iface);
+
+    TRACE("iface %p, buffer_idx %u, iid %s, surface %p.\n",
             iface, buffer_idx, debugstr_guid(iid), surface);
 
-    return E_NOTIMPL;
+    if (buffer_idx >= swapchain->buffer_count)
+    {
+        WARN("Invalid buffer index %u.\n", buffer_idx);
+        return DXGI_ERROR_INVALID_CALL;
+    }
+
+    return ID3D12Resource_QueryInterface(swapchain->buffers[buffer_idx], iid, surface);
 }
 
 static HRESULT STDMETHODCALLTYPE DECLSPEC_HOTPATCH d3d12_swapchain_SetFullscreenState(IDXGISwapChain3 *iface,




More information about the wine-cvs mailing list