c52b4ef35c
修复D3D12SwapChain初始化bug并添加单元测试
...
- 修复Initialize(IDXGIFactory4*, ...)重载缺少m_backBuffers初始化的问题
- 新增test_swap_chain.cpp单元测试文件,包含6个SwapChain测试用例
- 更新unit CMakeLists.txt添加test_swap_chain.cpp和Res路径
2026-03-20 17:07:24 +08:00
dba3dc23f2
重构D3D12集成测试目录结构,每个测试独立子文件夹隔离资源
2026-03-20 16:33:35 +08:00
33e9958751
删除nul测试文件
2026-03-20 16:12:33 +08:00
31273fdac4
docs: restructure test specification into two-level system
...
- tests/TEST_SPEC.md: General test spec for all modules
- tests/RHI/D3D12/TEST_SPEC.md: D3D12-specific spec with CI integration
2026-03-20 03:33:40 +08:00
9ad699cd6f
test: rename unit tests to Component_Category_SubBehavior format, remove Placeholder tests
2026-03-20 03:18:30 +08:00
9c5bd3c33f
docs: add TEST_SPEC.md for D3D12 test规范
2026-03-20 03:14:55 +08:00
b2228db3ee
test: add test improvement plan, update CMakeLists with correct GT_minimal reference
2026-03-20 03:13:24 +08:00
e242b0f5a7
test: register integration tests in CTest with Python wrapper
2026-03-20 03:08:08 +08:00
fae520854e
refactor: reorganize unit tests into separate folder
...
- Move test_*.cpp and fixtures/ to tests/RHI/D3D12/unit/
- Create unit/CMakeLists.txt with proper test configuration
- Simplify parent CMakeLists.txt to use add_subdirectory
- Integration tests remain in integration/ folder
2026-03-20 02:58:33 +08:00
4c6e7af02e
refactor: encapsulate frame fence synchronization in CommandQueue
...
- Add WaitForPreviousFrame() and GetCurrentFrame() to RHICommandQueue interface
- D3D12CommandQueue now manages frame fence internally
- ExecuteCommandLists automatically signals fence after command execution
- OpenGLCommandQueue provides stub implementations for interface compliance
- Minimal test now uses CommandQueue::WaitForPreviousFrame() instead of manual fence
2026-03-20 02:51:34 +08:00
b7d66a09de
fix: replace Sleep with proper fence synchronization in minimal test
2026-03-20 02:49:19 +08:00
77ef74bec6
fix: D3D12 screenshot implementation and tests
2026-03-20 02:35:59 +08:00
a647f5e8ec
修复 D3D12 截图功能:修复 GPU 过载导致的设备移除问题
...
问题根因:
1. 渲染循环帧率过高导致 GPU 过载(TDR)
2. D3D12CommandList::Reset() 未正确调用底层 Reset()
修复内容:
1. 在 Present 后添加 Sleep(10) 延迟防止 GPU 过载
2. 修复 D3D12CommandList::Reset() 正确调用底层 m_commandList->Reset()
3. 在 D3D12CommandList 中存储 CommandAllocator 引用
4. 在 main_minimal.cpp 中添加截图调用逻辑(30帧后截图保存为 minimal.ppm)
修改文件:
- engine/include/XCEngine/RHI/D3D12/D3D12CommandList.h
- engine/src/RHI/D3D12/D3D12CommandList.cpp
- tests/RHI/D3D12/integration/main_minimal.cpp (新增)
2026-03-20 02:25:15 +08:00
f42a0795fb
Add D3D12 test progress report
2026-03-17 04:15:48 +08:00
19b33a3061
Add Phase 4 tests for DescriptorHeap, Shader, RootSignature, PipelineState, Views
...
- DescriptorHeap: CBV_SRV_UAV, Sampler, RTV, DSV, HandleIncrementSize
- Shader: Vertex/Pixel/Compute profiles
- RootSignature: Empty, with CBV parameter
- PipelineState: Graphics/Compute pipeline desc defaults
- Views: RTV, DSV, CBV descriptor heaps, handle increment
- All 54 tests pass
2026-03-17 04:04:57 +08:00
3f8805cde8
Add Phase 3 tests for Buffer and Texture
...
- Buffer: CreateBuffer (Default/Upload Heap), GPU Virtual Address, Map/Unmap, Alignment
- Texture: 2D, 3D, MipLevels, TextureArray
- All 38 tests pass
2026-03-17 04:02:35 +08:00
11ea2a4fc5
Fix GPU state issue - make device non-static per test
...
- Each test now creates its own D3D12 device, command queue, allocator, and command list
- Properly cleanup in TearDown to avoid GPU state issues
- All 29 tests now pass
2026-03-17 03:54:50 +08:00
0049f8334d
Add Phase 2 tests for CommandQueue, CommandAllocator, CommandList
...
- CommandAllocator: Reset, MultipleReset, DifferentTypes
- CommandList: Close, GetDesc
- CommandQueue: GetTimestampFrequency, ExecuteCommandLists
- Note: Some tests fail after ExecuteCommandLists due to GPU state
2026-03-17 03:47:51 +08:00
795cb10183
Add Phase 1 D3D12 tests for Device and Fence
...
- Implement real D3D12 tests for Device (feature level, descriptor handle,
shader model, resource binding tier, tiled resources)
- Implement real D3D12 tests for Fence (create, signal, wait, event)
- Move tests from tests/D3D12_engine/test/ to tests/RHI/D3D12/
- All 22 tests pass
2026-03-17 03:39:27 +08:00