diff options
| author | 2012-09-13 20:26:50 -0700 | |
|---|---|---|
| committer | 2012-09-13 20:26:50 -0700 | |
| commit | 85ef80d8902afe8d26cb75fa7837fd9e6d019620 (patch) | |
| tree | d9dbb8a0d49731396fb904a541f9fbe2ece39698 | |
| parent | dcd8c81bf4beb719888b6be1b9418303c9075938 (diff) | |
Foundation for tiling optimization
Change-Id: I4db32a4749f196472ba0dde7e102439d2ba4a3a7
| -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 0ed4888ac7d3..1de0f9daaffe 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 6d27d6e880b8..50e9e758c90a 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 fb945a841b74..bdaa3cc06aa8 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 |