1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2017 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef GrMockGpu_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define GrMockGpu_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRect.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h" 13*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkSize.h" 14*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkTextureCompressionType.h" 15*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/GrBackendSurface.h" 16*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/GrTypes.h" 17*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/mock/GrMockTypes.h" 18*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/base/SkAssert.h" 19*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/base/SkTArray.h" 20*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/gpu/ganesh/GrTypesPriv.h" 21*c8dee2aaSAndroid Build Coastguard Worker #include "src/core/SkTHash.h" 22*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/RefCntedCallback.h" 23*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrAttachment.h" 24*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrGpu.h" 25*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrOpsRenderPass.h" 26*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrSamplerState.h" 27*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrSemaphore.h" // IWYU pragma: keep 28*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrXferProcessor.h" 29*c8dee2aaSAndroid Build Coastguard Worker 30*c8dee2aaSAndroid Build Coastguard Worker #include <array> 31*c8dee2aaSAndroid Build Coastguard Worker #include <cstddef> 32*c8dee2aaSAndroid Build Coastguard Worker #include <cstdint> 33*c8dee2aaSAndroid Build Coastguard Worker #include <memory> 34*c8dee2aaSAndroid Build Coastguard Worker #include <optional> 35*c8dee2aaSAndroid Build Coastguard Worker #include <string_view> 36*c8dee2aaSAndroid Build Coastguard Worker 37*c8dee2aaSAndroid Build Coastguard Worker class GrBackendSemaphore; 38*c8dee2aaSAndroid Build Coastguard Worker class GrDirectContext; 39*c8dee2aaSAndroid Build Coastguard Worker class GrGpuBuffer; 40*c8dee2aaSAndroid Build Coastguard Worker class GrProgramDesc; 41*c8dee2aaSAndroid Build Coastguard Worker class GrProgramInfo; 42*c8dee2aaSAndroid Build Coastguard Worker class GrRenderTarget; 43*c8dee2aaSAndroid Build Coastguard Worker class GrSurface; 44*c8dee2aaSAndroid Build Coastguard Worker class GrSurfaceProxy; 45*c8dee2aaSAndroid Build Coastguard Worker class GrTexture; 46*c8dee2aaSAndroid Build Coastguard Worker class GrThreadSafePipelineBuilder; 47*c8dee2aaSAndroid Build Coastguard Worker struct GrContextOptions; 48*c8dee2aaSAndroid Build Coastguard Worker 49*c8dee2aaSAndroid Build Coastguard Worker namespace skgpu { 50*c8dee2aaSAndroid Build Coastguard Worker enum class Budgeted : bool; 51*c8dee2aaSAndroid Build Coastguard Worker enum class Mipmapped : bool; 52*c8dee2aaSAndroid Build Coastguard Worker } 53*c8dee2aaSAndroid Build Coastguard Worker 54*c8dee2aaSAndroid Build Coastguard Worker class GrMockGpu : public GrGpu { 55*c8dee2aaSAndroid Build Coastguard Worker public: 56*c8dee2aaSAndroid Build Coastguard Worker static std::unique_ptr<GrGpu> Make(const GrMockOptions*, 57*c8dee2aaSAndroid Build Coastguard Worker const GrContextOptions&, 58*c8dee2aaSAndroid Build Coastguard Worker GrDirectContext*); 59*c8dee2aaSAndroid Build Coastguard Worker 60*c8dee2aaSAndroid Build Coastguard Worker ~GrMockGpu() override; 61*c8dee2aaSAndroid Build Coastguard Worker 62*c8dee2aaSAndroid Build Coastguard Worker GrThreadSafePipelineBuilder* pipelineBuilder() override; 63*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrThreadSafePipelineBuilder> refPipelineBuilder() override; 64*c8dee2aaSAndroid Build Coastguard Worker makeSemaphore(bool isOwned)65*c8dee2aaSAndroid Build Coastguard Worker [[nodiscard]] std::unique_ptr<GrSemaphore> makeSemaphore(bool isOwned) override { 66*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 67*c8dee2aaSAndroid Build Coastguard Worker } wrapBackendSemaphore(const GrBackendSemaphore &,GrSemaphoreWrapType,GrWrapOwnership)68*c8dee2aaSAndroid Build Coastguard Worker std::unique_ptr<GrSemaphore> wrapBackendSemaphore(const GrBackendSemaphore& /* semaphore */, 69*c8dee2aaSAndroid Build Coastguard Worker GrSemaphoreWrapType /* wraptype */, 70*c8dee2aaSAndroid Build Coastguard Worker GrWrapOwnership /* ownership */) override { 71*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 72*c8dee2aaSAndroid Build Coastguard Worker } insertSemaphore(GrSemaphore * semaphore)73*c8dee2aaSAndroid Build Coastguard Worker void insertSemaphore(GrSemaphore* semaphore) override {} waitSemaphore(GrSemaphore * semaphore)74*c8dee2aaSAndroid Build Coastguard Worker void waitSemaphore(GrSemaphore* semaphore) override {} prepareTextureForCrossContextUsage(GrTexture *)75*c8dee2aaSAndroid Build Coastguard Worker std::unique_ptr<GrSemaphore> prepareTextureForCrossContextUsage(GrTexture*) override { 76*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 77*c8dee2aaSAndroid Build Coastguard Worker } 78*c8dee2aaSAndroid Build Coastguard Worker 79*c8dee2aaSAndroid Build Coastguard Worker void submit(GrOpsRenderPass* renderPass) override; 80*c8dee2aaSAndroid Build Coastguard Worker checkFinishedCallbacks()81*c8dee2aaSAndroid Build Coastguard Worker void checkFinishedCallbacks() override {} finishOutstandingGpuWork()82*c8dee2aaSAndroid Build Coastguard Worker void finishOutstandingGpuWork() override {} 83*c8dee2aaSAndroid Build Coastguard Worker 84*c8dee2aaSAndroid Build Coastguard Worker private: 85*c8dee2aaSAndroid Build Coastguard Worker GrMockGpu(GrDirectContext*, const GrMockOptions&, const GrContextOptions&); 86*c8dee2aaSAndroid Build Coastguard Worker xferBarrier(GrRenderTarget *,GrXferBarrierType)87*c8dee2aaSAndroid Build Coastguard Worker void xferBarrier(GrRenderTarget*, GrXferBarrierType) override {} 88*c8dee2aaSAndroid Build Coastguard Worker 89*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrTexture> onCreateTexture(SkISize, 90*c8dee2aaSAndroid Build Coastguard Worker const GrBackendFormat&, 91*c8dee2aaSAndroid Build Coastguard Worker GrRenderable, 92*c8dee2aaSAndroid Build Coastguard Worker int renderTargetSampleCnt, 93*c8dee2aaSAndroid Build Coastguard Worker skgpu::Budgeted, 94*c8dee2aaSAndroid Build Coastguard Worker GrProtected, 95*c8dee2aaSAndroid Build Coastguard Worker int mipLevelCount, 96*c8dee2aaSAndroid Build Coastguard Worker uint32_t levelClearMask, 97*c8dee2aaSAndroid Build Coastguard Worker std::string_view label) override; 98*c8dee2aaSAndroid Build Coastguard Worker 99*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrTexture> onCreateCompressedTexture(SkISize dimensions, 100*c8dee2aaSAndroid Build Coastguard Worker const GrBackendFormat&, 101*c8dee2aaSAndroid Build Coastguard Worker skgpu::Budgeted, 102*c8dee2aaSAndroid Build Coastguard Worker skgpu::Mipmapped, 103*c8dee2aaSAndroid Build Coastguard Worker GrProtected, 104*c8dee2aaSAndroid Build Coastguard Worker const void* data, 105*c8dee2aaSAndroid Build Coastguard Worker size_t dataSize) override; 106*c8dee2aaSAndroid Build Coastguard Worker 107*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrTexture> onWrapBackendTexture(const GrBackendTexture&, 108*c8dee2aaSAndroid Build Coastguard Worker GrWrapOwnership, 109*c8dee2aaSAndroid Build Coastguard Worker GrWrapCacheable, 110*c8dee2aaSAndroid Build Coastguard Worker GrIOType) override; 111*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrTexture> onWrapCompressedBackendTexture(const GrBackendTexture&, 112*c8dee2aaSAndroid Build Coastguard Worker GrWrapOwnership, 113*c8dee2aaSAndroid Build Coastguard Worker GrWrapCacheable) override; 114*c8dee2aaSAndroid Build Coastguard Worker 115*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrTexture> onWrapRenderableBackendTexture(const GrBackendTexture&, 116*c8dee2aaSAndroid Build Coastguard Worker int sampleCnt, 117*c8dee2aaSAndroid Build Coastguard Worker GrWrapOwnership, 118*c8dee2aaSAndroid Build Coastguard Worker GrWrapCacheable) override; 119*c8dee2aaSAndroid Build Coastguard Worker 120*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrRenderTarget> onWrapBackendRenderTarget(const GrBackendRenderTarget&) override; 121*c8dee2aaSAndroid Build Coastguard Worker 122*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrGpuBuffer> onCreateBuffer(size_t sizeInBytes, 123*c8dee2aaSAndroid Build Coastguard Worker GrGpuBufferType, 124*c8dee2aaSAndroid Build Coastguard Worker GrAccessPattern) override; 125*c8dee2aaSAndroid Build Coastguard Worker onReadPixels(GrSurface *,SkIRect,GrColorType surfaceColorType,GrColorType dstColorType,void *,size_t rowBytes)126*c8dee2aaSAndroid Build Coastguard Worker bool onReadPixels(GrSurface*, 127*c8dee2aaSAndroid Build Coastguard Worker SkIRect, 128*c8dee2aaSAndroid Build Coastguard Worker GrColorType surfaceColorType, 129*c8dee2aaSAndroid Build Coastguard Worker GrColorType dstColorType, 130*c8dee2aaSAndroid Build Coastguard Worker void*, 131*c8dee2aaSAndroid Build Coastguard Worker size_t rowBytes) override { 132*c8dee2aaSAndroid Build Coastguard Worker return true; 133*c8dee2aaSAndroid Build Coastguard Worker } 134*c8dee2aaSAndroid Build Coastguard Worker onWritePixels(GrSurface *,SkIRect,GrColorType surfaceColorType,GrColorType srcColorType,const GrMipLevel[],int mipLevelCount,bool prepForTexSampling)135*c8dee2aaSAndroid Build Coastguard Worker bool onWritePixels(GrSurface*, 136*c8dee2aaSAndroid Build Coastguard Worker SkIRect, 137*c8dee2aaSAndroid Build Coastguard Worker GrColorType surfaceColorType, 138*c8dee2aaSAndroid Build Coastguard Worker GrColorType srcColorType, 139*c8dee2aaSAndroid Build Coastguard Worker const GrMipLevel[], 140*c8dee2aaSAndroid Build Coastguard Worker int mipLevelCount, 141*c8dee2aaSAndroid Build Coastguard Worker bool prepForTexSampling) override { 142*c8dee2aaSAndroid Build Coastguard Worker return true; 143*c8dee2aaSAndroid Build Coastguard Worker } 144*c8dee2aaSAndroid Build Coastguard Worker onTransferFromBufferToBuffer(sk_sp<GrGpuBuffer> src,size_t srcOffset,sk_sp<GrGpuBuffer> dst,size_t dstOffset,size_t size)145*c8dee2aaSAndroid Build Coastguard Worker bool onTransferFromBufferToBuffer(sk_sp<GrGpuBuffer> src, 146*c8dee2aaSAndroid Build Coastguard Worker size_t srcOffset, 147*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrGpuBuffer> dst, 148*c8dee2aaSAndroid Build Coastguard Worker size_t dstOffset, 149*c8dee2aaSAndroid Build Coastguard Worker size_t size) override { 150*c8dee2aaSAndroid Build Coastguard Worker return true; 151*c8dee2aaSAndroid Build Coastguard Worker } 152*c8dee2aaSAndroid Build Coastguard Worker onTransferPixelsTo(GrTexture *,SkIRect,GrColorType surfaceColorType,GrColorType bufferColorType,sk_sp<GrGpuBuffer>,size_t offset,size_t rowBytes)153*c8dee2aaSAndroid Build Coastguard Worker bool onTransferPixelsTo(GrTexture*, 154*c8dee2aaSAndroid Build Coastguard Worker SkIRect, 155*c8dee2aaSAndroid Build Coastguard Worker GrColorType surfaceColorType, 156*c8dee2aaSAndroid Build Coastguard Worker GrColorType bufferColorType, 157*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrGpuBuffer>, 158*c8dee2aaSAndroid Build Coastguard Worker size_t offset, 159*c8dee2aaSAndroid Build Coastguard Worker size_t rowBytes) override { 160*c8dee2aaSAndroid Build Coastguard Worker return true; 161*c8dee2aaSAndroid Build Coastguard Worker } 162*c8dee2aaSAndroid Build Coastguard Worker onTransferPixelsFrom(GrSurface *,SkIRect,GrColorType surfaceColorType,GrColorType bufferColorType,sk_sp<GrGpuBuffer>,size_t offset)163*c8dee2aaSAndroid Build Coastguard Worker bool onTransferPixelsFrom(GrSurface*, 164*c8dee2aaSAndroid Build Coastguard Worker SkIRect, 165*c8dee2aaSAndroid Build Coastguard Worker GrColorType surfaceColorType, 166*c8dee2aaSAndroid Build Coastguard Worker GrColorType bufferColorType, 167*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrGpuBuffer>, 168*c8dee2aaSAndroid Build Coastguard Worker size_t offset) override { 169*c8dee2aaSAndroid Build Coastguard Worker return true; 170*c8dee2aaSAndroid Build Coastguard Worker } 171*c8dee2aaSAndroid Build Coastguard Worker onCopySurface(GrSurface * dst,const SkIRect & dstRect,GrSurface * src,const SkIRect & srcRect,GrSamplerState::Filter)172*c8dee2aaSAndroid Build Coastguard Worker bool onCopySurface(GrSurface* dst, const SkIRect& dstRect, 173*c8dee2aaSAndroid Build Coastguard Worker GrSurface* src, const SkIRect& srcRect, 174*c8dee2aaSAndroid Build Coastguard Worker GrSamplerState::Filter)override { 175*c8dee2aaSAndroid Build Coastguard Worker return true; 176*c8dee2aaSAndroid Build Coastguard Worker } 177*c8dee2aaSAndroid Build Coastguard Worker onRegenerateMipMapLevels(GrTexture *)178*c8dee2aaSAndroid Build Coastguard Worker bool onRegenerateMipMapLevels(GrTexture*) override { return true; } 179*c8dee2aaSAndroid Build Coastguard Worker onResolveRenderTarget(GrRenderTarget * target,const SkIRect &)180*c8dee2aaSAndroid Build Coastguard Worker void onResolveRenderTarget(GrRenderTarget* target, const SkIRect&) override {} 181*c8dee2aaSAndroid Build Coastguard Worker addFinishedCallback(skgpu::AutoCallback callback,std::optional<GrTimerQuery>)182*c8dee2aaSAndroid Build Coastguard Worker void addFinishedCallback(skgpu::AutoCallback callback, std::optional<GrTimerQuery>) override { 183*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(callback); 184*c8dee2aaSAndroid Build Coastguard Worker } 185*c8dee2aaSAndroid Build Coastguard Worker 186*c8dee2aaSAndroid Build Coastguard Worker GrOpsRenderPass* onGetOpsRenderPass( 187*c8dee2aaSAndroid Build Coastguard Worker GrRenderTarget*, 188*c8dee2aaSAndroid Build Coastguard Worker bool useMSAASurface, 189*c8dee2aaSAndroid Build Coastguard Worker GrAttachment*, 190*c8dee2aaSAndroid Build Coastguard Worker GrSurfaceOrigin, 191*c8dee2aaSAndroid Build Coastguard Worker const SkIRect&, 192*c8dee2aaSAndroid Build Coastguard Worker const GrOpsRenderPass::LoadAndStoreInfo&, 193*c8dee2aaSAndroid Build Coastguard Worker const GrOpsRenderPass::StencilLoadAndStoreInfo&, 194*c8dee2aaSAndroid Build Coastguard Worker const skia_private::TArray<GrSurfaceProxy*, true>& sampledProxies, 195*c8dee2aaSAndroid Build Coastguard Worker GrXferBarrierFlags renderPassXferBarriers) override; 196*c8dee2aaSAndroid Build Coastguard Worker onSubmitToGpu(const GrSubmitInfo &)197*c8dee2aaSAndroid Build Coastguard Worker bool onSubmitToGpu(const GrSubmitInfo&) override { return true; } 198*c8dee2aaSAndroid Build Coastguard Worker 199*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrAttachment> makeStencilAttachment(const GrBackendFormat& /*colorFormat*/, 200*c8dee2aaSAndroid Build Coastguard Worker SkISize dimensions, int numStencilSamples) override; 201*c8dee2aaSAndroid Build Coastguard Worker getPreferredStencilFormat(const GrBackendFormat &)202*c8dee2aaSAndroid Build Coastguard Worker GrBackendFormat getPreferredStencilFormat(const GrBackendFormat&) override { 203*c8dee2aaSAndroid Build Coastguard Worker return GrBackendFormat::MakeMock(GrColorType::kUnknown, SkTextureCompressionType::kNone, 204*c8dee2aaSAndroid Build Coastguard Worker true); 205*c8dee2aaSAndroid Build Coastguard Worker } 206*c8dee2aaSAndroid Build Coastguard Worker makeMSAAAttachment(SkISize dimensions,const GrBackendFormat & format,int numSamples,GrProtected isProtected,GrMemoryless isMemoryless)207*c8dee2aaSAndroid Build Coastguard Worker sk_sp<GrAttachment> makeMSAAAttachment(SkISize dimensions, 208*c8dee2aaSAndroid Build Coastguard Worker const GrBackendFormat& format, 209*c8dee2aaSAndroid Build Coastguard Worker int numSamples, 210*c8dee2aaSAndroid Build Coastguard Worker GrProtected isProtected, 211*c8dee2aaSAndroid Build Coastguard Worker GrMemoryless isMemoryless) override { 212*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 213*c8dee2aaSAndroid Build Coastguard Worker } 214*c8dee2aaSAndroid Build Coastguard Worker 215*c8dee2aaSAndroid Build Coastguard Worker GrBackendTexture onCreateBackendTexture(SkISize dimensions, 216*c8dee2aaSAndroid Build Coastguard Worker const GrBackendFormat&, 217*c8dee2aaSAndroid Build Coastguard Worker GrRenderable, 218*c8dee2aaSAndroid Build Coastguard Worker skgpu::Mipmapped, 219*c8dee2aaSAndroid Build Coastguard Worker GrProtected, 220*c8dee2aaSAndroid Build Coastguard Worker std::string_view label) override; 221*c8dee2aaSAndroid Build Coastguard Worker onClearBackendTexture(const GrBackendTexture &,sk_sp<skgpu::RefCntedCallback> finishedCallback,std::array<float,4> color)222*c8dee2aaSAndroid Build Coastguard Worker bool onClearBackendTexture(const GrBackendTexture&, 223*c8dee2aaSAndroid Build Coastguard Worker sk_sp<skgpu::RefCntedCallback> finishedCallback, 224*c8dee2aaSAndroid Build Coastguard Worker std::array<float, 4> color) override { 225*c8dee2aaSAndroid Build Coastguard Worker return true; 226*c8dee2aaSAndroid Build Coastguard Worker } 227*c8dee2aaSAndroid Build Coastguard Worker 228*c8dee2aaSAndroid Build Coastguard Worker GrBackendTexture onCreateCompressedBackendTexture(SkISize dimensions, 229*c8dee2aaSAndroid Build Coastguard Worker const GrBackendFormat&, 230*c8dee2aaSAndroid Build Coastguard Worker skgpu::Mipmapped, 231*c8dee2aaSAndroid Build Coastguard Worker GrProtected) override; 232*c8dee2aaSAndroid Build Coastguard Worker onUpdateCompressedBackendTexture(const GrBackendTexture &,sk_sp<skgpu::RefCntedCallback> finishedCallback,const void *,size_t)233*c8dee2aaSAndroid Build Coastguard Worker bool onUpdateCompressedBackendTexture(const GrBackendTexture&, 234*c8dee2aaSAndroid Build Coastguard Worker sk_sp<skgpu::RefCntedCallback> finishedCallback, 235*c8dee2aaSAndroid Build Coastguard Worker const void*, 236*c8dee2aaSAndroid Build Coastguard Worker size_t) override { 237*c8dee2aaSAndroid Build Coastguard Worker return true; 238*c8dee2aaSAndroid Build Coastguard Worker } 239*c8dee2aaSAndroid Build Coastguard Worker 240*c8dee2aaSAndroid Build Coastguard Worker void deleteBackendTexture(const GrBackendTexture&) override; 241*c8dee2aaSAndroid Build Coastguard Worker compile(const GrProgramDesc &,const GrProgramInfo &)242*c8dee2aaSAndroid Build Coastguard Worker bool compile(const GrProgramDesc&, const GrProgramInfo&) override { return false; } 243*c8dee2aaSAndroid Build Coastguard Worker 244*c8dee2aaSAndroid Build Coastguard Worker #if defined(GPU_TEST_UTILS) 245*c8dee2aaSAndroid Build Coastguard Worker bool isTestingOnlyBackendTexture(const GrBackendTexture&) const override; 246*c8dee2aaSAndroid Build Coastguard Worker 247*c8dee2aaSAndroid Build Coastguard Worker GrBackendRenderTarget createTestingOnlyBackendRenderTarget(SkISize dimensions, 248*c8dee2aaSAndroid Build Coastguard Worker GrColorType, 249*c8dee2aaSAndroid Build Coastguard Worker int sampleCnt, 250*c8dee2aaSAndroid Build Coastguard Worker GrProtected) override; 251*c8dee2aaSAndroid Build Coastguard Worker void deleteTestingOnlyBackendRenderTarget(const GrBackendRenderTarget&) override; 252*c8dee2aaSAndroid Build Coastguard Worker #endif 253*c8dee2aaSAndroid Build Coastguard Worker 254*c8dee2aaSAndroid Build Coastguard Worker const GrMockOptions fMockOptions; 255*c8dee2aaSAndroid Build Coastguard Worker 256*c8dee2aaSAndroid Build Coastguard Worker static int NextInternalTextureID(); 257*c8dee2aaSAndroid Build Coastguard Worker static int NextExternalTextureID(); 258*c8dee2aaSAndroid Build Coastguard Worker static int NextInternalRenderTargetID(); 259*c8dee2aaSAndroid Build Coastguard Worker static int NextExternalRenderTargetID(); 260*c8dee2aaSAndroid Build Coastguard Worker 261*c8dee2aaSAndroid Build Coastguard Worker skia_private::THashSet<int> fOutstandingTestingOnlyTextureIDs; 262*c8dee2aaSAndroid Build Coastguard Worker 263*c8dee2aaSAndroid Build Coastguard Worker using INHERITED = GrGpu; 264*c8dee2aaSAndroid Build Coastguard Worker }; 265*c8dee2aaSAndroid Build Coastguard Worker 266*c8dee2aaSAndroid Build Coastguard Worker #endif 267