Loading include/ui/DebugUtils.h +2 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #pragma once #include <system/graphics.h> #include <ui/PixelFormat.h> #include <string> Loading @@ -25,3 +26,4 @@ std::string decodeTransfer(android_dataspace dataspace); std::string decodeRange(android_dataspace dataspace); std::string dataspaceDetails(android_dataspace dataspace); std::string decodeColorMode(android_color_mode colormode); std::string decodePixelFormat(android::PixelFormat format); libs/ui/DebugUtils.cpp +37 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ #include <ui/DebugUtils.h> #include <ui/PixelFormat.h> #include <android-base/stringprintf.h> #include <string> Loading Loading @@ -145,6 +146,9 @@ std::string decodeRange(android_dataspace dataspace) { } std::string dataspaceDetails(android_dataspace dataspace) { if (dataspace == 0) { return "Default (0)"; } return android::base::StringPrintf("%s %s %s", decodeStandard(dataspace).c_str(), decodeTransfer(dataspace).c_str(), decodeRange(dataspace).c_str()); Loading Loading @@ -185,3 +189,36 @@ std::string decodeColorMode(android_color_mode colorMode) { return android::base::StringPrintf("Unknown color mode %d", colorMode); } // Converts a PixelFormat to a human-readable string. Max 11 chars. // (Could use a table of prefab String8 objects.) std::string decodePixelFormat(android::PixelFormat format) { switch (format) { case android::PIXEL_FORMAT_UNKNOWN: return std::string("Unknown/None"); case android::PIXEL_FORMAT_CUSTOM: return std::string("Custom"); case android::PIXEL_FORMAT_TRANSLUCENT: return std::string("Translucent"); case android::PIXEL_FORMAT_TRANSPARENT: return std::string("Transparent"); case android::PIXEL_FORMAT_OPAQUE: return std::string("Opaque"); case android::PIXEL_FORMAT_RGBA_8888: return std::string("RGBA_8888"); case android::PIXEL_FORMAT_RGBX_8888: return std::string("RGBx_8888"); case android::PIXEL_FORMAT_RGBA_FP16: return std::string("RGBA_FP16"); case android::PIXEL_FORMAT_RGBA_1010102: return std::string("RGBA_1010102"); case android::PIXEL_FORMAT_RGB_888: return std::string("RGB_888"); case android::PIXEL_FORMAT_RGB_565: return std::string("RGB_565"); case android::PIXEL_FORMAT_BGRA_8888: return std::string("BGRA_8888"); default: return android::base::StringPrintf("Unknown %#08x", format); } } services/surfaceflinger/DisplayDevice.cpp +19 −17 Original line number Diff line number Diff line Loading @@ -611,23 +611,25 @@ uint32_t DisplayDevice::getPrimaryDisplayOrientationTransform() { void DisplayDevice::dump(String8& result) const { const Transform& tr(mGlobalTransform); result.appendFormat( "+ DisplayDevice: %s\n" " type=%x, hwcId=%d, layerStack=%u, (%4dx%4d), ANativeWindow=%p, orient=%2d (type=%08x), " "flips=%u, isSecure=%d, powerMode=%d, activeConfig=%d, numLayers=%zu\n" " v:[%d,%d,%d,%d], f:[%d,%d,%d,%d], s:[%d,%d,%d,%d]," EGLint redSize, greenSize, blueSize, alphaSize; eglGetConfigAttrib(mDisplay, mConfig, EGL_RED_SIZE, &redSize); eglGetConfigAttrib(mDisplay, mConfig, EGL_GREEN_SIZE, &greenSize); eglGetConfigAttrib(mDisplay, mConfig, EGL_BLUE_SIZE, &blueSize); eglGetConfigAttrib(mDisplay, mConfig, EGL_ALPHA_SIZE, &alphaSize); result.appendFormat("+ DisplayDevice: %s\n", mDisplayName.string()); result.appendFormat(" type=%x, hwcId=%d, layerStack=%u, (%4dx%4d), ANativeWindow=%p " "(%d:%d:%d:%d), orient=%2d (type=%08x), " "flips=%u, isSecure=%d, powerMode=%d, activeConfig=%d, numLayers=%zu\n", mType, mHwcDisplayId, mLayerStack, mDisplayWidth, mDisplayHeight, mNativeWindow.get(), redSize, greenSize, blueSize, alphaSize, mOrientation, tr.getType(), getPageFlipCount(), mIsSecure, mPowerMode, mActiveConfig, mVisibleLayersSortedByZ.size()); result.appendFormat(" v:[%d,%d,%d,%d], f:[%d,%d,%d,%d], s:[%d,%d,%d,%d]," "transform:[[%0.3f,%0.3f,%0.3f][%0.3f,%0.3f,%0.3f][%0.3f,%0.3f,%0.3f]]\n", mDisplayName.string(), mType, mHwcDisplayId, mLayerStack, mDisplayWidth, mDisplayHeight, mNativeWindow.get(), mOrientation, tr.getType(), getPageFlipCount(), mIsSecure, mPowerMode, mActiveConfig, mVisibleLayersSortedByZ.size(), mViewport.left, mViewport.top, mViewport.right, mViewport.bottom, mFrame.left, mFrame.top, mFrame.right, mFrame.bottom, mScissor.left, mScissor.top, mScissor.right, mScissor.bottom, tr[0][0], tr[1][0], tr[2][0], tr[0][1], tr[1][1], tr[2][1], tr[0][2], tr[1][2], tr[2][2]); mFrame.left, mFrame.top, mFrame.right, mFrame.bottom, mScissor.left, mScissor.top, mScissor.right, mScissor.bottom, tr[0][0], tr[1][0], tr[2][0], tr[0][1], tr[1][1], tr[2][1], tr[0][2], tr[1][2], tr[2][2]); String8 surfaceDump; mDisplaySurface->dumpAsString(surfaceDump); Loading services/surfaceflinger/RenderEngine/RenderEngine.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -54,12 +54,16 @@ RenderEngine* RenderEngine::create(EGLDisplay display, int hwcFormat) { // both a 16-bit primary display framebuffer and a 32-bit virtual display // framebuffer. // // EGL_KHR_no_config_context is official extension to allow creating a // context that works with any surface of a display. // // The code assumes that ES2 or later is available if this extension is // supported. EGLConfig config = EGL_NO_CONFIG; if (!findExtension( eglQueryStringImplementationANDROID(display, EGL_EXTENSIONS), "EGL_ANDROIDX_no_config_context")) { if (!findExtension(eglQueryStringImplementationANDROID(display, EGL_EXTENSIONS), "EGL_ANDROIDX_no_config_context") && !findExtension(eglQueryStringImplementationANDROID(display, EGL_EXTENSIONS), "EGL_KHR_no_config_context")) { config = chooseEglConfig(display, hwcFormat); } Loading Loading
include/ui/DebugUtils.h +2 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #pragma once #include <system/graphics.h> #include <ui/PixelFormat.h> #include <string> Loading @@ -25,3 +26,4 @@ std::string decodeTransfer(android_dataspace dataspace); std::string decodeRange(android_dataspace dataspace); std::string dataspaceDetails(android_dataspace dataspace); std::string decodeColorMode(android_color_mode colormode); std::string decodePixelFormat(android::PixelFormat format);
libs/ui/DebugUtils.cpp +37 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ #include <ui/DebugUtils.h> #include <ui/PixelFormat.h> #include <android-base/stringprintf.h> #include <string> Loading Loading @@ -145,6 +146,9 @@ std::string decodeRange(android_dataspace dataspace) { } std::string dataspaceDetails(android_dataspace dataspace) { if (dataspace == 0) { return "Default (0)"; } return android::base::StringPrintf("%s %s %s", decodeStandard(dataspace).c_str(), decodeTransfer(dataspace).c_str(), decodeRange(dataspace).c_str()); Loading Loading @@ -185,3 +189,36 @@ std::string decodeColorMode(android_color_mode colorMode) { return android::base::StringPrintf("Unknown color mode %d", colorMode); } // Converts a PixelFormat to a human-readable string. Max 11 chars. // (Could use a table of prefab String8 objects.) std::string decodePixelFormat(android::PixelFormat format) { switch (format) { case android::PIXEL_FORMAT_UNKNOWN: return std::string("Unknown/None"); case android::PIXEL_FORMAT_CUSTOM: return std::string("Custom"); case android::PIXEL_FORMAT_TRANSLUCENT: return std::string("Translucent"); case android::PIXEL_FORMAT_TRANSPARENT: return std::string("Transparent"); case android::PIXEL_FORMAT_OPAQUE: return std::string("Opaque"); case android::PIXEL_FORMAT_RGBA_8888: return std::string("RGBA_8888"); case android::PIXEL_FORMAT_RGBX_8888: return std::string("RGBx_8888"); case android::PIXEL_FORMAT_RGBA_FP16: return std::string("RGBA_FP16"); case android::PIXEL_FORMAT_RGBA_1010102: return std::string("RGBA_1010102"); case android::PIXEL_FORMAT_RGB_888: return std::string("RGB_888"); case android::PIXEL_FORMAT_RGB_565: return std::string("RGB_565"); case android::PIXEL_FORMAT_BGRA_8888: return std::string("BGRA_8888"); default: return android::base::StringPrintf("Unknown %#08x", format); } }
services/surfaceflinger/DisplayDevice.cpp +19 −17 Original line number Diff line number Diff line Loading @@ -611,23 +611,25 @@ uint32_t DisplayDevice::getPrimaryDisplayOrientationTransform() { void DisplayDevice::dump(String8& result) const { const Transform& tr(mGlobalTransform); result.appendFormat( "+ DisplayDevice: %s\n" " type=%x, hwcId=%d, layerStack=%u, (%4dx%4d), ANativeWindow=%p, orient=%2d (type=%08x), " "flips=%u, isSecure=%d, powerMode=%d, activeConfig=%d, numLayers=%zu\n" " v:[%d,%d,%d,%d], f:[%d,%d,%d,%d], s:[%d,%d,%d,%d]," EGLint redSize, greenSize, blueSize, alphaSize; eglGetConfigAttrib(mDisplay, mConfig, EGL_RED_SIZE, &redSize); eglGetConfigAttrib(mDisplay, mConfig, EGL_GREEN_SIZE, &greenSize); eglGetConfigAttrib(mDisplay, mConfig, EGL_BLUE_SIZE, &blueSize); eglGetConfigAttrib(mDisplay, mConfig, EGL_ALPHA_SIZE, &alphaSize); result.appendFormat("+ DisplayDevice: %s\n", mDisplayName.string()); result.appendFormat(" type=%x, hwcId=%d, layerStack=%u, (%4dx%4d), ANativeWindow=%p " "(%d:%d:%d:%d), orient=%2d (type=%08x), " "flips=%u, isSecure=%d, powerMode=%d, activeConfig=%d, numLayers=%zu\n", mType, mHwcDisplayId, mLayerStack, mDisplayWidth, mDisplayHeight, mNativeWindow.get(), redSize, greenSize, blueSize, alphaSize, mOrientation, tr.getType(), getPageFlipCount(), mIsSecure, mPowerMode, mActiveConfig, mVisibleLayersSortedByZ.size()); result.appendFormat(" v:[%d,%d,%d,%d], f:[%d,%d,%d,%d], s:[%d,%d,%d,%d]," "transform:[[%0.3f,%0.3f,%0.3f][%0.3f,%0.3f,%0.3f][%0.3f,%0.3f,%0.3f]]\n", mDisplayName.string(), mType, mHwcDisplayId, mLayerStack, mDisplayWidth, mDisplayHeight, mNativeWindow.get(), mOrientation, tr.getType(), getPageFlipCount(), mIsSecure, mPowerMode, mActiveConfig, mVisibleLayersSortedByZ.size(), mViewport.left, mViewport.top, mViewport.right, mViewport.bottom, mFrame.left, mFrame.top, mFrame.right, mFrame.bottom, mScissor.left, mScissor.top, mScissor.right, mScissor.bottom, tr[0][0], tr[1][0], tr[2][0], tr[0][1], tr[1][1], tr[2][1], tr[0][2], tr[1][2], tr[2][2]); mFrame.left, mFrame.top, mFrame.right, mFrame.bottom, mScissor.left, mScissor.top, mScissor.right, mScissor.bottom, tr[0][0], tr[1][0], tr[2][0], tr[0][1], tr[1][1], tr[2][1], tr[0][2], tr[1][2], tr[2][2]); String8 surfaceDump; mDisplaySurface->dumpAsString(surfaceDump); Loading
services/surfaceflinger/RenderEngine/RenderEngine.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -54,12 +54,16 @@ RenderEngine* RenderEngine::create(EGLDisplay display, int hwcFormat) { // both a 16-bit primary display framebuffer and a 32-bit virtual display // framebuffer. // // EGL_KHR_no_config_context is official extension to allow creating a // context that works with any surface of a display. // // The code assumes that ES2 or later is available if this extension is // supported. EGLConfig config = EGL_NO_CONFIG; if (!findExtension( eglQueryStringImplementationANDROID(display, EGL_EXTENSIONS), "EGL_ANDROIDX_no_config_context")) { if (!findExtension(eglQueryStringImplementationANDROID(display, EGL_EXTENSIONS), "EGL_ANDROIDX_no_config_context") && !findExtension(eglQueryStringImplementationANDROID(display, EGL_EXTENSIONS), "EGL_KHR_no_config_context")) { config = chooseEglConfig(display, hwcFormat); } Loading