Align RenderGraph imported texture ownership

This commit is contained in:
2026-04-28 14:47:50 +08:00
parent 8c66cdac07
commit 0e506f21ec
10 changed files with 170 additions and 27 deletions

View File

@@ -1,6 +1,7 @@
#include <gtest/gtest.h>
#include "Rendering/Internal/ShaderVariantUtils.h"
#include "Rendering/Pipelines/Internal/BuiltinForwardSceneSetup.h"
#include <XCEngine/Debug/Logger.h>
#include <XCEngine/Rendering/Builtin/BuiltinPassLayoutUtils.h>
@@ -12,6 +13,7 @@
#include <XCEngine/Rendering/Passes/BuiltinShadowCasterPass.h>
#include <array>
#include <functional>
#include <memory>
#include <unordered_map>
#define private public
#include <XCEngine/Rendering/Pipelines/BuiltinForwardPipeline.h>
@@ -102,6 +104,35 @@ void AppendDefaultBuiltinPassResources(ShaderPass& pass) {
}
}
class TestResourceViewBackingTexture final : public XCEngine::RHI::RHITexture {
public:
explicit TestResourceViewBackingTexture(
XCEngine::RHI::Format format,
XCEngine::RHI::TextureType textureType = XCEngine::RHI::TextureType::Texture2D)
: m_format(format)
, m_textureType(textureType) {
}
uint32_t GetWidth() const override { return 1u; }
uint32_t GetHeight() const override { return 1u; }
uint32_t GetDepth() const override { return 1u; }
uint32_t GetMipLevels() const override { return 1u; }
XCEngine::RHI::Format GetFormat() const override { return m_format; }
XCEngine::RHI::TextureType GetTextureType() const override { return m_textureType; }
XCEngine::RHI::ResourceStates GetState() const override { return m_state; }
void SetState(XCEngine::RHI::ResourceStates state) override { m_state = state; }
void* GetNativeHandle() override { return nullptr; }
const std::string& GetName() const override { return m_name; }
void SetName(const std::string& name) override { m_name = name; }
void Shutdown() override {}
private:
XCEngine::RHI::Format m_format = XCEngine::RHI::Format::Unknown;
XCEngine::RHI::TextureType m_textureType = XCEngine::RHI::TextureType::Texture2D;
XCEngine::RHI::ResourceStates m_state = XCEngine::RHI::ResourceStates::Common;
std::string m_name;
};
class TestResourceView final : public XCEngine::RHI::RHIResourceView {
public:
TestResourceView(
@@ -136,10 +167,16 @@ public:
return m_format;
}
XCEngine::RHI::RHITexture* GetTextureResource() const override {
return m_texture.get();
}
private:
XCEngine::RHI::ResourceViewType m_viewType;
XCEngine::RHI::ResourceViewDimension m_dimension;
XCEngine::RHI::Format m_format;
std::unique_ptr<TestResourceViewBackingTexture> m_texture =
std::make_unique<TestResourceViewBackingTexture>(m_format);
};
class MockForwardPipelineLayout final : public XCEngine::RHI::RHIPipelineLayout {
@@ -1188,6 +1225,8 @@ TEST(SceneRenderFeaturePass_Test, ReadsSourceColorTextureAndCopiesSourceSurfaceT
TEST(BuiltinForwardPipeline_Test, RegistersBuiltinDefaultForwardSceneFeatures) {
BuiltinForwardPipeline pipeline;
XCEngine::Rendering::Pipelines::Internal::ConfigureBuiltinForwardSceneDrawBackend(
pipeline);
ASSERT_EQ(pipeline.GetForwardSceneFeaturePassCount(), 2u);
ASSERT_NE(pipeline.GetForwardSceneFeaturePass(0u), nullptr);
@@ -1414,6 +1453,8 @@ TEST(BuiltinForwardPipeline_Test, RegistersAdditionalForwardSceneFeaturePasses)
TEST(BuiltinForwardPipeline_Test, RecordsActiveFeatureInjectionPassesIntoMainSceneGraph) {
BuiltinForwardPipeline pipeline;
XCEngine::Rendering::Pipelines::Internal::ConfigureBuiltinForwardSceneDrawBackend(
pipeline);
RenderGraph graph = {};
RenderGraphBuilder graphBuilder(graph);