From 7b177a9b5b2b5c91fd47422d3fc54d041886c412 Mon Sep 17 00:00:00 2001 From: walbourn_cp Date: Thu, 4 Sep 2014 17:46:46 -0700 Subject: [PATCH] Xbox One platform updates --- DirectXTex/DirectXTexD3D11.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/DirectXTex/DirectXTexD3D11.cpp b/DirectXTex/DirectXTexD3D11.cpp index 2488580..b78f8c7 100644 --- a/DirectXTex/DirectXTexD3D11.cpp +++ b/DirectXTex/DirectXTexD3D11.cpp @@ -30,6 +30,33 @@ static HRESULT _Capture( _In_ ID3D11DeviceContext* pContext, _In_ ID3D11Resource if ( !pContext || !pSource || !result.GetPixels() ) return E_POINTER; +#if defined(_XBOX_ONE) && defined(_TITLE) + + ComPtr d3dDevice; + pContext->GetDevice( d3dDevice.GetAddressOf() ); + + if ( d3dDevice->GetCreationFlags() & D3D11_CREATE_DEVICE_IMMEDIATE_CONTEXT_FAST_SEMANTICS ) + { + ComPtr d3dDeviceX; + HRESULT hr = d3dDevice.As( &d3dDeviceX ); + if ( FAILED(hr) ) + return hr; + + ComPtr d3dContextX; + hr = pContext->QueryInterface( __uuidof(ID3D11DeviceContextX), reinterpret_cast( d3dContextX.GetAddressOf() ) ); + if ( FAILED(hr) ) + return hr; + + UINT64 copyFence = d3dContextX->InsertFence(0); + + while ( d3dDeviceX->IsFencePending( copyFence ) ) + { + SwitchToThread(); + } + } + +#endif + if ( metadata.IsVolumemap() ) { //--- Volume texture ----------------------------------------------------------