| Index: src/gpu/gl/GrGpuGL.cpp
|
| diff --git a/src/gpu/gl/GrGpuGL.cpp b/src/gpu/gl/GrGpuGL.cpp
|
| index 5b9609bc88f7c31c388b54dd0b2b33830aeef846..149025aa0d9606fc718176ca48f722394712b542 100644
|
| --- a/src/gpu/gl/GrGpuGL.cpp
|
| +++ b/src/gpu/gl/GrGpuGL.cpp
|
| @@ -526,9 +526,14 @@ bool GrGpuGL::onWriteTexturePixels(GrTexture* texture,
|
| desc.fTextureID = glTex->textureID();
|
| desc.fOrigin = glTex->origin();
|
|
|
| - return this->uploadTexData(desc, false,
|
| - left, top, width, height,
|
| - config, buffer, rowBytes);
|
| + if (this->uploadTexData(desc, false,
|
| + left, top, width, height,
|
| + config, buffer, rowBytes)) {
|
| + texture->dirtyMipMaps(true);
|
| + return true;
|
| + } else {
|
| + return false;
|
| + }
|
| }
|
|
|
| namespace {
|
| @@ -1547,6 +1552,11 @@ void GrGpuGL::flushRenderTarget(const SkIRect* bound) {
|
| if (NULL == bound || !bound->isEmpty()) {
|
| rt->flagAsNeedingResolve(bound);
|
| }
|
| +
|
| + GrTexture *texture = rt->asTexture();
|
| + if (texture) {
|
| + texture->dirtyMipMaps(true);
|
| + }
|
| }
|
|
|
| GrGLenum gPrimitiveType2GLMode[] = {
|
| @@ -2006,7 +2016,21 @@ void GrGpuGL::bindTexture(int unitIdx, const GrTextureParams& params, GrGLTextur
|
| bool setAll = timestamp < this->getResetTimestamp();
|
| GrGLTexture::TexParams newTexParams;
|
|
|
| - newTexParams.fFilter = (params.filterMode() == GrTextureParams::kNone_FilterMode) ? GR_GL_NEAREST : GR_GL_LINEAR;
|
| + static GrGLenum glFilterModes[] = {
|
| + GR_GL_NEAREST,
|
| + GR_GL_LINEAR,
|
| + GR_GL_LINEAR_MIPMAP_LINEAR
|
| + };
|
| + newTexParams.fFilter = glFilterModes[params.filterMode()];
|
| +
|
| +#ifndef SKIA_IGNORE_GPU_MIPMAPS
|
| + if (params.filterMode() == GrTextureParams::kMipMap_FilterMode &&
|
| + texture->mipMapsAreDirty()) {
|
| +// GL_CALL(Hint(GR_GL_GENERATE_MIPMAP_HINT,GR_GL_NICEST));
|
| + GL_CALL(GenerateMipmap(GR_GL_TEXTURE_2D));
|
| + texture->dirtyMipMaps(false);
|
| + }
|
| +#endif
|
|
|
| newTexParams.fWrapS = tile_to_gl_wrap(params.getTileModeX());
|
| newTexParams.fWrapT = tile_to_gl_wrap(params.getTileModeY());
|
|
|