Add RHI vertex and index buffer views

This commit is contained in:
2026-03-25 23:07:22 +08:00
parent 268daf7bc9
commit aaf9cce418
14 changed files with 342 additions and 19 deletions

View File

@@ -144,6 +144,73 @@ TEST_P(RHITestFixture, CommandList_DrawIndexed) {
delete cmdList;
}
TEST_P(RHITestFixture, CommandList_SetVertexBuffers_WithRealView) {
BufferDesc bufferDesc = {};
bufferDesc.size = 256;
bufferDesc.stride = 32;
bufferDesc.bufferType = static_cast<uint32_t>(BufferType::Vertex);
RHIBuffer* buffer = GetDevice()->CreateBuffer(bufferDesc);
ASSERT_NE(buffer, nullptr);
ResourceViewDesc viewDesc = {};
viewDesc.dimension = ResourceViewDimension::Buffer;
viewDesc.structureByteStride = 32;
RHIResourceView* vbv = GetDevice()->CreateVertexBufferView(buffer, viewDesc);
ASSERT_NE(vbv, nullptr);
CommandListDesc cmdDesc = {};
cmdDesc.commandListType = static_cast<uint32_t>(CommandQueueType::Direct);
RHICommandList* cmdList = GetDevice()->CreateCommandList(cmdDesc);
ASSERT_NE(cmdList, nullptr);
uint64_t offsets[] = { 0 };
uint32_t strides[] = { 32 };
cmdList->Reset();
cmdList->SetVertexBuffers(0, 1, &vbv, offsets, strides);
cmdList->Close();
cmdList->Shutdown();
delete cmdList;
vbv->Shutdown();
delete vbv;
buffer->Shutdown();
delete buffer;
}
TEST_P(RHITestFixture, CommandList_SetIndexBuffer_WithRealView) {
BufferDesc bufferDesc = {};
bufferDesc.size = 256;
bufferDesc.stride = sizeof(uint32_t);
bufferDesc.bufferType = static_cast<uint32_t>(BufferType::Index);
RHIBuffer* buffer = GetDevice()->CreateBuffer(bufferDesc);
ASSERT_NE(buffer, nullptr);
ResourceViewDesc viewDesc = {};
viewDesc.dimension = ResourceViewDimension::Buffer;
viewDesc.format = static_cast<uint32_t>(Format::R32_UInt);
RHIResourceView* ibv = GetDevice()->CreateIndexBufferView(buffer, viewDesc);
ASSERT_NE(ibv, nullptr);
CommandListDesc cmdDesc = {};
cmdDesc.commandListType = static_cast<uint32_t>(CommandQueueType::Direct);
RHICommandList* cmdList = GetDevice()->CreateCommandList(cmdDesc);
ASSERT_NE(cmdList, nullptr);
cmdList->Reset();
cmdList->SetIndexBuffer(ibv, 0);
cmdList->Close();
cmdList->Shutdown();
delete cmdList;
ibv->Shutdown();
delete ibv;
buffer->Shutdown();
delete buffer;
}
TEST_P(RHITestFixture, CommandList_SetStencilRef) {
CommandListDesc cmdDesc = {};
cmdDesc.commandListType = static_cast<uint32_t>(CommandQueueType::Direct);
@@ -454,4 +521,3 @@ TEST_P(RHITestFixture, CommandList_SetShader) {
shader->Shutdown();
delete shader;
}