xref: /aosp_15_r20/external/skia/tools/fiddle/fiddle_main.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker /*
2*c8dee2aaSAndroid Build Coastguard Worker  * Copyright 2015 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 #ifndef fiddle_main_DEFINED
8*c8dee2aaSAndroid Build Coastguard Worker #define fiddle_main_DEFINED
9*c8dee2aaSAndroid Build Coastguard Worker 
10*c8dee2aaSAndroid Build Coastguard Worker #ifdef FIDDLE_BUILD_TEST
11*c8dee2aaSAndroid Build Coastguard Worker     #include "include/core/SkCanvas.h"
12*c8dee2aaSAndroid Build Coastguard Worker     #include "include/core/SkDocument.h"
13*c8dee2aaSAndroid Build Coastguard Worker     #include "include/core/SkPictureRecorder.h"
14*c8dee2aaSAndroid Build Coastguard Worker     #include "include/core/SkStream.h"
15*c8dee2aaSAndroid Build Coastguard Worker     #include "include/core/SkSurface.h"
16*c8dee2aaSAndroid Build Coastguard Worker     #include "include/gpu/ganesh/GrDirectContext.h"
17*c8dee2aaSAndroid Build Coastguard Worker     #include "include/gpu/ganesh/gl/GrGLAssembleInterface.h"
18*c8dee2aaSAndroid Build Coastguard Worker     #include "include/gpu/ganesh/gl/GrGLInterface.h"
19*c8dee2aaSAndroid Build Coastguard Worker #else
20*c8dee2aaSAndroid Build Coastguard Worker     #include "skia.h"
21*c8dee2aaSAndroid Build Coastguard Worker #endif
22*c8dee2aaSAndroid Build Coastguard Worker 
23*c8dee2aaSAndroid Build Coastguard Worker #include <memory>
24*c8dee2aaSAndroid Build Coastguard Worker #include <sstream>
25*c8dee2aaSAndroid Build Coastguard Worker 
26*c8dee2aaSAndroid Build Coastguard Worker namespace sk_gpu_test {
27*c8dee2aaSAndroid Build Coastguard Worker class GLTestContext;
28*c8dee2aaSAndroid Build Coastguard Worker class ManagedBackendTexture;
29*c8dee2aaSAndroid Build Coastguard Worker }  // namespace sk_gpu_test
30*c8dee2aaSAndroid Build Coastguard Worker 
31*c8dee2aaSAndroid Build Coastguard Worker extern GrBackendTexture backEndTexture;
32*c8dee2aaSAndroid Build Coastguard Worker extern GrBackendRenderTarget backEndRenderTarget;
33*c8dee2aaSAndroid Build Coastguard Worker extern GrBackendTexture backEndTextureRenderTarget;
34*c8dee2aaSAndroid Build Coastguard Worker extern SkBitmap source;
35*c8dee2aaSAndroid Build Coastguard Worker extern sk_sp<SkImage> image;
36*c8dee2aaSAndroid Build Coastguard Worker extern double duration; // The total duration of the animation in seconds.
37*c8dee2aaSAndroid Build Coastguard Worker extern double frame;    // A value in [0, 1] of where we are in the animation.
38*c8dee2aaSAndroid Build Coastguard Worker extern sk_sp<SkFontMgr> fontMgr;  // Can load some system fonts
39*c8dee2aaSAndroid Build Coastguard Worker 
40*c8dee2aaSAndroid Build Coastguard Worker struct DrawOptions {
DrawOptionsDrawOptions41*c8dee2aaSAndroid Build Coastguard Worker     DrawOptions(int w,
42*c8dee2aaSAndroid Build Coastguard Worker                 int h,
43*c8dee2aaSAndroid Build Coastguard Worker                 bool r,
44*c8dee2aaSAndroid Build Coastguard Worker                 bool g,
45*c8dee2aaSAndroid Build Coastguard Worker                 bool p,
46*c8dee2aaSAndroid Build Coastguard Worker                 bool k,
47*c8dee2aaSAndroid Build Coastguard Worker                 bool srgb,
48*c8dee2aaSAndroid Build Coastguard Worker                 bool f16,
49*c8dee2aaSAndroid Build Coastguard Worker                 bool textOnly,
50*c8dee2aaSAndroid Build Coastguard Worker                 const char* s,
51*c8dee2aaSAndroid Build Coastguard Worker                 skgpu::Mipmapped mipMapping,
52*c8dee2aaSAndroid Build Coastguard Worker                 int offScreenWidth,
53*c8dee2aaSAndroid Build Coastguard Worker                 int offScreenHeight,
54*c8dee2aaSAndroid Build Coastguard Worker                 int deprecated,  // TODO(jcgregorio): remove
55*c8dee2aaSAndroid Build Coastguard Worker                 skgpu::Mipmapped offScreenMipMapping)
56*c8dee2aaSAndroid Build Coastguard Worker             : size(SkISize::Make(w, h))
57*c8dee2aaSAndroid Build Coastguard Worker             , raster(r)
58*c8dee2aaSAndroid Build Coastguard Worker             , gpu(g)
59*c8dee2aaSAndroid Build Coastguard Worker             , pdf(p)
60*c8dee2aaSAndroid Build Coastguard Worker             , skp(k)
61*c8dee2aaSAndroid Build Coastguard Worker             , srgb(srgb)
62*c8dee2aaSAndroid Build Coastguard Worker             , f16(f16)
63*c8dee2aaSAndroid Build Coastguard Worker             , textOnly(textOnly)
64*c8dee2aaSAndroid Build Coastguard Worker             , source(s)
65*c8dee2aaSAndroid Build Coastguard Worker             , fMipMapping(mipMapping)
66*c8dee2aaSAndroid Build Coastguard Worker             , fOffScreenWidth(offScreenWidth)
67*c8dee2aaSAndroid Build Coastguard Worker             , fOffScreenHeight(offScreenHeight)
68*c8dee2aaSAndroid Build Coastguard Worker             , fOffScreenMipMapping(offScreenMipMapping) {
69*c8dee2aaSAndroid Build Coastguard Worker         // F16 mode is only valid for color correct backends.
70*c8dee2aaSAndroid Build Coastguard Worker         SkASSERT(srgb || !f16);
71*c8dee2aaSAndroid Build Coastguard Worker     }
72*c8dee2aaSAndroid Build Coastguard Worker     SkISize size;
73*c8dee2aaSAndroid Build Coastguard Worker     bool raster;
74*c8dee2aaSAndroid Build Coastguard Worker     bool gpu;
75*c8dee2aaSAndroid Build Coastguard Worker     bool pdf;
76*c8dee2aaSAndroid Build Coastguard Worker     bool skp;
77*c8dee2aaSAndroid Build Coastguard Worker     bool srgb;
78*c8dee2aaSAndroid Build Coastguard Worker     bool f16;
79*c8dee2aaSAndroid Build Coastguard Worker     bool textOnly;
80*c8dee2aaSAndroid Build Coastguard Worker     const char* source;
81*c8dee2aaSAndroid Build Coastguard Worker 
82*c8dee2aaSAndroid Build Coastguard Worker     // This flag is used when a GPU texture resource is created and exposed as a GrBackendTexture.
83*c8dee2aaSAndroid Build Coastguard Worker     // In this case the resource is created with extra room to accommodate mipmaps.
84*c8dee2aaSAndroid Build Coastguard Worker     // TODO: The SkImage::makeTextureImage API would need to be widened to allow this to be true
85*c8dee2aaSAndroid Build Coastguard Worker     // for the non-backend gpu SkImages.
86*c8dee2aaSAndroid Build Coastguard Worker     skgpu::Mipmapped fMipMapping;
87*c8dee2aaSAndroid Build Coastguard Worker 
88*c8dee2aaSAndroid Build Coastguard Worker     // Parameters for an GPU offscreen resource exposed as a GrBackendRenderTarget
89*c8dee2aaSAndroid Build Coastguard Worker     int         fOffScreenWidth;
90*c8dee2aaSAndroid Build Coastguard Worker     int         fOffScreenHeight;
91*c8dee2aaSAndroid Build Coastguard Worker     // TODO: should we also expose stencilBits here? How about the config?
92*c8dee2aaSAndroid Build Coastguard Worker 
93*c8dee2aaSAndroid Build Coastguard Worker     skgpu::Mipmapped fOffScreenMipMapping;  // only applicable if the offscreen is also textureable
94*c8dee2aaSAndroid Build Coastguard Worker };
95*c8dee2aaSAndroid Build Coastguard Worker 
96*c8dee2aaSAndroid Build Coastguard Worker extern DrawOptions GetDrawOptions();
97*c8dee2aaSAndroid Build Coastguard Worker extern void SkDebugf(const char * format, ...);
98*c8dee2aaSAndroid Build Coastguard Worker extern void draw(SkCanvas*);
99*c8dee2aaSAndroid Build Coastguard Worker 
100*c8dee2aaSAndroid Build Coastguard Worker // There are different implementations of create_direct_context() for EGL, Mesa,
101*c8dee2aaSAndroid Build Coastguard Worker // and a fallback to a null context.
102*c8dee2aaSAndroid Build Coastguard Worker extern sk_sp<GrDirectContext> create_direct_context(std::ostringstream& driverinfo,
103*c8dee2aaSAndroid Build Coastguard Worker                                                     std::unique_ptr<sk_gpu_test::GLTestContext>*);
104*c8dee2aaSAndroid Build Coastguard Worker 
105*c8dee2aaSAndroid Build Coastguard Worker #endif  // fiddle_main_DEFINED
106