1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2021 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#ifndef GrMockRenderTask_DEFINED 9cb93a386Sopenharmony_ci#define GrMockRenderTask_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "src/gpu/GrRenderTask.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_ciclass GrMockRenderTask : public GrRenderTask { 14cb93a386Sopenharmony_cipublic: 15cb93a386Sopenharmony_ci GrMockRenderTask() : GrRenderTask() { 16cb93a386Sopenharmony_ci // Mock tasks are never "owned" by a drawmgr in the first place. 17cb93a386Sopenharmony_ci this->setFlag(kDisowned_Flag); 18cb93a386Sopenharmony_ci } 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_ci void addTarget(sk_sp<GrSurfaceProxy> proxy) { fTargets.push_back(std::move(proxy)); } 21cb93a386Sopenharmony_ci void addDependency(GrRenderTask* dep) { fDependencies.push_back(dep); } 22cb93a386Sopenharmony_ci void addUsed(sk_sp<GrSurfaceProxy> proxy) { fUsed.push_back(std::move(proxy)); } 23cb93a386Sopenharmony_ci 24cb93a386Sopenharmony_ci // Overrides. 25cb93a386Sopenharmony_ci#ifdef SK_DEBUG 26cb93a386Sopenharmony_ci void visitProxies_debugOnly(const GrVisitProxyFunc&) const override { return; } 27cb93a386Sopenharmony_ci#endif 28cb93a386Sopenharmony_ci void gatherProxyIntervals(GrResourceAllocator*) const override {} 29cb93a386Sopenharmony_ci ExpectedOutcome onMakeClosed(GrRecordingContext*, SkIRect*) override { SkUNREACHABLE; } 30cb93a386Sopenharmony_ci bool onIsUsed(GrSurfaceProxy* proxy) const override { 31cb93a386Sopenharmony_ci for (const auto& entry : fUsed) { 32cb93a386Sopenharmony_ci if (entry.get() == proxy) { 33cb93a386Sopenharmony_ci return true; 34cb93a386Sopenharmony_ci } 35cb93a386Sopenharmony_ci } 36cb93a386Sopenharmony_ci return false; 37cb93a386Sopenharmony_ci } 38cb93a386Sopenharmony_ci bool onExecute(GrOpFlushState*) override { return true; } 39cb93a386Sopenharmony_ci 40cb93a386Sopenharmony_ci#if GR_TEST_UTILS 41cb93a386Sopenharmony_ci const char* name() const final { return "Mock"; } 42cb93a386Sopenharmony_ci#endif 43cb93a386Sopenharmony_ci 44cb93a386Sopenharmony_ciprivate: 45cb93a386Sopenharmony_ci SkTArray<sk_sp<GrSurfaceProxy>> fUsed; 46cb93a386Sopenharmony_ci}; 47cb93a386Sopenharmony_ci 48cb93a386Sopenharmony_ci#endif 49