hwui font render
android::uirenderer::Font::getCachedGlyphのバックトレース
(gdb) b android::uirenderer::Font::render
(gdb) info break Num Type Disp Enb Address What 1 breakpoint keep y <MULTIPLE> breakpoint already hit 1 time 1.1 y 0x40b86bc8 in android::uirenderer::Font::render(SkPaint*, char const*, unsigned int, unsigned int, int, int, int, android::uirenderer::Font::RenderMode, unsigned char*, unsigned int, unsigned int, android::uirenderer::Rect*, float const*) at frameworks/base/libs/hwui/font/Font.cpp:374 1.2 y 0x40b86d30 in android::uirenderer::Font::render(SkPaint*, char const*, unsigned int, unsigned int, int, int, int, float const*) at frameworks/base/libs/hwui/font/Font.cpp:286 1.3 y 0x40b86d94 in android::uirenderer::Font::render(SkPaint*, char const*, unsigned int, unsigned int, int, SkPath*, float, float) at frameworks/base/libs/hwui/font/Font.cpp:292
#0 android::uirenderer::Font::getCachedGlyph at frameworks/base/libs/hwui/font/Font.cpp:271 #1 at frameworks/base/libs/hwui/font/Font.cpp:402 #2 android::uirenderer::Font::render at frameworks/base/libs/hwui/font/Font.cpp:372 #3 android::uirenderer::Font::render at frameworks/base/libs/hwui/font/Font.cpp:288 #4 android::uirenderer::FontRenderer::renderPosText at frameworks/base/libs/hwui/FontRenderer.cpp:696 #5 android::uirenderer::OpenGLRenderer::drawText at frameworks/base/libs/hwui/OpenGLRenderer.cpp:2991 #6 android::uirenderer::DrawTextOp::multiDraw at frameworks/base/libs/hwui/DisplayListOp.h:1476 #7 android::uirenderer::MergingDrawBatch::replay at frameworks/base/libs/hwui/DeferredDisplayList.cpp:283 #8 replayBatchList at frameworks/base/libs/hwui/DeferredDisplayList.cpp:648 #9 android::uirenderer::DeferredDisplayList::flush at frameworks/base/libs/hwui/DeferredDisplayList.cpp:680 #10 android::uirenderer::OpenGLRenderer::drawDisplayList at frameworks/base/libs/hwui/OpenGLRenderer.cpp:2051 #11 android::android_view_GLES20Canvas_drawDisplayList at frameworks/base/core/jni/android_view_GLES20Canvas.cpp:778 ===== Dalvik ===== #12 dvmPlatformInvoke () at dalvik/vm/arch/arm/CallEABI.S:258 #13 dvmCallJNIMethod at dalvik/vm/Jni.cpp:1159 #14 dalvik_mterp () at dalvik/vm/mterp/out/InterpAsm-armv7-a-neon.S:16240 #15 dvmMterpStd at dalvik/vm/mterp/Mterp.cpp:105 #16 dvmInterpret at dalvik/vm/interp/Interp.cpp:1961 #17 dvmInvokeMethod at dalvik/vm/interp/Stack.cpp:737 #18 Dalvik_java_lang_reflect_Method_invokeNative at dalvik/vm/native/java_lang_reflect_Method.cpp:101 #19 dalvik_mterp () at dalvik/vm/mterp/out/InterpAsm-armv7-a-neon.S:16240 #20 dvmMterpStd at dalvik/vm/mterp/Mterp.cpp:105 #21 dvmInterpret at dalvik/vm/interp/Interp.cpp:1961 #22 dvmCallMethodV at dalvik/vm/interp/Stack.cpp:526 #23 CallStaticVoidMethodV at dalvik/vm/Jni.cpp:2096 ===== Dalvik ===== #24 _JNIEnv::CallStaticVoidMethod at libnativehelper/include/nativehelper/jni.h:780 #25 android::AndroidRuntime::start at frameworks/base/core/jni/AndroidRuntime.cpp:887 #26 main at frameworks/base/cmds/app_process/app_main.cpp:231
(gdb) bt #0 android::uirenderer::Font::getCachedGlyph (this=this@entry=0x78149cb0, paint=paint@entry=0x7842eb70, textUnit=<optimized out>, precaching=precaching@entry=false) at frameworks/base/libs/hwui/font/Font.cpp:271 #1 0x40b86c20 in render (positions=0x78108cac, bounds=0x0, bitmapH=0, bitmapW=0, bitmap=0x0, mode=android::uirenderer::Font::FRAMEBUFFER, y=283, x=72, numGlyphs=19, start=<optimized out>, text=<optimized out>, paint=0x7842eb70, this=0x78149cb0, len=<optimized out>) at frameworks/base/libs/hwui/font/Font.cpp:402 #2 android::uirenderer::Font::render (this=0x78149cb0, paint=0x7842eb70, text=<optimized out>, start=<optimized out>, len=38, numGlyphs=19, x=72, y=283, mode=android::uirenderer::Font::FRAMEBUFFER, bitmap=0x0, bitmapW=0, bitmapH=0, bounds=0x0, positions=0x78108cac) at frameworks/base/libs/hwui/font/Font.cpp:372 #3 0x40b86d58 in android::uirenderer::Font::render (this=<optimized out>, paint=paint@entry=0x7842eb70, text=text@entry=0x78108c84 "9", start=start@entry=0, len=len@entry=38, numGlyphs=numGlyphs@entry=19, x=x@entry=72, y=y@entry=283, positions=positions@entry=0x78108cac) at frameworks/base/libs/hwui/font/Font.cpp:288 #4 0x40b87cd2 in android::uirenderer::FontRenderer::renderPosText (this=this@entry=0x78149970, paint=paint@entry=0x7842eb70, clip=0x78401cf0, text=text@entry=0x78108c84 "9", startIndex=0, len=len@entry=38, numGlyphs=numGlyphs@entry=19, x=x@entry=72, y=y@entry=283, positions=positions@entry=0x78108cac, bounds=0x0, functor=functor@entry=0xbef9b110, forceFinish=forceFinish@entry=false) at frameworks/base/libs/hwui/FontRenderer.cpp:696 #5 0x40b98f72 in android::uirenderer::OpenGLRenderer::drawText (this=0x762c5cb8, text=0x78108c84 "9", bytesCount=38, count=19, x=72, y=283, positions=0x78108cac, paint=0x7842eb70, totalAdvance=474.714844, bounds=..., drawOpMode=android::uirenderer::kDrawOpMode_Defer) at frameworks/base/libs/hwui/OpenGLRenderer.cpp:2991 #6 0x40b8eda2 in android::uirenderer::DrawTextOp::multiDraw (this=<optimized out>, renderer=..., dirty=..., ops=..., bounds=...) at frameworks/base/libs/hwui/DisplayListOp.h:1476 #7 0x40b8c476 in android::uirenderer::MergingDrawBatch::replay (this=0x78401d28, renderer=..., dirty=..., index=<optimized out>) at frameworks/base/libs/hwui/DeferredDisplayList.cpp:283 #8 0x40b8c2f4 in replayBatchList (dirty=..., renderer=..., batchList=...) at frameworks/base/libs/hwui/DeferredDisplayList.cpp:648 #9 android::uirenderer::DeferredDisplayList::flush (this=this@entry=0xbef9b2f4, renderer=..., dirty=...) at frameworks/base/libs/hwui/DeferredDisplayList.cpp:680 #10 0x40b9501e in android::uirenderer::OpenGLRenderer::drawDisplayList (this=0x762c5cb8, displayList=<optimized out>, dirty=..., replayFlags=1) at frameworks/base/libs/hwui/OpenGLRenderer.cpp:2051 #11 0x401b66ae in android::android_view_GLES20Canvas_drawDisplayList (env=0x41d2bf40, clazz=<optimized out>, renderer=<optimized out>, displayList=<optimized out>, dirty=0x2c70001d, flags=1) at frameworks/base/core/jni/android_view_GLES20Canvas.cpp:778 #12 0x414cebd0 in dvmPlatformInvoke () at dalvik/vm/arch/arm/CallEABI.S:258 #13 0x414ff126 in dvmCallJNIMethod (args=0x4196da24, pResult=0x41d2d3e8, method=0x6d84b0a0, self=0x41d2d3d8) at dalvik/vm/Jni.cpp:1159 #14 0x414d7fe4 in dalvik_mterp () at dalvik/vm/mterp/out/InterpAsm-armv7-a-neon.S:16240 #15 0x414defa4 in dvmMterpStd (self=self@entry=0x41d2d3d8) at dalvik/vm/mterp/Mterp.cpp:105 #16 0x414dc63c in dvmInterpret (self=self@entry=0x41d2d3d8, method=method@entry=0x6d8ba3f0, pResult=pResult@entry=0xbef9b728) at dalvik/vm/interp/Interp.cpp:1961 #17 0x41511868 in dvmInvokeMethod (obj=obj@entry=0x0, method=method@entry=0x6d8ba3f0, argList=argList@entry=0x42d8dfd8, params=params@entry=0x42d8df00, returnType=returnType@entry=0x41d2e2a8, noAccessCheck=noAccessCheck@entry=false) at dalvik/vm/interp/Stack.cpp:737 #18 0x415197ca in Dalvik_java_lang_reflect_Method_invokeNative (args=<optimized out>, pResult=0x41d2d3e8) at dalvik/vm/native/java_lang_reflect_Method.cpp:101 #19 0x414d7fe4 in dalvik_mterp () at dalvik/vm/mterp/out/InterpAsm-armv7-a-neon.S:16240 #20 0x414defa4 in dvmMterpStd (self=self@entry=0x41d2d3d8) at dalvik/vm/mterp/Mterp.cpp:105 #21 0x414dc63c in dvmInterpret (self=self@entry=0x41d2d3d8, method=method@entry=0x6d8ae448, pResult=pResult@entry=0xbef9b8e8) at dalvik/vm/interp/Interp.cpp:1961 #22 0x41511584 in dvmCallMethodV (self=0x41d2d3d8, method=method@entry=0x6d8ae448, obj=obj@entry=0x0, fromJni=fromJni@entry=true, pResult=pResult@entry=0xbef9b8e8, args=..., args@entry=...) at dalvik/vm/interp/Stack.cpp:526 #23 0x414fad0e in CallStaticVoidMethodV (env=<optimized out>, jclazz=<optimized out>, methodID=0x6d8ae448, args=...) at dalvik/vm/Jni.cpp:2096 #24 0x4019cde8 in _JNIEnv::CallStaticVoidMethod (this=<optimized out>, clazz=clazz@entry=0x1d500015, methodID=0x6d8ae448) at libnativehelper/include/nativehelper/jni.h:780 #25 0x4019db0e in android::AndroidRuntime::start (this=<optimized out>, className=0x400603ac "com.android.internal.os.ZygoteInit", options=<optimized out>) at frameworks/base/core/jni/AndroidRuntime.cpp:887 #26 0x4006005e in main (argc=4, argv=0xbef9bab8) at frameworks/base/cmds/app_process/app_main.cpp:231 (gdb)