Commit 70b84c7d authored by jchen10's avatar jchen10 Committed by Commit Bot

Don't use ResizeBuffers when swapchain size changes

Currently when only swapchain size changes, we attempt to resize the
buffers of current swapchain to avoid creating a new swapchain.
But this can lead to video glitches on Intel platforms.

Bug: 1116542
Change-Id: I1627d97da69928304cbb7b89e5691ff0683cffd0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2394957Reviewed-by: default avatarZhenyao Mo <zmo@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Cr-Commit-Position: refs/heads/master@{#805238}
parent 0b46172c
......@@ -1081,10 +1081,7 @@ TEST_F(DirectCompositionPixelTest, ResizeVideoLayer) {
EXPECT_EQ(gfx::SwapResult::SWAP_ACK,
surface_->SwapBuffers(base::DoNothing()));
}
// Swap chain isn't recreated on resize.
ASSERT_TRUE(surface_->GetLayerSwapChainForTesting(0));
EXPECT_EQ(swap_chain.Get(), surface_->GetLayerSwapChainForTesting(0).Get());
swap_chain = surface_->GetLayerSwapChainForTesting(0);
EXPECT_TRUE(SUCCEEDED(swap_chain->GetDesc1(&desc)));
EXPECT_EQ(desc.Width, 30u);
EXPECT_EQ(desc.Height, 30u);
......
......@@ -1132,20 +1132,6 @@ bool SwapChainPresenter::ReallocateSwapChain(
DCHECK(!swap_chain_size.IsEmpty());
swap_chain_size_ = swap_chain_size;
// ResizeBuffers can't change YUV flags so only attempt it when size changes.
if (swap_chain_ && (swap_chain_format_ == swap_chain_format) &&
(protected_video_type_ == protected_video_type)) {
output_view_.Reset();
DXGI_SWAP_CHAIN_DESC1 desc = {};
swap_chain_->GetDesc1(&desc);
HRESULT hr = swap_chain_->ResizeBuffers(
desc.BufferCount, swap_chain_size.width(), swap_chain_size.height(),
desc.Format, desc.Flags);
if (SUCCEEDED(hr))
return true;
DLOG(ERROR) << "ResizeBuffers failed with error 0x" << std::hex << hr;
}
protected_video_type_ = protected_video_type;
if (swap_chain_format_ != swap_chain_format) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment