diff options
author | Romain Guy <romainguy@google.com> | 2012-09-13 20:26:50 -0700 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2012-09-13 20:26:50 -0700 |
commit | 85ef80d8902afe8d26cb75fa7837fd9e6d019620 (patch) | |
tree | d9dbb8a0d49731396fb904a541f9fbe2ece39698 /libs | |
parent | dcd8c81bf4beb719888b6be1b9418303c9075938 (diff) | |
download | frameworks_base-85ef80d8902afe8d26cb75fa7837fd9e6d019620.zip frameworks_base-85ef80d8902afe8d26cb75fa7837fd9e6d019620.tar.gz frameworks_base-85ef80d8902afe8d26cb75fa7837fd9e6d019620.tar.bz2 |
Foundation for tiling optimization
Change-Id: I4db32a4749f196472ba0dde7e102439d2ba4a3a7
Diffstat (limited to 'libs')
-rw-r--r-- | libs/hwui/Caches.cpp | 28 | ||||
-rw-r--r-- | libs/hwui/Caches.h | 3 | ||||
-rw-r--r-- | libs/hwui/Extensions.h | 14 |
3 files changed, 40 insertions, 5 deletions
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp index 0ed4888..1de0f9d 100644 --- a/libs/hwui/Caches.cpp +++ b/libs/hwui/Caches.cpp @@ -321,6 +321,10 @@ bool Caches::unbindIndicesBuffer() { return false; } +/////////////////////////////////////////////////////////////////////////////// +// Meshes and textures +/////////////////////////////////////////////////////////////////////////////// + void Caches::bindPositionVertexPointer(bool force, GLuint slot, GLvoid* vertices, GLsizei stride) { if (force || vertices != mCurrentPositionPointer) { glVertexAttribPointer(slot, 2, GL_FLOAT, GL_FALSE, stride, vertices); @@ -366,6 +370,10 @@ void Caches::activeTexture(GLuint textureUnit) { } } +/////////////////////////////////////////////////////////////////////////////// +// Scissor +/////////////////////////////////////////////////////////////////////////////// + bool Caches::setScissor(GLint x, GLint y, GLint width, GLint height) { if (scissorEnabled && (x != mScissorX || y != mScissorY || width != mScissorWidth || height != mScissorHeight)) { @@ -412,6 +420,26 @@ void Caches::resetScissor() { mScissorX = mScissorY = mScissorWidth = mScissorHeight = 0; } +/////////////////////////////////////////////////////////////////////////////// +// Tiling +/////////////////////////////////////////////////////////////////////////////// + +void Caches::startTiling(GLuint x, GLuint y, GLuint width, GLuint height, bool opaque) { + if (extensions.hasTiledRendering()) { + + } +} + +void Caches::endTiling() { + if (extensions.hasTiledRendering()) { + + } +} + +/////////////////////////////////////////////////////////////////////////////// +// Regions +/////////////////////////////////////////////////////////////////////////////// + TextureVertex* Caches::getRegionMesh() { // Create the mesh, 2 triangles and 4 vertices per rectangle in the region if (!mRegionMesh) { diff --git a/libs/hwui/Caches.h b/libs/hwui/Caches.h index 6d27d6e..50e9e75 100644 --- a/libs/hwui/Caches.h +++ b/libs/hwui/Caches.h @@ -211,6 +211,9 @@ public: bool disableScissor(); void setScissorEnabled(bool enabled); + void startTiling(GLuint x, GLuint y, GLuint width, GLuint height, bool opaque); + void endTiling(); + /** * Returns the mesh used to draw regions. Calling this method will * bind a VBO of type GL_ELEMENT_ARRAY_BUFFER that contains the diff --git a/libs/hwui/Extensions.h b/libs/hwui/Extensions.h index fb945a8..bdaa3cc 100644 --- a/libs/hwui/Extensions.h +++ b/libs/hwui/Extensions.h @@ -65,11 +65,13 @@ public: mHasDiscardFramebuffer = hasExtension("GL_EXT_discard_framebuffer"); mHasDebugMarker = hasExtension("GL_EXT_debug_marker"); mHasDebugLabel = hasExtension("GL_EXT_debug_label"); + mHasTiledRendering = hasExtension("GL_QCOM_tiled_rendering"); - // We don't need to copy the string, the OpenGL ES spec - // guarantees the result of glGetString to point to a - // static string as long as our OpenGL context is valid - mExtensions = buffer; + mExtensions = strdup(buffer); + } + + ~Extensions() { + free(mExtensions); } inline bool hasNPot() const { return mHasNPot; } @@ -77,6 +79,7 @@ public: inline bool hasDiscardFramebuffer() const { return mHasDiscardFramebuffer; } inline bool hasDebugMarker() const { return mHasDebugMarker; } inline bool hasDebugLabel() const { return mHasDebugLabel; } + inline bool hasTiledRendering() const { return mHasTiledRendering; } bool hasExtension(const char* extension) const { const String8 s(extension); @@ -90,13 +93,14 @@ public: private: SortedVector<String8> mExtensionList; - const char* mExtensions; + char* mExtensions; bool mHasNPot; bool mHasFramebufferFetch; bool mHasDiscardFramebuffer; bool mHasDebugMarker; bool mHasDebugLabel; + bool mHasTiledRendering; }; // class Extensions }; // namespace uirenderer |