refactor(srp): remove fullscreen stage support heuristic

This commit is contained in:
2026-04-21 12:37:18 +08:00
parent abc300fe03
commit d3db6b21ea
4 changed files with 69 additions and 43 deletions

View File

@@ -47,8 +47,7 @@ std::vector<CameraFramePlan> RenderPipelineHost::BuildFramePlans(
return m_framePlanBuilder != nullptr
? m_framePlanBuilder->BuildPlans(
requests,
GetPipelineAsset(),
GetPipeline())
GetPipelineAsset())
: std::vector<CameraFramePlan>();
}

View File

@@ -1,6 +1,5 @@
#include "Rendering/Planning/CameraFramePlanBuilder.h"
#include "Rendering/RenderPipeline.h"
#include "Rendering/RenderPipelineAsset.h"
namespace XCEngine {
@@ -15,41 +14,18 @@ bool UsesExplicitFullscreenSource(
HasValidColorTarget(request.sourceSurface);
}
RenderPipelineStageSupportContext BuildStageSupportContext(
const CameraFramePlan& plan,
CameraFrameStage stage) {
return RenderPipelineStageSupportContext{
stage,
plan.request.rendererIndex };
}
void ConfigureFullscreenStagesFromPipeline(
CameraFramePlan& plan,
const RenderPipeline* pipeline) {
void ConfigureLegacyFullscreenStageRequests(
CameraFramePlan& plan) {
const bool postProcessExplicitlyConfigured =
plan.HasExplicitFullscreenStageConfiguration(
CameraFrameStage::PostProcess);
const bool finalOutputExplicitlyConfigured =
plan.HasExplicitFullscreenStageConfiguration(
CameraFrameStage::FinalOutput);
const bool supportsPostProcess =
pipeline != nullptr &&
pipeline->SupportsStageRenderGraph(
BuildStageSupportContext(
plan,
CameraFrameStage::PostProcess));
const bool supportsFinalOutput =
pipeline != nullptr &&
pipeline->SupportsStageRenderGraph(
BuildStageSupportContext(
plan,
CameraFrameStage::FinalOutput));
const bool hasPostProcess =
plan.postProcess.IsRequested() ||
supportsPostProcess;
plan.postProcess.IsRequested();
const bool hasFinalOutput =
plan.finalOutput.IsRequested() ||
supportsFinalOutput;
plan.finalOutput.IsRequested();
if (!postProcessExplicitlyConfigured &&
hasPostProcess &&
@@ -87,10 +63,9 @@ void ConfigureFullscreenStagesFromPipeline(
std::vector<CameraFramePlan> CameraFramePlanBuilder::BuildPlans(
const std::vector<CameraRenderRequest>& requests,
const RenderPipelineAsset* pipelineAsset,
const RenderPipeline* pipeline) {
const RenderPipelineAsset* pipelineAsset) {
std::vector<CameraFramePlan> plans = CreatePlansFromRequests(requests);
ConfigurePlans(plans, pipelineAsset, pipeline);
ConfigurePlans(plans, pipelineAsset);
return plans;
}
@@ -107,8 +82,7 @@ std::vector<CameraFramePlan> CameraFramePlanBuilder::CreatePlansFromRequests(
void CameraFramePlanBuilder::ConfigurePlans(
std::vector<CameraFramePlan>& plans,
const RenderPipelineAsset* pipelineAsset,
const RenderPipeline* pipeline) const {
const RenderPipelineAsset* pipelineAsset) const {
for (CameraFramePlan& plan : plans) {
if (pipelineAsset != nullptr) {
pipelineAsset->ConfigureCameraFramePlan(plan);
@@ -116,9 +90,7 @@ void CameraFramePlanBuilder::ConfigurePlans(
ApplyDefaultRenderPipelineAssetCameraFramePlanPolicy(plan);
}
ConfigureFullscreenStagesFromPipeline(
plan,
pipeline);
ConfigureLegacyFullscreenStageRequests(plan);
}
}

View File

@@ -8,7 +8,6 @@ namespace XCEngine {
namespace Rendering {
class RenderPipelineAsset;
class RenderPipeline;
class CameraFramePlanBuilder {
public:
@@ -19,16 +18,14 @@ public:
std::vector<CameraFramePlan> BuildPlans(
const std::vector<CameraRenderRequest>& requests,
const RenderPipelineAsset* pipelineAsset,
const RenderPipeline* pipeline);
const RenderPipelineAsset* pipelineAsset);
private:
std::vector<CameraFramePlan> CreatePlansFromRequests(
const std::vector<CameraRenderRequest>& requests) const;
void ConfigurePlans(
std::vector<CameraFramePlan>& plans,
const RenderPipelineAsset* pipelineAsset,
const RenderPipeline* pipeline) const;
const RenderPipelineAsset* pipelineAsset) const;
};
} // namespace Rendering