Merge "Support ALPHA_8 + HARDWARE" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
cc37f4e979
@@ -310,6 +310,11 @@ bool HardwareBitmapUploader::has1010102Support() {
|
||||
return has101012Support;
|
||||
}
|
||||
|
||||
bool HardwareBitmapUploader::hasAlpha8Support() {
|
||||
static bool hasAlpha8Support = checkSupport(AHARDWAREBUFFER_FORMAT_R8_UNORM);
|
||||
return hasAlpha8Support;
|
||||
}
|
||||
|
||||
static FormatInfo determineFormat(const SkBitmap& skBitmap, bool usingGL) {
|
||||
FormatInfo formatInfo;
|
||||
switch (skBitmap.info().colorType()) {
|
||||
@@ -363,6 +368,13 @@ static FormatInfo determineFormat(const SkBitmap& skBitmap, bool usingGL) {
|
||||
}
|
||||
formatInfo.format = GL_RGBA;
|
||||
break;
|
||||
case kAlpha_8_SkColorType:
|
||||
formatInfo.isSupported = HardwareBitmapUploader::hasAlpha8Support();
|
||||
formatInfo.bufferFormat = AHARDWAREBUFFER_FORMAT_R8_UNORM;
|
||||
formatInfo.format = GL_R8;
|
||||
formatInfo.type = GL_UNSIGNED_BYTE;
|
||||
formatInfo.vkFormat = VK_FORMAT_R8_UNORM;
|
||||
break;
|
||||
default:
|
||||
ALOGW("unable to create hardware bitmap of colortype: %d", skBitmap.info().colorType());
|
||||
formatInfo.valid = false;
|
||||
|
||||
@@ -30,11 +30,13 @@ public:
|
||||
#ifdef __ANDROID__
|
||||
static bool hasFP16Support();
|
||||
static bool has1010102Support();
|
||||
static bool hasAlpha8Support();
|
||||
#else
|
||||
static bool hasFP16Support() {
|
||||
return true;
|
||||
}
|
||||
static bool has1010102Support() { return true; }
|
||||
static bool hasAlpha8Support() { return true; }
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -104,6 +104,10 @@ sk_sp<Bitmap> Bitmap::allocateAshmemBitmap(size_t size, const SkImageInfo& info,
|
||||
|
||||
sk_sp<Bitmap> Bitmap::allocateHardwareBitmap(const SkBitmap& bitmap) {
|
||||
#ifdef __ANDROID__ // Layoutlib does not support hardware acceleration
|
||||
if (bitmap.colorType() == kAlpha_8_SkColorType &&
|
||||
!uirenderer::HardwareBitmapUploader::hasAlpha8Support()) {
|
||||
return nullptr;
|
||||
}
|
||||
return uirenderer::HardwareBitmapUploader::allocateHardwareBitmap(bitmap);
|
||||
#else
|
||||
return Bitmap::allocateHeapBitmap(bitmap.info());
|
||||
|
||||
Reference in New Issue
Block a user