From 64a7c6bf5b73c1a401cb2aa8dfad3898166ae326 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Mon, 14 Sep 2009 18:10:30 -0700 Subject: [PATCH] add support for RGBX_8888 surfaces in SurfaceFlinger --- libs/surfaceflinger/Buffer.cpp | 3 +++ libs/surfaceflinger/Layer.cpp | 3 +++ libs/surfaceflinger/LayerBase.cpp | 6 ++++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libs/surfaceflinger/Buffer.cpp b/libs/surfaceflinger/Buffer.cpp index 4a7c55e56ae9..65650aadbe8b 100644 --- a/libs/surfaceflinger/Buffer.cpp +++ b/libs/surfaceflinger/Buffer.cpp @@ -106,6 +106,9 @@ status_t Buffer::initSize(uint32_t w, uint32_t h, PixelFormat format, // the requested flags should be honored. usage = reqUsage | BufferAllocator::USAGE_HW_TEXTURE; } + + if (format == PIXEL_FORMAT_RGBX_8888) + format = PIXEL_FORMAT_RGBA_8888; err = allocator.alloc(w, h, format, usage, &handle, &stride); if (err == NO_ERROR) { diff --git a/libs/surfaceflinger/Layer.cpp b/libs/surfaceflinger/Layer.cpp index 62759103de38..1e7f1e67c2b1 100644 --- a/libs/surfaceflinger/Layer.cpp +++ b/libs/surfaceflinger/Layer.cpp @@ -176,6 +176,9 @@ void Layer::reloadTexture(const Region& dirty) // this failed, for instance, because we don't support // NPOT. // FIXME: do something! + LOGD("layer=%p, glEGLImageTargetTexture2DOES(%d) " + "failed err=0x%04x", + this, mTextures[index].image, error); mFlags &= ~DisplayHardware::DIRECT_TEXTURE; } else { // Everything went okay! diff --git a/libs/surfaceflinger/LayerBase.cpp b/libs/surfaceflinger/LayerBase.cpp index 1f224884ff05..e08861d371a5 100644 --- a/libs/surfaceflinger/LayerBase.cpp +++ b/libs/surfaceflinger/LayerBase.cpp @@ -590,7 +590,8 @@ regular: glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture_w, texture_h, 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, data); - } else if (t.format == GGL_PIXEL_FORMAT_RGBA_8888) { + } else if (t.format == GGL_PIXEL_FORMAT_RGBA_8888 || + t.format == GGL_PIXEL_FORMAT_RGBX_8888) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture_w, texture_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); @@ -620,7 +621,8 @@ regular: 0, bounds.top, t.width, bounds.height(), GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, t.data + bounds.top*t.stride*2); - } else if (t.format == GGL_PIXEL_FORMAT_RGBA_8888) { + } else if (t.format == GGL_PIXEL_FORMAT_RGBA_8888 || + t.format == GGL_PIXEL_FORMAT_RGBX_8888) { glTexSubImage2D(GL_TEXTURE_2D, 0, 0, bounds.top, t.width, bounds.height(), GL_RGBA, GL_UNSIGNED_BYTE, -- 2.11.0