Return true if buffer resized

This commit is contained in:
Benau 2022-10-10 10:26:05 +08:00
parent e9be8d91ef
commit f85f631c4b
2 changed files with 11 additions and 8 deletions

View File

@ -137,7 +137,7 @@ void GEVulkanDynamicBuffer::destroy()
} // destroy } // destroy
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
void GEVulkanDynamicBuffer::setCurrentData(const std::vector< bool GEVulkanDynamicBuffer::setCurrentData(const std::vector<
std::pair<void*, size_t> >& data, std::pair<void*, size_t> >& data,
VkCommandBuffer custom_cmd) VkCommandBuffer custom_cmd)
{ {
@ -146,7 +146,7 @@ void GEVulkanDynamicBuffer::setCurrentData(const std::vector<
size_t size = 0; size_t size = 0;
for (auto& p : data) for (auto& p : data)
size += p.second; size += p.second;
resizeIfNeeded(size); bool ret = resizeIfNeeded(size);
m_real_size = size; m_real_size = size;
unsigned cur_frame = getVKDriver()->getCurrentFrame(); unsigned cur_frame = getVKDriver()->getCurrentFrame();
@ -154,7 +154,7 @@ void GEVulkanDynamicBuffer::setCurrentData(const std::vector<
cur_frame = 0; cur_frame = 0;
if (size == 0 || m_mapped_addr.empty() || m_mapped_addr[cur_frame] == NULL) if (size == 0 || m_mapped_addr.empty() || m_mapped_addr[cur_frame] == NULL)
return; return ret;
uint8_t* addr = (uint8_t*)m_mapped_addr[cur_frame]; uint8_t* addr = (uint8_t*)m_mapped_addr[cur_frame];
for (auto& p : data) for (auto& p : data)
@ -176,10 +176,11 @@ void GEVulkanDynamicBuffer::setCurrentData(const std::vector<
m_host_buffer[cur_frame], m_local_buffer[cur_local_frame], 1, m_host_buffer[cur_frame], m_local_buffer[cur_local_frame], 1,
&copy_region); &copy_region);
} }
return ret;
} // setCurrentData } // setCurrentData
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
void GEVulkanDynamicBuffer::resizeIfNeeded(size_t new_size) bool GEVulkanDynamicBuffer::resizeIfNeeded(size_t new_size)
{ {
if (new_size > m_size) if (new_size > m_size)
{ {
@ -189,7 +190,9 @@ void GEVulkanDynamicBuffer::resizeIfNeeded(size_t new_size)
initHostBuffer(i, m_local_buffer.size() == 0); initHostBuffer(i, m_local_buffer.size() == 0);
for (unsigned i = 0; i < m_local_buffer.size(); i++) for (unsigned i = 0; i < m_local_buffer.size(); i++)
initLocalBuffer(i); initLocalBuffer(i);
return true;
} }
return false;
} // resizeIfNeeded } // resizeIfNeeded
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@ -41,16 +41,16 @@ public:
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
~GEVulkanDynamicBuffer(); ~GEVulkanDynamicBuffer();
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
void setCurrentData(const std::vector<std::pair<void*, size_t> >& data, bool setCurrentData(const std::vector<std::pair<void*, size_t> >& data,
VkCommandBuffer custom_cmd = VK_NULL_HANDLE); VkCommandBuffer custom_cmd = VK_NULL_HANDLE);
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
void setCurrentData(void* data, size_t size, bool setCurrentData(void* data, size_t size,
VkCommandBuffer custom_cmd = VK_NULL_HANDLE) VkCommandBuffer custom_cmd = VK_NULL_HANDLE)
{ setCurrentData({{ data, size }}, custom_cmd); } { return setCurrentData({{ data, size }}, custom_cmd); }
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
VkBuffer getCurrentBuffer() const; VkBuffer getCurrentBuffer() const;
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
void resizeIfNeeded(size_t new_size); bool resizeIfNeeded(size_t new_size);
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
size_t getSize() const { return m_size; } size_t getSize() const { return m_size; }
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------