RHI: Fix view type signatures in CommandList abstraction
- Unified RHICommandList interface to use RHIResourceView* for all view types - Fixed OpenGLCommandList override signatures (SetVertexBuffers, SetIndexBuffer, etc.) - Fixed D3D12CommandList by removing duplicate SetVertexBuffer methods - Updated OpenGLCommandList.cpp to match new signatures - Build and all 845 tests pass
This commit is contained in:
@@ -70,9 +70,6 @@ public:
|
||||
void SetRenderTargetsInternal(uint32_t count, ID3D12Resource** renderTargets, ID3D12Resource* depthStencil = nullptr);
|
||||
void SetRenderTargetsHandle(uint32_t count, const D3D12_CPU_DESCRIPTOR_HANDLE* renderTargetHandles, const D3D12_CPU_DESCRIPTOR_HANDLE* depthStencilHandle = nullptr);
|
||||
|
||||
void SetVertexBuffer(uint32_t slot, RHIResourceView* buffer, uint64_t offset) override;
|
||||
void SetVertexBuffer(uint32_t slot, ID3D12Resource* buffer, uint64_t offset, uint32_t stride);
|
||||
void SetVertexBufferInternal(uint32_t slot, ID3D12Resource* buffer, uint64_t offset, uint32_t stride);
|
||||
void SetVertexBuffers(uint32_t startSlot, uint32_t count, RHIResourceView** buffers, const uint64_t* offsets, const uint32_t* strides) override;
|
||||
void SetVertexBuffersInternal(uint32_t startSlot, uint32_t count, const D3D12_VERTEX_BUFFER_VIEW* views);
|
||||
void SetIndexBuffer(RHIResourceView* buffer, uint64_t offset) override;
|
||||
|
||||
@@ -68,7 +68,6 @@ public:
|
||||
void SetGlobalTexture(const char* name, RHIResourceView* texture) override;
|
||||
|
||||
void SetPipelineState(RHIPipelineState* pipelineState) override;
|
||||
void SetVertexBuffer(uint32_t slot, RHIResourceView* buffer, uint64_t offset) override;
|
||||
void SetVertexBuffers(uint32_t startSlot, uint32_t count, RHIResourceView** buffers, const uint64_t* offsets, const uint32_t* strides) override;
|
||||
void SetIndexBuffer(RHIResourceView* buffer, uint64_t offset) override;
|
||||
|
||||
|
||||
@@ -2,12 +2,13 @@
|
||||
|
||||
#include "RHITypes.h"
|
||||
#include "RHIEnums.h"
|
||||
#include "RHIResource.h"
|
||||
#include <string>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace RHI {
|
||||
|
||||
class RHIBuffer {
|
||||
class RHIBuffer : public RHIResource {
|
||||
public:
|
||||
virtual ~RHIBuffer() = default;
|
||||
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
|
||||
#include "RHITypes.h"
|
||||
#include "RHIEnums.h"
|
||||
#include "RHIResource.h"
|
||||
#include "RHIResourceView.h"
|
||||
|
||||
namespace XCEngine {
|
||||
namespace RHI {
|
||||
|
||||
class RHIResourceView;
|
||||
class RHIPipelineState;
|
||||
class RHIShader;
|
||||
|
||||
@@ -83,7 +84,6 @@ public:
|
||||
virtual void SetBlendState(const BlendState& state) = 0;
|
||||
virtual void SetBlendFactor(const float factor[4]) = 0;
|
||||
|
||||
virtual void SetVertexBuffer(uint32_t slot, RHIResourceView* buffer, uint64_t offset) = 0;
|
||||
virtual void SetVertexBuffers(uint32_t startSlot, uint32_t count, RHIResourceView** buffers, const uint64_t* offsets, const uint32_t* strides) = 0;
|
||||
virtual void SetIndexBuffer(RHIResourceView* buffer, uint64_t offset) = 0;
|
||||
|
||||
@@ -102,4 +102,4 @@ public:
|
||||
};
|
||||
|
||||
} // namespace RHI
|
||||
} // namespace XCEngine
|
||||
} // namespace XCEngine
|
||||
|
||||
19
engine/include/XCEngine/RHI/RHIResource.h
Normal file
19
engine/include/XCEngine/RHI/RHIResource.h
Normal file
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include "RHITypes.h"
|
||||
#include "RHIEnums.h"
|
||||
|
||||
namespace XCEngine {
|
||||
namespace RHI {
|
||||
|
||||
class RHIResource {
|
||||
public:
|
||||
virtual ~RHIResource() = default;
|
||||
|
||||
virtual void* GetNativeHandle() = 0;
|
||||
virtual ResourceStates GetState() const = 0;
|
||||
virtual void SetState(ResourceStates state) = 0;
|
||||
};
|
||||
|
||||
} // namespace RHI
|
||||
} // namespace XCEngine
|
||||
@@ -21,5 +21,51 @@ public:
|
||||
virtual Format GetFormat() const = 0;
|
||||
};
|
||||
|
||||
class RHIVertexBufferView : public RHIResourceView {
|
||||
public:
|
||||
virtual ~RHIVertexBufferView() = default;
|
||||
|
||||
virtual uint64_t GetBufferAddress() const = 0;
|
||||
virtual uint32_t GetSize() const = 0;
|
||||
virtual uint32_t GetStride() const = 0;
|
||||
};
|
||||
|
||||
class RHIIndexBufferView : public RHIResourceView {
|
||||
public:
|
||||
virtual ~RHIIndexBufferView() = default;
|
||||
|
||||
virtual uint64_t GetBufferAddress() const = 0;
|
||||
virtual uint32_t GetSize() const = 0;
|
||||
virtual Format GetIndexFormat() const = 0;
|
||||
};
|
||||
|
||||
class RHIRenderTargetView : public RHIResourceView {
|
||||
public:
|
||||
virtual ~RHIRenderTargetView() = default;
|
||||
};
|
||||
|
||||
class RHIDepthStencilView : public RHIResourceView {
|
||||
public:
|
||||
virtual ~RHIDepthStencilView() = default;
|
||||
};
|
||||
|
||||
class RHIShaderResourceView : public RHIResourceView {
|
||||
public:
|
||||
virtual ~RHIShaderResourceView() = default;
|
||||
};
|
||||
|
||||
class RHIUnorderedAccessView : public RHIResourceView {
|
||||
public:
|
||||
virtual ~RHIUnorderedAccessView() = default;
|
||||
};
|
||||
|
||||
class RHIConstantBufferView : public RHIResourceView {
|
||||
public:
|
||||
virtual ~RHIConstantBufferView() = default;
|
||||
|
||||
virtual uint64_t GetBufferAddress() const = 0;
|
||||
virtual uint32_t GetSize() const = 0;
|
||||
};
|
||||
|
||||
} // namespace RHI
|
||||
} // namespace XCEngine
|
||||
} // namespace XCEngine
|
||||
|
||||
@@ -2,12 +2,13 @@
|
||||
|
||||
#include "RHITypes.h"
|
||||
#include "RHIEnums.h"
|
||||
#include "RHIResource.h"
|
||||
#include <string>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace RHI {
|
||||
|
||||
class RHITexture {
|
||||
class RHITexture : public RHIResource {
|
||||
public:
|
||||
virtual ~RHITexture() = default;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user