summaryrefslogtreecommitdiff
path: root/libs/surfaceflinger/TextureManager.cpp
diff options
context:
space:
mode:
author Mathias Agopian <mathias@google.com> 2010-06-25 18:02:21 -0700
committer Mathias Agopian <mathias@google.com> 2010-06-25 18:02:21 -0700
commit781953d62dc17d761e39540f0480e5ca7451cdbe (patch)
treeb5762ff0e04ff7cdbd0a8a0df2b6cf74db8ce369 /libs/surfaceflinger/TextureManager.cpp
parent1cb3fdc91e1b82a5afe064714a1b530cc05577a7 (diff)
Revert "Revert "fix [2793164] Spam 2x/second with TOT master in SurfaceFlinger""
This reverts commit 330dd304a471d260a73e342a240921c03c825f99.
Diffstat (limited to 'libs/surfaceflinger/TextureManager.cpp')
-rw-r--r--libs/surfaceflinger/TextureManager.cpp38
1 files changed, 24 insertions, 14 deletions
diff --git a/libs/surfaceflinger/TextureManager.cpp b/libs/surfaceflinger/TextureManager.cpp
index d9bdc6acec34..e4dd42fd5f3e 100644
--- a/libs/surfaceflinger/TextureManager.cpp
+++ b/libs/surfaceflinger/TextureManager.cpp
@@ -30,14 +30,15 @@
#include "clz.h"
#include "DisplayHardware/DisplayHardware.h"
+#include "GLExtensions.h"
#include "TextureManager.h"
namespace android {
// ---------------------------------------------------------------------------
-TextureManager::TextureManager(uint32_t flags)
- : mFlags(flags)
+TextureManager::TextureManager()
+ : mGLExtensions(GLExtensions::getInstance())
{
}
@@ -85,9 +86,11 @@ status_t TextureManager::initTexture(Image* pImage, int32_t format)
GLenum target = GL_TEXTURE_2D;
#if defined(GL_OES_texture_external)
- if (format && isSupportedYuvFormat(format)) {
- target = GL_TEXTURE_EXTERNAL_OES;
- pImage->target = Texture::TEXTURE_EXTERNAL;
+ if (GLExtensions::getInstance().haveTextureExternal()) {
+ if (format && isSupportedYuvFormat(format)) {
+ target = GL_TEXTURE_EXTERNAL_OES;
+ pImage->target = Texture::TEXTURE_EXTERNAL;
+ }
}
#endif
@@ -208,7 +211,7 @@ status_t TextureManager::loadTexture(Texture* texture,
/*
* round to POT if needed
*/
- if (!(mFlags & DisplayHardware::NPOT_EXTENSION)) {
+ if (!mGLExtensions.haveNpot()) {
texture->NPOTAdjust = true;
}
@@ -294,14 +297,19 @@ status_t TextureManager::loadTexture(Texture* texture,
void TextureManager::activateTexture(const Texture& texture, bool filter)
{
const GLenum target = getTextureTarget(&texture);
-
- glBindTexture(target, texture.name);
- glEnable(target);
-
+ if (target == Texture::TEXTURE_2D) {
+ glBindTexture(GL_TEXTURE_2D, texture.name);
+ glEnable(GL_TEXTURE_2D);
#if defined(GL_OES_texture_external)
- if (texture.target == Texture::TEXTURE_2D) {
- glDisable(GL_TEXTURE_EXTERNAL_OES);
- } else {
+ if (GLExtensions::getInstance().haveTextureExternal()) {
+ glDisable(GL_TEXTURE_EXTERNAL_OES);
+ }
+#endif
+ }
+#if defined(GL_OES_texture_external)
+ else {
+ glBindTexture(GL_TEXTURE_EXTERNAL_OES, texture.name);
+ glEnable(GL_TEXTURE_EXTERNAL_OES);
glDisable(GL_TEXTURE_2D);
}
#endif
@@ -319,7 +327,9 @@ void TextureManager::deactivateTextures()
{
glDisable(GL_TEXTURE_2D);
#if defined(GL_OES_texture_external)
- glDisable(GL_TEXTURE_EXTERNAL_OES);
+ if (GLExtensions::getInstance().haveTextureExternal()) {
+ glDisable(GL_TEXTURE_EXTERNAL_OES);
+ }
#endif
}