11 #ifndef hifi_gpu_vk_VKBuffer_h
12 #define hifi_gpu_vk_VKBuffer_h
14 #include "VKForward.h"
17 namespace gpu {
namespace vk {
19 class VKBuffer :
public VKObject<gpu::Buffer> {
21 static VKBuffer* sync(VKBackend& backend,
const gpu::Buffer& buffer,
bool transfer =
true);
22 static VkBuffer getBuffer(VKBackend& backend,
const gpu::Buffer& buffer);
26 void transferOnly(VKBackend &backend);
29 void transferToStaging(VKBackend &backend);
33 void transferWithBarrier(VKBackend &backend, VkCommandBuffer commandBuffer);
38 void transferWithDelayedBarrier(VKBackend &backend, VkCommandBuffer commandBuffer);
42 VkBuffer buffer{ VK_NULL_HANDLE };
43 vks::Allocation allocation;
44 VkBuffer stagingBuffer{ VK_NULL_HANDLE };
45 vks::Allocation stagingAllocation;
48 VKBuffer(VKBackend& backend,
const gpu::Buffer& buffer);
49 const Stamp _stamp{ 0 };
53 void incrementCount(VKBackend& backend);
55 void incrementTransferCount(VKBackend& backend,
size_t transferSize);
58 std::vector<uint8_t> _localData;