History log of /frameworks/base/libs/hwui/FontRenderer.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
f3754a84289680782b2c7caac30fda18207a5c23 20-Apr-2016 Chris Craik <ccraik@google.com> Fix shadow radius too large for RS

bug:28276925

Change-Id: I3d962ace75be7bbf49f5a95320390d8f5a9bf951
/frameworks/base/libs/hwui/FontRenderer.cpp
e8c3c813b0e3ac98304b17a751ce6e436e252bd9 06-Feb-2016 Chris Craik <ccraik@google.com> Fix TextDropShadowCacheTests and glyph_t everywhere

Change-Id: I943eae4e9408c77bdfba6304ba7ee3e862351a41
/frameworks/base/libs/hwui/FontRenderer.cpp
2de7771740ee08fcaff638ec6b2e460bb72fff04 20-Jan-2016 John Reck <jreck@google.com> Normalize GL_UNPACK_ALIGNMENT

Several places were setting GL_UNPACK_ALIGNMENT
unneccessarily, whereas other places were assuming an
unpack alignment of 1. Since we never actually
do explicit row-alignment, set GL_UNPACK_ALIGNMENT
to 1 at context creation time and never change it

Bug: 26584230

Also turns on aggressive glGetError checking to
better catch potential problem zones

Change-Id: I190c8f0f0494a7f046d5ed769405c75d363be59a
/frameworks/base/libs/hwui/FontRenderer.cpp
5430ab220b231a96b71c3e030d0303d9ce008b05 11-Dec-2015 Chris Craik <ccraik@google.com> Avoid unneeded rect params

Change-Id: I2d8dcf6b09fdc554a403ac74763bf856b5f5d9fa
/frameworks/base/libs/hwui/FontRenderer.cpp
f09ff5aa57bff01cb17595fb7ca8e48d238a6acd 09-Dec-2015 Chris Craik <ccraik@google.com> Add bitmapmesh, rect, and patch rendering

bug:22480459

Change-Id: Id9e9146997dd018b3e4e785c2bc13689e3cf7c3c
/frameworks/base/libs/hwui/FontRenderer.cpp
15c3f19a445b8df575911a16e8a6dba755a084b5 03-Dec-2015 Chris Craik <ccraik@google.com> Merged op dispatch in OpReorderer

bug:22480459

Also switches std::functions to function pointers on OpReorderer, and
switches AssetAtlas' entry getter methods to using pixelRef pointers,
so it's clear they're the keys.

Change-Id: I3040ce5ff4e178a8364e0fd7ab0876ada7d4de05
/frameworks/base/libs/hwui/FontRenderer.cpp
9e7fcfda28fde747ba4e026772007cea77374e16 25-Nov-2015 Chris Craik <ccraik@google.com> Move BakedOpDispatcher to separate file

Change-Id: If7aad6db6b7e54a33eac9b9eddbe8cd844207282
/frameworks/base/libs/hwui/FontRenderer.cpp
a1717271caac5e8ea3808c331d4141ac01a42134 19-Nov-2015 Chris Craik <ccraik@google.com> Initial text support in new reorderer/renderer

Removes obsolete drawPosText codepath, and unifies text decoration behavior.

Change-Id: I9c563249ab688a3394445a0e7fe1b9d0661f6f7c
/frameworks/base/libs/hwui/FontRenderer.cpp
0fe8ea20962249c257762c81896758a9f7ecf659 03-Oct-2015 Stephen Hines <srhines@google.com> am 697e3dd6: am ee144b1e: resolved conflicts for bd57dac5 to stage-aosp-master

* commit '697e3dd6b9a8be4451e19ab7c03ced310602b92a':
Don't unregister Fonts from renderer at destruction
ee144b1e60a88e8f097113e046813f0b61c38b9b 03-Oct-2015 Stephen Hines <srhines@google.com> resolved conflicts for bd57dac5 to stage-aosp-master

Change-Id: I5107af13712d7cc908d8699e5c15a002f0a3ec85
148c78f825496b75a812d61e7d9222d897870a6c 02-Oct-2015 Chris Craik <ccraik@google.com> Don't unregister Fonts from renderer at destruction

bug:24584749

Fonts are only destroyed when the renderer is destroyed, this prevents
modifying the FontRenderer's LruCache while it's being iterated through
in FontRenderer::~FontRenderer.

Change-Id: I0e2c9f87981bfa50454ec8689df05851839e288e
/frameworks/base/libs/hwui/FontRenderer.cpp
c08820f587ad94698691a6657e87712de07e484c 22-Sep-2015 Chris Craik <ccraik@google.com> Remove lookup3 gamma code

Also clean up gamma / glyph cache properties

Change-Id: I75b1ac0cb55638bf787ffd3cf457483ae314f03b
/frameworks/base/libs/hwui/FontRenderer.cpp
9db58c031f8ffa102a6d585cb585bed3bdb911a9 20-Aug-2015 Chris Craik <ccraik@google.com> Remove MathUtils::min/max

bug:22202895

Change-Id: Ia115d86871314e3819f684ea7307356aed13a28e
/frameworks/base/libs/hwui/FontRenderer.cpp
a46ca5ec732a884c78d3e98f8b4eb8de03bc23f8 14-Apr-2015 huanhuan.x.wang <huanhuan.x.wang@sonymobile.com> Make the value for shadowRadius less than 1.0 work

bug:22806069

Shadow effect is not visible if the shadowRadius is set
between 0.1 and 1.0.

Cherry-pick of 8d9b5fbd from AOSP

Change-Id: Ifff71f44d66ba604bd751bb1df96a9904ae7998e
/frameworks/base/libs/hwui/FontRenderer.cpp
fea85a33b7767d568e02fc7d05e5f2aac749efaa 28-Jul-2015 Andreas Gampe <agampe@google.com> Hwui: Remove unused variables

For build-system CFLAGS clean-up, remove unused variables.

Bug: 18632512

(cherry picked from commit cb4af9b10ab17187288d8f5ccb4cc1e465be9a51)

Change-Id: Ic58bedc84234325512193991fc64315e3aad6f9e
/frameworks/base/libs/hwui/FontRenderer.cpp
272a685f17cc4828257e521a6f62b7b17870f75e 30-Jul-2015 John Reck <jreck@google.com> Replace most usages of utils/Vector.h

Change-Id: I540d1b3523244d6c71fc52d6fb30555271c25644
/frameworks/base/libs/hwui/FontRenderer.cpp
cb4af9b10ab17187288d8f5ccb4cc1e465be9a51 28-Jul-2015 Andreas Gampe <agampe@google.com> Hwui: Remove unused variables

For build-system CFLAGS clean-up, remove unused variables.

Bug: 18632512
Change-Id: Ic58bedc84234325512193991fc64315e3aad6f9e
/frameworks/base/libs/hwui/FontRenderer.cpp
e6a15ee3d0c78eb3f2551d73a7d238c3d8d2f075 08-Jul-2015 Chris Craik <ccraik@google.com> Remove all usage of fmin and fmax

bug:22208220

Removes needless call, and upconversion to doubles in multiple places.

Change-Id: I1b949fa5f206446ac34de800154c0147d6bd8034
/frameworks/base/libs/hwui/FontRenderer.cpp
53e51e4aa933f9603587e1780f446c18816bf9be 01-Jun-2015 Chris Craik <ccraik@google.com> Handle shader matrix correctly when ignoring canvas transform

bug:20063841

Restores old SkShader matrix behavior from before the Glop refactor.

Many drawing operations draw without sending the canvas transform to
the GL shader. In such cases, we need to adapt the matrix sent to the
SkShader logic to invert the canvas transform that's built into
the mesh.

Change-Id: I42b6f59df36ce46436322b95bf9ad2140795ee58
/frameworks/base/libs/hwui/FontRenderer.cpp
8d9b5fbdf0a005941b7f0019102cc7b94a41a2d6 14-Apr-2015 huanhuan.x.wang <huanhuan.x.wang@sonymobile.com> Make the value for shadowRadius less than 1.0 work

Shadow effect is not visible if the shadowRadius is set
between 0.1 and 1.0.

Change-Id: Ifff71f44d66ba604bd751bb1df96a9904ae7998e
/frameworks/base/libs/hwui/FontRenderer.cpp
cdd3021936c90c7f561c569a32b65f6d32964aaa 10-Apr-2015 John Reck <jreck@google.com> am 18ae2a02: am 32eafe9b: am a08f6a66: Merge "Fix GL_INVALID_OPERATION in font renderer when font cache is limited."

* commit '18ae2a020d3c720f8b6125b9f4567e953f04c7b0':
Fix GL_INVALID_OPERATION in font renderer when font cache is limited.
a08f6a66e91c7bacd50e64c039aaaa6b9fe2625c 10-Apr-2015 John Reck <jreck@google.com> Merge "Fix GL_INVALID_OPERATION in font renderer when font cache is limited."
828407356dd5c34a3e441604aaf895cbec7c7e66 03-Apr-2015 Chris Craik <ccraik@google.com> Delete pre-glop path

