The purpose of this is to be able to use the native graphics code from the Android platform directly in Android Studio (running on desktop) to do layout rendering. This creates a host library that is a subset of libandroid_runtime including only the JNI files relevant to Android graphics. It also includes LayoutlibLoader.cpp which is used to load the JNI when using it as part of layoutlib (the graphics library for Android Studio). This also creates libhwui-host, a host library that is a subset of libhwui. Bug: 117921091 Test: lunch sdk && m libandroid_runtime Change-Id: I3850020d2d4c13c85e377476bc463d3eb6a01c6d
95 lines
2.5 KiB
C++
95 lines
2.5 KiB
C++
/*
|
|
* Copyright (C) 2017 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.
|
|
*/
|
|
|
|
#ifndef CACHEMANAGER_H
|
|
#define CACHEMANAGER_H
|
|
|
|
#ifdef __ANDROID__ // Layoutlib does not support hardware acceleration
|
|
#include <GrContext.h>
|
|
#endif
|
|
#include <SkSurface.h>
|
|
#include <ui/DisplayInfo.h>
|
|
#include <utils/String8.h>
|
|
#include <vector>
|
|
|
|
#include "pipeline/skia/VectorDrawableAtlas.h"
|
|
|
|
namespace android {
|
|
|
|
class Surface;
|
|
|
|
namespace uirenderer {
|
|
|
|
class RenderState;
|
|
|
|
namespace renderthread {
|
|
|
|
class IRenderPipeline;
|
|
class RenderThread;
|
|
|
|
class CacheManager {
|
|
public:
|
|
enum class TrimMemoryMode { Complete, UiHidden };
|
|
|
|
#ifdef __ANDROID__ // Layoutlib does not support hardware acceleration
|
|
void configureContext(GrContextOptions* context, const void* identity, ssize_t size);
|
|
#endif
|
|
void trimMemory(TrimMemoryMode mode);
|
|
void trimStaleResources();
|
|
void dumpMemoryUsage(String8& log, const RenderState* renderState = nullptr);
|
|
|
|
sp<skiapipeline::VectorDrawableAtlas> acquireVectorDrawableAtlas();
|
|
|
|
size_t getCacheSize() const { return mMaxResourceBytes; }
|
|
size_t getBackgroundCacheSize() const { return mBackgroundResourceBytes; }
|
|
|
|
private:
|
|
friend class RenderThread;
|
|
|
|
explicit CacheManager(const DisplayInfo& display);
|
|
|
|
#ifdef __ANDROID__ // Layoutlib does not support hardware acceleration
|
|
void reset(sk_sp<GrContext> grContext);
|
|
#endif
|
|
void destroy();
|
|
|
|
const size_t mMaxSurfaceArea;
|
|
#ifdef __ANDROID__ // Layoutlib does not support hardware acceleration
|
|
sk_sp<GrContext> mGrContext;
|
|
#endif
|
|
|
|
int mMaxResources = 0;
|
|
const size_t mMaxResourceBytes;
|
|
const size_t mBackgroundResourceBytes;
|
|
|
|
const size_t mMaxGpuFontAtlasBytes;
|
|
const size_t mMaxCpuFontCacheBytes;
|
|
const size_t mBackgroundCpuFontCacheBytes;
|
|
|
|
struct PipelineProps {
|
|
const void* pipelineKey = nullptr;
|
|
size_t surfaceArea = 0;
|
|
};
|
|
|
|
sp<skiapipeline::VectorDrawableAtlas> mVectorDrawableAtlas;
|
|
};
|
|
|
|
} /* namespace renderthread */
|
|
} /* namespace uirenderer */
|
|
} /* namespace android */
|
|
|
|
#endif /* CACHEMANAGER_H */
|