diff options
Diffstat (limited to 'libs/hwui/DeviceInfo.cpp')
-rw-r--r-- | libs/hwui/DeviceInfo.cpp | 53 |
1 files changed, 24 insertions, 29 deletions
diff --git a/libs/hwui/DeviceInfo.cpp b/libs/hwui/DeviceInfo.cpp index 40cc73a82846..0b9d82b105a3 100644 --- a/libs/hwui/DeviceInfo.cpp +++ b/libs/hwui/DeviceInfo.cpp @@ -26,12 +26,10 @@ #include <log/log.h> -#include <GLES2/gl2.h> - namespace android { namespace uirenderer { -static constexpr android::DisplayInfo sDummyDisplay { +static constexpr android::DisplayInfo sDummyDisplay{ 1080, // w 1920, // h 320.0, // xdpi @@ -42,37 +40,16 @@ static constexpr android::DisplayInfo sDummyDisplay { false, // secure? 0, // appVsyncOffset 0, // presentationDeadline + 1080, // viewportW + 1920, // viewportH }; -static DeviceInfo* sDeviceInfo = nullptr; -static std::once_flag sInitializedFlag; - const DeviceInfo* DeviceInfo::get() { - LOG_ALWAYS_FATAL_IF(!sDeviceInfo, "DeviceInfo not yet initialized."); - return sDeviceInfo; -} - -void DeviceInfo::initialize() { - std::call_once(sInitializedFlag, []() { - sDeviceInfo = new DeviceInfo(); - sDeviceInfo->load(); - }); -} - -void DeviceInfo::initialize(int maxTextureSize) { - std::call_once(sInitializedFlag, [maxTextureSize]() { - sDeviceInfo = new DeviceInfo(); - sDeviceInfo->mDisplayInfo = DeviceInfo::queryDisplayInfo(); - sDeviceInfo->mMaxTextureSize = maxTextureSize; - }); -} - -void DeviceInfo::load() { - mDisplayInfo = queryDisplayInfo(); - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize); + static DeviceInfo sDeviceInfo; + return &sDeviceInfo; } -DisplayInfo DeviceInfo::queryDisplayInfo() { +DisplayInfo QueryDisplayInfo() { if (Properties::isolatedProcess) { return sDummyDisplay; } @@ -84,5 +61,23 @@ DisplayInfo DeviceInfo::queryDisplayInfo() { return displayInfo; } +DeviceInfo::DeviceInfo() { +#if HWUI_NULL_GPU + mMaxTextureSize = NULL_GPU_MAX_TEXTURE_SIZE; +#else + mMaxTextureSize = -1; +#endif + mDisplayInfo = QueryDisplayInfo(); +} + +int DeviceInfo::maxTextureSize() const { + LOG_ALWAYS_FATAL_IF(mMaxTextureSize < 0, "MaxTextureSize has not been initialized yet."); + return mMaxTextureSize; +} + +void DeviceInfo::setMaxTextureSize(int maxTextureSize) { + const_cast<DeviceInfo*>(DeviceInfo::get())->mMaxTextureSize = maxTextureSize; +} + } /* namespace uirenderer */ } /* namespace android */ |