diff --git a/example/Vulkan/VKBuffer.cpp b/example/Vulkan/VKBuffer.cpp index 36fce2b9..cfaf5210 100644 --- a/example/Vulkan/VKBuffer.cpp +++ b/example/Vulkan/VKBuffer.cpp @@ -7,11 +7,18 @@ Buffer::~Buffer() vkFreeMemory(device,mem,nullptr); } -uint8_t *Buffer::Map() +uint8_t *Buffer::Map(uint32_t start,uint32_t size) { uint8_t *p; - if(vkMapMemory(device,mem,0,buffer_info.range,0,(void **)&p)==VK_SUCCESS) + if(start>buffer_info.range + ||start+size>buffer_info.range) + return(nullptr); + + if(start==0&&size==0) + size=buffer_info.range; + + if(vkMapMemory(device,mem,start,size,0,(void **)&p)==VK_SUCCESS) return p; return nullptr; diff --git a/example/Vulkan/VKBuffer.h b/example/Vulkan/VKBuffer.h index b153ac79..26e10f00 100644 --- a/example/Vulkan/VKBuffer.h +++ b/example/Vulkan/VKBuffer.h @@ -26,7 +26,7 @@ public: virtual ~Buffer(); - uint8_t *Map(); + uint8_t *Map(uint32_t start=0,uint32_t size=0); void Unmap(); };//class Buffer VK_NAMESPACE_END