diff options
author | Jason Sams <rjsams@android.com> | 2010-02-23 17:44:28 -0800 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2010-02-23 17:44:28 -0800 |
commit | c2908e60c9b021fb4bb69acff8d49981dd4dade8 (patch) | |
tree | 7b719d7ca8dc804e2906df1d38022ea4f9c22c50 /libs/rs/rsAllocation.cpp | |
parent | 7eecbf2085bcfe475daf68090a1a4f47fbb6ec72 (diff) | |
download | frameworks_base-c2908e60c9b021fb4bb69acff8d49981dd4dade8.zip frameworks_base-c2908e60c9b021fb4bb69acff8d49981dd4dade8.tar.gz frameworks_base-c2908e60c9b021fb4bb69acff8d49981dd4dade8.tar.bz2 |
Support defered generation of mipmaps. With this change we support mipmap generation when the texture is uploaded to GL without requiring RS to retain the full chain.
Diffstat (limited to 'libs/rs/rsAllocation.cpp')
-rw-r--r-- | libs/rs/rsAllocation.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp index 1ae2317..f1798de 100644 --- a/libs/rs/rsAllocation.cpp +++ b/libs/rs/rsAllocation.cpp @@ -17,6 +17,7 @@ #include "rsContext.h" #include <GLES/gl.h> +#include <GLES2/gl2.h> #include <GLES/glext.h> using namespace android; @@ -88,12 +89,13 @@ bool Allocation::fixAllocation() return false; } -void Allocation::deferedUploadToTexture(const Context *rsc, uint32_t lodOffset) +void Allocation::deferedUploadToTexture(const Context *rsc, bool genMipmap, uint32_t lodOffset) { rsAssert(lodOffset < mType->getLODCount()); mIsTexture = true; mTextureLOD = lodOffset; mUploadDefered = true; + mTextureGenMipmap = !mType->getDimLOD() && genMipmap; } void Allocation::uploadToTexture(const Context *rsc) @@ -138,6 +140,10 @@ void Allocation::uploadToTexture(const Context *rsc) adapt.getDimX(), adapt.getDimY(), 0, format, type, ptr); } + if (mTextureGenMipmap) { + glGenerateMipmap(GL_TEXTURE_2D); + } + } void Allocation::deferedUploadToBufferObject(const Context *rsc) @@ -316,10 +322,10 @@ RsAllocation rsi_AllocationCreateSized(Context *rsc, RsElement e, size_t count) return rsi_AllocationCreateTyped(rsc, type); } -void rsi_AllocationUploadToTexture(Context *rsc, RsAllocation va, uint32_t baseMipLevel) +void rsi_AllocationUploadToTexture(Context *rsc, RsAllocation va, bool genmip, uint32_t baseMipLevel) { Allocation *alloc = static_cast<Allocation *>(va); - alloc->deferedUploadToTexture(rsc, baseMipLevel); + alloc->deferedUploadToTexture(rsc, genmip, baseMipLevel); } void rsi_AllocationUploadToBufferObject(Context *rsc, RsAllocation va) |