D3D12: Add Screenshot wrapper overload and document known limitations

- Add D3D12Screenshot::Capture(D3D12Device&, D3D12CommandQueue&, D3D12Texture&, const char*) wrapper overload
- Update minimal integration test to use encapsulated APIs
- Add DescriptorHeap wrapper unit tests
- Document minimal GetBuffer native call as known limitation in TEST_SPEC.md
This commit is contained in:
2026-03-20 17:36:51 +08:00
parent a40544344b
commit 3cd3b04c7e
5 changed files with 113 additions and 35 deletions

View File

@@ -6,7 +6,9 @@
namespace XCEngine {
namespace RHI {
class D3D12Device;
class D3D12CommandQueue;
class D3D12Texture;
class D3D12Screenshot {
public:
@@ -17,6 +19,11 @@ public:
uint32_t width,
uint32_t height);
static bool Capture(D3D12Device& device,
D3D12CommandQueue& commandQueue,
D3D12Texture& texture,
const char* filename);
private:
static bool CopyToReadbackAndSave(ID3D12Device* device,
ID3D12CommandQueue* commandQueue,

View File

@@ -1,4 +1,7 @@
#include "RHI/D3D12/D3D12Screenshot.h"
#include "RHI/D3D12/D3D12Device.h"
#include "RHI/D3D12/D3D12CommandQueue.h"
#include "RHI/D3D12/D3D12Texture.h"
#include "Debug/Logger.h"
#include <d3d12.h>
#include <stdio.h>
@@ -15,6 +18,20 @@ bool D3D12Screenshot::Capture(ID3D12Device* device,
return CopyToReadbackAndSave(device, commandQueue, renderTarget, filename, width, height);
}
bool D3D12Screenshot::Capture(D3D12Device& device,
D3D12CommandQueue& commandQueue,
D3D12Texture& texture,
const char* filename) {
return Capture(
device.GetDevice(),
commandQueue.GetCommandQueue(),
texture.GetResource(),
filename,
texture.GetWidth(),
texture.GetHeight()
);
}
bool D3D12Screenshot::CopyToReadbackAndSave(ID3D12Device* device,
ID3D12CommandQueue* commandQueue,
ID3D12Resource* renderTarget,