summaryrefslogtreecommitdiff
path: root/libs/hwui/Caches.cpp
diff options
context:
space:
mode:
author Stan Iliev <stani@google.com> 2018-08-14 13:30:17 -0400
committer Stan Iliev <stani@google.com> 2018-08-29 10:22:03 -0400
commitc8e22a653297837da9a80b0ba65f6854c8986c96 (patch)
tree7344df1a8aff45ccbf5b9ffb5b4de49499cc7c94 /libs/hwui/Caches.cpp
parent660bb2f3a1dde0b5cca5c8293bf0e72d47b2b6fc (diff)
TextureView Vulkan support and optimized OpenGL draw
Render TextureView as hardware bitmaps, instead of GL textures. Cache SkImage for each observed GraphicBuffer, which is faster even for GL. Implement C++ SurfaceTexture, which allows Java SurfaceTexture to be used with Vulkan HWUI render thread and application GL. threads. Delete GLLayer and VkLayer classes and texture code from old HWUI pipeline. Test: Ran skiagl and skiavk pipeline with a TextureView app. Test: TextureView CTS tests pass for GL pipeline. Test: Ran Android NDK Native codec sample app. Change-Id: Idc94f864ce2d34fd6ceff4be4fc7d3327e99879c
Diffstat (limited to 'libs/hwui/Caches.cpp')
-rw-r--r--libs/hwui/Caches.cpp103
1 files changed, 0 insertions, 103 deletions
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
deleted file mode 100644
index 254144448859..000000000000
--- a/libs/hwui/Caches.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "Caches.h"
-
-#include "GlLayer.h"
-#include "Properties.h"
-#include "renderstate/RenderState.h"
-#include "utils/GLUtils.h"
-
-#include <cutils/properties.h>
-#include <utils/Log.h>
-#include <utils/String8.h>
-
-namespace android {
-namespace uirenderer {
-
-Caches* Caches::sInstance = nullptr;
-
-///////////////////////////////////////////////////////////////////////////////
-// Macros
-///////////////////////////////////////////////////////////////////////////////
-
-#if DEBUG_CACHE_FLUSH
-#define FLUSH_LOGD(...) ALOGD(__VA_ARGS__)
-#else
-#define FLUSH_LOGD(...)
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// Constructors/destructor
-///////////////////////////////////////////////////////////////////////////////
-
-Caches::Caches(RenderState& renderState) : mInitialized(false) {
- INIT_LOGD("Creating OpenGL renderer caches");
- init();
- initStaticProperties();
-}
-
-bool Caches::init() {
- if (mInitialized) return false;
-
- ATRACE_NAME("Caches::init");
-
- mRegionMesh = nullptr;
-
- mInitialized = true;
-
- mPixelBufferState = new PixelBufferState();
- mTextureState = new TextureState();
- mTextureState->constructTexture(*this);
-
- return true;
-}
-
-void Caches::initStaticProperties() {
- // OpenGL ES 3.0+ specific features
- gpuPixelBuffersEnabled = extensions().hasPixelBufferObjects() &&
- property_get_bool(PROPERTY_ENABLE_GPU_PIXEL_BUFFERS, true);
-}
-
-void Caches::terminate() {
- if (!mInitialized) return;
- mRegionMesh.reset(nullptr);
-
- clearGarbage();
-
- delete mPixelBufferState;
- mPixelBufferState = nullptr;
- delete mTextureState;
- mTextureState = nullptr;
- mInitialized = false;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Memory management
-///////////////////////////////////////////////////////////////////////////////
-
-void Caches::clearGarbage() {}
-
-void Caches::flush(FlushMode mode) {
- clearGarbage();
- glFinish();
- // Errors during cleanup should be considered non-fatal, dump them and
- // and move on. TODO: All errors or just errors like bad surface?
- GLUtils::dumpGLErrors();
-}
-
-}; // namespace uirenderer
-}; // namespace android