optimized VKArrayBuffer
This commit is contained in:
@@ -23,11 +23,10 @@ namespace hgl
|
||||
VkBufferUsageFlags buffer_usage_flags;
|
||||
|
||||
uint item_length; ///<单个数据长度
|
||||
uint unit_size;
|
||||
|
||||
VKMemoryAllocator *vk_ma;
|
||||
|
||||
uint32_t offset_alignment;
|
||||
|
||||
Collection *coll;
|
||||
|
||||
protected:
|
||||
@@ -35,13 +34,17 @@ namespace hgl
|
||||
void * Map(const uint32 start,const uint32 count);
|
||||
void Flush(const uint32 count);
|
||||
|
||||
private:
|
||||
|
||||
GPUArrayBuffer(GPUDevice *dev,const VkBufferUsageFlags &flag,const uint il,const uint us);
|
||||
|
||||
friend class GPUDevice;
|
||||
|
||||
public:
|
||||
|
||||
GPUArrayBuffer(GPUDevice *dev,VkBufferUsageFlags flags,const uint il,VkDescriptorType dt);
|
||||
virtual ~GPUArrayBuffer();
|
||||
|
||||
const uint32_t GetOffsetAlignment()const{return offset_alignment;}
|
||||
const uint32_t GetUnitSize()const;
|
||||
const uint32_t GetUnitSize()const{return unit_size;}
|
||||
DeviceBuffer * GetBuffer();
|
||||
|
||||
uint32 Alloc(const uint32 max_count); ///<预分配空间
|
||||
@@ -56,7 +59,7 @@ namespace hgl
|
||||
|
||||
if(!ptr)return(false);
|
||||
|
||||
ubo_access->Start((uchar *)ptr,offset_alignment,count);
|
||||
ubo_access->Start((uchar *)ptr,start,count);
|
||||
return(true);
|
||||
}
|
||||
|
||||
|
@@ -22,6 +22,7 @@ VK_NAMESPACE_BEGIN
|
||||
class TileData;
|
||||
class TileFont;
|
||||
class FontSource;
|
||||
class GPUArrayBuffer;
|
||||
|
||||
/*
|
||||
* GPU设备创建信息
|
||||
@@ -148,6 +149,9 @@ public: //Buffer相关
|
||||
|
||||
#undef CREATE_BUFFER_OBJECT
|
||||
|
||||
GPUArrayBuffer *CreateUBO(const VkDeviceSize &uint_size);
|
||||
GPUArrayBuffer *CreateSSBO(const VkDeviceSize &uint_size);
|
||||
|
||||
public: //Image
|
||||
|
||||
VkImage CreateImage (VkImageCreateInfo *);
|
||||
|
@@ -25,7 +25,7 @@ public:
|
||||
|
||||
const uint32_t GetBufferUsageFlagBits ()const{return buffer_usage_flag_bits;}
|
||||
|
||||
DeviceBuffer * GetBuffer (){return gpu_buffer;}
|
||||
DeviceBuffer * GetBuffer (){return gpu_buffer;}
|
||||
|
||||
public:
|
||||
|
||||
|
Reference in New Issue
Block a user