Index: src/gpu/gl/GrGLProgramDesc.cpp |
diff --git a/src/gpu/gl/GrGLProgramDesc.cpp b/src/gpu/gl/GrGLProgramDesc.cpp |
index 5edacf5721859d86e484f882d52053dca3eacc73..a2dea8739206cbcab2e356ca4e4c4e49da865502 100644 |
--- a/src/gpu/gl/GrGLProgramDesc.cpp |
+++ b/src/gpu/gl/GrGLProgramDesc.cpp |
@@ -16,9 +16,18 @@ |
#include "glsl/GrGLSLFragmentShaderBuilder.h" |
#include "glsl/GrGLSLCaps.h" |
-static uint16_t texture_target_key(GrGLenum target) { |
- SkASSERT((uint32_t)target < SK_MaxU16); |
- return target; |
+static uint8_t texture_target_key(GrGLenum target) { |
+ switch (target) { |
+ case GR_GL_TEXTURE_2D: |
+ return 0; |
+ case GR_GL_TEXTURE_EXTERNAL: |
+ return 1; |
+ case GR_GL_TEXTURE_RECTANGLE: |
+ return 2; |
+ default: |
+ SkFAIL("Unexpected texture target."); |
+ return 0; |
+ } |
} |
static void add_texture_key(GrProcessorKeyBuilder* b, const GrProcessor& proc, |
@@ -33,8 +42,8 @@ static void add_texture_key(GrProcessorKeyBuilder* b, const GrProcessor& proc, |
for (int i = 0; i < numTextures; ++i) { |
const GrTextureAccess& access = proc.textureAccess(i); |
GrGLTexture* texture = static_cast<GrGLTexture*>(access.getTexture()); |
- k16[i] = caps.configTextureSwizzle(texture->config()).asKey() | |
- (texture_target_key(texture->target()) << 16); |
+ k16[i] = SkToU16(caps.configTextureSwizzle(texture->config()).asKey() | |
+ (texture_target_key(texture->target()) << 8)); |
} |
// zero the last 16 bits if the number of textures is odd. |
if (numTextures & 0x1) { |