added VKBufferMap.cpp/.h

This commit is contained in:
hyzboy 2024-06-01 12:08:49 +08:00
parent 8788b3dd6a
commit 16ae849809
4 changed files with 74 additions and 3 deletions

View File

@ -1,11 +1,10 @@
#pragma once
#include<hgl/graph/VertexAttribDataAccess.h>
#include<hgl/graph/VKBufferMap.h>
#include<hgl/graph/VKShaderModule.h>
#include<hgl/graph/VKVertexAttribBuffer.h>
VK_NAMESPACE_BEGIN
/**
*
*/
@ -232,4 +231,4 @@ using IBMapU8=IBMap<uint8>;
using IBMapU16=IBMap<uint16>;
using IBMapU32=IBMap<uint32>;
VK_NAMESPACE_END
VK_NAMESPACE_END

View File

@ -0,0 +1,27 @@
#pragma once
#include<hgl/graph/VK.h>
#include<hgl/graph/VertexAttribDataAccess.h>
VK_NAMESPACE_BEGIN
class VKBufferMap
{
protected:
DeviceBuffer *buffer;
VkDeviceSize offset;
VkDeviceSize size;
void *map_ptr;
public:
VKBufferMap(DeviceBuffer *buf_ptr,VkDeviceSize off,VkDeviceSize s);
virtual ~VKBufferMap();
const bool IsValid()const{ return buffer; }
void *Map();
void Unmap();
};//class VKBufferMap
VK_NAMESPACE_END

View File

@ -121,9 +121,11 @@ SET(VK_MEMORY_SOURCE ${SG_INCLUDE_PATH}/VKMemory.h
${SG_INCLUDE_PATH}/VKBuffer.h
${SG_INCLUDE_PATH}/VKIndexBuffer.h
${SG_INCLUDE_PATH}/VKArrayBuffer.h
${SG_INCLUDE_PATH}/VKBufferMap.h
Vulkan/VKMemory.cpp
Vulkan/VKMemoryAllocator.cpp
Vulkan/VKBuffer.cpp
Vulkan/VKBufferMap.cpp
Vulkan/VKArrayBuffer.cpp
)

View File

@ -0,0 +1,43 @@
#include<hgl/graph/VKBufferMap.h>
#include<hgl/graph/VKVertexAttribBuffer.h>
VK_NAMESPACE_BEGIN
VKBufferMap::VKBufferMap(DeviceBuffer *buf,VkDeviceSize off,VkDeviceSize s)
{
buffer=buf;
offset=off;
size=s;
map_ptr=nullptr;
}
VKBufferMap::~VKBufferMap()
{
if(map_ptr)
buffer->DeviceBuffer::Unmap();
}
void *VKBufferMap::Map()
{
if(map_ptr)
return(map_ptr);
if(!buffer)
return(nullptr);
map_ptr=buffer->DeviceBuffer::Map(offset,size);
return map_ptr;
}
void VKBufferMap::Unmap()
{
if(map_ptr)
{
buffer->DeviceBuffer::Unmap();
map_ptr=nullptr;
}
}
VK_NAMESPACE_END