Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
GrVkBuffer.h
Go to the documentation of this file.
1/*
2 * Copyright 2021 Google LLC
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef GrVkBuffer_DEFINED
9#define GrVkBuffer_DEFINED
10
13
15class GrVkGpu;
16
17class GrVkBuffer : public GrGpuBuffer {
18public:
19 static sk_sp<GrVkBuffer> Make(GrVkGpu* gpu,
20 size_t size,
21 GrGpuBufferType bufferType,
23
24 VkBuffer vkBuffer() const { return fBuffer; }
25
26 void addMemoryBarrier(VkAccessFlags srcAccessMask,
27 VkAccessFlags dstAccesMask,
28 VkPipelineStageFlags srcStageMask,
29 VkPipelineStageFlags dstStageMask,
30 bool byRegion) const;
31
32 // If the buffer is a uniform buffer, return the descriptor set for that buffer. It is not valid
33 // to call this on non uniform buffers.
34 const VkDescriptorSet* uniformDescriptorSet() const;
35
36private:
38 size_t sizeInBytes,
39 GrGpuBufferType bufferType,
41 VkBuffer buffer,
42 const skgpu::VulkanAlloc& alloc,
44 std::string_view label);
45
46 bool isVkMappable() const { return fAlloc.fFlags & skgpu::VulkanAlloc::kMappable_Flag; }
47
48 bool vkIsMapped() const { return SkToBool(fMapPtr); }
49 void vkMap(size_t readOffset, size_t readSize);
50 void vkUnmap(size_t flushOffset, size_t flushSize);
51 void copyCpuDataToGpuBuffer(const void* srcData, size_t offset, size_t size);
52
53 void onMap(MapType) override;
54 void onUnmap(MapType) override;
55 bool onClearToZero() override;
56 bool onUpdateData(const void* src, size_t offset, size_t size, bool preserve) override;
57
58 void vkRelease();
59
60 void onAbandon() override;
61 void onRelease() override;
62
63 GrVkGpu* getVkGpu() const;
64
65 VkBuffer fBuffer;
66 skgpu::VulkanAlloc fAlloc;
67
68 const GrVkDescriptorSet* fUniformDescriptorSet;
69
70 using INHERITED = GrGpuBuffer;
71};
72
73#endif
GrGpuBufferType
GrAccessPattern
static constexpr bool SkToBool(const T &x)
Definition SkTo.h:35
size_t size() const final
Definition GrGpuBuffer.h:34
void * fMapPtr
GrAccessPattern accessPattern() const
Definition GrGpuBuffer.h:32
static sk_sp< GrVkBuffer > Make(GrVkGpu *gpu, size_t size, GrGpuBufferType bufferType, GrAccessPattern accessPattern)
bool onUpdateData(const void *src, size_t offset, size_t size, bool preserve) override
void onMap(MapType) override
void addMemoryBarrier(VkAccessFlags srcAccessMask, VkAccessFlags dstAccesMask, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, bool byRegion) const
bool onClearToZero() override
const VkDescriptorSet * uniformDescriptorSet() const
VkBuffer vkBuffer() const
Definition GrVkBuffer.h:24
void onUnmap(MapType) override
void onRelease() override
void onAbandon() override
static const uint8_t buffer[]
Point offset
VkFlags VkPipelineStageFlags
VkFlags VkAccessFlags