1 /* 2 * Copyright 2016 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 8 #ifndef GrBitmapTextureMaker_DEFINED 9 #define GrBitmapTextureMaker_DEFINED 10 11 #include "include/core/SkBitmap.h" 12 #include "src/gpu/GrTextureMaker.h" 13 #include "src/gpu/SkGr.h" 14 15 /** This class manages the conversion of SW-backed bitmaps to GrTextures. If the input bitmap is 16 non-volatile the texture is cached using a key created from the pixels' image id and the 17 subset of the pixelref specified by the bitmap. */ 18 class GrBitmapTextureMaker final : public GrTextureMaker { 19 public: 20 GrBitmapTextureMaker(GrRecordingContext*, const SkBitmap&, GrImageTexGenPolicy); 21 22 // Always uncached-budgeted. It doesn't make sense to have kApprox cached textures. Moreover,we 23 // create kApprox textures intermediate buffers and those ought to be budgeted. 24 GrBitmapTextureMaker(GrRecordingContext*, const SkBitmap&, SkBackingFit); 25 26 private: 27 GrBitmapTextureMaker(GrRecordingContext*, const SkBitmap&, GrImageTexGenPolicy, SkBackingFit); 28 29 GrSurfaceProxyView refOriginalTextureProxyView(GrMipmapped) override; 30 31 const SkBitmap fBitmap; 32 const SkBackingFit fFit; 33 const SkBudgeted fBudgeted; 34 GrUniqueKey fKey; 35 36 using INHERITED = GrTextureMaker; 37 }; 38 39 #endif 40