Loading libs/hwui/apex/android_bitmap.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ void ABitmap_releaseRef(ABitmap* bitmap) { SkSafeUnref(TypeCast::toBitmap(bitmap)); } static AndroidBitmapFormat getFormat(const SkImageInfo& info) { static uint32_t getFormat(const SkImageInfo& info) { switch (info.colorType()) { case kN32_SkColorType: return ANDROID_BITMAP_FORMAT_RGBA_8888; Loading @@ -62,12 +62,14 @@ static AndroidBitmapFormat getFormat(const SkImageInfo& info) { return ANDROID_BITMAP_FORMAT_RGBA_F16; case kRGBA_1010102_SkColorType: return ANDROID_BITMAP_FORMAT_RGBA_1010102; case kBGRA_8888_SkColorType: return ANDROID_BITMAP_FORMAT_BGRA_8888; default: return ANDROID_BITMAP_FORMAT_NONE; } } static SkColorType getColorType(AndroidBitmapFormat format) { static SkColorType getColorType(uint32_t format) { switch (format) { case ANDROID_BITMAP_FORMAT_RGBA_8888: return kN32_SkColorType; Loading @@ -81,6 +83,8 @@ static SkColorType getColorType(AndroidBitmapFormat format) { return kRGBA_F16_SkColorType; case ANDROID_BITMAP_FORMAT_RGBA_1010102: return kRGBA_1010102_SkColorType; case ANDROID_BITMAP_FORMAT_BGRA_8888: return kBGRA_8888_SkColorType; default: return kUnknown_SkColorType; } Loading Loading @@ -108,7 +112,7 @@ static uint32_t getInfoFlags(const SkImageInfo& info, bool isHardware) { return flags; } ABitmap* ABitmap_copy(ABitmap* srcBitmapHandle, AndroidBitmapFormat dstFormat) { ABitmap* ABitmap_copy(ABitmap* srcBitmapHandle, uint32_t dstFormat) { SkColorType dstColorType = getColorType(dstFormat); if (srcBitmapHandle && dstColorType != kUnknown_SkColorType) { SkBitmap srcBitmap; Loading libs/hwui/apex/include/android/graphics/bitmap.h +7 −4 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ ANDROID_API AndroidBitmapInfo ABitmap_getInfoFromJava(JNIEnv* env, jobject bitma */ ANDROID_API ABitmap* ABitmap_acquireBitmapFromJava(JNIEnv* env, jobject bitmapObj); ANDROID_API ABitmap* ABitmap_copy(ABitmap* srcBitmap, AndroidBitmapFormat dstFormat); ANDROID_API ABitmap* ABitmap_copy(ABitmap* srcBitmap, uint32_t dstFormat); ANDROID_API void ABitmap_acquireRef(ABitmap* bitmap); ANDROID_API void ABitmap_releaseRef(ABitmap* bitmap); Loading Loading @@ -88,6 +88,11 @@ ANDROID_API AHardwareBuffer* ABitmap_getHardwareBuffer(ABitmap* bitmap); __END_DECLS #ifdef __cplusplus // Internal extension to AndroidBitmapFormat. enum { ANDROID_BITMAP_FORMAT_BGRA_8888 = 5, }; namespace android { namespace graphics { class Bitmap { Loading Loading @@ -118,9 +123,7 @@ namespace graphics { return *this; } Bitmap copy(AndroidBitmapFormat dstFormat) const { return Bitmap(ABitmap_copy(mBitmap, dstFormat)); } Bitmap copy(uint32_t dstFormat) const { return Bitmap(ABitmap_copy(mBitmap, dstFormat)); } bool isValid() const { return mBitmap != nullptr; } bool isEmpty() const { Loading libs/hwui/utils/Color.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <android/native_window.h> #include <ui/ColorSpace.h> #include <utils/Log.h> #include <vndk/hardware_buffer.h> #include <algorithm> #include <cmath> Loading Loading @@ -63,6 +64,10 @@ static inline SkImageInfo createImageInfo(int32_t width, int32_t height, int32_t colorType = kAlpha_8_SkColorType; alphaType = kPremul_SkAlphaType; break; case AHARDWAREBUFFER_FORMAT_B8G8R8A8_UNORM: colorType = kBGRA_8888_SkColorType; alphaType = kPremul_SkAlphaType; break; default: ALOGV("Unsupported format: %d, return unknown by default", format); break; Loading Loading @@ -100,6 +105,8 @@ uint32_t ColorTypeToBufferFormat(SkColorType colorType) { return kRGBA4444; case kAlpha_8_SkColorType: return AHARDWAREBUFFER_FORMAT_R8_UNORM; case kBGRA_8888_SkColorType: return AHARDWAREBUFFER_FORMAT_B8G8R8A8_UNORM; default: ALOGV("Unsupported colorType: %d, return RGBA_8888 by default", (int)colorType); return AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM; Loading @@ -122,6 +129,8 @@ SkColorType BufferFormatToColorType(uint32_t format) { return kRGBA_F16_SkColorType; case AHARDWAREBUFFER_FORMAT_R8_UNORM: return kAlpha_8_SkColorType; case AHARDWAREBUFFER_FORMAT_B8G8R8A8_UNORM: return kBGRA_8888_SkColorType; default: ALOGV("Unsupported format: %d, return unknown by default", format); return kUnknown_SkColorType; Loading libs/input/SpriteController.cpp +18 −2 Original line number Diff line number Diff line Loading @@ -356,7 +356,7 @@ sp<SurfaceControl> SpriteController::obtainSurface(int32_t width, int32_t height } const sp<SurfaceControl> surfaceControl = mSurfaceComposerClient->createSurface(String8("Sprite"), width, height, PIXEL_FORMAT_RGBA_8888, createFlags, getPixelFormat(), createFlags, parent ? parent->getHandle() : nullptr); if (surfaceControl == nullptr || !surfaceControl->isValid()) { ALOGE("Error creating sprite surface."); Loading Loading @@ -403,7 +403,7 @@ void SpriteController::SpriteImpl::setIcon(const SpriteIcon& icon) { uint32_t dirty; if (icon.isValid()) { mLocked.state.icon.bitmap = icon.bitmap.copy(ANDROID_BITMAP_FORMAT_RGBA_8888); mLocked.state.icon.bitmap = icon.bitmap.copy(getBitmapFormat()); if (!mLocked.state.icon.isValid() || mLocked.state.icon.hotSpotX != icon.hotSpotX || mLocked.state.icon.hotSpotY != icon.hotSpotY || mLocked.state.icon.drawNativeDropShadow != icon.drawNativeDropShadow) { Loading Loading @@ -503,4 +503,20 @@ void SpriteController::SpriteImpl::invalidateLocked(uint32_t dirty) { } } uint32_t SpriteController::getBitmapFormat() { if (Surface::IsCursorPlaneCompatibilitySupported()) { return ANDROID_BITMAP_FORMAT_BGRA_8888; } return ANDROID_BITMAP_FORMAT_RGBA_8888; } PixelFormat SpriteController::getPixelFormat() { if (Surface::IsCursorPlaneCompatibilitySupported()) { return PIXEL_FORMAT_BGRA_8888; } return PIXEL_FORMAT_RGBA_8888; } } // namespace android libs/input/SpriteController.h +3 −0 Original line number Diff line number Diff line Loading @@ -136,6 +136,9 @@ public: virtual void openTransaction(); virtual void closeTransaction(); static uint32_t getBitmapFormat(); static PixelFormat getPixelFormat(); private: class Handler : public virtual android::MessageHandler { public: Loading Loading
libs/hwui/apex/android_bitmap.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ void ABitmap_releaseRef(ABitmap* bitmap) { SkSafeUnref(TypeCast::toBitmap(bitmap)); } static AndroidBitmapFormat getFormat(const SkImageInfo& info) { static uint32_t getFormat(const SkImageInfo& info) { switch (info.colorType()) { case kN32_SkColorType: return ANDROID_BITMAP_FORMAT_RGBA_8888; Loading @@ -62,12 +62,14 @@ static AndroidBitmapFormat getFormat(const SkImageInfo& info) { return ANDROID_BITMAP_FORMAT_RGBA_F16; case kRGBA_1010102_SkColorType: return ANDROID_BITMAP_FORMAT_RGBA_1010102; case kBGRA_8888_SkColorType: return ANDROID_BITMAP_FORMAT_BGRA_8888; default: return ANDROID_BITMAP_FORMAT_NONE; } } static SkColorType getColorType(AndroidBitmapFormat format) { static SkColorType getColorType(uint32_t format) { switch (format) { case ANDROID_BITMAP_FORMAT_RGBA_8888: return kN32_SkColorType; Loading @@ -81,6 +83,8 @@ static SkColorType getColorType(AndroidBitmapFormat format) { return kRGBA_F16_SkColorType; case ANDROID_BITMAP_FORMAT_RGBA_1010102: return kRGBA_1010102_SkColorType; case ANDROID_BITMAP_FORMAT_BGRA_8888: return kBGRA_8888_SkColorType; default: return kUnknown_SkColorType; } Loading Loading @@ -108,7 +112,7 @@ static uint32_t getInfoFlags(const SkImageInfo& info, bool isHardware) { return flags; } ABitmap* ABitmap_copy(ABitmap* srcBitmapHandle, AndroidBitmapFormat dstFormat) { ABitmap* ABitmap_copy(ABitmap* srcBitmapHandle, uint32_t dstFormat) { SkColorType dstColorType = getColorType(dstFormat); if (srcBitmapHandle && dstColorType != kUnknown_SkColorType) { SkBitmap srcBitmap; Loading
libs/hwui/apex/include/android/graphics/bitmap.h +7 −4 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ ANDROID_API AndroidBitmapInfo ABitmap_getInfoFromJava(JNIEnv* env, jobject bitma */ ANDROID_API ABitmap* ABitmap_acquireBitmapFromJava(JNIEnv* env, jobject bitmapObj); ANDROID_API ABitmap* ABitmap_copy(ABitmap* srcBitmap, AndroidBitmapFormat dstFormat); ANDROID_API ABitmap* ABitmap_copy(ABitmap* srcBitmap, uint32_t dstFormat); ANDROID_API void ABitmap_acquireRef(ABitmap* bitmap); ANDROID_API void ABitmap_releaseRef(ABitmap* bitmap); Loading Loading @@ -88,6 +88,11 @@ ANDROID_API AHardwareBuffer* ABitmap_getHardwareBuffer(ABitmap* bitmap); __END_DECLS #ifdef __cplusplus // Internal extension to AndroidBitmapFormat. enum { ANDROID_BITMAP_FORMAT_BGRA_8888 = 5, }; namespace android { namespace graphics { class Bitmap { Loading Loading @@ -118,9 +123,7 @@ namespace graphics { return *this; } Bitmap copy(AndroidBitmapFormat dstFormat) const { return Bitmap(ABitmap_copy(mBitmap, dstFormat)); } Bitmap copy(uint32_t dstFormat) const { return Bitmap(ABitmap_copy(mBitmap, dstFormat)); } bool isValid() const { return mBitmap != nullptr; } bool isEmpty() const { Loading
libs/hwui/utils/Color.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <android/native_window.h> #include <ui/ColorSpace.h> #include <utils/Log.h> #include <vndk/hardware_buffer.h> #include <algorithm> #include <cmath> Loading Loading @@ -63,6 +64,10 @@ static inline SkImageInfo createImageInfo(int32_t width, int32_t height, int32_t colorType = kAlpha_8_SkColorType; alphaType = kPremul_SkAlphaType; break; case AHARDWAREBUFFER_FORMAT_B8G8R8A8_UNORM: colorType = kBGRA_8888_SkColorType; alphaType = kPremul_SkAlphaType; break; default: ALOGV("Unsupported format: %d, return unknown by default", format); break; Loading Loading @@ -100,6 +105,8 @@ uint32_t ColorTypeToBufferFormat(SkColorType colorType) { return kRGBA4444; case kAlpha_8_SkColorType: return AHARDWAREBUFFER_FORMAT_R8_UNORM; case kBGRA_8888_SkColorType: return AHARDWAREBUFFER_FORMAT_B8G8R8A8_UNORM; default: ALOGV("Unsupported colorType: %d, return RGBA_8888 by default", (int)colorType); return AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM; Loading @@ -122,6 +129,8 @@ SkColorType BufferFormatToColorType(uint32_t format) { return kRGBA_F16_SkColorType; case AHARDWAREBUFFER_FORMAT_R8_UNORM: return kAlpha_8_SkColorType; case AHARDWAREBUFFER_FORMAT_B8G8R8A8_UNORM: return kBGRA_8888_SkColorType; default: ALOGV("Unsupported format: %d, return unknown by default", format); return kUnknown_SkColorType; Loading
libs/input/SpriteController.cpp +18 −2 Original line number Diff line number Diff line Loading @@ -356,7 +356,7 @@ sp<SurfaceControl> SpriteController::obtainSurface(int32_t width, int32_t height } const sp<SurfaceControl> surfaceControl = mSurfaceComposerClient->createSurface(String8("Sprite"), width, height, PIXEL_FORMAT_RGBA_8888, createFlags, getPixelFormat(), createFlags, parent ? parent->getHandle() : nullptr); if (surfaceControl == nullptr || !surfaceControl->isValid()) { ALOGE("Error creating sprite surface."); Loading Loading @@ -403,7 +403,7 @@ void SpriteController::SpriteImpl::setIcon(const SpriteIcon& icon) { uint32_t dirty; if (icon.isValid()) { mLocked.state.icon.bitmap = icon.bitmap.copy(ANDROID_BITMAP_FORMAT_RGBA_8888); mLocked.state.icon.bitmap = icon.bitmap.copy(getBitmapFormat()); if (!mLocked.state.icon.isValid() || mLocked.state.icon.hotSpotX != icon.hotSpotX || mLocked.state.icon.hotSpotY != icon.hotSpotY || mLocked.state.icon.drawNativeDropShadow != icon.drawNativeDropShadow) { Loading Loading @@ -503,4 +503,20 @@ void SpriteController::SpriteImpl::invalidateLocked(uint32_t dirty) { } } uint32_t SpriteController::getBitmapFormat() { if (Surface::IsCursorPlaneCompatibilitySupported()) { return ANDROID_BITMAP_FORMAT_BGRA_8888; } return ANDROID_BITMAP_FORMAT_RGBA_8888; } PixelFormat SpriteController::getPixelFormat() { if (Surface::IsCursorPlaneCompatibilitySupported()) { return PIXEL_FORMAT_BGRA_8888; } return PIXEL_FORMAT_RGBA_8888; } } // namespace android
libs/input/SpriteController.h +3 −0 Original line number Diff line number Diff line Loading @@ -136,6 +136,9 @@ public: virtual void openTransaction(); virtual void closeTransaction(); static uint32_t getBitmapFormat(); static PixelFormat getPixelFormat(); private: class Handler : public virtual android::MessageHandler { public: Loading