OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 #include "GrTexture.h" | 10 #include "GrTexture.h" |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 | 106 |
107 // These flags need to fit in a GrResourceKey::ResourceFlags so they can be fold
ed into the texture | 107 // These flags need to fit in a GrResourceKey::ResourceFlags so they can be fold
ed into the texture |
108 // key | 108 // key |
109 enum TextureFlags { | 109 enum TextureFlags { |
110 /** | 110 /** |
111 * The kStretchToPOT bit is set when the texture is NPOT and is being repeat
ed but the | 111 * The kStretchToPOT bit is set when the texture is NPOT and is being repeat
ed but the |
112 * hardware doesn't support that feature. | 112 * hardware doesn't support that feature. |
113 */ | 113 */ |
114 kStretchToPOT_TextureFlag = 0x1, | 114 kStretchToPOT_TextureFlag = 0x1, |
115 /** | 115 /** |
116 * The kFilter bit can only be set when the kStretchToPOT flag is set and in
dicates whether the | 116 * The kBilerp bit can only be set when the kStretchToPOT flag is set and in
dicates whether the |
117 * stretched texture should be bilerp filtered or point sampled. | 117 * stretched texture should be bilerped. |
118 */ | 118 */ |
119 kFilter_TextureFlag = 0x2, | 119 kBilerp_TextureFlag = 0x2, |
120 }; | 120 }; |
121 | 121 |
122 namespace { | 122 namespace { |
123 GrResourceKey::ResourceFlags get_texture_flags(const GrGpu* gpu, | 123 GrResourceKey::ResourceFlags get_texture_flags(const GrGpu* gpu, |
124 const GrTextureParams* params, | 124 const GrTextureParams* params, |
125 const GrTextureDesc& desc) { | 125 const GrTextureDesc& desc) { |
126 GrResourceKey::ResourceFlags flags = 0; | 126 GrResourceKey::ResourceFlags flags = 0; |
127 bool tiled = NULL != params && params->isTiled(); | 127 bool tiled = NULL != params && params->isTiled(); |
128 if (tiled && !gpu->caps()->npotTextureTileSupport()) { | 128 if (tiled && !gpu->caps()->npotTextureTileSupport()) { |
129 if (!GrIsPow2(desc.fWidth) || !GrIsPow2(desc.fHeight)) { | 129 if (!GrIsPow2(desc.fWidth) || !GrIsPow2(desc.fHeight)) { |
130 flags |= kStretchToPOT_TextureFlag; | 130 flags |= kStretchToPOT_TextureFlag; |
131 if (params->isBilerp()) { | 131 switch(params->filterMode()) { |
132 flags |= kFilter_TextureFlag; | 132 case GrTextureParams::kNone_FilterMode: |
| 133 break; |
| 134 case GrTextureParams::kBilerp_FilterMode: |
| 135 case GrTextureParams::kMipMap_FilterMode: |
| 136 flags |= kBilerp_TextureFlag; |
| 137 break; |
133 } | 138 } |
134 } | 139 } |
135 } | 140 } |
136 return flags; | 141 return flags; |
137 } | 142 } |
138 | 143 |
139 GrResourceKey::ResourceType texture_resource_type() { | 144 GrResourceKey::ResourceType texture_resource_type() { |
140 static const GrResourceKey::ResourceType gType = GrResourceKey::GenerateReso
urceType(); | 145 static const GrResourceKey::ResourceType gType = GrResourceKey::GenerateReso
urceType(); |
141 return gType; | 146 return gType; |
142 } | 147 } |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 memset(idKey.fData8 + 16, 0, kPadSize); | 184 memset(idKey.fData8 + 16, 0, kPadSize); |
180 | 185 |
181 GrCacheID cacheID(GrResourceKey::ScratchDomain(), idKey); | 186 GrCacheID cacheID(GrResourceKey::ScratchDomain(), idKey); |
182 return GrResourceKey(cacheID, texture_resource_type(), 0); | 187 return GrResourceKey(cacheID, texture_resource_type(), 0); |
183 } | 188 } |
184 | 189 |
185 bool GrTexture::NeedsResizing(const GrResourceKey& key) { | 190 bool GrTexture::NeedsResizing(const GrResourceKey& key) { |
186 return SkToBool(key.getResourceFlags() & kStretchToPOT_TextureFlag); | 191 return SkToBool(key.getResourceFlags() & kStretchToPOT_TextureFlag); |
187 } | 192 } |
188 | 193 |
189 bool GrTexture::NeedsFiltering(const GrResourceKey& key) { | 194 bool GrTexture::NeedsBilerp(const GrResourceKey& key) { |
190 return SkToBool(key.getResourceFlags() & kFilter_TextureFlag); | 195 return SkToBool(key.getResourceFlags() & kBilerp_TextureFlag); |
191 } | 196 } |
OLD | NEW |