rendering: close out backend contract phase 4.1

This commit is contained in:
2026-04-26 01:48:19 +08:00
parent 1ff0ddcacc
commit b13cb6506c
6 changed files with 236 additions and 45 deletions

View File

@@ -1702,9 +1702,6 @@ private:
mutable int32_t m_runtimeResourceVersion = 0;
mutable uint32_t m_pipelineHandle = 0;
mutable bool m_pipelineCreationAttempted = false;
mutable bool m_sharedPipelineBackendAssetResolved = false;
mutable std::shared_ptr<const Rendering::RenderPipelineAsset>
m_sharedPipelineBackendAsset = nullptr;
};
class MonoManagedRenderPipelineStageRecorder final
@@ -2043,21 +2040,15 @@ private:
return m_boundSceneDrawBackend;
}
const std::shared_ptr<const Rendering::RenderPipelineAsset>
sharedPipelineBackendAsset =
m_assetRuntime != nullptr
? m_assetRuntime->GetPipelineRendererAsset()
: nullptr;
const std::shared_ptr<const Rendering::RenderPipelineAsset>
resolvedPipelineBackendAsset =
sharedPipelineBackendAsset != nullptr
? sharedPipelineBackendAsset
: m_assetRuntime != nullptr &&
m_assetRuntime->GetPipelineRendererAssetPolicy() ==
m_assetRuntime == nullptr
? nullptr
: m_assetRuntime->GetPipelineRendererAssetPolicy() ==
Rendering::Pipelines::ManagedPipelineRendererAssetPolicy::
DefaultNativeBackend
? Rendering::Internal::CreateDefaultPipelineBackendAsset()
: nullptr;
: m_assetRuntime->GetSharedPipelineBackendAsset();
if (resolvedPipelineBackendAsset == nullptr) {
return nullptr;
}
@@ -2335,21 +2326,15 @@ MonoManagedRenderPipelineAssetRuntime::GetPipelineRendererAsset() const {
return nullptr;
}
if (m_sharedPipelineBackendAssetResolved) {
return m_sharedPipelineBackendAsset;
}
if (GetManagedAssetObject() == nullptr) {
return nullptr;
}
m_sharedPipelineBackendAssetResolved = true;
return m_sharedPipelineBackendAsset;
// Current Mono-backed SRP assets do not materialize a shared native
// backend asset. They bind the engine default native backend explicitly
// through DefaultNativeBackend.
return nullptr;
}
Rendering::Pipelines::ManagedPipelineRendererAssetPolicy
MonoManagedRenderPipelineAssetRuntime::GetPipelineRendererAssetPolicy() const {
return EnsureManagedAsset()
return SyncManagedAssetRuntimeState()
? Rendering::Pipelines::ManagedPipelineRendererAssetPolicy::DefaultNativeBackend
: Rendering::Pipelines::ManagedPipelineRendererAssetPolicy::Unspecified;
}
@@ -2491,8 +2476,6 @@ bool MonoManagedRenderPipelineAssetRuntime::SyncManagedAssetRuntimeState() const
}
ReleaseManagedPipeline();
m_sharedPipelineBackendAsset.reset();
m_sharedPipelineBackendAssetResolved = false;
m_runtimeResourceVersion = runtimeResourceVersion;
return true;
}
@@ -2560,8 +2543,6 @@ void MonoManagedRenderPipelineAssetRuntime::ReleaseManagedAsset() const {
m_getRuntimeResourceVersionMethod = nullptr;
m_configureRenderSceneSetupMethod = nullptr;
m_configureDirectionalShadowExecutionStateMethod = nullptr;
m_sharedPipelineBackendAsset.reset();
m_sharedPipelineBackendAssetResolved = false;
m_runtimeResourceVersionResolved = false;
m_runtimeResourceVersion = 0;
const bool ownsManagedAssetHandle = m_ownsManagedAssetHandle;