bug:19014311

Change-Id: I06376b6f625455892d8eafe2727b78025a64c4bf
/frameworks/base/libs/hwui/FontRenderer.cpp
c6128bae4312aca7902589bda793a7ff89810401 19-Mar-2015 Chris Craik <ccraik@google.com> Fix clang build

Change-Id: I5336ac347123671a18401121c5f001c8f7caf54d
/frameworks/base/libs/hwui/FontRenderer.cpp
e2bb380bc26749782c873e5488cfdf4e42b27346 13-Mar-2015 Chris Craik <ccraik@google.com> Use glops for text rendering

Change-Id: I5e155c8baf3149f0ff231ec3c89dbff6bb8eae92
/frameworks/base/libs/hwui/FontRenderer.cpp
083e733e8223a7d416d6c139f318e61864b28ad6 28-Feb-2015 Chris Craik <ccraik@google.com> Cleanup of FontRenderer

Remove invalid and over complicated buffer unbinding
optimization, and simplify constructor.

Change-Id: I3dd90528de4f377e972bbd7967e7e232875387e4
/frameworks/base/libs/hwui/FontRenderer.cpp
6c15ffa196fc9b7724c189d833c3435d8db12266 02-Feb-2015 Chris Craik <ccraik@google.com> Refactoring of Program ownership/lifecycle, and WIP Glop rendering path

Change-Id: I2549032790bddbc048b0bccc224ed8f386b4517c
/frameworks/base/libs/hwui/FontRenderer.cpp
44eb2c00861098dd3e2950d923646814b4cc57c2 29-Jan-2015 Chris Craik <ccraik@google.com> Refactor blending and texture gl state

Change-Id: Ia6b3c8b2afd3dfcee7f3ce401d846b789612054a
/frameworks/base/libs/hwui/FontRenderer.cpp
96a5c4c7bab6718524de7253da8309143ab48bef 28-Jan-2015 Chris Craik <ccraik@google.com> Move more GL state management to RenderState and its directory

Change-Id: Ic68584e1c08dc64be2ad43450cb6caa1de834fdc
/frameworks/base/libs/hwui/FontRenderer.cpp
d41c4d8c732095ae99c955b6b82f7306633004b1 06-Jan-2015 Chris Craik <ccraik@google.com> Add overrides and switch to nullptr keyword for all files

Adds remaining missing overrides and nullptr usages, missed due to
an extreme failure in tool usage.

Change-Id: I56abd72975a3999ad13330003c348db40f59aebf
/frameworks/base/libs/hwui/FontRenderer.cpp
51d6a3db97bdd5315f1a17a4b447d10a92217b98 23-Dec-2014 Chris Craik <ccraik@google.com> Cleanup various clang warnings, use unique_ptrs in several places

Change-Id: I347904b25e51fcc7de14b1e72f1acd0f6ba26f3f
/frameworks/base/libs/hwui/FontRenderer.cpp
64bb413a664001c95c8439cf097dc3033f4ed733 22-Nov-2014 Andreas Gampe <agampe@google.com> Revert "resolved conflicts for merge of 220c3f4f to master"

Reverted as hwui doesn't agree.

This reverts commit 8a902d9f24e83c87b054adb5836b4a5b8a257be9.

Change-Id: I109e7b02bee2921e2155ded6df36f52e6f574b5a
/frameworks/base/libs/hwui/FontRenderer.cpp
8b59a528b54279ce640b2d23a00acae1d0f477c5 22-Nov-2014 John Reck <jreck@android.com> Revert "Frameworks/base: Unused parameters in hwui"

This reverts commit 42ddc18d108f789705ad4eb697ce9599ad322507.

Change-Id: I3574a936a39a96314db6437d0a1eb58d260d893d
/frameworks/base/libs/hwui/FontRenderer.cpp
42ddc18d108f789705ad4eb697ce9599ad322507 21-Nov-2014 Andreas Gampe <agampe@google.com> Frameworks/base: Unused parameters in hwui

Remove Clang cutout for unused parameters. Fix warnings.

Remove Clang cutout for deprecated Skia function usage. Has been
fixed in the L push.

Change-Id: I7ea073ff67127cc1e14e798b655e2c50615fe8e7
/frameworks/base/libs/hwui/FontRenderer.cpp
1e19674107e1aa2224c2b8c7d12bfa057efe80ea 11-Nov-2014 Andreas Gampe <agampe@google.com> Frameworks/base: Wall Werror in libs/hwui

Turn on -Wall -Werror in libs/hwui. Fix errors.

Change-Id: I74962d08c889712dacbd0d86d6760fc10802b6bd
/frameworks/base/libs/hwui/FontRenderer.cpp
1f61b1911e03ef3fc51c3db64798071f3a7477ec 29-Aug-2014 chaochen <c.chen@sta.samsung.com> Fix GL_INVALID_OPERATION in font renderer when font cache is limited.

b/17332126

This patch is to fix a false logic in FontRenderer when
flashAllAndInValidate() happens. The flashAllAndInvalidate
will trigger an issueDrawCommand which will set mDrawn to
true even though there is no texture drawn. So that the
step of unbinding buffer in GL is skipped. And when the
second time issueDrawCommand get called, the
glVertexAttribPointer will be trigger with GL_ARRAY_BUFFER
wrongly bound and then finally lead to a GL_INVALID_OPERATION when
glDrawElements() in FontRenderer:issueDrawCommand get
called the second time.

Change-Id: I1a996354a84db911ace0e7b39ca77cd0dd3d1555

Signed-off-by: Raj Mamadgi <r.mamadgi@samsung.com>
/frameworks/base/libs/hwui/FontRenderer.cpp
59744b79ec302000802cd56d30a1bf70f0183c80 02-Jul-2014 Chris Craik <ccraik@google.com> Add hack for custom re-rasterization buckets

bug:14083128

Moves all of the font transform management into
OpenGLRenderer::findBestFontTransform(), and now simply passes down
final rasterization transforms into the FontRenderer.

Change-Id: Ie02752e6af863347b142367c7d628db5f9fc2998
/frameworks/base/libs/hwui/FontRenderer.cpp
c33fb2b5c014f37ce36dbc12eff1e969562f7d50 23-May-2014 Derek Sollenberger <djsollen@google.com> Merge "Pass the radius as a float deeper into HWUI allowing RS to generate more accurate blurs."
d1ad5e62fda248c6d185cde3cb6d9f01a223066c 05-May-2014 Leon Scroggins III <scroggo@google.com> Inspect SkShader to determine hw shader.

Instead of duplicating internal info about SkShader, inspect the
SkShader installed on the SkPaint.

core/java/android/view/GLES20Canvas.java:
Remove setupModifiers, nResetModifiers, and nSetupShader.

core/jni/android/graphics/Shader.cpp:
Remove calls to create/destroy the (previously) attached SkiaShader.

core/jni/android_view_GLES20Canvas.cpp:
Remove native code for setupShader and resetModifiers.

graphics/java/android/graphics/BitmapShader.java:
graphics/java/android/graphics/ComposeShader.java:
graphics/java/android/graphics/LinearGradient.java:
graphics/java/android/graphics/RadialGradient.java:
graphics/java/android/graphics/Shader.java:
graphics/java/android/graphics/SweepGradient.java:
Remove code keeping track of native SkiaShader.

libs/hwui/Caches.h:
Include Extensions.h.

libs/hwui/DeferredDisplayList.cpp:
Compare shaders on the paint, instead of on DrawModifiers.

libs/hwui/DisplayList.cpp:
libs/hwui/DisplayList.h:
Remove vector of SkiaShaders.

libs/hwui/DisplayListOp.h:
Access the SkShader on mPaint.
Remove SetupShaderOp and ResetShaderOp.

libs/hwui/DisplayListRenderer.cpp:
libs/hwui/DisplayListRenderer.h:
Remove resetShader, setupShader, refShader, and mShaderMap.

libs/hwui/FontRenderer.cpp:
Pass SkShader to setupDrawShader and setupDrawShaderUniforms.

libs/hwui/OpenGLRenderer.cpp:
libs/hwui/OpenGLRenderer.h:
Add LayerShader, a class inheriting from SkShader, to mimic the
behavior of SkiaLayerShader. Unlike SkiaLayerShader, it can be set on
the SkPaint so it can be inspected later.
Set a LayerShader instead of a SkiaLayerShader.
setupDrawShader and setupDrawShaderUniforms now inspect an SkShader
passed in.
Inspect SkShader instead of mDrawModifiers.mShader.
Remove resetShader and setupShader.
setupDrawColorUniforms now takes a boolean indicating whether there is
a shader.
Add an inline function for accessing the SkShader on an SkPaint.
In setupDrawBlending(Layer*, bool), do not check the shader (which will
never be set), but do check whether the color filter may change the
alpha (newly fixed behavior).
In setupDrawBlending(SkPaint, ...), check the SkShader and whether the
color filter affects alpha (the latter is new behavior).

libs/hwui/Renderer.h:
Remove pure virtual functions setupShader and resetShader.

