Loading libs/hwui/Caches.cpp +0 −2 Original line number Diff line number Diff line Loading @@ -68,8 +68,6 @@ bool Caches::init() { mRegionMesh = nullptr; mProgram = nullptr; patchCache.init(); mInitialized = true; mPixelBufferState = new PixelBufferState(); Loading libs/hwui/PatchCache.cpp +9 −20 Original line number Diff line number Diff line Loading @@ -43,21 +43,6 @@ PatchCache::~PatchCache() { clear(); } void PatchCache::init() { bool created = false; if (!mMeshBuffer) { glGenBuffers(1, &mMeshBuffer); created = true; } mRenderState.meshState().bindMeshBuffer(mMeshBuffer); mRenderState.meshState().resetVertexPointers(); if (created) { createVertexBuffer(); } } /////////////////////////////////////////////////////////////////////////////// // Caching /////////////////////////////////////////////////////////////////////////////// Loading @@ -80,8 +65,7 @@ void PatchCache::clear() { clearCache(); if (mMeshBuffer) { mRenderState.meshState().unbindMeshBuffer(); glDeleteBuffers(1, &mMeshBuffer); mRenderState.meshState().deleteMeshBuffer(mMeshBuffer); mMeshBuffer = 0; mSize = 0; } Loading Loading @@ -170,7 +154,8 @@ void PatchCache::clearGarbage() { } void PatchCache::createVertexBuffer() { glBufferData(GL_ARRAY_BUFFER, mMaxSize, nullptr, GL_DYNAMIC_DRAW); mRenderState.meshState().genOrUpdateMeshBuffer(&mMeshBuffer, mMaxSize, nullptr, GL_DYNAMIC_DRAW); mSize = 0; mFreeBlocks = new BufferBlock(0, mMaxSize); mGenerationId++; Loading @@ -182,7 +167,9 @@ void PatchCache::createVertexBuffer() { */ void PatchCache::setupMesh(Patch* newMesh) { // This call ensures the VBO exists and that it is bound init(); if (!mMeshBuffer) { createVertexBuffer(); } // If we're running out of space, let's clear the entire cache uint32_t size = newMesh->getSize(); Loading Loading @@ -215,7 +202,9 @@ void PatchCache::setupMesh(Patch* newMesh) { // Copy the 9patch mesh in the VBO newMesh->positionOffset = (GLintptr) (block->offset); newMesh->textureOffset = newMesh->positionOffset + kMeshTextureOffset; glBufferSubData(GL_ARRAY_BUFFER, newMesh->positionOffset, size, newMesh->vertices.get()); mRenderState.meshState().updateMeshBufferSubData(mMeshBuffer, newMesh->positionOffset, size, newMesh->vertices.get()); // Remove the block since we've used it entirely if (block->size == size) { Loading libs/hwui/PatchCache.h +0 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,6 @@ class PatchCache { public: PatchCache(RenderState& renderState); ~PatchCache(); void init(); const Patch* get(const AssetAtlas::Entry* entry, const uint32_t bitmapWidth, const uint32_t bitmapHeight, Loading libs/hwui/renderstate/MeshState.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -17,8 +17,6 @@ #include "Program.h" #include "ShadowTessellator.h" namespace android { namespace uirenderer { Loading Loading @@ -100,6 +98,12 @@ void MeshState::genOrUpdateMeshBuffer(GLuint* buffer, GLsizeiptr size, glBufferData(GL_ARRAY_BUFFER, size, data, usage); } void MeshState::updateMeshBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data) { bindMeshBuffer(buffer); glBufferSubData(GL_ARRAY_BUFFER, offset, size, data); } void MeshState::deleteMeshBuffer(GLuint buffer) { if (buffer == mCurrentBuffer) { // GL defines that deleting the currently bound VBO rebinds to 0 (no VBO). Loading libs/hwui/renderstate/MeshState.h +1 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ public: void unbindMeshBuffer(); void genOrUpdateMeshBuffer(GLuint* buffer, GLsizeiptr size, const void* data, GLenum usage); void updateMeshBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); void deleteMeshBuffer(GLuint); /////////////////////////////////////////////////////////////////////////////// Loading Loading
libs/hwui/Caches.cpp +0 −2 Original line number Diff line number Diff line Loading @@ -68,8 +68,6 @@ bool Caches::init() { mRegionMesh = nullptr; mProgram = nullptr; patchCache.init(); mInitialized = true; mPixelBufferState = new PixelBufferState(); Loading
libs/hwui/PatchCache.cpp +9 −20 Original line number Diff line number Diff line Loading @@ -43,21 +43,6 @@ PatchCache::~PatchCache() { clear(); } void PatchCache::init() { bool created = false; if (!mMeshBuffer) { glGenBuffers(1, &mMeshBuffer); created = true; } mRenderState.meshState().bindMeshBuffer(mMeshBuffer); mRenderState.meshState().resetVertexPointers(); if (created) { createVertexBuffer(); } } /////////////////////////////////////////////////////////////////////////////// // Caching /////////////////////////////////////////////////////////////////////////////// Loading @@ -80,8 +65,7 @@ void PatchCache::clear() { clearCache(); if (mMeshBuffer) { mRenderState.meshState().unbindMeshBuffer(); glDeleteBuffers(1, &mMeshBuffer); mRenderState.meshState().deleteMeshBuffer(mMeshBuffer); mMeshBuffer = 0; mSize = 0; } Loading Loading @@ -170,7 +154,8 @@ void PatchCache::clearGarbage() { } void PatchCache::createVertexBuffer() { glBufferData(GL_ARRAY_BUFFER, mMaxSize, nullptr, GL_DYNAMIC_DRAW); mRenderState.meshState().genOrUpdateMeshBuffer(&mMeshBuffer, mMaxSize, nullptr, GL_DYNAMIC_DRAW); mSize = 0; mFreeBlocks = new BufferBlock(0, mMaxSize); mGenerationId++; Loading @@ -182,7 +167,9 @@ void PatchCache::createVertexBuffer() { */ void PatchCache::setupMesh(Patch* newMesh) { // This call ensures the VBO exists and that it is bound init(); if (!mMeshBuffer) { createVertexBuffer(); } // If we're running out of space, let's clear the entire cache uint32_t size = newMesh->getSize(); Loading Loading @@ -215,7 +202,9 @@ void PatchCache::setupMesh(Patch* newMesh) { // Copy the 9patch mesh in the VBO newMesh->positionOffset = (GLintptr) (block->offset); newMesh->textureOffset = newMesh->positionOffset + kMeshTextureOffset; glBufferSubData(GL_ARRAY_BUFFER, newMesh->positionOffset, size, newMesh->vertices.get()); mRenderState.meshState().updateMeshBufferSubData(mMeshBuffer, newMesh->positionOffset, size, newMesh->vertices.get()); // Remove the block since we've used it entirely if (block->size == size) { Loading
libs/hwui/PatchCache.h +0 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,6 @@ class PatchCache { public: PatchCache(RenderState& renderState); ~PatchCache(); void init(); const Patch* get(const AssetAtlas::Entry* entry, const uint32_t bitmapWidth, const uint32_t bitmapHeight, Loading
libs/hwui/renderstate/MeshState.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -17,8 +17,6 @@ #include "Program.h" #include "ShadowTessellator.h" namespace android { namespace uirenderer { Loading Loading @@ -100,6 +98,12 @@ void MeshState::genOrUpdateMeshBuffer(GLuint* buffer, GLsizeiptr size, glBufferData(GL_ARRAY_BUFFER, size, data, usage); } void MeshState::updateMeshBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data) { bindMeshBuffer(buffer); glBufferSubData(GL_ARRAY_BUFFER, offset, size, data); } void MeshState::deleteMeshBuffer(GLuint buffer) { if (buffer == mCurrentBuffer) { // GL defines that deleting the currently bound VBO rebinds to 0 (no VBO). Loading
libs/hwui/renderstate/MeshState.h +1 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ public: void unbindMeshBuffer(); void genOrUpdateMeshBuffer(GLuint* buffer, GLsizeiptr size, const void* data, GLenum usage); void updateMeshBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); void deleteMeshBuffer(GLuint); /////////////////////////////////////////////////////////////////////////////// Loading