Better logs for "Unable to generate SkImage/SkSurface"
In both cases, we don't have enough information to debug the issue, and
none of these have been reproducible, so we need more info in the logs
to know what's going on.
Combine the logs, since they're complaining about similar issues. Add
the data that was added in
https://skia-review.googlesource.com/c/skia/+/573879 for SkSurfaces.
Tested by converting the fatal logs to ALOGD and removing the if
statements. The logs then look like:
D RenderEngine: Unable to generate SkSurface. isTextureValid:1 dataspace:143261696
D RenderEngine: GrBackendTexture: (2208 x 1840) hasMipmaps: 0 isProtected: 0 texType: 1
D RenderEngine: GrGLTextureInfo: success: 0 fTarget: 0 fFormat: 0 colorType 4
Bug: 275475401
Bug: 242603007
Bug: 223762683
Test: m; look at logs
Change-Id: If1f3a933ea612279e9911c191ab2553160e744c2
diff --git a/libs/renderengine/skia/AutoBackendTexture.cpp b/libs/renderengine/skia/AutoBackendTexture.cpp
index 5c122d4..932be56 100644
--- a/libs/renderengine/skia/AutoBackendTexture.cpp
+++ b/libs/renderengine/skia/AutoBackendTexture.cpp
@@ -82,6 +82,18 @@
textureRelease->unref(false);
}
+void logFatalTexture(const char* msg, const GrBackendTexture& tex, ui::Dataspace dataspace,
+ SkColorType colorType) {
+ GrGLTextureInfo textureInfo;
+ bool retrievedTextureInfo = tex.getGLTextureInfo(&textureInfo);
+ LOG_ALWAYS_FATAL("%s isTextureValid:%d dataspace:%d"
+ "\n\tGrBackendTexture: (%i x %i) hasMipmaps: %i isProtected: %i texType: %i"
+ "\n\t\tGrGLTextureInfo: success: %i fTarget: %u fFormat: %u colorType %i",
+ msg, tex.isValid(), dataspace, tex.width(), tex.height(), tex.hasMipmaps(),
+ tex.isProtected(), static_cast<int>(tex.textureType()), retrievedTextureInfo,
+ textureInfo.fTarget, textureInfo.fFormat, colorType);
+}
+
sk_sp<SkImage> AutoBackendTexture::makeImage(ui::Dataspace dataspace, SkAlphaType alphaType,
GrDirectContext* context) {
ATRACE_CALL();
@@ -107,9 +119,9 @@
mImage = image;
mDataspace = dataspace;
- LOG_ALWAYS_FATAL_IF(mImage == nullptr,
- "Unable to generate SkImage. isTextureValid:%d dataspace:%d",
- mBackendTexture.isValid(), dataspace);
+ if (!mImage) {
+ logFatalTexture("Unable to generate SkImage.", mBackendTexture, dataspace, colorType);
+ }
return mImage;
}
@@ -131,9 +143,9 @@
}
mDataspace = dataspace;
- LOG_ALWAYS_FATAL_IF(mSurface == nullptr,
- "Unable to generate SkSurface. isTextureValid:%d dataspace:%d",
- mBackendTexture.isValid(), dataspace);
+ if (!mSurface) {
+ logFatalTexture("Unable to generate SkSurface.", mBackendTexture, dataspace, mColorType);
+ }
return mSurface;
}