libs/hwui/ResourceCache.cpp:
libs/hwui/ResourceCache.h:
Remove functions for refing/unrefing shaders.

libs/hwui/SkiaShader.cpp:
libs/hwui/SkiaShader.h:
Much of this code was redundant and has been removed.
Convert structs into class with nothing but static functions for
calling describe/setupProgram.

libs/hwui/TextureCache.cpp:
libs/hwui/TextureCache.h:
Use the SkPixelRef as the key to the bitmap Lru cache, since shader
inspection will provide a different SkBitmap pointer (though it will
hold the correct SkPixelRef with the correct generation ID).

tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java:
tests/CanvasCompare/src/com/android/test/hwuicompare/ResourceModifiers.java:
Update manual test to have more shaders: radial, sweep, compose,
invalid compose.

BUG:10650594

Change-Id: Iaa7189178bda1c55f96da044d2a9fa602ba36034
/frameworks/base/libs/hwui/FontRenderer.cpp
e392c81f6b8f9ace0c0a48c9d4df117fda31fd13 21-May-2014 Derek Sollenberger <djsollen@google.com> Pass the radius as a float deeper into HWUI allowing RS to generate more accurate blurs.

Also, when converting radius to an integer value snap to the appropriate integer boundaries.

bug: 10650594
Change-Id: Icca4bc17d88162bbcbc6035d4f81bd1d98a4de2d
/frameworks/base/libs/hwui/FontRenderer.cpp
81997fef183074728b8981fd8e858b82ec70ed27 05-May-2014 Chris Craik <ccraik@google.com> am 3cb74d21: am 5d8343b8: am a85db5ab: Merge "libhwui: Handle the blurImage() implement once RS::init fail"

* commit '3cb74d21b2ac2427e805f72a113e8d7a2cc460f3':
libhwui: Handle the blurImage() implement once RS::init fail
ea42e015277687cef168f960252b9d7596ff1160 14-Nov-2013 Lu, Shenghua <shenghua.lu@intel.com> libhwui: Handle the blurImage() implement once RS::init fail

Once the RS::init failed, go through the original single thread path,
this will avoid blocking the main thread(ANR), but we also should have
some implement in RenderScript component.

Change-Id: I3a21395ffd5bc144c15254893f425b1dd2643ba4
Signed-off-by: Shenghua Lu <shenghua.lu@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
/frameworks/base/libs/hwui/FontRenderer.cpp
63d41abb40b3ce40d8b9bccb1cf186e8158a3687 14-Feb-2014 ztenghui <ztenghui@google.com> Use pre-computed index to draw the shadow.

Also draw the umbra part as triangle fans instead of zig zag fashion.

b/12840179

Change-Id: Iaa5d15e77351acdd71f076bd8f9bb2d4d2b92faf
/frameworks/base/libs/hwui/FontRenderer.cpp
76d3a1b8d035d27bc80b0f2fc480a903bd001514 10-Dec-2013 Derek Sollenberger <djsollen@google.com> Removing SkiaColorFilter and inspecting the native object directly.

bug: 10650594
Change-Id: I4fcf66d008765afa0e35d011f58bc792183cb74f
/frameworks/base/libs/hwui/FontRenderer.cpp
d218a92c0afb8c0d98135b20b52ac87236e1c935 03-Jan-2014 Chris Craik <ccraik@google.com> Use const where possible for drawing parameters

They should never be modified by a Renderer, only read and copied.

Change-Id: I9d8d55dca19115ee9dfeb2bb3f092ba2fb327cd4
/frameworks/base/libs/hwui/FontRenderer.cpp
804ff38bff2fbb0ee258b13b4bb66eb33d565724 13-Dec-2013 Tim Murray <timmurray@google.com> Handle user-defined cache path for RS.

Change-Id: I92e3346dca331ae6a9dfbe4f95292bc604dfd196
/frameworks/base/libs/hwui/FontRenderer.cpp
abe55e92241fd9a19885f7b11db8d3043ab60c61 13-Dec-2013 Tim Murray <timmurray@google.com> Handle user-defined cache path for RS.

Change-Id: I92e3346dca331ae6a9dfbe4f95292bc604dfd196
/frameworks/base/libs/hwui/FontRenderer.cpp
4063a0e03ba2e354cc6d19c0ffc073fd5b8aa2ca 16-Nov-2013 Chris Craik <ccraik@google.com> Clean up modelView matrix logic

bug:11359533

Also changes shader matrix to correctly account for modelView and
currentTransform()

Change-Id: I6ce18857dc6d08ea08ca7535385c2ad351ec3caa
/frameworks/base/libs/hwui/FontRenderer.cpp
9e233b54b6a421710a43b6dc3efeb01092b25edf 20-Sep-2013 Victoria Lease <violets@google.com> am ab99b39d: am ddc0a63d: Merge "fix emoji clipping in hw draw path" into klp-dev

* commit 'ab99b39d7d152de35ea02a364190ff325da4015b':
fix emoji clipping in hw draw path
16c84069a4cc0c0d3c35e798dc5e4b0130d4a26f 20-Sep-2013 Victoria Lease <violets@google.com> fix emoji clipping in hw draw path

I guess we don't want to overwrite the last line in every RGBA glyph
with our one-line texture atlas spacer?

Bug: 10841207
Change-Id: Ief85ca58650c731e9d21dbf90942b7b44670abcc
/frameworks/base/libs/hwui/FontRenderer.cpp
efb6beb4388e51a2e29ec605c500801f7ff150e6 10-Sep-2013 Tim Murray <timmurray@google.com> am 19c727bb: am 895a4375: Merge "Fix FontRenderer bug." into klp-dev

* commit '19c727bbc6371924bfd2f85e804b5b6b093a8413':
Fix FontRenderer bug.
7a454ba5fee0bbb9f2e1292f8eede655516c0f2c 10-Sep-2013 Tim Murray <timmurray@google.com> Fix FontRenderer bug.

bug 10691313

Change-Id: Icd5341a3c2066e337911f040ddc935c48c8d7cd1
/frameworks/base/libs/hwui/FontRenderer.cpp
86ebf2876dce04c845ae61846f3aa966d13eab8c 10-Sep-2013 Tim Murray <timmurray@google.com> am 9163b1d9: am 23ae1461: Merge "Add flags word to initialization." into klp-dev

* commit '9163b1d9ceeca3e956218dda1ca19a748dc48d8d':
Add flags word to initialization.
9578e642403c0fa4fdcb32828f27c2417cabe88d 10-Sep-2013 Tim Murray <timmurray@google.com> Add flags word to initialization.

bug 10427951

Change-Id: I1356b9b96315ead44aa3898de5604d75f9bb8be5
/frameworks/base/libs/hwui/FontRenderer.cpp
ede1deaa88b546188808a8c6ef7dafb087594753 20-Aug-2013 Tim Murray <timmurray@google.com> am 816f3058: am cf8e6778: Merge "Handle updates to C++ API." into klp-dev

* commit '816f3058bdd7b888965022888e4a789ea967f444':
Handle updates to C++ API.
d8c8aaa82ef90f30df647ca42453e953ee52af0f 19-Aug-2013 Tim Murray <timmurray@google.com> Handle updates to C++ API.

Change-Id: I8ab17cbae3a9a4cc3c3202b8277d49f27bdf1fec
/frameworks/base/libs/hwui/FontRenderer.cpp
3380cfdc77100e87aa8390386ccf390834dea171 16-Aug-2013 Romain Guy <romainguy@google.com> Replace float arrays with readable names

Change-Id: I32a8be560b60a4ac5cbee2fec4574b2c5df9f825
/frameworks/base/libs/hwui/FontRenderer.cpp
723b2feb929b96b1dde40a865c49ea18bc42f055 12-Aug-2013 Victoria Lease <violets@google.com> fix kBW_Format glyphs

Oops! kBW_Format was omitted from a couple of switch statements,
resulting in glyphs in that format being invisible.

Bug: 10206452
Change-Id: Ib2aa52250aeeecc0de1b1b78e3d0f568f368c73e
/frameworks/base/libs/hwui/FontRenderer.cpp
250b1cfc831fd2a271c09cab547efcc5e3d5f828 01-Aug-2013 Tim Murray <timmurray@google.com> Handle updates to RS C++ API.

Change-Id: I73127fc7369643b94d4a49f31a516b50c74b54ac
/frameworks/base/libs/hwui/FontRenderer.cpp
1e546815bbb736c50679a8aefc25f48561026fc5 25-Jun-2013 Victoria Lease <violets@google.com> Support RGBA fonts and bitmap fonts (and RGBA bitmap fonts)

Quite a few things going on in this commit:

- Enable bitmap strikes by default in Paint objects.

The SkPaint parameter that enables bitmap strikes was not previously
included in DEFAULT_PAINT_FLAGS. This effectively disabled bitmap
fonts. Oops! It's for the best, though, as additional work was needed
in Skia to make bitmap fonts work anyway.

