From 919d2cb14efa9ac14cc00c8b92a4bd3efd1d0794 Mon Sep 17 00:00:00 2001 From: HuYingzhuo Date: Thu, 11 Apr 2019 23:02:02 +0800 Subject: [PATCH] =?UTF-8?q?VKBuffer=E5=A2=9E=E5=BC=BAMap=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/Vulkan/VKBuffer.cpp | 11 +++++++++-- example/Vulkan/VKBuffer.h | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) 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