SkBitmap bitmap;
if (this->tryLockAsBitmap(&bitmap, client, chint)) {
GrTexture* tex = nullptr;
- // disable mipmapping until we generate anisotropic mipmap levels
- willBeMipped = false;
if (willBeMipped) {
tex = GrGenerateMipMapsAndUploadToTexture(ctx, bitmap);
- } else {
+ }
+ if (!tex) {
tex = GrUploadBitmapToTexture(ctx, bitmap);
}
if (tex) {
}
GrTexture* GrBitmapTextureMaker::refOriginalTexture(bool willBeMipped) {
- GrTexture* tex;
+ GrTexture* tex = nullptr;
if (fOriginalKey.isValid()) {
tex = this->context()->textureProvider()->findAndRefTextureByUniqueKey(fOriginalKey);
return tex;
}
}
- // disable mipmapping until we generate anisotropic mipmap levels
- willBeMipped = false;
if (willBeMipped) {
tex = GrGenerateMipMapsAndUploadToTexture(this->context(), fBitmap);
- } else {
+ }
+ if (!tex) {
tex = GrUploadBitmapToTexture(this->context(), fBitmap);
}
if (tex && fOriginalKey.isValid()) {
return texture;
}
+ // SkMipMap::Build doesn't handle sRGB data correctly (yet).
+ // Failover to the GL code-path for now.
+ if (kLinear_SkColorProfileType != bitmap.profileType()) {
+ return nullptr;
+ }
+
SkASSERT(sizeof(int) <= sizeof(uint32_t));
if (bitmap.width() < 0 || bitmap.height() < 0) {
return nullptr;