- Complain if TEXTURE_BORDER_SIZE is not 1.

Our glyph cache code does not currently handle any value other than 1
here, including zero. I've added a little C preprocessor check to
prevent future engineers (including especially future-me) from
thinking that they can change this value without updating the related
code.

- Add GL_RGBA support to hwui's FontRenderer and friends

This also happened to involve some refactoring for convenience and
cleanliness.

Bug: 9577689
Change-Id: I0abd1e5a0d6623106247fb6421787e2c2f2ea19c
/frameworks/base/libs/hwui/FontRenderer.cpp
31e08e953fe7bdb1b1cbc247156cb6a19917a2f1 19-Jun-2013 Romain Guy <romainguy@google.com> Share Caches' index buffer with FontRenderer

This reduces state changes when we draw 9patches and text together,
which happens *a lot*. Also disable the NV profiling extension by
default since it doesn't play nice with display lists deferrals.
To enable it set debug.hwui.nv_profiling to true.

Change-Id: I518b44b7d294e5def10c78911ceb9f01ae401609
/frameworks/base/libs/hwui/FontRenderer.cpp
8aa195d7081b889f3a7b1f426cbd8556377aae5e 05-Jun-2013 Romain Guy <romainguy@google.com> Introduce Caches::bindTexture() to reduce glBindTexture calls

Change-Id: Ic345422567c020c0a9035ff51dcf2ae2a1fc59f4
/frameworks/base/libs/hwui/FontRenderer.cpp
55709fc1c7b2741ba3cf7f160d7d8644c112bb99 15-Apr-2013 Chris Craik <ccraik@google.com> am 55b883b0: am 30c990c3: Merge "Draw Operation merging" into jb-mr2-dev

* commit '55b883b0a960b37aa453253f3ccb614dd95c221c':
Draw Operation merging
527a3aace1dd72432c2e0472a570e030ad04bf16 04-Mar-2013 Chris Craik <ccraik@google.com> Draw Operation merging

Merge simple bitmap draw operations and text operations to avoid
issuing individual gl draws for each operation. Merging other ops to
be done eventually.

The methods are different - the bitmap merging generates a single
mesh for reused, unclipped images (esp. repeated images in a listview)

The text approach queries just defers the normal font rendering until
the last drawText in the sequence that can share the same shader.

Patches are sorted and merged, but don't yet have a multiDraw
implementation. For now, the pretending-to-merge gives better sorting
behavior by keeping similar patches together.

Change-Id: Ic300cdab0a53814cf7b09c58bf54b1bf0f58ccd6
/frameworks/base/libs/hwui/FontRenderer.cpp
e48da96ab5837f305ef55d5ea9d3215930884f83 12-Apr-2013 Romain Guy <romainguy@google.com> resolved conflicts for merge of 886e1204 to master

Change-Id: Id002d2ae799c6946672335f122ecbfa07d9c0bc1
cf51a4199835e9604aa4c8b3854306f8fbabbf33 09-Apr-2013 Romain Guy <romainguy@google.com> Introduce PixelBuffer API to enable PBOs

PBOs (Pixel Buffer Objects) can be used on OpenGL ES 3.0 to perform
asynchronous texture uploads to free up the CPU. This change does not
enable the use of PBOs unless a specific property is set (Adreno drivers
have issues with PBOs at the moment, Mali drivers work just fine.)

This change also cleans up Font/FontRenderer a little bit and improves
performance of drop shadows generations by using memcpy() instead of
a manual byte-by-byte copy.

On GL ES 2.0 devices, or when PBOs are disabled, a PixelBuffer instance
behaves like a simple byte array. The extra APIs introduced for PBOs
(map/unmap and bind/unbind) are pretty much no-ops for CPU pixel
buffers and won't introduce any significant overhead.

This change also fixes a bug with text drop shadows: if the drop
shadow is larger than the max texture size, the renderer would leave
the GL context in a bad state and generate 0x501 errors. This change
simply skips drop shadows if they are too large.

Change-Id: I2700aadb0c6093431dc5dee3d587d689190c4e23
/frameworks/base/libs/hwui/FontRenderer.cpp
f7648b7f24bc4cf8a66df4c0cfb5e8aa2b7d3ac8 05-Apr-2013 Romain Guy <romainguy@google.com> am 21af446c: am a151ef8c: Merge "First OpenGL ES 3.0 based optimization" into jb-mr2-dev

* commit '21af446ce9704bdc465bf15755148c5de50ea019':
First OpenGL ES 3.0 based optimization
0908764b2b3cf5075df4178a5f0a8547dcb7b317 04-Apr-2013 Romain Guy <romainguy@google.com> First OpenGL ES 3.0 based optimization

This change uses a new OpenGL ES 3.0 feature to upload less data when
the font cache needs to be update. This can result in significant
performance improvements on device with large textures or with locales
that use a lot of glyphs (CJK for instance.)

This change also fixes various unpack alignment issues. The unpack
alignment, as well as the unpack row length, is not texture specific
but a global state that affect all glTex/SubImage2D calls. Some of
them were missing the appropriate glPixelStorei() call. This could
result in corrupted textures.

Change-Id: Iefb429d4d0d0b4e0faeadf27daafee6d30a21d85
/frameworks/base/libs/hwui/FontRenderer.cpp
e4d9a01bfc7451afff1ed399a5801c7aa2af2831 29-Mar-2013 Dan Morrill <morrildl@google.com> Phase 1 of refactoring SystemServer.

SystemServer is currently a monolithic class that brings up key system
services. This change is the first phase of refactoring it to be more
configurable. Specifically, it adds a set of on/off switches used to control
startup of individual services. Future plans include finer grained controls
and a more explicit and consistent startup sequence for these services.

Change-Id: I7299f5ce7d7b74a34eb56dffb788366fbc058532
/frameworks/base/libs/hwui/FontRenderer.cpp
257ae3502cfad43df681b1783528d645bdabc63f 21-Mar-2013 Romain Guy <romainguy@google.com> Optimize text GL setup

Only performs the GL setup steps when at least one glyph is drawn.
This change also skips various draw operations when the specified
paint draws with alpha = 0.

Change-Id: I9eda148b0503acffc552ee19196f5d52e958a1a2
/frameworks/base/libs/hwui/FontRenderer.cpp
661a87ec28a49458f1faf533783abf2ab9927cab 19-Mar-2013 Romain Guy <romainguy@google.com> Reduce number of glDraw calls when drawing text

This change moves the mesh buffer from FontRenderer to CacheTexture
to help reduce the number of texture binds and glDraw calls when
drawing text that spans across multiple textures.

Change-Id: I7de574d88313ca3672879ca878c253ff5f131fc1
/frameworks/base/libs/hwui/FontRenderer.cpp
115096f50a560e64a7f95d37686d4861042c7aeb 19-Mar-2013 Romain Guy <romainguy@google.com> Minimize texture binds when drawing text

When several CacheTextures are used to draw text, sort the
draw batches by texture ID to minimize state changes in the
driver.

This change also tweaks the font cache size and renames
a property that was too long to be set using setprop.

Change-Id: I0a36dfffe58c9e75dd7384592d3343c192d042b1
/frameworks/base/libs/hwui/FontRenderer.cpp
6e2004089305cf2cd958b52b234459a49a4e5c83 08-Mar-2013 Romain Guy <romainguy@google.com> Move blur code from FontRenderer to utils/Blur.cpp

Change-Id: I2cebbfbcb722ed4b37e54ffbf8b53bb92ad0c964
/frameworks/base/libs/hwui/FontRenderer.cpp
0b58a3deab66c30a8d35072e55aac6279dd367cc 05-Mar-2013 Romain Guy <romainguy@google.com> Make glyph copies a little more cache friendly

Change-Id: Ie21b7079cc5d3ea67a03597c57842636e4afe143
/frameworks/base/libs/hwui/FontRenderer.cpp
a4adcf0239039eb8f005be252409901c41b28839 28-Feb-2013 Romain Guy <romainguy@google.com> Support 3D rotations when drawing text

If a perspective transform is set on the Canvas, drawText() should
not attempt to rasterize glyphs in screen space. This change uses
the old behavior instead (i.e. rasterize the glyphs at the native
font size and apply the transform on the resulting mesh.)

This change also adds an optimization: empty glyphs (spaces) do
not generate vertices anymore. This saves a lot of vertices in text
heavy applications such as Gmail.

Change-Id: Ib531384163f5165b5785501612a7b1474f3ff599
/frameworks/base/libs/hwui/FontRenderer.cpp
dd8697c095272f19ddad214834a490b00f11a477 22-Feb-2013 Chris Craik <ccraik@google.com> Avoid double blur

bug:8204062

Avoids incorrectly blurring with RenderScript after a C++ blur

Additionally, avoids draw/blurring if the input text has empty bounds

Change-Id: Ibbaf74800fff7a6e4cda3aa24286b90e7aef589d
/frameworks/base/libs/hwui/FontRenderer.cpp
08d160a366932aec170a115a1edb3bb5ac4e3a4e 20-Feb-2013 Ben Cheng <bccheng@google.com> am 7a60c43d: Merge "Use free for memory chunks allocated through memalign."

