Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
skia
src
gpu
ganesh
GrStagingBufferManager.h
Go to the documentation of this file.
1
/*
2
* Copyright 2020 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 GrStagingBufferManager_DEFINED
9
#define GrStagingBufferManager_DEFINED
10
11
#include "
include/core/SkRefCnt.h
"
12
#include "
src/gpu/ganesh/GrGpuBuffer.h
"
13
#include <vector>
14
15
class
GrGpu
;
16
17
class
GrStagingBufferManager
{
18
public
:
19
GrStagingBufferManager
(
GrGpu
* gpu) : fGpu(gpu) {}
20
21
struct
Slice
{
22
Slice
() {}
23
Slice
(
GrGpuBuffer
*
buffer
,
size_t
offset
,
void
* offsetMapPtr)
24
:
fBuffer
(
buffer
),
fOffset
(
offset
),
fOffsetMapPtr
(offsetMapPtr) {}
25
GrGpuBuffer
*
fBuffer
=
nullptr
;
26
size_t
fOffset
= 0;
27
void
*
fOffsetMapPtr
=
nullptr
;
28
};
29
30
Slice
allocateStagingBufferSlice
(
size_t
size,
size_t
requiredAlignment = 1);
31
32
// This call is used to move all the buffers off of the manager and to backend gpu by calling
33
// the virtual GrGpu::takeOwnershipOfBuffer on each buffer. This is called during
34
// submitToGpu. It is up to the backend to take refs to the buffers in their implemented
35
// takeOwnershipOfBuffer implementation if they need to. After this call returns the
36
// manager will have released all refs to its buffers.
37
void
detachBuffers
();
38
39
bool
hasBuffers
() {
return
!fBuffers.empty(); }
40
41
void
reset
() {
42
for
(
size_t
i = 0; i < fBuffers.size(); ++i) {
43
fBuffers[i].fBuffer->unmap();
44
}
45
fBuffers.clear();
46
}
47
48
private
:
49
struct
StagingBuffer {
50
StagingBuffer(
sk_sp<GrGpuBuffer>
buffer
,
void
* mapPtr)
51
: fBuffer(
std
::move(
buffer
))
52
, fMapPtr(mapPtr) {}
53
54
sk_sp<GrGpuBuffer>
fBuffer;
55
void
* fMapPtr;
56
size_t
fOffset = 0;
57
58
size_t
remaining() {
return
fBuffer->size() - fOffset; }
59
};
60
61
std::vector<StagingBuffer> fBuffers;
62
GrGpu
* fGpu;
63
};
64
65
#endif
66
GrGpuBuffer.h
SkRefCnt.h
GrGpuBuffer
Definition
GrGpuBuffer.h:24
GrGpu
Definition
GrGpu.h:62
GrStagingBufferManager
Definition
GrStagingBufferManager.h:17
GrStagingBufferManager::GrStagingBufferManager
GrStagingBufferManager(GrGpu *gpu)
Definition
GrStagingBufferManager.h:19
GrStagingBufferManager::reset
void reset()
Definition
GrStagingBufferManager.h:41
GrStagingBufferManager::detachBuffers
void detachBuffers()
Definition
GrStagingBufferManager.cpp:58
GrStagingBufferManager::hasBuffers
bool hasBuffers()
Definition
GrStagingBufferManager.h:39
GrStagingBufferManager::allocateStagingBufferSlice
Slice allocateStagingBufferSlice(size_t size, size_t requiredAlignment=1)
Definition
GrStagingBufferManager.cpp:15
sk_sp
Definition
SkRefCnt.h:220
buffer
static const uint8_t buffer[]
Definition
fl_pixel_buffer_texture_test.cc:44
std
Definition
ref_ptr.h:256
offset
Point offset
Definition
stroke_path_geometry.cc:256
GrStagingBufferManager::Slice
Definition
GrStagingBufferManager.h:21
GrStagingBufferManager::Slice::fOffset
size_t fOffset
Definition
GrStagingBufferManager.h:26
GrStagingBufferManager::Slice::Slice
Slice(GrGpuBuffer *buffer, size_t offset, void *offsetMapPtr)
Definition
GrStagingBufferManager.h:23
GrStagingBufferManager::Slice::fOffsetMapPtr
void * fOffsetMapPtr
Definition
GrStagingBufferManager.h:27
GrStagingBufferManager::Slice::Slice
Slice()
Definition
GrStagingBufferManager.h:22
GrStagingBufferManager::Slice::fBuffer
GrGpuBuffer * fBuffer
Definition
GrStagingBufferManager.h:25
Generated on Fri Apr 26 2024 06:17:05 for Flutter Engine by
1.9.8