Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Private Member Functions | List of all members
skgpu::graphite::GpuWorkSubmission Class Referenceabstract

#include <GpuWorkSubmission.h>

Inheritance diagram for skgpu::graphite::GpuWorkSubmission:
skgpu::graphite::MtlWorkSubmission skgpu::graphite::VulkanWorkSubmission

Public Member Functions

virtual ~GpuWorkSubmission ()
 
bool isFinished (const SharedContext *sharedContext)
 
void waitUntilFinished (const SharedContext *sharedContext)
 

Protected Member Functions

CommandBuffercommandBuffer ()
 
 GpuWorkSubmission (std::unique_ptr< CommandBuffer > cmdBuffer, QueueManager *queueManager)
 

Private Member Functions

virtual bool onIsFinished (const SharedContext *sharedContext)=0
 
virtual void onWaitUntilFinished (const SharedContext *sharedContext)=0
 

Detailed Description

Definition at line 20 of file GpuWorkSubmission.h.

Constructor & Destructor Documentation

◆ ~GpuWorkSubmission()

skgpu::graphite::GpuWorkSubmission::~GpuWorkSubmission ( )
virtual

Definition at line 34 of file GpuWorkSubmission.cpp.

34 {
35 fCommandBuffer->callFinishedProcs(/*success=*/true);
36 fCommandBuffer->resetCommandBuffer();
37 fQueueManager->returnCommandBuffer(std::move(fCommandBuffer));
38}
void returnCommandBuffer(std::unique_ptr< CommandBuffer >)

◆ GpuWorkSubmission()

skgpu::graphite::GpuWorkSubmission::GpuWorkSubmission ( std::unique_ptr< CommandBuffer cmdBuffer,
QueueManager queueManager 
)
protected

Definition at line 16 of file GpuWorkSubmission.cpp.

18 : fCommandBuffer(std::move(cmdBuffer))
19 , fQueueManager(queueManager) {
20 SkSpan<const sk_sp<Buffer>> buffers = fCommandBuffer->buffersToAsyncMapOnSubmit();
21 if (!buffers.empty()) {
22 fOutstandingAsyncMapCounter = sk_make_sp<SkRefCnt>();
23 for (auto& buffer : fCommandBuffer->buffersToAsyncMapOnSubmit()) {
24 SkASSERT(!buffer->isUnmappable());
25 fOutstandingAsyncMapCounter->ref();
27 static_cast<SkRefCnt*>(c)->unref();
28 },
29 fOutstandingAsyncMapCounter.get());
30 }
31 }
32}
#define SkASSERT(cond)
Definition SkAssert.h:116
void ref() const
Definition SkRefCnt.h:62
constexpr bool empty() const
Definition SkSpan_impl.h:96
T * get() const
Definition SkRefCnt.h:303
static const uint8_t buffer[]
void * GpuFinishedContext
CallbackResult
Definition GpuTypes.h:45

Member Function Documentation

◆ commandBuffer()

CommandBuffer * skgpu::graphite::GpuWorkSubmission::commandBuffer ( )
inlineprotected

Definition at line 28 of file GpuWorkSubmission.h.

28{ return fCommandBuffer.get(); }

◆ isFinished()

bool skgpu::graphite::GpuWorkSubmission::isFinished ( const SharedContext sharedContext)

Definition at line 40 of file GpuWorkSubmission.cpp.

40 {
41 return this->onIsFinished(sharedContext) &&
42 (!fOutstandingAsyncMapCounter || fOutstandingAsyncMapCounter->unique());
43}
bool unique() const
Definition SkRefCnt.h:50
virtual bool onIsFinished(const SharedContext *sharedContext)=0

◆ onIsFinished()

virtual bool skgpu::graphite::GpuWorkSubmission::onIsFinished ( const SharedContext sharedContext)
privatepure virtual

◆ onWaitUntilFinished()

virtual void skgpu::graphite::GpuWorkSubmission::onWaitUntilFinished ( const SharedContext sharedContext)
privatepure virtual

◆ waitUntilFinished()

void skgpu::graphite::GpuWorkSubmission::waitUntilFinished ( const SharedContext sharedContext)

Definition at line 45 of file GpuWorkSubmission.cpp.

45 {
46 this->onWaitUntilFinished(sharedContext);
47 if (fOutstandingAsyncMapCounter) {
48 while (!fOutstandingAsyncMapCounter->unique()) {
49 fQueueManager->tick();
50 }
51 }
52}
virtual void onWaitUntilFinished(const SharedContext *sharedContext)=0
virtual void tick() const

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