* commit '7a60c43d874bd047ea4b93b94c9b8771ea5739cc':
Use free for memory chunks allocated through memalign.
15641a6181cdaac2aadf07585de66483b4b7ae6b 20-Feb-2013 Ben Cheng <bccheng@google.com> Use free for memory chunks allocated through memalign.

BUG: 8234423
Change-Id: Ic4100a780908c94540722cc4af5f73f4940431b4
/frameworks/base/libs/hwui/FontRenderer.cpp
0229d0818c8f08753a0df583798bbac19f67a4c4 14-Feb-2013 Chris Craik <ccraik@google.com> am 805a6fe7: Merge "Revert "Revert "Use RenderScript for large text blurs"""

# Via Android (Google) Code Review (1) and Chris Craik (1)
* commit '805a6fe7b1417640ccaf7914171cb65515b6ab39':
Revert "Revert "Use RenderScript for large text blurs""
f2d8ccc15d7272b3416f73605c1f31d1d346bd40 14-Feb-2013 Chris Craik <ccraik@google.com> Revert "Revert "Use RenderScript for large text blurs""

This reverts commit bf5703e52e3304246cbf0e73f6976f7d7312d238.

Change-Id: Ic6f991277dec9e80a6fed93db91499726b30ab2a
/frameworks/base/libs/hwui/FontRenderer.cpp
bf5703e52e3304246cbf0e73f6976f7d7312d238 13-Feb-2013 Chris Craik <ccraik@google.com> Revert "Use RenderScript for large text blurs"

This reverts commit 3f76e65d251ead65fe8ff98e3bd4c7623fbaac07

Change-Id: Ia81cd485e5ca696bb284c419dc8a1d2f3247100e
/frameworks/base/libs/hwui/FontRenderer.cpp
7c1a49f5f5ed6613d736464bf5001b777e89ced2 13-Feb-2013 Chris Craik <ccraik@google.com> Revert "Merge remote-tracking branch 'goog/master-chromium' into 'goog/master'" DO NOT MERGE

This reverts commit 6c0307dd0aefe9a08794b155fc03ee60ebd14f25, reversing
changes made to a2cd828b749c444d55c2c41c7dbb85088ff94b9f.

Conflicts:
packages/SystemUI/res/values-sv/strings.xml

Change-Id: Ia178efe8b14751583d47b2826bfe3d3d5463dd2e
/frameworks/base/libs/hwui/FontRenderer.cpp
3f76e65d251ead65fe8ff98e3bd4c7623fbaac07 15-Nov-2012 Chris Craik <ccraik@google.com> Use RenderScript for large text blurs

Still fall back to simple path for small tasks

Change-Id: I492f1b3f7d6fec1738f3e45cbfb15864bd23a392
/frameworks/base/libs/hwui/FontRenderer.cpp
23e500d168e8d649305445f6c1d2b49d8d2c00fd 06-Feb-2013 Derek Sollenberger <djsollen@google.com> Merge "Merge remote-tracking branch 'goog/master-chromium' into 'goog/master'"
b969a0de65730b071d846f8302e751e2637e6dbe 05-Feb-2013 Romain Guy <romainguy@google.com> Add support for non-antialiased text

Change-Id: I17c073955ab94abc9b409e5fcfbc675faa07c5ba
/frameworks/base/libs/hwui/FontRenderer.cpp
19d4f1806a953b87435a2bb6fd8e738424e94003 09-Jan-2013 Romain Guy <romainguy@google.com> resolved conflicts for merge of c88c60be to master-chromium

Change-Id: I3b4b42443312068e942aa779dfdc928afa7569fd
e3a9b24b5e3f9b2058486814a6d27729e51ad466 08-Jan-2013 Romain Guy <romainguy@google.com> Add plumbing for better text scaling

Fonts are now described by a transform matrix. This lead to switching
from a vector to a hashmap. This change therefore adds new comparators
and hash computations to Font.

Change-Id: I2daffa7d6287c18554c606b8bfa06640d28b4530
/frameworks/base/libs/hwui/FontRenderer.cpp
ca79cf69d09efa0c327e9b1237d86a119aea5da7 14-Aug-2012 Derek Sollenberger <djsollen@google.com> Update framework to support r5967 of Skia.

bug: 6906025
Change-Id: Iefdb830ec3aa2ab3472c1c142484a7aa21788a15
/frameworks/base/libs/hwui/FontRenderer.cpp
7bb3cfe1cca4016ce95d3ef059761f4bb2d668bb 15-Nov-2012 Sangkyu Lee <geteuid@gmail.com> Another optimization of glyph cache uploads

Previously, cache textures were updated whenever mCurrentCacheTexuture was changed.
Since updating cache textures needs glTexSubImage2D call, frequent changing
of mCurrentCacheTexture (which can easily happen when an app uses lots of unique glyphs
even with precaching) caused many glTexSubImage2D calls and bad framerates.
This patch optimized isssueDrawCommand function. Consequently, changing mCurrentCacheTexture doesn't
cause glTexSubImage2D call any more and it will improve font rendering performance.

Change-Id: Id19d959fa0e69eeb2a39f83a57e311d7394586b2
Signed-off-by: Sangkyu Lee <geteuid@gmail.com>
/frameworks/base/libs/hwui/FontRenderer.cpp
cb4d6009576cf08195dc23f341a3f4939c0878bb 25-Sep-2012 Chris Craik <ccraik@google.com> Add stroke support to polygonal shape rendering

bug:4419017
bug:7230005

- Adds support for stroke/strokeAndFill for shapes without joins
- Fixes path-polygonization threshold calculation
- Fixes rendering offset (now only used for points)
- Several formatting fixes

Change-Id: If72473dc881e45752e2ec212d0dcd1e3f97979ea
/frameworks/base/libs/hwui/FontRenderer.cpp
b92d8f7979c29c7c09932578a11b2f8d6eec1d90 21-Sep-2012 Chet Haase <chet@google.com> Optimize glyph cache texture uploads

Only upload the changed area of the glyph cache, not the entire
bitmap. Note that we can't do the full-on optimization here of copying a sub-rect
of the bitmap because of GL ES 2 limitations, but we can at least copy the
horizontal stripe containing the dirty rect, which can still be a big
savings over uploading the entire bitmap.

Issue #7158326 Bad framerates on MR1 (Mako, Manta, Prime)

Change-Id: Iab38d53202650f757ead4658cf4287bdad2b3cb9
/frameworks/base/libs/hwui/FontRenderer.cpp
8087246d9964b11de8ce116bc63b156faa4197e0 05-Sep-2012 Romain Guy <romainguy@google.com> Code cleanup in FontRenderer

Change-Id: Ic788721c224a77f0a76f4cd6d9817b62e390a5a7
/frameworks/base/libs/hwui/FontRenderer.cpp
9b1204baf4740b4d443e72157dea98571cf84e1f 05-Sep-2012 Romain Guy <romainguy@google.com> Small code cleanup in FontRenderer

Change-Id: I09c00debe9b0b4f45b232cae402ed19bdaeabfe4
/frameworks/base/libs/hwui/FontRenderer.cpp
9f5dab3fc228fa11c32b483e6101ec086895a32b 04-Sep-2012 Romain Guy <romainguy@google.com> Refactor FontRenderer.cpp

FontRenderer.h defined several classes and structures that now live
in the font/ folder. This will make the code easier to read and
maintain.

Change-Id: I3dc044e9bde1d6515f8704f5c72462877d279fe2
/frameworks/base/libs/hwui/FontRenderer.cpp
eb32a499194119b3783b86c925172df02e5d2685 31-Aug-2012 Chet Haase <chet@google.com> Paramaterize and adjust the glyph cache sizes

Add new parameters for the texture size used for the larger, fallback caches.
Bump up the defaults in some situations.

Issue #7045164 Adjust cache sizes for manta

Change-Id: I562118ce785d7f8b6e445178878672e9709d25f2
/frameworks/base/libs/hwui/FontRenderer.cpp
f942cf10e04567f6b9456f6258e29c803b8bfb41 30-Aug-2012 Chet Haase <chet@google.com> Avoid thrashing the glyph cache during the precache phase

It is unlikely, but possible, to draw so many glyphs in a frame
(especially of the glyphs are quite large) that the cache starts flushing
itself to fit the later glyphs in. This causes unnecessary thrashing, because
when we actually draw the frame, we will again need to flush to fit the
earlier glyphs in, and then flush again to fit the later ones in.

It is better to avoid thrashing the cache at the precache phase, and wait
until we actually draw the glyphs that do not fit to do any eviction of
the earlier glyphs.

This change simply notes when we are in the preaching phase, and avoids flushing
the cache when a glyph does not fit.

Issue #7081725 avoid thrashing cache during DisplayList recording

