[vlc-commits] [Git][videolan/vlc][master] direct3d11: remove the legacy (UWP) way of passing the swapchain/d3dcontext

Steve Lhomme (@robUx4) gitlab at videolan.org
Wed Aug 10 07:29:34 UTC 2022



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
954b60ff by Steve Lhomme at 2022-08-10T07:10:56+00:00
direct3d11: remove the legacy (UWP) way of passing the swapchain/d3dcontext

- - - - -


7 changed files:

- modules/hw/d3d11/d3d11_filters.c
- modules/video_chroma/d3d11_fmt.c
- modules/video_chroma/d3d11_fmt.h
- modules/video_output/win32/d3d11_swapchain.cpp
- modules/video_output/win32/d3d11_swapchain.h
- modules/video_output/win32/direct3d11.cpp
- modules/video_output/win32/dxgi_swapchain.cpp


Changes:

=====================================
modules/hw/d3d11/d3d11_filters.c
=====================================
@@ -592,10 +592,6 @@ vlc_module_begin()
     add_submodule()
     set_description(N_("Direct3D11"))
     set_callback_dec_device( D3D11OpenDecoderDeviceAny, 8 )
-#ifdef VLC_WINSTORE_APP
-    /* LEGACY, the d3dcontext and swapchain were given by the host app */
-    add_integer("winrt-d3dcontext", 0x0, N_("Context"), NULL) /* ID3D11DeviceContext* */
-#endif /* VLC_WINSTORE_APP */
     add_shortcut ("d3d11")
 
     add_submodule()


