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