Change-Id: I230410ab5b478091b1032fa99dc1752acf868bbe
/frameworks/base/libs/hwui/FontRenderer.cpp
5a3ec7113c99242fa0d0a328a0ec3892698203f1 18-Aug-2012 Chet Haase <chet@google.com> Fix glyph cropping bug

Glyphs were being stored in the glyph cache incorrectly.
The second row of glyphs in any column were being positioned exactly
one pixel too high, causing the preceding glyph in that column to be
cropped, resulting in the reported truncation in some glyphs.

Issue #7003215 Minor UI truncation while reading the mails

Change-Id: I47ce376f78a04d4e07e8b7ed1b3f0b58864c5498
/frameworks/base/libs/hwui/FontRenderer.cpp
378e919ccb75efe24d5a5aa75ac2c6ef255dcb48 16-Aug-2012 Chet Haase <chet@google.com> Remove CacheTextureLine structure from FontRenderer

CacheTextureLine was useful before we were packing the glyph
textures; it allowed simple packing of any particular texture according to
how many lines there were in a texture, and how tall those lines were.
Now that we are packing more efficiently (both horizontally and vertically
in any given texture line), it is more efficient to have
open space in every texture, removing the need for CacheTextureLine (which
now gets in the way since it limits how much can be stored in each line).

This change removes CacheTextureLine and just uses CacheTexture directly,
allowing caching of glyphs anywhere in the open space of each texture. As before,
the packing of these glyphs is determined by the CacheBlock structure, which
is a linked list of open spaces in each CacheTexture.

Change-Id: Id6f628170df0f676f8743ac7de76f2377fc6a012
/frameworks/base/libs/hwui/FontRenderer.cpp
2efd5c5886d9acf747bc92f888d731ed558aabcc 15-Aug-2012 Chet Haase <chet@google.com> Glyph cache optimization

Precaching at startup was not working. One-liner fix to init the caches
so that precaching would kick in earlier, saving time at startup by avoiding
the multiple-upload issue of caching at render time.

Issue #6893691 long app launch time on manta for some apps comparing to nakasi/stingray

Change-Id: Ie5c7f0536ec8ea371c7892e5e09c1db14795531c
/frameworks/base/libs/hwui/FontRenderer.cpp
e816baea651476aca4407200d4a5e629b9ab8dfa 09-Aug-2012 Chet Haase <chet@google.com> Optimize interactions with glyph cache

There are two fixes here:
- precaching: instead of caching-then-drawing whenever there is a new
glyph, we cache at DisplayList record time. Then when we finally draw that
DisplayList, we just upload the affected texture(s) once, instead of once
per change. This is a huge savings in upload time, especially when there are
larger glyphs being used by the app.
- packing: Previously, glyphs would line up horizontally on each cache line, leaving
potentially tons of space vertically, especially when smaller glyphs got put into cache
lines intended for large glyphs (which can happen when an app uses lots of unique
glyphs, a common case with, for example, chinese/japanese/korean languages). The new
approach packs glyphs vertically as well as horizontally to use the space more efficiently
and provide space for more glyphs in these situations.

Change-Id: I84338aa25db208c7bf13f3f92b4d05ed40c33527
/frameworks/base/libs/hwui/FontRenderer.cpp
b6039811fa0fbc23f25c47491810faeb04ce3125 08-Aug-2012 Jean-Baptiste Queru <jbq@google.com> am 05e97e81: am 0be33f2d: Merge "Add shortcut to avoid potential divide by zero in some case"

* commit '05e97e81a5fa2c9cab4cdda15aa2d036243a0c0e':
Add shortcut to avoid potential divide by zero in some case
33fa1f774c8e7289fd7c39fbc2c65b9361f2c2c4 08-Aug-2012 Romain Guy <romainguy@google.com> Draw an empty border around glyphs to avoid sampling issues
Bug #6942209

The font renderer was preserving a 1 px border around each glyph to ensure
bilinear filtering would work nicely. Unfortunately, this border was not
set to 0 when glyphs were added in the cache to replace old evicted glyphs.

Change-Id: Ib85afca7ebad5cb63f960dc0e87ae162333dbfe8
/frameworks/base/libs/hwui/FontRenderer.cpp
0412cfcbcdd7224f80a80180a946f0fdd28c3afc 25-Jul-2012 Chen YANG <chen.yang@intel.com> Add shortcut to avoid potential divide by zero in some case

Change-Id: If4b34c95402daf8ebcc28736edfb2012553aa57c
/frameworks/base/libs/hwui/FontRenderer.cpp
00755fed35e4a91291c42a8a47bed8b957e9f8e1 20-Jul-2012 Raph Levien <raph@google.com> Merge "Add drop shadow for drawPosText in hwui renderer."
416a847633680d94efb926837efdc18726d54918 20-Jul-2012 Raph Levien <raph@google.com> Add drop shadow for drawPosText in hwui renderer.

This patch adds support for drop shadows (setShadowLayer) for
drawPosText in the hwui renderer. In and of itself, it's not very
important, but it's on the critical path for correct mark positioning,
tracked as bug 5443796.

The change itself is fairly straightforward - it basically just adds an
extra "positions" argument to all draw and measure methods on the code
path for drawing drop shadowed text, as well as to the cache key for
cached shadow textures.

Change-Id: Ic1cb63299ba61ccbef31779459ecb82aa4a5e672
/frameworks/base/libs/hwui/FontRenderer.cpp
0aa87bbfc41e8b5f52de701ac17b4e66a7a7b609 20-Jul-2012 Romain Guy <romainguy@google.com> Fix crash with new LookupGammaFontRenderer
Bug #6853934

Change-Id: I15e6ca73bfe00eff1a37c4b9d2f7f709ee018eb6
/frameworks/base/libs/hwui/FontRenderer.cpp
b1d0a4ed21168fefcb82232c8f22cb95d60acb85 14-Jul-2012 Romain Guy <romainguy@google.com> Refactor GammaFontRenderer

This change is the first step to a shader-based text antialias
gamma correction.

Change-Id: I9eb02d4c56cb95d05219f712290c865b46141954
/frameworks/base/libs/hwui/FontRenderer.cpp
16c88085255c71a1a8fc034129aa2dcc61e1ddd0 12-Jun-2012 Romain Guy <romainguy@google.com> Textured text calls could be invisible
Bug #6597730

Text would sometimes not appear when rendered with textured content
(BitmapShader, LinearGradientShader, etc.) This was due to a misuse
of OpenGL texture unit in FontRenderer. Textured text normally uses
two texture units:
- texture unit 0 for the font cache
- texture unit 1 for the textured content (gradient, etc.)

Recent changes to the font renderer allow it to bind new textures
while processing the text's geometry (this happens when caches get
full or when switching font size for instance.) The bindings were
done without ensuring the texture unit was the correct one
(unit 0), thus replacing the content of another texture unit
(unit 1).

This lead to text being drawn using the font cache itself as the
content texture, making the text invisible.

Change-Id: I392b4c884f09223305f6cbc6253e2ef9a98944c9
/frameworks/base/libs/hwui/FontRenderer.cpp
99a6ddd4cd8762654a575eb4ac3d0e5431d919b8 15-May-2012 Romain Guy <romainguy@google.com> Forget the name of a texture after freeing
Bug #6408362

FontRenderer allocates large font textures when more room is needed
to store all the glyphs used by an application. Thse large textures
are the first to be freed when memory needs to be reclaimed by the
system. When freeing a texture, the renderer would however not set
the texture name to an invalid name, leading future allocations to
be performed on the same texture name. That name could have by then
be recycled by the driver and returned by a call to glGenTexture
and used to create an entirely different texture. This would cause
the font renderer to point to the wrong texture, thus leading to
the "corruptions."

Change-Id: I8a1e80e5b79e8f21d1baf5320c090df4f2066cd4
/frameworks/base/libs/hwui/FontRenderer.cpp
9d9758ae30a59dcf594e0d26ba5d4ee153a3e44a 15-May-2012 Romain Guy <romainguy@google.com> Fix two memory leaks
Bug #6408362

Change-Id: I58543938e7b64d83504e11e97b0dd21ef8ebf3b6
/frameworks/base/libs/hwui/FontRenderer.cpp
ae91c4cbc79ea910753be65e2f1d7899abcb4da2 14-May-2012 Romain Guy <romainguy@google.com> Properly pre-cache latin glyphs
Bug #6408362

Change-Id: Ie11644c5a9e2d87d3b851b7e619e5f04b60a7e02
/frameworks/base/libs/hwui/FontRenderer.cpp
6554943a1dd6854c0f4976900956e556767b49e1 27-Mar-2012 Romain Guy <romainguy@google.com> Use a status_t return type for GL functors

WebView needs more fine-grained control over the behavior of the
framework upon execution of the display lists. The new status_t
allows WebView to requests its functor to be re-executed directly
without causing a redraw of the entire hierarchy.

Change-Id: I97a8141dc5c6eeb6805b6024cc1e76fce07d24cc
/frameworks/base/libs/hwui/FontRenderer.cpp
a9dd820184ee4d083bd9b2af735dcf50b78fc6cd 26-Mar-2012 Romain Guy <romainguy@google.com> Prevent random crashes on SGX architecture
Bug #6219894

