add VKMemoryAllocator

This commit is contained in:
2021-03-25 20:00:19 +08:00
parent 4af5735c25
commit e1aaaa0b31
12 changed files with 139 additions and 37 deletions

View File

@@ -1,38 +1,39 @@
#ifndef HGL_GRAPH_VULKAN_ARRAY_BUFFER_INCLUDE
#ifndef HGL_GRAPH_VULKAN_ARRAY_BUFFER_INCLUDE
#define HGL_GRAPH_VULKAN_ARRAY_BUFFER_INCLUDE
#include<hgl/graph/VKBuffer.h>
#include<hgl/graph/VKDevice.h>
namespace hgl
{
namespace graph
{
/**
* GPU<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><br>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><EFBFBD>instance<EFBFBD><EFBFBD>
* GPU数据阵列缓冲区<br>
* 它用于储存多份相同格式的数据,常用于多物件渲染,instance
*/
class GPUArrayBuffer
{
protected:
uint32_t item_size; ///<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
uint32_t alloc_count; ///<<3C>ܼƷ<DCBC><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
uint32_t count; ///<ʵ<><CAB5>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
GPUDevice * device;
GPUBuffer * buf_gpu; ///<ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPU<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t item_size; ///<单个数据长度
uint32_t alloc_count; ///<总计分配的数据个数
uint32_t count; ///<实际使用的数据个数
uint32_t total_bytes; ///<总字节数
GPUBuffer * buf_gpu; ///<实际数据GPU缓冲区
uint8 * buf_cpu;
uint32_t * offset; ///<<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD>Ƶ<EFBFBD>ַ
uint32_t * offset; ///<数据偏移地址
public:
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><ECBAAF>
* @param s <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
* @param c <20><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
*/
GPUArrayBuffer(const uint32_t s=0,const uint32_t c=0);
GPUArrayBuffer(GPUDevice *,const uint32_t s=0,const uint32_t c=0);
virtual ~GPUArrayBuffer();
void Clear(); ///<<EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Clear(); ///<清空缓冲区
bool Init(const uint32_t); ///<初始化并分配空间
};//class GPUArrayBuffer
}//namespace graph
}//namespace hgl