[vlc-commits] direct3d11: move some code

Steve Lhomme git at videolan.org
Tue May 7 12:01:07 CEST 2019


vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Mon May  6 13:48:52 2019 +0200| [233545b8da440f513dc25598a52550e62e8d46b1] | committer: Steve Lhomme

direct3d11: move some code

No functional change

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=233545b8da440f513dc25598a52550e62e8d46b1
---

 modules/video_output/win32/direct3d11.c | 162 ++++++++++++++++----------------
 1 file changed, 81 insertions(+), 81 deletions(-)

diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index 30e7cab67d..fa45efb9f8 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -203,87 +203,6 @@ static void UpdateSize(vout_display_t *vd)
     d3d11_device_unlock( &sys->d3d_dev );
 }
 
-static bool Resize(void *opaque, unsigned i_width, unsigned i_height)
-{
-    vout_display_t *vd = opaque;
-    vout_display_sys_t *sys = vd->sys;
-    ID3D11Texture2D* pBackBuffer;
-    HRESULT hr;
-
-    D3D11_TEXTURE2D_DESC dsc = { 0 };
-
-    if (sys->internal_swapchain.swapchainTargetView[0]) {
-        ID3D11Resource *res = NULL;
-        ID3D11RenderTargetView_GetResource(sys->internal_swapchain.swapchainTargetView[0], &res);
-        if (res)
-        {
-            ID3D11Texture2D_GetDesc((ID3D11Texture2D*) res, &dsc);
-            ID3D11Resource_Release(res);
-        }
-    }
-
-    if (dsc.Width == i_width && dsc.Height == i_height)
-        return true; /* nothing changed */
-
-    for (size_t i=0; i < ARRAY_SIZE(sys->internal_swapchain.swapchainTargetView); i++)
-    {
-        if (sys->internal_swapchain.swapchainTargetView[i]) {
-            ID3D11RenderTargetView_Release(sys->internal_swapchain.swapchainTargetView[i]);
-            sys->internal_swapchain.swapchainTargetView[i] = NULL;
-        }
-    }
-
-    /* TODO detect is the size is the same as the output and switch to fullscreen mode */
-    hr = IDXGISwapChain_ResizeBuffers(sys->internal_swapchain.dxgiswapChain, 0, i_width, i_height,
-        DXGI_FORMAT_UNKNOWN, 0);
-    if (FAILED(hr)) {
-       msg_Err(vd, "Failed to resize the backbuffer. (hr=0x%lX)", hr);
-       return false;
-    }
-
-    hr = IDXGISwapChain_GetBuffer(sys->internal_swapchain.dxgiswapChain, 0, &IID_ID3D11Texture2D, (LPVOID *)&pBackBuffer);
-    if (FAILED(hr)) {
-       msg_Err(vd, "Could not get the backbuffer for the Swapchain. (hr=0x%lX)", hr);
-       return false;
-    }
-
-    hr = D3D11_CreateRenderTargets( &sys->d3d_dev, (ID3D11Resource *)pBackBuffer,
-                                    sys->display.pixelFormat, sys->internal_swapchain.swapchainTargetView );
-    ID3D11Texture2D_Release(pBackBuffer);
-    if (FAILED(hr)) {
-        msg_Err(vd, "Failed to create the target view. (hr=0x%lX)", hr);
-        return false;
-    }
-
-    D3D11_ClearRenderTargets( &sys->d3d_dev, sys->display.pixelFormat, sys->internal_swapchain.swapchainTargetView );
-
-    return true;
-}
-
-static bool StartRendering(void *opaque)
-{
-    vout_display_t *vd = opaque;
-    vout_display_sys_t *sys = vd->sys;
-
-    D3D11_ClearRenderTargets( &sys->d3d_dev, sys->display.pixelFormat, sys->internal_swapchain.swapchainTargetView );
-    return true;
-}
-
-static void Swap(void *opaque)
-{
-    vout_display_t *vd = opaque;
-    vout_display_sys_t *sys = vd->sys;
-
-    DXGI_PRESENT_PARAMETERS presentParams = { 0 };
-
-    HRESULT hr = IDXGISwapChain1_Present1(sys->internal_swapchain.dxgiswapChain, 0, 0, &presentParams);
-    if (hr == DXGI_ERROR_DEVICE_REMOVED || hr == DXGI_ERROR_DEVICE_RESET)
-    {
-        /* TODO device lost */
-        msg_Err(vd, "SwapChain Present failed. (hr=0x%lX)", hr);
-    }
-}
-
 #if !VLC_WINSTORE_APP
 static void FillSwapChainDesc(vout_display_t *vd, UINT width, UINT height, DXGI_SWAP_CHAIN_DESC1 *out)
 {
@@ -383,6 +302,87 @@ static int SetupWindowedOutput(vout_display_t *vd, UINT width, UINT height)
 }
 #endif /* !VLC_WINSTORE_APP */
 