Change-Id: If77f29da03e557a50e53bae505e1c638a1dbe2cc
/frameworks/base/libs/hwui/FontRenderer.cpp
b0317984d34da99b614597ad0a8b39268eacb783 21-Mar-2012 Romain Guy <romainguy@google.com> Plug memory leak.
Bug #6196903

Whenever a memory flush happens, the GL renderer discards some or all of its
font caches. Each font cache holds an array of vertex indices that was
initially designed to have the same life cycle as the process. This changed
when memory flushes were introduced but this array was never taken care of
in the destructor.

Change-Id: Ief124f609ea55b671c0a9b43637d9e013629ebaa
/frameworks/base/libs/hwui/FontRenderer.cpp
dd7c8e4c68205d39109d4317dd0c9b05ed43e8e5 01-Mar-2012 Romain Guy <romainguy@google.com> Small tweak to Canvas.drawPath() GL implementation

Change-Id: I1d668a912996e1267bcf2127058888e489a2d9b3
/frameworks/base/libs/hwui/FontRenderer.cpp
9777173eb6c9eb97c7921c8288ebc65e3ab3ce6f 29-Feb-2012 Romain Guy <romainguy@google.com> Full implementation of Canvas.drawPath()

Change-Id: I23223b89770a0cd2b4762365bead9bfddb094290
/frameworks/base/libs/hwui/FontRenderer.cpp
b629490ffb21752750cc081827ca4c1eae1eb015 03-Feb-2012 Romain Guy <romainguy@google.com> Disable debugging code in the font renderer

Change-Id: I92463057ff4ae712bb25789db1667ff1ecfd389f
/frameworks/base/libs/hwui/FontRenderer.cpp
671d6cf460531825a321edb200523d0faa7792c9 18-Jan-2012 Romain Guy <romainguy@google.com> Full support for Canvas.drawPosText

This also introduces a small optimization when rendering text.

Change-Id: Iff620ac97bf878eaac406bccc6daa07052c93890
/frameworks/base/libs/hwui/FontRenderer.cpp
3762c311729fe9f3af085c14c5c1fb471d994c03 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/157220

Bug: 5449033
Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
/frameworks/base/libs/hwui/FontRenderer.cpp
9a8245629d69d81e0b62e52970feaf9c02580e75 17-Dec-2011 Chet Haase <chet@google.com> De-allocate caches for large glyphs when trimming memory

Currently, font renderers eliminate some texture caches when
memory is trimmed. This change makes it go further by eliminating the
large-glyph caches for all font renderers. These caches are
only allocated as needed, but continue to consume large amounts of
memory (CPU and GPU) after that allocation. De-allocating this memory
on a trim operation should prevent background apps from holding onto
this memory in the possible case that they have allocated it by drawing
large glyphs.

Change-Id: Id7a3ab49b244e036b442d87252fb40aeca8fdb26
/frameworks/base/libs/hwui/FontRenderer.cpp
2a47c14e2a6f152496b43104bc785c488583fd59 15-Dec-2011 Chet Haase <chet@google.com> Fix issues from recent glyph caching change

There were 2 issues remaining after a recent change to support
glyph caching from multiple textures:
- memory in the GPU for all textures was being allocated automatically.
This is now lazy, being allocated only when those textures are first
needed.
- filtering (applied when a rendered object is transformed) was ignoring
the new multiple-texture structure. Filtering should be applied correctly
whenever we change textures.

Change-Id: I5c8eb8d46c73cd01782a353fc79b11cacc2146ab
/frameworks/base/libs/hwui/FontRenderer.cpp
2d4fd364843d3efc6e6ee59ccc5beb513a86d789 14-Dec-2011 Romain Guy <romainguy@google.com> Reduce the number of active texture changes

Change-Id: I94046bdfe20740c26c8183822e3002d692fde7c4
/frameworks/base/libs/hwui/FontRenderer.cpp
e829bc0f0364e942bed01536d115a5c08d25d776 13-Dec-2011 Chet Haase <chet@google.com> Merge "Make glyph cache more flexible"
7de0cb12d0e5fd64811da0b5d1ae0c0d58b86f86 06-Dec-2011 Chet Haase <chet@google.com> Make glyph cache more flexible

Some GPU architectures could not handle the previous implementation
of our glyph cache. Frequent uploads would cause memory problems in the GPU
and eventually a crash due to these memory issues. The solution is to move to
a system of several, smaller caches instead of one monolythic cache for all
glyphs.

Change-Id: I0fc7a323360940d16d5a33eeb33abfab194c5920
/frameworks/base/libs/hwui/FontRenderer.cpp
15bc6437f8b4cf10dba55c7638d349e7b9563f4f 13-Dec-2011 Romain Guy <romainguy@google.com> Reduce the number of GL commands generated by the UI

This optimization along with the previous one lets us render an
application like Gmail using only 30% of the number of GL commands
previously required

Change-Id: Ifee63edaf495e04490b5abd5433bb9a07bc327a8
/frameworks/base/libs/hwui/FontRenderer.cpp
f3a910b423db7ad79cf61518bdd9278c048ad0d8 13-Dec-2011 Romain Guy <romainguy@google.com> Optimize state changes

Change-Id: Iae59bc8dfd6427d0967472462cc1994987092827
/frameworks/base/libs/hwui/FontRenderer.cpp
d71dd367af604571c7d00ca473184a1b9240eca2 13-Dec-2011 Romain Guy <romainguy@google.com> Minimize the amount of data uploaded to draw text

Change-Id: I6313ac039291c9cd93aadafe3566ad9d60cab42d
/frameworks/base/libs/hwui/FontRenderer.cpp
ff98fa5a847f66e591287154c634ef7895a9549c 28-Nov-2011 Romain Guy <romainguy@google.com> Fix crash in existing applications
Bug #5659476

The FontRenderer was not cleaning up its temporary state, leading
to crashes when invoking renderDropShadow.

Change-Id: I43b24820dd5625af8c080bbe11b64de2f74164b2
/frameworks/base/libs/hwui/FontRenderer.cpp
5a6d3a4c0311318e6f1d4ee06aa47606e055a81b 08-Oct-2011 Romain Guy <romainguy@google.com> Stupid fixed point math.
Bug #5423215

Change-Id: I39379e1f8fb4d59de4ede6e4fe7cf7a2c7cc625a
/frameworks/base/libs/hwui/FontRenderer.cpp
799833a8b451a04be201d25ae72213e8562f7774 30-Aug-2011 Romain Guy <romainguy@google.com> Text would disappear when the font size is 75px.
Bug #5230196

Yes, 75px. Any other font size would work. Don't ask.

Change-Id: I96c7db9926a97f65128d60c8238c3640ee2444ba
/frameworks/base/libs/hwui/FontRenderer.cpp
bd496bc3d481f9cfc39007d22372d3a1a8809f96 03-Aug-2011 Romain Guy <romainguy@google.com> Paint style and stroke width affect text rendering.
Bug #5112207

Change-Id: Ic34037ace21a5058ba23dd15e51aae58c998454d
/frameworks/base/libs/hwui/FontRenderer.cpp
726aeba80ffc6778a9bc3e0ee957b8d644183505 01-Jun-2011 Romain Guy <romainguy@google.com> Add support to OpenGLRendere to draw BiDi text.
Bug #4350336

Change-Id: I1cf31693f7ca9653fa3a41b5b91c27ef288d680f
/frameworks/base/libs/hwui/FontRenderer.cpp
44984ea0cb3702384d023b5f211deda3c4b0b656 19-May-2011 Chet Haase <chet@google.com> Enable large font rendering with GPU acceleration

Change-Id: I7b022100fb0762613f9cf7753dbb0217e1e75f8d
/frameworks/base/libs/hwui/FontRenderer.cpp
8668f8a633d9299091556c3b2e5ae07be8dce360 02-Mar-2011 Chet Haase <chet@google.com> Fix problem with glyph cache and textScaleX property

Glyphs drawn with paints that had different textScaleX values were not
being recognized as different, so the glyph cache was being used regardless
of different scaleX values. This change adds the scaleX attribute to the native
Font object to allow the cache to distinguish between this difference and cache
accordingly.

Change-Id: I5d8fc26d47460b27dc8e373a473d46b2f1b8dc30
/frameworks/base/libs/hwui/FontRenderer.cpp
894df17eee708688c8a6e67941add2017239c790 18-Feb-2011 Alex Sakhartchouk <alexst@google.com> Fixing font renderer attribute slot locations.

Change-Id: I6377bb641df7d8372d873c00790189f9a190afd6
/frameworks/base/libs/hwui/FontRenderer.cpp
c9855a53edfac818dc68714557185977556f849d 22-Jan-2011 Romain Guy <romainguy@google.com> Log only 1 line per process when using OpenGLRenderer.

