Move fullscreen graph ownership out of pass transitions
This commit is contained in:
@@ -517,10 +517,13 @@ public:
|
||||
lastWorldPosition = context.sceneData.cameraData.worldPosition;
|
||||
lastSurfaceWidth = context.surface.GetRenderAreaWidth();
|
||||
lastSurfaceHeight = context.surface.GetRenderAreaHeight();
|
||||
lastSurfaceAutoTransitionEnabled = context.surface.IsAutoTransitionEnabled();
|
||||
lastHasSourceSurface = context.sourceSurface != nullptr;
|
||||
if (context.sourceSurface != nullptr) {
|
||||
lastSourceSurfaceWidth = context.sourceSurface->GetRenderAreaWidth();
|
||||
lastSourceSurfaceHeight = context.sourceSurface->GetRenderAreaHeight();
|
||||
lastSourceSurfaceAutoTransitionEnabled =
|
||||
context.sourceSurface->IsAutoTransitionEnabled();
|
||||
}
|
||||
lastSourceColorView = context.sourceColorView;
|
||||
lastSourceColorState = context.sourceColorState;
|
||||
@@ -538,9 +541,11 @@ public:
|
||||
XCEngine::Math::Vector3 lastWorldPosition = XCEngine::Math::Vector3::Zero();
|
||||
uint32_t lastSurfaceWidth = 0;
|
||||
uint32_t lastSurfaceHeight = 0;
|
||||
bool lastSurfaceAutoTransitionEnabled = true;
|
||||
bool lastHasSourceSurface = false;
|
||||
uint32_t lastSourceSurfaceWidth = 0;
|
||||
uint32_t lastSourceSurfaceHeight = 0;
|
||||
bool lastSourceSurfaceAutoTransitionEnabled = true;
|
||||
XCEngine::RHI::RHIResourceView* lastSourceColorView = nullptr;
|
||||
XCEngine::RHI::ResourceStates lastSourceColorState = XCEngine::RHI::ResourceStates::Common;
|
||||
|
||||
@@ -1071,18 +1076,28 @@ TEST(CameraRenderer_Test, ChainsMultiPassPostProcessThroughIntermediateSurface)
|
||||
EXPECT_TRUE(firstPassRaw->lastHasSourceSurface);
|
||||
EXPECT_EQ(firstPassRaw->lastSourceSurfaceWidth, 256u);
|
||||
EXPECT_EQ(firstPassRaw->lastSourceSurfaceHeight, 128u);
|
||||
EXPECT_FALSE(firstPassRaw->lastSourceSurfaceAutoTransitionEnabled);
|
||||
EXPECT_EQ(firstPassRaw->lastSourceColorView, sourceColorShaderView);
|
||||
EXPECT_EQ(
|
||||
firstPassRaw->lastSourceColorState,
|
||||
XCEngine::RHI::ResourceStates::PixelShaderResource);
|
||||
EXPECT_EQ(firstPassRaw->lastSurfaceWidth, 512u);
|
||||
EXPECT_EQ(firstPassRaw->lastSurfaceHeight, 256u);
|
||||
EXPECT_FALSE(firstPassRaw->lastSurfaceAutoTransitionEnabled);
|
||||
|
||||
ASSERT_NE(secondPassRaw, nullptr);
|
||||
EXPECT_TRUE(secondPassRaw->lastHasSourceSurface);
|
||||
EXPECT_EQ(secondPassRaw->lastSourceSurfaceWidth, 512u);
|
||||
EXPECT_EQ(secondPassRaw->lastSourceSurfaceHeight, 256u);
|
||||
EXPECT_FALSE(secondPassRaw->lastSourceSurfaceAutoTransitionEnabled);
|
||||
EXPECT_NE(secondPassRaw->lastSourceColorView, nullptr);
|
||||
EXPECT_NE(secondPassRaw->lastSourceColorView, sourceColorShaderView);
|
||||
EXPECT_EQ(
|
||||
secondPassRaw->lastSourceColorState,
|
||||
XCEngine::RHI::ResourceStates::PixelShaderResource);
|
||||
EXPECT_EQ(secondPassRaw->lastSurfaceWidth, 512u);
|
||||
EXPECT_EQ(secondPassRaw->lastSurfaceHeight, 256u);
|
||||
EXPECT_FALSE(secondPassRaw->lastSurfaceAutoTransitionEnabled);
|
||||
|
||||
EXPECT_EQ(allocationState->createTextureCalls, 1);
|
||||
EXPECT_EQ(allocationState->createRenderTargetViewCalls, 1);
|
||||
@@ -1182,15 +1197,30 @@ TEST(CameraRenderer_Test, KeepsPostProcessAndFinalOutputScratchSurfacesIndepende
|
||||
ASSERT_NE(postSecondPassRaw, nullptr);
|
||||
EXPECT_EQ(postSecondPassRaw->lastSourceSurfaceWidth, 512u);
|
||||
EXPECT_EQ(postSecondPassRaw->lastSourceSurfaceHeight, 256u);
|
||||
EXPECT_FALSE(postSecondPassRaw->lastSourceSurfaceAutoTransitionEnabled);
|
||||
EXPECT_EQ(
|
||||
postSecondPassRaw->lastSourceColorState,
|
||||
XCEngine::RHI::ResourceStates::PixelShaderResource);
|
||||
EXPECT_FALSE(postSecondPassRaw->lastSurfaceAutoTransitionEnabled);
|
||||
ASSERT_NE(finalFirstPassRaw, nullptr);
|
||||
EXPECT_EQ(finalFirstPassRaw->lastSourceSurfaceWidth, 512u);
|
||||
EXPECT_EQ(finalFirstPassRaw->lastSourceSurfaceHeight, 256u);
|
||||
EXPECT_FALSE(finalFirstPassRaw->lastSourceSurfaceAutoTransitionEnabled);
|
||||
EXPECT_EQ(finalFirstPassRaw->lastSourceColorView, finalOutputSource);
|
||||
EXPECT_EQ(
|
||||
finalFirstPassRaw->lastSourceColorState,
|
||||
XCEngine::RHI::ResourceStates::PixelShaderResource);
|
||||
EXPECT_FALSE(finalFirstPassRaw->lastSurfaceAutoTransitionEnabled);
|
||||
ASSERT_NE(finalSecondPassRaw, nullptr);
|
||||
EXPECT_EQ(finalSecondPassRaw->lastSourceSurfaceWidth, 800u);
|
||||
EXPECT_EQ(finalSecondPassRaw->lastSourceSurfaceHeight, 600u);
|
||||
EXPECT_FALSE(finalSecondPassRaw->lastSourceSurfaceAutoTransitionEnabled);
|
||||
EXPECT_NE(finalSecondPassRaw->lastSourceColorView, nullptr);
|
||||
EXPECT_NE(finalSecondPassRaw->lastSourceColorView, finalOutputSource);
|
||||
EXPECT_EQ(
|
||||
finalSecondPassRaw->lastSourceColorState,
|
||||
XCEngine::RHI::ResourceStates::PixelShaderResource);
|
||||
EXPECT_FALSE(finalSecondPassRaw->lastSurfaceAutoTransitionEnabled);
|
||||
|
||||
EXPECT_EQ(allocationState->createTextureCalls, 2);
|
||||
EXPECT_EQ(allocationState->createRenderTargetViewCalls, 2);
|
||||
|
||||
Reference in New Issue
Block a user