rendering: close out backend contract phase 4.1
This commit is contained in:
@@ -820,10 +820,14 @@ struct MockManagedRenderPipelineAssetRuntimeState {
|
||||
int getPipelineRendererAssetCalls = 0;
|
||||
int getDefaultFinalColorSettingsCalls = 0;
|
||||
bool hasDefaultFinalColorSettings = false;
|
||||
bool hasPipelineRendererAssetPolicyOverride = false;
|
||||
FinalColorSettings defaultFinalColorSettings = {};
|
||||
size_t lastRenderedBaseCameraCount = 0u;
|
||||
size_t lastRenderedRequestCount = 0u;
|
||||
std::shared_ptr<const RenderPipelineAsset> pipelineRendererAsset = nullptr;
|
||||
Pipelines::ManagedPipelineRendererAssetPolicy
|
||||
pipelineRendererAssetPolicy =
|
||||
Pipelines::ManagedPipelineRendererAssetPolicy::Unspecified;
|
||||
std::shared_ptr<MockStageRecorderState> lastCreatedStageRecorderState;
|
||||
std::function<void(
|
||||
CameraRenderRequest&,
|
||||
@@ -872,6 +876,15 @@ public:
|
||||
return m_state->pipelineRendererAsset;
|
||||
}
|
||||
|
||||
Pipelines::ManagedPipelineRendererAssetPolicy
|
||||
GetPipelineRendererAssetPolicy() const override {
|
||||
if (m_state->hasPipelineRendererAssetPolicyOverride) {
|
||||
return m_state->pipelineRendererAssetPolicy;
|
||||
}
|
||||
|
||||
return ManagedRenderPipelineAssetRuntime::GetPipelineRendererAssetPolicy();
|
||||
}
|
||||
|
||||
bool TryGetDefaultFinalColorSettings(
|
||||
FinalColorSettings& settings) const override {
|
||||
++m_state->getDefaultFinalColorSettingsCalls;
|
||||
@@ -892,8 +905,12 @@ struct MockManagedRenderPipelineBridgeState {
|
||||
Pipelines::ManagedRenderPipelineAssetDescriptor lastDescriptor = {};
|
||||
std::shared_ptr<MockManagedRenderPipelineAssetRuntimeState> lastCreatedRuntimeState;
|
||||
bool hasDefaultFinalColorSettings = false;
|
||||
bool hasPipelineRendererAssetPolicyOverride = false;
|
||||
FinalColorSettings defaultFinalColorSettings = {};
|
||||
std::shared_ptr<const RenderPipelineAsset> pipelineRendererAsset = nullptr;
|
||||
Pipelines::ManagedPipelineRendererAssetPolicy
|
||||
pipelineRendererAssetPolicy =
|
||||
Pipelines::ManagedPipelineRendererAssetPolicy::Unspecified;
|
||||
std::function<void(
|
||||
CameraRenderRequest&,
|
||||
size_t,
|
||||
@@ -918,10 +935,15 @@ public:
|
||||
std::make_shared<MockManagedRenderPipelineAssetRuntimeState>();
|
||||
m_state->lastCreatedRuntimeState->hasDefaultFinalColorSettings =
|
||||
m_state->hasDefaultFinalColorSettings;
|
||||
m_state->lastCreatedRuntimeState
|
||||
->hasPipelineRendererAssetPolicyOverride =
|
||||
m_state->hasPipelineRendererAssetPolicyOverride;
|
||||
m_state->lastCreatedRuntimeState->defaultFinalColorSettings =
|
||||
m_state->defaultFinalColorSettings;
|
||||
m_state->lastCreatedRuntimeState->pipelineRendererAsset =
|
||||
m_state->pipelineRendererAsset;
|
||||
m_state->lastCreatedRuntimeState->pipelineRendererAssetPolicy =
|
||||
m_state->pipelineRendererAssetPolicy;
|
||||
m_state->lastCreatedRuntimeState->configureCameraRenderRequest =
|
||||
m_state->configureCameraRenderRequest;
|
||||
return std::make_shared<MockManagedRenderPipelineAssetRuntime>(
|
||||
@@ -4775,6 +4797,42 @@ TEST(
|
||||
Pipelines::ClearManagedRenderPipelineBridge();
|
||||
}
|
||||
|
||||
TEST(
|
||||
ManagedScriptableRenderPipelineAsset_Test,
|
||||
UsesDefaultNativeBackendForHostCompositionWhenRuntimeDeclaresDefaultNativeBackendPolicy) {
|
||||
Pipelines::ClearManagedRenderPipelineBridge();
|
||||
|
||||
const Pipelines::ManagedRenderPipelineAssetDescriptor descriptor = {
|
||||
"GameScripts",
|
||||
"Gameplay",
|
||||
"ManagedRenderPipelineProbeAsset"
|
||||
};
|
||||
auto bridgeState = std::make_shared<MockManagedRenderPipelineBridgeState>();
|
||||
bridgeState->hasPipelineRendererAssetPolicyOverride = true;
|
||||
bridgeState->pipelineRendererAssetPolicy =
|
||||
Pipelines::ManagedPipelineRendererAssetPolicy::DefaultNativeBackend;
|
||||
Pipelines::SetManagedRenderPipelineBridge(
|
||||
std::make_shared<MockManagedRenderPipelineBridge>(bridgeState));
|
||||
|
||||
Pipelines::ManagedScriptableRenderPipelineAsset asset(descriptor);
|
||||
std::unique_ptr<RenderPipeline> pipeline = asset.CreatePipeline();
|
||||
ASSERT_NE(pipeline, nullptr);
|
||||
|
||||
auto runtimeState = bridgeState->lastCreatedRuntimeState;
|
||||
ASSERT_NE(runtimeState, nullptr);
|
||||
auto* host =
|
||||
dynamic_cast<Pipelines::ScriptableRenderPipelineHost*>(pipeline.get());
|
||||
ASSERT_NE(host, nullptr);
|
||||
EXPECT_EQ(
|
||||
host->GetPipelineBackendAsset(),
|
||||
Internal::CreateDefaultPipelineBackendAsset().get());
|
||||
EXPECT_NE(host->GetPipelineBackend(), nullptr);
|
||||
EXPECT_NE(host->GetStageRecorder(), nullptr);
|
||||
EXPECT_EQ(runtimeState->getPipelineRendererAssetCalls, 0);
|
||||
|
||||
Pipelines::ClearManagedRenderPipelineBridge();
|
||||
}
|
||||
|
||||
TEST(ManagedScriptableRenderPipelineAsset_Test, LetsManagedBridgeConfigureCameraRenderRequests) {
|
||||
Pipelines::ClearManagedRenderPipelineBridge();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user