Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Private Member Functions | List of all members
skgpu::graphite::MtlBuffer Class Reference

#include <MtlBuffer.h>

Inheritance diagram for skgpu::graphite::MtlBuffer:
skgpu::graphite::Buffer skgpu::graphite::Resource

Public Member Functions

id< MTLBuffer > mtlBuffer () const
 
- Public Member Functions inherited from skgpu::graphite::Buffer
size_t size () const
 
void * map ()
 
void asyncMap (GpuFinishedProc=nullptr, GpuFinishedContext=nullptr)
 
void unmap ()
 
bool isMapped () const
 
virtual bool isUnmappable () const
 
const char * getResourceType () const override
 
- Public Member Functions inherited from skgpu::graphite::Resource
 Resource (const Resource &)=delete
 
 Resource (Resource &&)=delete
 
Resourceoperator= (const Resource &)=delete
 
Resourceoperator= (Resource &&)=delete
 
void ref () const
 
void unref () const
 
void refCommandBuffer () const
 
void unrefCommandBuffer () const
 
Ownership ownership () const
 
skgpu::Budgeted budgeted () const
 
size_t gpuMemorySize () const
 
UniqueID uniqueID () const
 
std::string getLabel () const
 
void setLabel (std::string_view label)
 
bool wasDestroyed () const
 
const GraphiteResourceKeykey () const
 
void setKey (const GraphiteResourceKey &key)
 
void dumpMemoryStatistics (SkTraceMemoryDump *traceMemoryDump) const
 
virtual void prepareForReturnToCache (const std::function< void()> &takeRef)
 

Static Public Member Functions

static sk_sp< BufferMake (const MtlSharedContext *, size_t size, BufferType type, AccessPattern, std::string_view label)
 

Private Member Functions

void onMap () override
 
void onUnmap () override
 
void freeGpuData () override
 

Additional Inherited Members

- Protected Member Functions inherited from skgpu::graphite::Buffer
 Buffer (const SharedContext *sharedContext, size_t size, std::string_view label, bool commandBufferRefsAsUsageRefs=false)
 
- Protected Member Functions inherited from skgpu::graphite::Resource
 Resource (const SharedContext *, Ownership, skgpu::Budgeted, size_t gpuMemorySize, std::string_view label, bool commandBufferRefsAsUsageRefs=false)
 
virtual ~Resource ()
 
const SharedContextsharedContext () const
 
virtual void invokeReleaseProc ()
 
virtual void onDumpMemoryStatistics (SkTraceMemoryDump *traceMemoryDump, const char *dumpName) const
 
void setDeleteASAP ()
 
- Protected Attributes inherited from skgpu::graphite::Buffer
void * fMapPtr = nullptr
 

Detailed Description

Definition at line 20 of file MtlBuffer.h.

Member Function Documentation

◆ freeGpuData()

void skgpu::graphite::MtlBuffer::freeGpuData ( )
overrideprivatevirtual

Implements skgpu::graphite::Resource.

Definition at line 100 of file MtlBuffer.mm.

100 {
101 fBuffer.reset();
102}

◆ Make()

sk_sp< Buffer > skgpu::graphite::MtlBuffer::Make ( const MtlSharedContext sharedContext,
size_t  size,
BufferType  type,
AccessPattern  accessPattern,
std::string_view  label 
)
static

Definition at line 31 of file MtlBuffer.mm.

35 {
36 if (size <= 0) {
37 return nullptr;
38 }
39
40 NSUInteger options = 0;
41 if (@available(macOS 10.11, iOS 9.0, tvOS 9.0, *)) {
42 if (accessPattern == AccessPattern::kHostVisible) {
43#ifdef SK_BUILD_FOR_MAC
44 const MtlCaps& mtlCaps = sharedContext->mtlCaps();
45 if (mtlCaps.isMac()) {
46 options |= MTLResourceStorageModeManaged;
47 } else {
48 SkASSERT(mtlCaps.isApple());
49 options |= MTLResourceStorageModeShared;
50 }
51#else
52 options |= MTLResourceStorageModeShared;
53#endif
54 } else {
55 options |= MTLResourceStorageModePrivate;
56 }
57 }
58
59 sk_cfp<id<MTLBuffer>> buffer([sharedContext->device() newBufferWithLength:size
61#ifdef SK_ENABLE_MTL_DEBUG_INFO
62 (*buffer).label = kBufferTypeNames[(int)type];
63#endif
64
65 return sk_sp<Buffer>(new MtlBuffer(sharedContext,
66 size,
67 std::move(buffer),
68 std::move(label)));
69}
const char * options
#define SkASSERT(cond)
Definition SkAssert.h:116
Type::kYUV Type::kRGBA() int(0.7 *637)
size_t size() const
Definition Buffer.h:19
const SharedContext * sharedContext() const
Definition Resource.h:187
static const uint8_t buffer[]
static const char * kBufferTypeNames[kBufferTypeCount]

◆ mtlBuffer()

id< MTLBuffer > skgpu::graphite::MtlBuffer::mtlBuffer ( ) const
inline

Definition at line 28 of file MtlBuffer.h.

28{ return fBuffer.get(); }

◆ onMap()

void skgpu::graphite::MtlBuffer::onMap ( )
overrideprivatevirtual

Implements skgpu::graphite::Buffer.

Definition at line 78 of file MtlBuffer.mm.

78 {
79 SkASSERT(fBuffer);
80 SkASSERT(!this->isMapped());
81
82 if ((*fBuffer).storageMode == MTLStorageModePrivate) {
83 return;
84 }
85
86 fMapPtr = static_cast<char*>((*fBuffer).contents);
87}
bool isMapped() const
Definition Buffer.h:30

◆ onUnmap()

void skgpu::graphite::MtlBuffer::onUnmap ( )
overrideprivatevirtual

Implements skgpu::graphite::Buffer.

Definition at line 89 of file MtlBuffer.mm.

89 {
90 SkASSERT(fBuffer);
91 SkASSERT(this->isMapped());
92#ifdef SK_BUILD_FOR_MAC
93 if ((*fBuffer).storageMode == MTLStorageModeManaged) {
94 [*fBuffer didModifyRange: NSMakeRange(0, this->size())];
95 }
96#endif
97 fMapPtr = nullptr;
98}

The documentation for this class was generated from the following files: