feat: add RenderDocCapture to Debug module for frame capture debugging
- Add RenderDocCapture class for dynamic loading of renderdoc.dll - Support BeginCapture/EndCapture/TriggerCapture APIs - Add RenderDoc log category - Add unit tests for RenderDocCapture in tests/debug
This commit is contained in:
@@ -3,6 +3,7 @@ find_package(GTest REQUIRED)
|
||||
add_executable(debug_tests
|
||||
test_logger.cpp
|
||||
test_profiler.cpp
|
||||
test_renderdoc_capture.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(debug_tests
|
||||
@@ -12,5 +13,11 @@ target_link_libraries(debug_tests
|
||||
GTest::gtest_main
|
||||
)
|
||||
|
||||
add_custom_command(TARGET debug_tests POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_SOURCE_DIR}/engine/third_party/renderdoc/renderdoc.dll
|
||||
$<TARGET_FILE_DIR:debug_tests>/
|
||||
)
|
||||
|
||||
include(GoogleTest)
|
||||
gtest_discover_tests(debug_tests)
|
||||
|
||||
51
tests/debug/test_renderdoc_capture.cpp
Normal file
51
tests/debug/test_renderdoc_capture.cpp
Normal file
@@ -0,0 +1,51 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include "XCEngine/Debug/RenderDocCapture.h"
|
||||
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
TEST(RenderDocCaptureTest, Initialize) {
|
||||
auto* rc = &RenderDocCapture::Get();
|
||||
bool result = rc->Initialize(nullptr, nullptr);
|
||||
EXPECT_TRUE(result) << "RenderDoc initialization failed - check if renderdoc.dll is available";
|
||||
EXPECT_TRUE(rc->IsLoaded());
|
||||
}
|
||||
|
||||
TEST(RenderDocCaptureTest, Shutdown) {
|
||||
auto* rc = &RenderDocCapture::Get();
|
||||
rc->Initialize(nullptr, nullptr);
|
||||
ASSERT_TRUE(rc->IsLoaded()) << "RenderDoc not loaded";
|
||||
rc->Shutdown();
|
||||
}
|
||||
|
||||
TEST(RenderDocCaptureTest, BeginEndCapture) {
|
||||
auto* rc = &RenderDocCapture::Get();
|
||||
rc->Initialize(nullptr, nullptr);
|
||||
ASSERT_TRUE(rc->IsLoaded()) << "RenderDoc not loaded";
|
||||
|
||||
rc->BeginCapture("UnitTestCapture");
|
||||
rc->EndCapture();
|
||||
}
|
||||
|
||||
TEST(RenderDocCaptureTest, TriggerCapture) {
|
||||
auto* rc = &RenderDocCapture::Get();
|
||||
rc->Initialize(nullptr, nullptr);
|
||||
ASSERT_TRUE(rc->IsLoaded()) << "RenderDoc not loaded";
|
||||
|
||||
rc->TriggerCapture();
|
||||
}
|
||||
|
||||
TEST(RenderDocCaptureTest, SetCaptureFilePath) {
|
||||
auto* rc = &RenderDocCapture::Get();
|
||||
rc->Initialize(nullptr, nullptr);
|
||||
ASSERT_TRUE(rc->IsLoaded()) << "RenderDoc not loaded";
|
||||
|
||||
rc->SetCaptureFilePath(".\\test_captures");
|
||||
}
|
||||
|
||||
TEST(RenderDocCaptureTest, SetCaptureComments) {
|
||||
auto* rc = &RenderDocCapture::Get();
|
||||
rc->Initialize(nullptr, nullptr);
|
||||
ASSERT_TRUE(rc->IsLoaded()) << "RenderDoc not loaded";
|
||||
|
||||
rc->SetCaptureComments("Unit test capture");
|
||||
}
|
||||
Reference in New Issue
Block a user