Flutter Engine
The Flutter Engine
GrWaitRenderTask.cpp
Go to the documentation of this file.
1/*
2 * Copyright 2019 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
9
13
14void GrWaitRenderTask::gatherProxyIntervals(GrResourceAllocator* alloc) const {
15 // This renderTask doesn't have "normal" ops. In this case we still need to add an interval (so
16 // fEndOfOpsTaskOpIndices will remain in sync), so we create a fake op# to capture the fact that
17 // we manipulate our target's proxy.
18 SkASSERT(0 == this->numTargets());
19 auto fakeOp = alloc->curOp();
20 alloc->addInterval(fWaitedOn.proxy(), fakeOp, fakeOp,
23 alloc->incOps();
24}
25
26bool GrWaitRenderTask::onExecute(GrOpFlushState* flushState) {
27 for (int i = 0; i < fNumSemaphores; ++i) {
28 // If we don't have a semaphore here it means we failed to wrap it. That happens if the
29 // client didn't give us a valid semaphore to begin with. Therefore, it is fine to not wait
30 // on it.
31 if (fSemaphores[i]) {
32 flushState->gpu()->waitSemaphore(fSemaphores[i].get());
33 }
34 }
35 return true;
36}
#define SkASSERT(cond)
Definition: SkAssert.h:116
virtual void waitSemaphore(GrSemaphore *semaphore)=0
int numTargets() const
Definition: GrRenderTask.h:103
void addInterval(GrSurfaceProxy *, unsigned int start, unsigned int end, ActualUse actualUse, AllowRecycling SkDEBUGCODE(, bool isDirectDstRead=false))
unsigned int curOp() const
GrSurfaceProxy * proxy() const
const myers::Point & get(const myers::Segment &)