refactor(srp): unify mono recorder backend ownership
This commit is contained in:
@@ -441,10 +441,12 @@ struct MockPipelineAssetState {
|
||||
struct MockStageRecorderState {
|
||||
int initializeCalls = 0;
|
||||
int shutdownCalls = 0;
|
||||
int setPipelineRendererCalls = 0;
|
||||
int recordMainSceneCalls = 0;
|
||||
bool supportsMainSceneRenderGraph = false;
|
||||
bool recordMainSceneResult = true;
|
||||
bool lastReceivedRenderGraphBlackboard = false;
|
||||
RenderPipelineRenderer* lastPipelineRenderer = nullptr;
|
||||
};
|
||||
|
||||
class MockPipeline final : public RenderPipeline {
|
||||
@@ -688,6 +690,12 @@ public:
|
||||
++m_state->shutdownCalls;
|
||||
}
|
||||
|
||||
void SetPipelineRenderer(RenderPipelineRenderer* pipelineRenderer)
|
||||
override {
|
||||
++m_state->setPipelineRendererCalls;
|
||||
m_state->lastPipelineRenderer = pipelineRenderer;
|
||||
}
|
||||
|
||||
bool SupportsStageRenderGraph(CameraFrameStage stage) const override {
|
||||
return SupportsCameraFramePipelineGraphRecording(stage) &&
|
||||
m_state->supportsMainSceneRenderGraph;
|
||||
@@ -4477,6 +4485,29 @@ TEST(ScriptableRenderPipelineHost_Test, PrefersStageRecorderBeforeFallbackRender
|
||||
EXPECT_EQ(replacementRecorderState->shutdownCalls, 1);
|
||||
}
|
||||
|
||||
TEST(ScriptableRenderPipelineHost_Test, BindsCurrentPipelineRendererIntoStageRecorder) {
|
||||
auto initialPipelineState = std::make_shared<MockPipelineState>();
|
||||
auto replacementPipelineState = std::make_shared<MockPipelineState>();
|
||||
auto recorderState = std::make_shared<MockStageRecorderState>();
|
||||
|
||||
Pipelines::ScriptableRenderPipelineHost host(
|
||||
std::make_unique<MockPipeline>(initialPipelineState));
|
||||
|
||||
host.SetStageRecorder(
|
||||
std::make_unique<MockStageRecorder>(recorderState));
|
||||
EXPECT_EQ(recorderState->setPipelineRendererCalls, 1);
|
||||
EXPECT_EQ(
|
||||
recorderState->lastPipelineRenderer,
|
||||
host.GetPipelineRenderer());
|
||||
|
||||
host.SetPipelineRenderer(
|
||||
std::make_unique<MockPipeline>(replacementPipelineState));
|
||||
EXPECT_EQ(recorderState->setPipelineRendererCalls, 2);
|
||||
EXPECT_EQ(
|
||||
recorderState->lastPipelineRenderer,
|
||||
host.GetPipelineRenderer());
|
||||
}
|
||||
|
||||
TEST(
|
||||
ScriptableRenderPipelineHost_Test,
|
||||
FallsBackToRendererWhenStageRecorderDeclinesRecording) {
|
||||
|
||||
Reference in New Issue
Block a user