Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
skia
src
gpu
graphite
vk
VulkanBuffer.h
Go to the documentation of this file.
1
/*
2
* Copyright 2022 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 skgpu_graphite_VulkanBuffer_DEFINED
9
#define skgpu_graphite_VulkanBuffer_DEFINED
10
11
#include "
include/gpu/vk/VulkanMemoryAllocator.h
"
12
#include "
src/gpu/graphite/Buffer.h
"
13
#include "
src/gpu/graphite/vk/VulkanSharedContext.h
"
14
15
namespace
skgpu::graphite
{
16
17
class
VulkanCommandBuffer;
18
19
class
VulkanBuffer
final :
public
Buffer
{
20
public
:
21
static
sk_sp<Buffer>
Make
(
const
VulkanSharedContext
*,
22
size_t
,
23
BufferType
,
24
AccessPattern
,
25
std::string_view label);
26
void
freeGpuData
()
override
;
27
VkBuffer
vkBuffer
()
const
{
return
fBuffer; }
28
VkBufferUsageFlags
bufferUsageFlags
()
const
{
return
fBufferUsageFlags; }
29
30
void
setBufferAccess
(
VulkanCommandBuffer
*
buffer
,
31
VkAccessFlags
dstAccessMask,
32
VkPipelineStageFlags
dstStageMask)
const
;
33
34
private
:
35
VulkanBuffer
(
const
VulkanSharedContext
*,
36
size_t
,
37
BufferType
,
38
AccessPattern
,
39
VkBuffer,
40
const
skgpu::VulkanAlloc
&,
41
VkBufferUsageFlags
,
42
std::string_view label);
43
44
void
onMap
()
override
;
45
void
onUnmap
()
override
;
46
47
void
internalMap(
size_t
readOffset,
size_t
readSize);
48
void
internalUnmap(
size_t
flushOffset,
size_t
flushSize);
49
50
bool
isMappable()
const
{
return
fAlloc.
fFlags
&
skgpu::VulkanAlloc::kMappable_Flag
; }
51
52
const
VulkanSharedContext* vulkanSharedContext()
const
{
53
return
static_cast<
const
VulkanSharedContext*
>
(this->
sharedContext
());
54
}
55
56
static
VkPipelineStageFlags
AccessMaskToPipelineSrcStageFlags(
const
VkAccessFlags
accessFlags);
57
58
VkBuffer fBuffer;
59
skgpu::VulkanAlloc
fAlloc;
60
const
VkBufferUsageFlags
fBufferUsageFlags;
61
mutable
VkAccessFlags
fCurrentAccessMask = 0;
62
63
/**
64
* Buffers can either be mapped for:
65
* 1) Reading from the CPU (The effect of writing would be undefined)
66
* 2) Writing from the CPU (The existing contents are discarded. Even in the case where the
67
* initial contents are overwritten, CPU reads should be avoided for performance reasons as
68
* the memory may not be cached).
69
*/
70
bool
fBufferUsedForCPURead =
false
;
71
};
72
73
}
// namespace skgpu::graphite
74
75
#endif
// skgpu_graphite_VulkanBuffer_DEFINED
76
Buffer.h
VulkanMemoryAllocator.h
VulkanSharedContext.h
sk_sp
Definition
SkRefCnt.h:220
skgpu::graphite::Buffer
Definition
Buffer.h:17
skgpu::graphite::Resource::sharedContext
const SharedContext * sharedContext() const
Definition
Resource.h:187
skgpu::graphite::VulkanBuffer
Definition
VulkanBuffer.h:19
skgpu::graphite::VulkanBuffer::bufferUsageFlags
VkBufferUsageFlags bufferUsageFlags() const
Definition
VulkanBuffer.h:28
skgpu::graphite::VulkanBuffer::vkBuffer
VkBuffer vkBuffer() const
Definition
VulkanBuffer.h:27
skgpu::graphite::VulkanBuffer::freeGpuData
void freeGpuData() override
Definition
VulkanBuffer.cpp:166
skgpu::graphite::VulkanBuffer::Make
static sk_sp< Buffer > Make(const VulkanSharedContext *, size_t, BufferType, AccessPattern, std::string_view label)
Definition
VulkanBuffer.cpp:17
skgpu::graphite::VulkanBuffer::setBufferAccess
void setBufferAccess(VulkanCommandBuffer *buffer, VkAccessFlags dstAccessMask, VkPipelineStageFlags dstStageMask) const
Definition
VulkanBuffer.cpp:262
skgpu::graphite::VulkanBuffer::onUnmap
void onUnmap() override
Definition
VulkanBuffer.cpp:256
skgpu::graphite::VulkanBuffer::onMap
void onMap() override
Definition
VulkanBuffer.cpp:249
skgpu::graphite::VulkanCommandBuffer
Definition
VulkanCommandBuffer.h:25
skgpu::graphite::VulkanSharedContext
Definition
VulkanSharedContext.h:28
buffer
static const uint8_t buffer[]
Definition
fl_pixel_buffer_texture_test.cc:44
skgpu::graphite
Definition
BoundsManagerBench.cpp:27
skgpu::graphite::BufferType
BufferType
Definition
ResourceTypes.h:56
skgpu::graphite::AccessPattern
AccessPattern
Definition
ResourceTypes.h:100
skgpu::VulkanAlloc
Definition
VulkanTypes.h:36
skgpu::VulkanAlloc::fFlags
uint32_t fFlags
Definition
VulkanTypes.h:41
skgpu::VulkanAlloc::kMappable_Flag
@ kMappable_Flag
Definition
VulkanTypes.h:47
VkPipelineStageFlags
VkFlags VkPipelineStageFlags
Definition
vulkan_core.h:2470
VkAccessFlags
VkFlags VkAccessFlags
Definition
vulkan_core.h:2235
VkBufferUsageFlags
VkFlags VkBufferUsageFlags
Definition
vulkan_core.h:2582
Generated on Fri Apr 26 2024 06:17:20 for Flutter Engine by
1.9.8