From d538d30e2f498de12a46e2aa3b0814c8d9526226 Mon Sep 17 00:00:00 2001 From: xiaozhengdong Date: Tue, 4 Aug 2015 16:55:35 +0800 Subject: [PATCH] hwui: add extension to support unpack operations in OpenGL ES 2.0 OpenGL ES 3.0+ lets us specify the row length for unpack operations such as glTexSubImage2D(). This allows us to upload a sub-rectangle of a texture. Also, the GL_EXT_unpack_subimage extension can also support this feature in OpenGL ES 2.0 Change-Id: Id43c2c55c5eaefbace67087c955f0b4324fb2c35 Signed-off-by: xiaozhengdong --- libs/hwui/Extensions.cpp | 1 + libs/hwui/Extensions.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libs/hwui/Extensions.cpp b/libs/hwui/Extensions.cpp index 84e7e650c52e2..25004b69c496e 100644 --- a/libs/hwui/Extensions.cpp +++ b/libs/hwui/Extensions.cpp @@ -61,6 +61,7 @@ Extensions::Extensions(): Singleton() { mHasTiledRendering = hasGlExtension("GL_QCOM_tiled_rendering"); mHas1BitStencil = hasGlExtension("GL_OES_stencil1"); mHas4BitStencil = hasGlExtension("GL_OES_stencil4"); + mHasUnpackSubImage = hasGlExtension("GL_EXT_unpack_subimage"); // Query EGL extensions findExtensions(eglQueryString(eglGetCurrentDisplay(), EGL_EXTENSIONS), mEglExtensionList); diff --git a/libs/hwui/Extensions.h b/libs/hwui/Extensions.h index 25d4c5ea05c3e..b3cc45195a2a7 100644 --- a/libs/hwui/Extensions.h +++ b/libs/hwui/Extensions.h @@ -41,7 +41,7 @@ public: inline bool has1BitStencil() const { return mHas1BitStencil; } inline bool has4BitStencil() const { return mHas4BitStencil; } inline bool hasNvSystemTime() const { return mHasNvSystemTime; } - inline bool hasUnpackRowLength() const { return mVersionMajor >= 3; } + inline bool hasUnpackRowLength() const { return mVersionMajor >= 3 || mHasUnpackSubImage; } inline bool hasPixelBufferObjects() const { return mVersionMajor >= 3; } inline bool hasOcclusionQueries() const { return mVersionMajor >= 3; } inline bool hasFloatTextures() const { return mVersionMajor >= 3; } @@ -74,6 +74,7 @@ private: bool mHas1BitStencil; bool mHas4BitStencil; bool mHasNvSystemTime; + bool mHasUnpackSubImage; int mVersionMajor; int mVersionMinor;