Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cc37f4e9 authored by Leon Scroggins's avatar Leon Scroggins Committed by Android (Google) Code Review
Browse files

Merge "Support ALPHA_8 + HARDWARE" into tm-dev

parents 3e41c835 a008aa9c
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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;
+2 −0
Original line number Diff line number Diff line
@@ -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
};

+4 −0
Original line number Diff line number Diff line
@@ -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());