Add RHI vertex and index buffer views
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "fixtures/RHITestFixture.h"
|
||||
#include "XCEngine/RHI/RHIBuffer.h"
|
||||
#include "XCEngine/RHI/RHIResourceView.h"
|
||||
#include "XCEngine/RHI/RHITexture.h"
|
||||
|
||||
@@ -121,6 +122,56 @@ TEST_P(RHITestFixture, Device_CreateUnorderedAccessView) {
|
||||
delete texture;
|
||||
}
|
||||
|
||||
TEST_P(RHITestFixture, Device_CreateVertexBufferView) {
|
||||
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);
|
||||
EXPECT_TRUE(vbv->IsValid());
|
||||
EXPECT_EQ(vbv->GetViewType(), ResourceViewType::VertexBuffer);
|
||||
EXPECT_EQ(vbv->GetDimension(), ResourceViewDimension::Buffer);
|
||||
|
||||
vbv->Shutdown();
|
||||
delete vbv;
|
||||
buffer->Shutdown();
|
||||
delete buffer;
|
||||
}
|
||||
|
||||
TEST_P(RHITestFixture, Device_CreateIndexBufferView) {
|
||||
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);
|
||||
EXPECT_TRUE(ibv->IsValid());
|
||||
EXPECT_EQ(ibv->GetViewType(), ResourceViewType::IndexBuffer);
|
||||
EXPECT_EQ(ibv->GetDimension(), ResourceViewDimension::Buffer);
|
||||
|
||||
ibv->Shutdown();
|
||||
delete ibv;
|
||||
buffer->Shutdown();
|
||||
delete buffer;
|
||||
}
|
||||
|
||||
TEST_P(RHITestFixture, Device_CreateRenderTargetView_Multiple) {
|
||||
TextureDesc texDesc = {};
|
||||
texDesc.width = 256;
|
||||
@@ -244,4 +295,4 @@ TEST_P(RHITestFixture, Device_CreateDepthStencilView_MipLevels) {
|
||||
|
||||
texture->Shutdown();
|
||||
delete texture;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user