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