summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2012-09-13 20:26:50 -0700
committerRomain Guy <romainguy@google.com>2012-09-13 20:26:50 -0700
commit85ef80d8902afe8d26cb75fa7837fd9e6d019620 (patch)
treed9dbb8a0d49731396fb904a541f9fbe2ece39698 /libs
parentdcd8c81bf4beb719888b6be1b9418303c9075938 (diff)
downloadframeworks_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.cpp28
-rw-r--r--libs/hwui/Caches.h3
-rw-r--r--libs/hwui/Extensions.h14
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