fix: refresh d3d12 swapchain backbuffers on resize

This commit is contained in:
2026-03-28 16:26:31 +08:00
parent 1fa97dc246
commit ec1535ad25
3 changed files with 78 additions and 18 deletions

View File

@@ -175,6 +175,30 @@ TEST_F(SwapChainTestFixture, SwapChain_Present_DoesNotCrash) {
ASSERT_NO_FATAL_FAILURE(mSwapChain.Present(0, 0));
}
TEST_F(SwapChainTestFixture, SwapChain_Resize_RecreatesBackBuffers) {
ASSERT_TRUE(mSwapChain.Initialize(
mFactory.Get(),
mCommandQueue.Get(),
mHWND,
800,
600,
2
));
ID3D12Resource* beforeResize = mSwapChain.GetBackBuffer(0).GetResource();
ASSERT_NE(beforeResize, nullptr);
EXPECT_EQ(mSwapChain.GetBackBuffer(0).GetWidth(), 800u);
EXPECT_EQ(mSwapChain.GetBackBuffer(0).GetHeight(), 600u);
ASSERT_NO_FATAL_FAILURE(mSwapChain.Resize(1024, 768));
ID3D12Resource* afterResize = mSwapChain.GetBackBuffer(0).GetResource();
ASSERT_NE(afterResize, nullptr);
EXPECT_EQ(mSwapChain.GetBackBuffer(0).GetWidth(), 1024u);
EXPECT_EQ(mSwapChain.GetBackBuffer(0).GetHeight(), 768u);
EXPECT_NE(beforeResize, afterResize);
}
TEST_F(SwapChainTestFixture, SwapChain_Shutdown_Cleanup) {
ASSERT_TRUE(mSwapChain.Initialize(
mFactory.Get(),