MCPcopy Create free account
hub / github.com/RavEngine/RavEngine / WriteBuffer

Method WriteBuffer

deps/LLGL/sources/Renderer/Vulkan/VKRenderSystem.cpp:195–225  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

193}
194
195void VKRenderSystem::WriteBuffer(Buffer& dstBuffer, std::uint64_t dstOffset, const void* data, std::uint64_t dataSize)
196{
197 auto& bufferVK = LLGL_CAST(VKBuffer&, dstBuffer);
198
199 if (bufferVK.GetStagingVkBuffer() != VK_NULL_HANDLE)
200 {
201 /* Copy data to staging buffer memory */
202 device_.WriteBuffer(bufferVK.GetStagingDeviceBuffer(), data, dataSize, dstOffset);
203
204 /* Copy staging buffer into hardware buffer */
205 device_.CopyBuffer(bufferVK.GetStagingVkBuffer(), bufferVK.GetVkBuffer(), dataSize, dstOffset, dstOffset);
206 }
207 else
208 {
209 /* Create staging buffer */
210 VkBufferCreateInfo stagingCreateInfo;
211 BuildVkBufferCreateInfo(
212 stagingCreateInfo,
213 dataSize,
214 (VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT)
215 );
216
217 auto stagingBuffer = CreateStagingBuffer(stagingCreateInfo, data, dataSize);
218
219 /* Copy staging buffer into hardware buffer */
220 device_.CopyBuffer(stagingBuffer.GetVkBuffer(), bufferVK.GetVkBuffer(), dataSize, 0, dstOffset);
221
222 /* Release device memory region of staging buffer */
223 stagingBuffer.ReleaseMemoryRegion(*deviceMemoryMngr_);
224 }
225}
226
227void* VKRenderSystem::MapBuffer(Buffer& buffer, const CPUAccess access)
228{

Callers 1

CreateStagingBufferMethod · 0.45

Calls 5

BuildVkBufferCreateInfoFunction · 0.85
GetStagingVkBufferMethod · 0.80
CopyBufferMethod · 0.45
GetVkBufferMethod · 0.45
ReleaseMemoryRegionMethod · 0.45

Tested by

no test coverage detected