fix(rendering): rebind managed srp asset runtime after bridge reset
This commit is contained in:
@@ -4745,6 +4745,48 @@ TEST(ManagedScriptableRenderPipelineAsset_Test, ReusesManagedAssetRuntimeAcrossP
|
||||
Pipelines::ClearManagedRenderPipelineBridge();
|
||||
}
|
||||
|
||||
TEST(ManagedScriptableRenderPipelineAsset_Test, RebindsManagedAssetRuntimeWhenBridgeChanges) {
|
||||
Pipelines::ClearManagedRenderPipelineBridge();
|
||||
|
||||
const Pipelines::ManagedRenderPipelineAssetDescriptor descriptor = {
|
||||
"GameScripts",
|
||||
"Gameplay",
|
||||
"ManagedRenderPipelineProbeAsset"
|
||||
};
|
||||
|
||||
auto firstBridgeState = std::make_shared<MockManagedRenderPipelineBridgeState>();
|
||||
Pipelines::SetManagedRenderPipelineBridge(
|
||||
std::make_shared<MockManagedRenderPipelineBridge>(firstBridgeState));
|
||||
|
||||
Pipelines::ManagedScriptableRenderPipelineAsset asset(descriptor);
|
||||
|
||||
std::unique_ptr<RenderPipeline> firstPipeline = asset.CreatePipeline();
|
||||
ASSERT_NE(firstPipeline, nullptr);
|
||||
ASSERT_NE(firstBridgeState->lastCreatedRuntimeState, nullptr);
|
||||
EXPECT_EQ(firstBridgeState->createAssetRuntimeCalls, 1);
|
||||
EXPECT_EQ(firstBridgeState->lastCreatedRuntimeState->createStageRecorderCalls, 1);
|
||||
|
||||
auto secondBridgeState = std::make_shared<MockManagedRenderPipelineBridgeState>();
|
||||
Pipelines::SetManagedRenderPipelineBridge(
|
||||
std::make_shared<MockManagedRenderPipelineBridge>(secondBridgeState));
|
||||
|
||||
std::unique_ptr<RenderPipeline> secondPipeline = asset.CreatePipeline();
|
||||
ASSERT_NE(secondPipeline, nullptr);
|
||||
ASSERT_NE(secondBridgeState->lastCreatedRuntimeState, nullptr);
|
||||
EXPECT_EQ(secondBridgeState->createAssetRuntimeCalls, 1);
|
||||
EXPECT_EQ(secondBridgeState->lastCreatedRuntimeState->createStageRecorderCalls, 1);
|
||||
EXPECT_NE(
|
||||
secondBridgeState->lastCreatedRuntimeState.get(),
|
||||
firstBridgeState->lastCreatedRuntimeState.get());
|
||||
|
||||
auto* secondHost =
|
||||
dynamic_cast<Pipelines::ScriptableRenderPipelineHost*>(secondPipeline.get());
|
||||
ASSERT_NE(secondHost, nullptr);
|
||||
EXPECT_NE(secondHost->GetStageRecorder(), nullptr);
|
||||
|
||||
Pipelines::ClearManagedRenderPipelineBridge();
|
||||
}
|
||||
|
||||
TEST(CameraRenderer_Test, RendersManagedRequestedPostProcessWithoutLegacySequence) {
|
||||
Scene scene("CameraRendererManagedRequestedPostProcessScene");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user