From e78f7c9f48a4c8be118f250c397e5e034ef2e4de Mon Sep 17 00:00:00 2001 From: Derek Sollenberger Date: Wed, 31 Jul 2019 15:18:47 -0400 Subject: Move GraphicBuffer back into libandroid_runtime. Update Bitmap to store AHardwareBuffer instead of GraphicBuffer and begin removing references to GraphicBuffer from the graphics JNI code Test: CtsUiRenderingTestCases Bug: 137655431 Change-Id: If533b6d87a87ae7e94a9b6f16fc52043714087df --- libs/hwui/HardwareBitmapUploader.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'libs/hwui/HardwareBitmapUploader.cpp') diff --git a/libs/hwui/HardwareBitmapUploader.cpp b/libs/hwui/HardwareBitmapUploader.cpp index 9bb6031b76ac..40bff88b7512 100644 --- a/libs/hwui/HardwareBitmapUploader.cpp +++ b/libs/hwui/HardwareBitmapUploader.cpp @@ -403,8 +403,9 @@ sk_sp HardwareBitmapUploader::allocateHardwareBitmap(const SkBitmap& sou if (!sUploader->uploadHardwareBitmap(bitmap, format, buffer)) { return nullptr; } - return Bitmap::createFrom(buffer, bitmap.colorType(), bitmap.refColorSpace(), - bitmap.alphaType(), Bitmap::computePalette(bitmap)); + return Bitmap::createFrom(buffer->toAHardwareBuffer(), bitmap.colorType(), + bitmap.refColorSpace(), bitmap.alphaType(), + Bitmap::computePalette(bitmap)); } void HardwareBitmapUploader::initialize() { -- cgit v1.2.3 From 996773a5d36949a7af3571927efa613670bd73b6 Mon Sep 17 00:00:00 2001 From: John Reck Date: Mon, 3 Feb 2020 16:30:56 -0800 Subject: Convert fatal aborts to error returns Bug: 148805166 Test: none Change-Id: I7824ed77721d2fc9a414797d4637e9d9239f1a99 --- libs/hwui/HardwareBitmapUploader.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'libs/hwui/HardwareBitmapUploader.cpp') diff --git a/libs/hwui/HardwareBitmapUploader.cpp b/libs/hwui/HardwareBitmapUploader.cpp index 3681c69e912b..a3d552faeb0a 100644 --- a/libs/hwui/HardwareBitmapUploader.cpp +++ b/libs/hwui/HardwareBitmapUploader.cpp @@ -187,7 +187,9 @@ private: EGLSyncKHR fence = mUploadThread->queue().runSync([&]() -> EGLSyncKHR { AutoSkiaGlTexture glTexture; glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, autoImage.image); - GL_CHECKPOINT(MODERATE); + if (GLUtils::dumpGLErrors()) { + return EGL_NO_SYNC_KHR; + } // glTexSubImage2D is synchronous in sense that it memcpy() from pointer that we // provide. @@ -195,19 +197,26 @@ private: // when we first use it in drawing glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, bitmap.width(), bitmap.height(), format.format, format.type, bitmap.getPixels()); - GL_CHECKPOINT(MODERATE); + if (GLUtils::dumpGLErrors()) { + return EGL_NO_SYNC_KHR; + } EGLSyncKHR uploadFence = eglCreateSyncKHR(eglGetCurrentDisplay(), EGL_SYNC_FENCE_KHR, NULL); - LOG_ALWAYS_FATAL_IF(uploadFence == EGL_NO_SYNC_KHR, - "Could not create sync fence %#x", eglGetError()); + if (uploadFence == EGL_NO_SYNC_KHR) { + ALOGW("Could not create sync fence %#x", eglGetError()); + }; glFlush(); + GLUtils::dumpGLErrors(); return uploadFence; }); + if (fence == EGL_NO_SYNC_KHR) { + return false; + } EGLint waitStatus = eglClientWaitSyncKHR(display, fence, 0, FENCE_TIMEOUT); - LOG_ALWAYS_FATAL_IF(waitStatus != EGL_CONDITION_SATISFIED_KHR, - "Failed to wait for the fence %#x", eglGetError()); + ALOGE_IF(waitStatus != EGL_CONDITION_SATISFIED_KHR, + "Failed to wait for the fence %#x", eglGetError()); eglDestroySyncKHR(display, fence); } -- cgit v1.2.3