| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrGLGpu.h" | 8 #include "GrGLGpu.h" |
| 9 #include "GrGLBuffer.h" | 9 #include "GrGLBuffer.h" |
| 10 #include "GrGLGLSL.h" | 10 #include "GrGLGLSL.h" |
| (...skipping 3083 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3094 the generated shader code. This potentially allows greater reuse of cached sha
ders. */ | 3094 the generated shader code. This potentially allows greater reuse of cached sha
ders. */ |
| 3095 static void get_tex_param_swizzle(GrPixelConfig config, | 3095 static void get_tex_param_swizzle(GrPixelConfig config, |
| 3096 const GrGLCaps& caps, | 3096 const GrGLCaps& caps, |
| 3097 GrGLenum* glSwizzle) { | 3097 GrGLenum* glSwizzle) { |
| 3098 const GrSwizzle& swizzle = caps.configSwizzle(config); | 3098 const GrSwizzle& swizzle = caps.configSwizzle(config); |
| 3099 for (int i = 0; i < 4; ++i) { | 3099 for (int i = 0; i < 4; ++i) { |
| 3100 glSwizzle[i] = get_component_enum_from_char(swizzle.c_str()[i]); | 3100 glSwizzle[i] = get_component_enum_from_char(swizzle.c_str()[i]); |
| 3101 } | 3101 } |
| 3102 } | 3102 } |
| 3103 | 3103 |
| 3104 void GrGLGpu::bindTexture(int unitIdx, const GrTextureParams& params, bool dstCo
nfigAllowsSRGB, | 3104 void GrGLGpu::bindTexture(int unitIdx, const GrTextureParams& params, bool allow
SRGBInputs, |
| 3105 GrGLTexture* texture) { | 3105 GrGLTexture* texture) { |
| 3106 SkASSERT(texture); | 3106 SkASSERT(texture); |
| 3107 | 3107 |
| 3108 #ifdef SK_DEBUG | 3108 #ifdef SK_DEBUG |
| 3109 if (!this->caps()->npotTextureTileSupport()) { | 3109 if (!this->caps()->npotTextureTileSupport()) { |
| 3110 const bool tileX = SkShader::kClamp_TileMode != params.getTileModeX(); | 3110 const bool tileX = SkShader::kClamp_TileMode != params.getTileModeX(); |
| 3111 const bool tileY = SkShader::kClamp_TileMode != params.getTileModeY(); | 3111 const bool tileY = SkShader::kClamp_TileMode != params.getTileModeY(); |
| 3112 if (tileX || tileY) { | 3112 if (tileX || tileY) { |
| 3113 const int w = texture->width(); | 3113 const int w = texture->width(); |
| 3114 const int h = texture->height(); | 3114 const int h = texture->height(); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 3134 } | 3134 } |
| 3135 | 3135 |
| 3136 ResetTimestamp timestamp; | 3136 ResetTimestamp timestamp; |
| 3137 const GrGLTexture::TexParams& oldTexParams = texture->getCachedTexParams(&ti
mestamp); | 3137 const GrGLTexture::TexParams& oldTexParams = texture->getCachedTexParams(&ti
mestamp); |
| 3138 bool setAll = timestamp < this->getResetTimestamp(); | 3138 bool setAll = timestamp < this->getResetTimestamp(); |
| 3139 GrGLTexture::TexParams newTexParams; | 3139 GrGLTexture::TexParams newTexParams; |
| 3140 | 3140 |
| 3141 if (this->caps()->srgbSupport()) { | 3141 if (this->caps()->srgbSupport()) { |
| 3142 // By default, the decision to allow SRGB decode is based on the destina
tion config. | 3142 // By default, the decision to allow SRGB decode is based on the destina
tion config. |
| 3143 // A texture can override that by specifying a value in GrTextureParams. | 3143 // A texture can override that by specifying a value in GrTextureParams. |
| 3144 newTexParams.fSRGBDecode = | 3144 newTexParams.fSRGBDecode = allowSRGBInputs ? GR_GL_DECODE_EXT : GR_GL_SK
IP_DECODE_EXT; |
| 3145 (dstConfigAllowsSRGB || GrTextureParams::kForceAllowSRGB_SRGBMode ==
params.srgbMode()) | |
| 3146 ? GR_GL_DECODE_EXT : GR_GL_SKIP_DECODE_EXT; | |
| 3147 | 3145 |
| 3148 if (setAll || newTexParams.fSRGBDecode != oldTexParams.fSRGBDecode) { | 3146 if (setAll || newTexParams.fSRGBDecode != oldTexParams.fSRGBDecode) { |
| 3149 this->setTextureUnit(unitIdx); | 3147 this->setTextureUnit(unitIdx); |
| 3150 GL_CALL(TexParameteri(target, GR_GL_TEXTURE_SRGB_DECODE_EXT, newTexP
arams.fSRGBDecode)); | 3148 GL_CALL(TexParameteri(target, GR_GL_TEXTURE_SRGB_DECODE_EXT, newTexP
arams.fSRGBDecode)); |
| 3151 } | 3149 } |
| 3152 } | 3150 } |
| 3153 | 3151 |
| 3154 static GrGLenum glMinFilterModes[] = { | 3152 static GrGLenum glMinFilterModes[] = { |
| 3155 GR_GL_NEAREST, | 3153 GR_GL_NEAREST, |
| 3156 GR_GL_LINEAR, | 3154 GR_GL_LINEAR, |
| (...skipping 1090 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4247 if (GR_GL_TEXTURE_EXTERNAL == glTexture->target() || | 4245 if (GR_GL_TEXTURE_EXTERNAL == glTexture->target() || |
| 4248 GR_GL_TEXTURE_RECTANGLE == glTexture->target()) { | 4246 GR_GL_TEXTURE_RECTANGLE == glTexture->target()) { |
| 4249 copyParams->fFilter = GrTextureParams::kNone_FilterMode; | 4247 copyParams->fFilter = GrTextureParams::kNone_FilterMode; |
| 4250 copyParams->fWidth = texture->width(); | 4248 copyParams->fWidth = texture->width(); |
| 4251 copyParams->fHeight = texture->height(); | 4249 copyParams->fHeight = texture->height(); |
| 4252 return true; | 4250 return true; |
| 4253 } | 4251 } |
| 4254 } | 4252 } |
| 4255 return false; | 4253 return false; |
| 4256 } | 4254 } |
| OLD | NEW |