From a8f3e4e53cad835d0d57b85a6ce1b7416e95ba73 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Wed, 30 Jun 2010 15:43:47 -0700 Subject: [PATCH] fix live wallpapers on Droid On omap3 h/w we force opaque formats to RGB_565 instead of RGBX_8888 because the GL driver doesn't support it. RGBX_8888 is always remapped to RGBA_8888. Change-Id: I0bfabeb98c8d3a399079e6797cf2a0ee95915324 --- libs/surfaceflinger/Android.mk | 4 ++++ libs/surfaceflinger/SurfaceFlinger.cpp | 9 +++++++++ libs/ui/GraphicBuffer.cpp | 12 ------------ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/libs/surfaceflinger/Android.mk b/libs/surfaceflinger/Android.mk index dbe351e5a..a14bfb569 100644 --- a/libs/surfaceflinger/Android.mk +++ b/libs/surfaceflinger/Android.mk @@ -20,6 +20,10 @@ LOCAL_SRC_FILES:= \ LOCAL_CFLAGS:= -DLOG_TAG=\"SurfaceFlinger\" LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES +ifeq ($(TARGET_BOARD_PLATFORM), omap3) + LOCAL_CFLAGS += -DNO_RGBX_8888 +endif + # need "-lrt" on Linux simulator to pick up clock_gettime ifeq ($(TARGET_SIMULATOR),true) ifeq ($(HOST_OS),linux) diff --git a/libs/surfaceflinger/SurfaceFlinger.cpp b/libs/surfaceflinger/SurfaceFlinger.cpp index 23efd161f..68e8f19e7 100644 --- a/libs/surfaceflinger/SurfaceFlinger.cpp +++ b/libs/surfaceflinger/SurfaceFlinger.cpp @@ -1263,10 +1263,19 @@ sp SurfaceFlinger::createNormalSurface( format = PIXEL_FORMAT_RGBA_8888; break; case PIXEL_FORMAT_OPAQUE: +#ifdef NO_RGBX_8888 + format = PIXEL_FORMAT_RGB_565; +#else format = PIXEL_FORMAT_RGBX_8888; +#endif break; } +#ifdef NO_RGBX_8888 + if (format == PIXEL_FORMAT_RGBX_8888) + format = PIXEL_FORMAT_RGBA_8888; +#endif + sp layer = new Layer(this, display, client); status_t err = layer->setBuffers(w, h, format, flags); if (LIKELY(err != NO_ERROR)) { diff --git a/libs/ui/GraphicBuffer.cpp b/libs/ui/GraphicBuffer.cpp index 4b5f02517..519c277c6 100644 --- a/libs/ui/GraphicBuffer.cpp +++ b/libs/ui/GraphicBuffer.cpp @@ -127,18 +127,6 @@ status_t GraphicBuffer::initSize(uint32_t w, uint32_t h, PixelFormat format, { GraphicBufferAllocator& allocator = GraphicBufferAllocator::get(); status_t err = allocator.alloc(w, h, format, reqUsage, &handle, &stride); - - if (err<0 && format == PIXEL_FORMAT_RGBX_8888) { - /* - * There is currently a bug with some gralloc implementations - * not supporting RGBX_8888. In this case, we revert to using RGBA_8888 - * which is not exactly the same, as GL_REPLACE will yield a different - * result. - */ - format = PIXEL_FORMAT_RGBA_8888; - err = allocator.alloc(w, h, format, reqUsage, &handle, &stride); - } - if (err == NO_ERROR) { this->width = w; this->height = h;