xref: /aosp_15_r20/external/skia/src/gpu/ganesh/mock/GrMockGpu.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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