override Map/Flush/Write functions in IndexBuffer/VAB

This commit is contained in:
hyzboy 2024-05-23 13:59:48 +08:00
parent cfd67e1a42
commit 419e0e2574
5 changed files with 25 additions and 7 deletions

View File

@ -42,11 +42,11 @@ public:
void * Map () {return buf.memory->Map();}
virtual void * Map (VkDeviceSize start,VkDeviceSize size) {return buf.memory->Map(start,size);}
void Unmap () {return buf.memory->Unmap();}
void Flush (VkDeviceSize start,VkDeviceSize size) {return buf.memory->Flush(start,size);}
void Flush (VkDeviceSize size) {return buf.memory->Flush(size);}
virtual void Flush (VkDeviceSize start,VkDeviceSize size) {return buf.memory->Flush(start,size);}
virtual void Flush (VkDeviceSize size) {return buf.memory->Flush(size);}
bool Write (const void *ptr,uint32_t start,uint32_t size) {return buf.memory->Write(ptr,start,size);}
bool Write (const void *ptr,uint32_t size) {return buf.memory->Write(ptr,0,size);}
virtual bool Write (const void *ptr,uint32_t start,uint32_t size) {return buf.memory->Write(ptr,start,size);}
virtual bool Write (const void *ptr,uint32_t size) {return buf.memory->Write(ptr,0,size);}
bool Write (const void *ptr) {return buf.memory->Write(ptr);}
};//class DeviceBuffer
VK_NAMESPACE_END

View File

@ -35,6 +35,15 @@ namespace hgl
const IndexType GetType ()const{return index_type;}
const uint GetStride ()const{return stride;}
const uint32 GetCount ()const{return count;}
public:
void * Map (VkDeviceSize start,VkDeviceSize size) override {return DeviceBuffer::Map(start*stride,size*stride);}
void Flush (VkDeviceSize start,VkDeviceSize size) override {return DeviceBuffer::Flush(start*stride,size*stride); }
void Flush (VkDeviceSize size) override {return DeviceBuffer::Flush(size*stride);}
bool Write (const void *ptr,uint32_t start,uint32_t size) override {return DeviceBuffer::Write(ptr,start*stride,size*stride);}
bool Write (const void *ptr,uint32_t size) override {return DeviceBuffer::Write(ptr,0,size*stride);}
};//class IndexBuffer:public DeviceBuffer
}//namespace graph
}//namespace hgl

View File

@ -33,6 +33,15 @@ namespace hgl
const uint32_t GetCount ()const { return count; }
const VkDeviceSize GetBytes()const { return stride*count; }
public:
void * Map (VkDeviceSize start,VkDeviceSize size) override {return DeviceBuffer::Map(start*stride,size*stride);}
void Flush (VkDeviceSize start,VkDeviceSize size) override {return DeviceBuffer::Flush(start*stride,size*stride); }
void Flush (VkDeviceSize size) override {return DeviceBuffer::Flush(size*stride);}
bool Write (const void *ptr,uint32_t start,uint32_t size) override {return DeviceBuffer::Write(ptr,start*stride,size*stride);}
bool Write (const void *ptr,uint32_t size) override {return DeviceBuffer::Write(ptr,0,size*stride);}
};//class VertexAttribBuffer:public DeviceBuffer
using VAB=VertexAttribBuffer;

View File

@ -84,7 +84,7 @@ void RenderL2WBuffer::WriteNode(RenderNode *render_node,const uint count)
for(uint col=0;col<4;col++)
{
tp=(glm::vec4 *)(l2w_vbo[col]->Map());
tp=(glm::vec4 *)(l2w_vbo[col]->DeviceBuffer::Map());
rn=render_node;
@ -172,7 +172,7 @@ void RenderMIBuffer::WriteNode(RenderNode *render_node,const uint count,const Ma
mi_data_buffer->Unmap();
uint16 *idp=(uint16 *)(mi_vab->Map());
uint16 *idp=(uint16 *)(mi_vab->DeviceBuffer::Map());
{
rn=render_node;

View File

@ -51,7 +51,7 @@ void *DeviceMemory::Map()
void *DeviceMemory::Map(const VkDeviceSize offset,const VkDeviceSize size)
{
if(offset<0||offset+size>=req.size)
if(offset<0||offset+size>req.size)
return(nullptr);
void *result;