=====================================
modules/video_chroma/d3d11_fmt.c
=====================================
@@ -539,21 +539,6 @@ d3d11_decoder_device_t *(D3D11_CreateDevice)(vlc_object_t *obj,
 
     sys->external.cleanupDeviceCb = NULL;
     HRESULT hr = E_FAIL;
-#ifdef VLC_WINSTORE_APP
-    /* LEGACY, the d3dcontext and swapchain were given by the host app */
-    ID3D11DeviceContext *d3dcontext = (ID3D11DeviceContext*)(uintptr_t) var_InheritInteger(obj, "winrt-d3dcontext");
-    if ( likely(d3dcontext != NULL) )
-    {
-        HANDLE context_lock;
-        UINT dataSize = sizeof(context_lock);
-        HRESULT hr = ID3D11DeviceContext_GetPrivateData(d3dcontext, &GUID_CONTEXT_MUTEX, &dataSize, &context_lock);
-        if (FAILED(hr))
-            context_lock = NULL;
-
-        hr = D3D11_CreateDeviceExternal(obj, d3dcontext, context_lock, &sys->dec_device.d3d_dev);
-    }
-    else
-#endif
     {
         libvlc_video_engine_t engineType = var_InheritInteger( obj, "vout-cb-type" );
         libvlc_video_output_setup_cb setupDeviceCb = NULL;


=====================================
modules/video_chroma/d3d11_fmt.h
=====================================
@@ -42,8 +42,6 @@ extern "C" {
 
 #endif
 
-DEFINE_GUID(GUID_CONTEXT_MUTEX, 0x472e8835, 0x3f8e, 0x4f93, 0xa0, 0xcb, 0x25, 0x79, 0x77, 0x6c, 0xed, 0x86);
-
 /* see https://msdn.microsoft.com/windows/hardware/commercialize/design/compatibility/device-graphics
  *     https://docs.microsoft.com/en-us/windows-hardware/drivers/display/wddm-2-1-features#driver-versioning
  *     https://www.intel.com/content/www/us/en/support/articles/000005654/graphics-drivers.html


=====================================
modules/video_output/win32/d3d11_swapchain.cpp
=====================================
@@ -84,28 +84,6 @@ static bool UpdateSwapchain( d3d11_local_swapchain *display, const libvlc_video_
         display->swapchainTargetView[i].Reset();
 
     const d3d_format_t *newPixelFormat = NULL;
-#ifdef VLC_WINSTORE_APP
-    ComPtr<IDXGISwapChain1> dxgiswapChain = DXGI_GetSwapChain1(display->sys);
-    if (!dxgiswapChain.Get())
-        dxgiswapChain = static_cast<IDXGISwapChain1*>((void*)(uintptr_t)var_InheritInteger(display->obj, "winrt-swapchain"));
-    if (dxgiswapChain.Get())
-    {
-        DXGI_SWAP_CHAIN_DESC1 scd;
-        if (SUCCEEDED(dxgiswapChain->GetDesc1(&scd)))
-        {
-            for (const d3d_format_t *output_format = DxgiGetRenderFormatList();
-                 output_format->name != NULL; ++output_format)
-            {
-                if (output_format->formatTexture == scd.Format &&
-                    !is_d3d11_opaque(output_format->fourcc))
-                {
-                    newPixelFormat = output_format;
-                    break;
-                }
-            }
-        }
-    }
-#else /* !VLC_WINSTORE_APP */
     /* favor RGB formats first */
     newPixelFormat = FindD3D11Format( display->obj, display->d3d_dev, 0, DXGI_RGB_FORMAT,
                                       cfg->bitdepth > 8 ? 10 : 8,
@@ -116,7 +94,6 @@ static bool UpdateSwapchain( d3d11_local_swapchain *display, const libvlc_video_
                                           cfg->bitdepth > 8 ? 10 : 8,
                                           0, 0,
                                           DXGI_CHROMA_CPU, D3D11_FORMAT_SUPPORT_DISPLAY );
-#endif /* !VLC_WINSTORE_APP */
     if (unlikely(newPixelFormat == NULL)) {
         msg_Err(display->obj, "Could not get the SwapChain format.");
         return false;
@@ -183,24 +160,6 @@ void D3D11_LocalSwapchainSetMetadata( void *opaque, libvlc_video_metadata_type_t
     DXGI_LocalSwapchainSetMetadata( display->sys, type, metadata );
 }
 
-bool D3D11_LocalSwapchainWinstoreSize( void *opaque, uint32_t *width, uint32_t *height )
-{
-#ifdef VLC_WINSTORE_APP
-    d3d11_local_swapchain *display = static_cast<d3d11_local_swapchain *>(opaque);
-    /* legacy UWP mode, the width/height was set in GUID_SWAPCHAIN_WIDTH/HEIGHT */
-    UINT dataSize = sizeof(*width);
-    HRESULT hr = DXGI_GetSwapChain1(display->sys)->GetPrivateData(GUID_SWAPCHAIN_WIDTH, &dataSize, width);
-    if (SUCCEEDED(hr)) {
-        dataSize = sizeof(*height);
-        hr = DXGI_GetSwapChain1(display->sys)->GetPrivateData(GUID_SWAPCHAIN_HEIGHT, &dataSize, height);
-        return SUCCEEDED(hr);
-    }
-#else
-    VLC_UNUSED(opaque); VLC_UNUSED(width); VLC_UNUSED(height);
-#endif
-    return false;
-}
-
 bool D3D11_LocalSwapchainStartEndRendering( void *opaque, bool enter )
 {
     d3d11_local_swapchain *display = static_cast<d3d11_local_swapchain *>(opaque);


=====================================
modules/video_output/win32/d3d11_swapchain.h
=====================================
@@ -37,7 +37,6 @@ void D3D11_LocalSwapchainCleanupDevice( void *opaque );
 bool D3D11_LocalSwapchainUpdateOutput( void *opaque, const libvlc_video_render_cfg_t *cfg, libvlc_video_output_cfg_t *out );
 bool D3D11_LocalSwapchainStartEndRendering( void *opaque, bool enter );
 bool D3D11_LocalSwapchainSelectPlane( void *opaque, size_t plane, void *output );
-bool D3D11_LocalSwapchainWinstoreSize( void *opaque, uint32_t *, uint32_t * );
 void D3D11_LocalSwapchainSwap( void *opaque );
 void D3D11_LocalSwapchainSetMetadata( void *opaque, libvlc_video_metadata_type_t, const void * );
 


=====================================
modules/video_output/win32/direct3d11.cpp
=====================================
@@ -70,10 +70,6 @@ vlc_module_begin ()
 
     add_bool("direct3d11-hw-blending", true, HW_BLENDING_TEXT, HW_BLENDING_LONGTEXT)
 
-#ifdef VLC_WINSTORE_APP
-    add_integer("winrt-swapchain",     0x0, NULL, NULL) /* IDXGISwapChain1*     */
-#endif
-
     add_shortcut("direct3d11")
     set_callback_display(Open, 300)
 vlc_module_end ()
@@ -659,19 +655,6 @@ static void Prepare(vout_display_t *vd, picture_t *picture,
     vout_display_sys_t *sys = static_cast<vout_display_sys_t *>(vd->sys);
 
     d3d11_device_lock( sys->d3d_dev );
-#ifdef VLC_WINSTORE_APP
-    if ( sys->swapCb == D3D11_LocalSwapchainSwap )
-    {
-        /* legacy UWP mode, the width/height was set in GUID_SWAPCHAIN_WIDTH/HEIGHT */
-        uint32_t i_width;
-        uint32_t i_height;
-        if (D3D11_LocalSwapchainWinstoreSize( sys->outside_opaque, &i_width, &i_height ))
-        {
-            if (i_width != vd->cfg->display.width || i_height != vd->cfg->display.height)
-                vout_display_SetSize(vd, i_width, i_height);
-        }
-    }
-#endif
     if ( sys->startEndRenderingCb( sys->outside_opaque, true ))
     {
         if ( sys->sendMetadataCb && picture->format.mastering.max_luminance )


=====================================
modules/video_output/win32/dxgi_swapchain.cpp
=====================================
@@ -96,9 +96,6 @@ struct dxgi_swapchain
     bool                   logged_capabilities = false;
 };
 
-DEFINE_GUID(GUID_SWAPCHAIN_WIDTH,  0xf1b59347, 0x1643, 0x411a, 0xad, 0x6b, 0xc7, 0x80, 0x17, 0x7a, 0x06, 0xb6);
-DEFINE_GUID(GUID_SWAPCHAIN_HEIGHT, 0x6ea976a0, 0x9d60, 0x4bb7, 0xa5, 0xa9, 0x7d, 0xd1, 0x18, 0x7f, 0xc9, 0xbd);
-
 #define DXGI_COLOR_RANGE_FULL   1 /* 0-255 */
 #define DXGI_COLOR_RANGE_STUDIO 0 /* 16-235 */
 
@@ -482,12 +479,7 @@ bool DXGI_UpdateSwapChain( dxgi_swapchain *display, IDXGIAdapter *dxgiadapter,
                                      width, height);
 
     }
-#else /* VLC_WINSTORE_APP */
-    if ( !display->dxgiswapChain.Get() )
-    {
-        display->dxgiswapChain = static_cast<IDXGISwapChain1*>((void*)(uintptr_t)var_InheritInteger(display->obj, "winrt-swapchain"));
-    }
-#endif /* VLC_WINSTORE_APP */
+#endif /* !VLC_WINSTORE_APP */
     if ( !display->dxgiswapChain.Get() )
         return false;
 



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/954b60ff45e28e0d833f107fb018c851cc7d249a

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/954b60ff45e28e0d833f107fb018c851cc7d249a
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list