Change-Id: Idbdd6b84f31301e58ed53e0d50fd61fece192dfa
/frameworks/base/libs/hwui/FontRenderer.cpp
514fb18827186591d66973c2362c859b64b63556 19-Jan-2011 Romain Guy <romainguy@google.com> Don't attempt to create empty layers.
Bug #3369888

Change-Id: Ic17bbd1c04bbf760cb17d0eb9e6767fd6479948c
/frameworks/base/libs/hwui/FontRenderer.cpp
2577db1ec135a1470a2c42139772ec97a6c30e78 18-Jan-2011 Romain Guy <romainguy@google.com> Add support for Paint::setTextSkewX in OpenGLRenderer.
Bug #3360888

Change-Id: I42e81a1f10bf7b9ae1c63ca8add1878fd59a1e8a
/frameworks/base/libs/hwui/FontRenderer.cpp
325a0f969c1d803d7e39a9caee8cc3d400350659 06-Jan-2011 Romain Guy <romainguy@google.com> The font cache should respect the fake bold flag.

Change-Id: Ie4edc9ba46610edde831b55e769944e9a19bdcb5
/frameworks/base/libs/hwui/FontRenderer.cpp
5b3b35296e8b2c8d3f07d32bb645d5414db41a1d 28-Oct-2010 Romain Guy <romainguy@google.com> Optimize FBO drawing with regions.
This optimization is currently disabled until Launcher is
modified to take advantage of it. The optimization can be
enabled by turning on RENDER_LAYERS_AS_REGIONS in the
OpenGLRenderer.h file.

Change-Id: I2fdf59d0f4dc690a3d7f712173ab8db3848b27b1
/frameworks/base/libs/hwui/FontRenderer.cpp
054dc1840941665e32036f9523df51720ad069c8 16-Oct-2010 Romain Guy <romainguy@google.com> Don't draw entirely transparent 9patch meshes.

Change-Id: If3e62e18b8e0dbde8a22f8ede2889b86500a4dc2
/frameworks/base/libs/hwui/FontRenderer.cpp
5d794412e3e429e47404395badcd11b0b8639e8b 14-Oct-2010 Romain Guy <romainguy@google.com> Small potential performance improvement for fonts rendering.

Change-Id: If59c1e7803b84340fbc8b31ce6171ef0e5dc6189
/frameworks/base/libs/hwui/FontRenderer.cpp
e8cb9c14309b0f01c0159efdf9a7198f44a62642 04-Oct-2010 Romain Guy <romainguy@google.com> Apply bilinear filtering on text only when necessary.

Change-Id: Ic903f4b5d30e9c92528c6291941896efe4729ee3
/frameworks/base/libs/hwui/FontRenderer.cpp
1de1083e98cde9bdd5e8539dbc54fdea6531906e 03-Oct-2010 Romain Guy <romainguy@android.com> Initialize font texture cache.

Now that text is renderer using bilinear filtering, each character is surrounded by
a 1 pixel border. This border needs to be initialized to a transparent value.

Change-Id: I26d3195db4bd576ac1f2da4c8f8e4dd18768bf12
/frameworks/base/libs/hwui/FontRenderer.cpp
7975fb6d12cb1eb96b75e3a563627cd4c4081bd6 02-Oct-2010 Romain Guy <romainguy@google.com> Apply bilinear filtering to text.

Change-Id: I2c81ad657ee2a11a2139e0b11ae3749db54c0749
/frameworks/base/libs/hwui/FontRenderer.cpp
e2d345ea67e2960b37bfdc0fc8626d1bfa747404 25-Sep-2010 Romain Guy <romainguy@google.com> Add debug mode to measure performance.

Change-Id: I9d4c84034dc200b99c8266165942a7cdbcb5c0c5
/frameworks/base/libs/hwui/FontRenderer.cpp
58ef7fbf16864164efe98bf613b15c64deb1afc0 13-Sep-2010 Romain Guy <romainguy@google.com> Forces windows to draw the first time they show.

Change-Id: I239572ee49bc60f30d957f548104e75844859a93
/frameworks/base/libs/hwui/FontRenderer.cpp
2bffd268f135df8308c9e67af110525a5c463424 13-Sep-2010 Romain Guy <romainguy@google.com> Fix text rendering issue with text scaling.

Change-Id: I1f3ae40025697e8f8ca0616ee6550fe215cadcc8
/frameworks/base/libs/hwui/FontRenderer.cpp
b45c0c9774bd19a9dbe77d149abae4e124b08bf6 27-Aug-2010 Romain Guy <romainguy@google.com> Apply gamma correction to font rendering.

Change-Id: I1b05f40e356221b2a5eb9400e67d77ecd98ed6c4
/frameworks/base/libs/hwui/FontRenderer.cpp
1e45aae5de003657e5d18f74d34998f5de5db5b7 14-Aug-2010 Romain Guy <romainguy@google.com> Add drop shadows.

Change-Id: Ic6a72409d4785968d1fbdff229f17ee5c00b240b
/frameworks/base/libs/hwui/FontRenderer.cpp
61c8c9c5b2006d18e9310b6521c65b36ffe75ce4 10-Aug-2010 Romain Guy <romainguy@google.com> Fix tons of bugs and add new text rendering support.

Change-Id: I326c66b10784006f6df2f12d38e120cef94cd0d7
/frameworks/base/libs/hwui/FontRenderer.cpp
9cccc2b9bdd4850a3f9679569aaec3ab98477a5d 08-Aug-2010 Romain Guy <romainguy@android.com> Enforce maximum texture size.

When an app tries to render a bitmap or path larger than the GPU's maximum
texture size, the drawing command is ignored and a warning is logged. This
change also makes texture drawing more robust by catching potential errors
during texture creation.

This change also fixes a crash in the FontRenderer. The destructor would
sometimes try to free an uninitialized array.

Change-Id: I95ae0939c52192d97b340aa02417bf6d0c962c57
/frameworks/base/libs/hwui/FontRenderer.cpp
f18136cb3c881a9d16c1a4f0f341732c276936bf 06-Aug-2010 Alex Sakhartchouk <alexst@google.com> Added drop shadow renderer to the font class.

Change-Id: Id243abfbbb58e54f6a05f592a302984b5321e608
/frameworks/base/libs/hwui/FontRenderer.cpp
89a524ac2d4a36739e51b01b336c0bade77e2ee0 03-Aug-2010 Alex Sakhartchouk <alexst@google.com> Adding drop shadow support

Change-Id: I9b1b9568d6cebc0761d96ab678b018571f705ae1
/frameworks/base/libs/hwui/FontRenderer.cpp
ae5575b3421c8fbe590ab046d7d5f2b36ecfd821 30-Jul-2010 Romain Guy <romainguy@google.com> Fix gradients rendering and destructor crashes.

This changes binds all textures to GL_TEXTURE0, this will have
to be changed when combining shader capabilities.

Change-Id: I02df4f5ba41e9b01ffa52fd7c26b41477c7ed18f
/frameworks/base/libs/hwui/FontRenderer.cpp
889f8d1403761d5668115ced6cbb3f767cfe966d 29-Jul-2010 Romain Guy <romainguy@google.com> Moved all the rendering code to the new shader generator.

The generator supports features that are not yet implement in the
renderer: color matrix, lighting, porterduff color blending and
composite shaders.

This change also adds support for repeated/mirrored non-power of 2
bitmap shaders.

Change-Id: I903a11a070c0eb9cc8850a60ef305751e5b47234
/frameworks/base/libs/hwui/FontRenderer.cpp
65ef909776c03417d8b597738da54ca211e37e4f 26-Jul-2010 Alex Sakhartchouk <alexst@google.com> When font cache still has empty space,
precache some commonly used characters to reduce studder.

Change-Id: I1f66f57482c4a025672dfd1d8ecaf2b9736cd9a0
/frameworks/base/libs/hwui/FontRenderer.cpp
9b9902ddbb01548f4a0199087b7035e7c10b2ae7 23-Jul-2010 Alex Sakhartchouk <alexst@google.com> Updating parts of font cache as needed instead of the entire map.

Change-Id: If9a37e10197255122acdb5b10a0c356edd942d67
/frameworks/base/libs/hwui/FontRenderer.cpp
51769a68a5cb34e9564740c6a854fcb93018789d 23-Jul-2010 Romain Guy <romainguy@android.com> Cleanup, added properties for the FontRenderer.

Change-Id: I909c74815d3ac394438ad8071d17fef5401dbeed
/frameworks/base/libs/hwui/FontRenderer.cpp
09147fbdc8206a0cac78bfe9083e7e15b3c5689c 22-Jul-2010 Romain Guy <romainguy@google.com> Add support for text culling.

Change-Id: Ibf0adacdc5c64d40a8000b21d7cb0797d63efe29
/frameworks/base/libs/hwui/FontRenderer.cpp
694b519ac647fe998fd396fe0784cc8e179aadc4 22-Jul-2010 Romain Guy <romainguy@google.com> Add text rendering.

Change-Id: Ibe5a9fa844d531b31b55e43de403a98d49f659b9
/frameworks/base/libs/hwui/FontRenderer.cpp