+static bool Resize( void *opaque, unsigned i_width, unsigned i_height )
+{
+    vout_display_t *vd = opaque;
+    vout_display_sys_t *sys = vd->sys;
+    ID3D11Texture2D* pBackBuffer;
+    HRESULT hr;
+
+    D3D11_TEXTURE2D_DESC dsc = { 0 };
+
+    if ( sys->internal_swapchain.swapchainTargetView[0] ) {
+        ID3D11Resource *res = NULL;
+        ID3D11RenderTargetView_GetResource( sys->internal_swapchain.swapchainTargetView[0], &res );
+        if ( res )
+        {
+            ID3D11Texture2D_GetDesc( (ID3D11Texture2D*) res, &dsc );
+            ID3D11Resource_Release( res );
+        }
+    }
+
+    if ( dsc.Width == i_width && dsc.Height == i_height )
+        return true; /* nothing changed */
+
+    for ( size_t i = 0; i < ARRAY_SIZE( sys->internal_swapchain.swapchainTargetView ); i++ )
+    {
+        if ( sys->internal_swapchain.swapchainTargetView[i] ) {
+            ID3D11RenderTargetView_Release( sys->internal_swapchain.swapchainTargetView[i] );
+            sys->internal_swapchain.swapchainTargetView[i] = NULL;
+        }
+    }
+
+    /* TODO detect is the size is the same as the output and switch to fullscreen mode */
+    hr = IDXGISwapChain_ResizeBuffers( sys->internal_swapchain.dxgiswapChain, 0, i_width, i_height,
+                                       DXGI_FORMAT_UNKNOWN, 0 );
+    if ( FAILED( hr ) ) {
+        msg_Err( vd, "Failed to resize the backbuffer. (hr=0x%lX)", hr );
+        return false;
+    }
+
+    hr = IDXGISwapChain_GetBuffer( sys->internal_swapchain.dxgiswapChain, 0, &IID_ID3D11Texture2D, (LPVOID *) &pBackBuffer );
+    if ( FAILED( hr ) ) {
+        msg_Err( vd, "Could not get the backbuffer for the Swapchain. (hr=0x%lX)", hr );
+        return false;
+    }
+
+    hr = D3D11_CreateRenderTargets( &sys->d3d_dev, (ID3D11Resource *) pBackBuffer,
+                                    sys->display.pixelFormat, sys->internal_swapchain.swapchainTargetView );
+    ID3D11Texture2D_Release( pBackBuffer );
+    if ( FAILED( hr ) ) {
+        msg_Err( vd, "Failed to create the target view. (hr=0x%lX)", hr );
+        return false;
+    }
+
+    D3D11_ClearRenderTargets( &sys->d3d_dev, sys->display.pixelFormat, sys->internal_swapchain.swapchainTargetView );
+
+    return true;
+}
+
+static bool StartRendering( void *opaque )
+{
+    vout_display_t *vd = opaque;
+    vout_display_sys_t *sys = vd->sys;
+
+    D3D11_ClearRenderTargets( &sys->d3d_dev, sys->display.pixelFormat, sys->internal_swapchain.swapchainTargetView );
+    return true;
+}
+
+static void Swap( void *opaque )
+{
+    vout_display_t *vd = opaque;
+    vout_display_sys_t *sys = vd->sys;
+
+    DXGI_PRESENT_PARAMETERS presentParams = { 0 };
+
+    HRESULT hr = IDXGISwapChain1_Present1( sys->internal_swapchain.dxgiswapChain, 0, 0, &presentParams );
+    if ( hr == DXGI_ERROR_DEVICE_REMOVED || hr == DXGI_ERROR_DEVICE_RESET )
+    {
+        /* TODO device lost */
+        msg_Err( vd, "SwapChain Present failed. (hr=0x%lX)", hr );
+    }
+}
+
 static int SetupWindowLessOutput(vout_display_t *vd)
 {
     vout_display_sys_t *sys = vd->sys;



More information about the vlc-commits mailing list