• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2012 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 GrTextureAccess_DEFINED
9 #define GrTextureAccess_DEFINED
10 
11 #include "GrGpuResourceRef.h"
12 #include "GrTexture.h"
13 #include "GrTextureParams.h"
14 #include "SkRefCnt.h"
15 #include "SkShader.h"
16 
17 /**
18  * Used to represent a texture that is required by a GrProcessor. It holds a GrTexture along with
19  * an associated GrTextureParams
20  */
21 class GrTextureAccess : public SkNoncopyable {
22 public:
23     /**
24      * Must be initialized before adding to a GrProcessor's texture access list.
25      */
26     GrTextureAccess();
27 
28     GrTextureAccess(GrTexture*, const GrTextureParams&);
29 
30     explicit GrTextureAccess(GrTexture*,
31                              GrTextureParams::FilterMode = GrTextureParams::kNone_FilterMode,
32                              SkShader::TileMode tileXAndY = SkShader::kClamp_TileMode);
33 
34     void reset(GrTexture*, const GrTextureParams&);
35     void reset(GrTexture*,
36                GrTextureParams::FilterMode = GrTextureParams::kNone_FilterMode,
37                SkShader::TileMode tileXAndY = SkShader::kClamp_TileMode);
38 
39     bool operator==(const GrTextureAccess& that) const {
40         return this->getTexture() == that.getTexture() && fParams == that.fParams;
41     }
42 
43     bool operator!=(const GrTextureAccess& other) const { return !(*this == other); }
44 
getTexture()45     GrTexture* getTexture() const { return fTexture.get(); }
46 
47     /**
48      * For internal use by GrProcessor.
49      */
getProgramTexture()50     const GrGpuResourceRef* getProgramTexture() const { return &fTexture; }
51 
getParams()52     const GrTextureParams& getParams() const { return fParams; }
53 
54 private:
55 
56     typedef GrTGpuResourceRef<GrTexture> ProgramTexture;
57 
58     ProgramTexture                  fTexture;
59     GrTextureParams                 fParams;
60 
61     typedef SkNoncopyable INHERITED;
62 };
63 
64 #endif
65