2626
2727#include < array>
2828#include < unordered_set>
29- #include < thread>
3029
3130#include " GPUTestingEnvironment.hpp"
3231#include " TestingSwapChainBase.hpp"
@@ -424,16 +423,7 @@ TEST_P(TestBrokenShader, CompileFailure)
424423 if (CompileAsync)
425424 {
426425 ASSERT_NE (pSerializedShader, nullptr );
427- SHADER_STATUS Status = SHADER_STATUS_UNINITIALIZED;
428- do
429- {
430- Status = pSerializedShader->GetStatus ();
431- if (Status == SHADER_STATUS_COMPILING)
432- {
433- std::this_thread::sleep_for (std::chrono::milliseconds{10 });
434- }
435- } while (Status == SHADER_STATUS_COMPILING);
436- EXPECT_EQ (Status, SHADER_STATUS_FAILED);
426+ EXPECT_EQ (pSerializedShader->GetStatus (true ), SHADER_STATUS_FAILED);
437427 }
438428 else
439429 {
@@ -480,16 +470,7 @@ TEST_P(TestBrokenShader, MissingSourceFile)
480470 if (CompileAsync)
481471 {
482472 ASSERT_NE (pSerializedShader, nullptr );
483- SHADER_STATUS Status = SHADER_STATUS_UNINITIALIZED;
484- do
485- {
486- Status = pSerializedShader->GetStatus ();
487- if (Status == SHADER_STATUS_COMPILING)
488- {
489- std::this_thread::sleep_for (std::chrono::milliseconds{10 });
490- }
491- } while (Status == SHADER_STATUS_COMPILING);
492- EXPECT_EQ (Status, SHADER_STATUS_FAILED);
473+ EXPECT_EQ (pSerializedShader->GetStatus (true ), SHADER_STATUS_FAILED);
493474 }
494475 else
495476 {
@@ -782,22 +763,6 @@ void RenderGraphicsPSOTestImage(IDeviceContext* pContext,
782763 pContext->EndRenderPass ();
783764}
784765
785- void WaitPSOCompilation (bool CompileAsync, IPipelineState* pPSO)
786- {
787- if (CompileAsync)
788- {
789- size_t Iteration = 0 ;
790- Timer T;
791- while (pPSO->GetStatus () == PIPELINE_STATE_STATUS_COMPILING)
792- {
793- std::this_thread::sleep_for (std::chrono::milliseconds{10 });
794- ++Iteration;
795- }
796- ASSERT_EQ (pPSO->GetStatus (), PIPELINE_STATE_STATUS_READY);
797- LOG_INFO_MESSAGE (" Waited for PSO '" , pPSO->GetDesc ().Name , " ' compilation: " , T.GetElapsedTime () * 1000 , " ms, " , Iteration, (Iteration > 1 ? " iterations" : " iteration" ));
798- }
799- }
800-
801766void TestGraphicsPipeline (PSO_ARCHIVE_FLAGS ArchiveFlags, bool CompileAsync = false )
802767{
803768 auto * pEnv = GPUTestingEnvironment::GetInstance ();
@@ -1077,8 +1042,7 @@ void TestGraphicsPipeline(PSO_ARCHIVE_FLAGS ArchiveFlags, bool CompileAsync = fa
10771042 RefCntAutoPtr<IPipelineState> pUnpackedPSOWithLayout;
10781043 pDearchiver->UnpackPipelineState (UnpackInfo, &pUnpackedPSOWithLayout);
10791044 ASSERT_NE (pUnpackedPSOWithLayout, nullptr );
1080-
1081- WaitPSOCompilation (CompileAsync, pUnpackedPSOWithLayout);
1045+ ASSERT_EQ (pUnpackedPSOWithLayout->GetStatus (CompileAsync), PIPELINE_STATE_STATUS_READY);
10821046
10831047 EXPECT_EQ (pUnpackedPSOWithLayout->GetGraphicsPipelineDesc (), pRefPSOWithLayout->GetGraphicsPipelineDesc ());
10841048 EXPECT_EQ (pUnpackedPSOWithLayout->GetResourceSignatureCount (), pRefPSOWithLayout->GetResourceSignatureCount ());
@@ -1105,8 +1069,7 @@ void TestGraphicsPipeline(PSO_ARCHIVE_FLAGS ArchiveFlags, bool CompileAsync = fa
11051069 UnpackInfo.Name = PSOWithResLayoutName2;
11061070 pDearchiver->UnpackPipelineState (UnpackInfo, &pUnpackedPSOWithLayout2);
11071071 ASSERT_NE (pUnpackedPSOWithLayout2, nullptr );
1108-
1109- WaitPSOCompilation (CompileAsync, pUnpackedPSOWithLayout2);
1072+ ASSERT_EQ (pUnpackedPSOWithLayout2->GetStatus (CompileAsync), PIPELINE_STATE_STATUS_READY);
11101073
11111074 EXPECT_EQ (pUnpackedPSOWithLayout2->GetResourceSignatureCount (), 1u );
11121075 EXPECT_TRUE (pUnpackedPSOWithLayout2->GetResourceSignature (0 )->IsCompatibleWith (pUnpackedPSOWithLayout->GetResourceSignature (0 )));
@@ -1123,9 +1086,8 @@ void TestGraphicsPipeline(PSO_ARCHIVE_FLAGS ArchiveFlags, bool CompileAsync = fa
11231086
11241087 pDearchiver->UnpackPipelineState (UnpackInfo, &pUnpackedPSOWithSign);
11251088 ASSERT_NE (pUnpackedPSOWithSign, nullptr );
1126-
1127- WaitPSOCompilation (CompileAsync, pUnpackedPSOWithSign);
1128- WaitPSOCompilation (CompileAsync, pRefPSOWithSign);
1089+ ASSERT_EQ (pUnpackedPSOWithSign->GetStatus (CompileAsync), PIPELINE_STATE_STATUS_READY);
1090+ ASSERT_EQ (pRefPSOWithSign->GetStatus (CompileAsync), PIPELINE_STATE_STATUS_READY);
11291091
11301092 EXPECT_EQ (pUnpackedPSOWithSign->GetGraphicsPipelineDesc (), pRefPSOWithSign->GetGraphicsPipelineDesc ());
11311093 EXPECT_EQ (pUnpackedPSOWithSign->GetGraphicsPipelineDesc ().pRenderPass , pUnpackedRenderPass);
@@ -1546,7 +1508,7 @@ void TestComputePipeline(PSO_ARCHIVE_FLAGS ArchiveFlags, bool CompileAsync = fal
15461508 pContext->DispatchCompute (DispatchAttribs);
15471509 };
15481510
1549- WaitPSOCompilation ( CompileAsync, pRefPSO );
1511+ ASSERT_EQ (pRefPSO-> GetStatus ( CompileAsync), PIPELINE_STATE_STATUS_READY );
15501512
15511513 // Dispatch reference
15521514 Dispatch (pRefPSO, pTestingSwapChain->GetCurrentBackBufferUAV ());
@@ -1560,7 +1522,7 @@ void TestComputePipeline(PSO_ARCHIVE_FLAGS ArchiveFlags, bool CompileAsync = fal
15601522
15611523 pTestingSwapChain->TakeSnapshot (pTexUAV);
15621524
1563- WaitPSOCompilation ( CompileAsync, pUnpackedPSO );
1525+ ASSERT_EQ (pUnpackedPSO-> GetStatus ( CompileAsync), PIPELINE_STATE_STATUS_READY );
15641526
15651527 // Dispatch
15661528 Dispatch (pUnpackedPSO, pTestingSwapChain->GetCurrentBackBufferUAV ());
@@ -1901,8 +1863,8 @@ void TestRayTracingPipeline(bool CompileAsync = false)
19011863 pContext->UpdateSBT (pSBT);
19021864 };
19031865
1904- WaitPSOCompilation ( CompileAsync, pUnpackedPSO );
1905- WaitPSOCompilation ( CompileAsync, pRefPSO );
1866+ ASSERT_EQ (pUnpackedPSO-> GetStatus ( CompileAsync), PIPELINE_STATE_STATUS_READY );
1867+ ASSERT_EQ (pRefPSO-> GetStatus ( CompileAsync), PIPELINE_STATE_STATUS_READY );
19061868
19071869 RefCntAutoPtr<IShaderBindingTable> pRefPSO_SBT;
19081870 CreateSBT (pRefPSO_SBT, pRefPSO);
0 commit comments