vlc | branch: master | Steve Lhomme <[email protected]> | Mon Nov 27 13:38:12 2017 +0100| [170a6509dc5270a391c6031a67114c8c45e5ba12] | committer: Jean-Baptiste Kempf
direct3d11: set the texture size after we know we use a staging one Use the visible size for the staging texture. Fixes #19078 Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=170a6509dc5270a391c6031a67114c8c45e5ba12 --- modules/video_output/win32/direct3d11.c | 46 +++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c index e997c2e091..328f5a2f27 100644 --- a/modules/video_output/win32/direct3d11.c +++ b/modules/video_output/win32/direct3d11.c @@ -1543,19 +1543,6 @@ static int Direct3D11Open(vout_display_t *vd, video_format_t *fmt) if (!sys->d3dregion_format) sys->d3dregion_format = GetBlendableFormat(vd, VLC_CODEC_BGRA); - sys->picQuad.i_width = fmt->i_width; - sys->picQuad.i_height = fmt->i_height; - if ( sys->picQuadConfig->formatTexture != DXGI_FORMAT_R8G8B8A8_UNORM && - sys->picQuadConfig->formatTexture != DXGI_FORMAT_B5G6R5_UNORM ) - { - sys->picQuad.i_width = (sys->picQuad.i_width + 0x01) & ~0x01; - sys->picQuad.i_height = (sys->picQuad.i_height + 0x01) & ~0x01; - } - - BEFORE_UPDATE_RECTS; - UpdateRects(vd, NULL, true); - AFTER_UPDATE_RECTS; - if (Direct3D11CreateResources(vd, fmt)) { msg_Err(vd, "Failed to allocate resources"); Direct3D11DestroyResources(vd); @@ -2002,12 +1989,6 @@ static int Direct3D11CreateResources(vout_display_t *vd, video_format_t *fmt) ID3D11Device_SetPrivateData( sys->d3d_dev.d3ddevice, &GUID_CONTEXT_MUTEX, sizeof( sys->context_lock ), &sys->context_lock ); #endif - hr = UpdateBackBuffer(vd); - if (FAILED(hr)) { - msg_Err(vd, "Could not update the backbuffer. (hr=0x%lX)", hr); - return VLC_EGENERIC; - } - ID3D11BlendState *pSpuBlendState; D3D11_BLEND_DESC spuBlendDesc = { 0 }; spuBlendDesc.RenderTarget[0].BlendEnable = TRUE; @@ -2074,6 +2055,33 @@ static int Direct3D11CreateResources(vout_display_t *vd, video_format_t *fmt) } } + if (!is_d3d11_opaque(vd->fmt.i_chroma) || sys->legacy_shader) + { + sys->picQuad.i_width = fmt->i_visible_width; + sys->picQuad.i_height = fmt->i_visible_height; + } + else + { + sys->picQuad.i_width = fmt->i_width; + sys->picQuad.i_height = fmt->i_height; + } + if ( sys->picQuadConfig->formatTexture != DXGI_FORMAT_R8G8B8A8_UNORM && + sys->picQuadConfig->formatTexture != DXGI_FORMAT_B5G6R5_UNORM ) + { + sys->picQuad.i_width = (sys->picQuad.i_width + 0x01) & ~0x01; + sys->picQuad.i_height = (sys->picQuad.i_height + 0x01) & ~0x01; + } + + BEFORE_UPDATE_RECTS; + UpdateRects(vd, NULL, true); + AFTER_UPDATE_RECTS; + + hr = UpdateBackBuffer(vd); + if (FAILED(hr)) { + msg_Err(vd, "Could not update the backbuffer. (hr=0x%lX)", hr); + return VLC_EGENERIC; + } + if (sys->d3dregion_format != NULL) { hr = CompilePixelShader(vd, sys->d3dregion_format, TRANSFER_FUNC_SRGB, true, &sys->pSPUPixelShader); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
