2d5945e88731787babce1061f44cd54f02eeefc5 |
|
18-Jun-2013 |
Romain Guy <romainguy@google.com> |
Take hinting into account when caching fonts Bug #9464403 Change-Id: I26a5f0c17eb27d096717b444d3e18ad1d2b5a43c
/frameworks/base/libs/hwui/font/Font.cpp
|
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/font/Font.cpp
|
bd3055f95e67a55648fd84a125e939293115171b |
|
14-Mar-2013 |
Romain Guy <romainguy@google.com> |
Less aggressive glyphs precaching The renderer used to pre-cache glyphs at record time. This then changed to pre-caching at the beginning of every frame. This unfortunately entails a lot of duplicate work on every frame, which amounts to 0.5 to 1ms in some stock applications. This change is somewhere in the middle: pre-caching happens the first time a DrawTextOp is deferred or every time the screen-space transform is different from the last pre-caching operation. Change-Id: Id6d9e2599d90a5b75010b0f0a28746befbf3c205
/frameworks/base/libs/hwui/font/Font.cpp
|
8afce816df7e8f668761f7ed443f54238958c49f |
|
07-Mar-2013 |
Romain Guy <romainguy@google.com> |
Round scale factors to rasterize text Harder, better, faster, stronger. Change-Id: Iee4125de98c4e61603f56bb7f06002cc86458214
/frameworks/base/libs/hwui/font/Font.cpp
|
624234f69b2a4781d24f3e4c6ae6450729e38397 |
|
06-Mar-2013 |
Romain Guy <romainguy@google.com> |
Take only the scale params into account to rasterize text This change extracts the scale parameters of the current transform to pass then to the font renderer. Rotation and perspective are applied to the generated mesh inside the vertex shader. This limits the number of glyphs we have to create in the font cache and thus reduces memory churn. Change-Id: Ic5b3bae2b2b0e0250a8ee723b071a1709725c749
/frameworks/base/libs/hwui/font/Font.cpp
|
874f5c6e4ac655b4f118074c90d51e6a44abe50c |
|
02-Mar-2013 |
Romain Guy <romainguy@google.com> |
Fix math issue when transforming text in perspective Change-Id: Iad6b4e477c11bd1ef5f0ceab2fabcd440030154d
/frameworks/base/libs/hwui/font/Font.cpp
|
0f6675332c04c74909425d1d328f02b32c0ff40e |
|
01-Mar-2013 |
Romain Guy <romainguy@google.com> |
Precache glyphs at final raster size The deferred display lists model now allows us to precache glyphs at their exact size on screen. This change also removes debug markers when the renderer defers and reorders display lists. It also adds a flush event marker. Change-Id: I66ec5216dc12b93ecfdad52a7146b1cfb31fbeb4
/frameworks/base/libs/hwui/font/Font.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/font/Font.cpp
|
c74f45a334f0e3725c23cdd270cbcb0efac4ea75 |
|
27-Feb-2013 |
Romain Guy <romainguy@google.com> |
Properly scale text This change does not apply to drawPosText() and drawTextOnPath() yet. Prior to this change, glyphs were always rasterized based on the font size specified in the paint. All transforms were then applied on the resulting texture. This creates rather ugly results when text is scaled and/or rotated. With this change, the font renderer will apply the current transform matrix to the glyph before they are rasterized. This generates much better looking results. Change-Id: I0141b6ff18db35e1213e7a3ab9db1ecaf03d7a9c
/frameworks/base/libs/hwui/font/Font.cpp
|
e67307c816f3fdae2bfba8e9a4410dc015645e91 |
|
12-Feb-2013 |
Romain Guy <romainguy@google.com> |
Prevent crash when setting up a stencil-based clip Bug #8177690 Clear the layers before we setup the stencil to avoid dereferencing the recently deleted rects. Change-Id: I5dce5f965672f276f9490636d85b6018d3ab9422
/frameworks/base/libs/hwui/font/Font.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/font/Font.cpp
|
14c40b47565778b7185de7655836485f3065877a |
|
09-Jan-2013 |
Romain Guy <romainguy@google.com> |
Fix build Change-Id: Ia465bd844b592fc05e59ad392ecc5ca4d34d24d7
/frameworks/base/libs/hwui/font/Font.cpp
|
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/font/Font.cpp
|
a3dc55f83ab583e0a66b893c71b849afa046770a |
|
28-Sep-2012 |
Romain Guy <romainguy@google.com> |
Fix a couple of rendering issues Bug #7253839 1. Make sure we don't make GL calls while recording display lists 2. Disable an early and trivial clip optimization in font renderer when a perspective transformation is used on the Canvas Change-Id: I3f1052164239329346854f72d0a0d401fbfecf06
/frameworks/base/libs/hwui/font/Font.cpp
|
521dc51fd411285f900c083a4fe560d2ed7c3f8a |
|
05-Sep-2012 |
Romain Guy <romainguy@google.com> |
Don't invalidate all the glyphs when flushing large textures FontRenderer::flushLargeCaches identifies the large textures used to cache glyphs and visits all the known fonts to mark their glyphs invalid if they belong to one of these large textures. Unfortunately, Font::invalidateTextureCache had a logic error which would make it mark *all glyphs* as invalid, not matter what texture they belong to. This means that any large cache flush would cause all glyphs to be invalidate, thus forcing the rendering system to recreate them on the next draw. Font::invalidateTextureCache is supposed to behave this way: - If the specified cacheTexture is NULL (default value), mark all glyphs as invalid (see FontRenderer::flushAllAndInvalidate()) - If cacheTexture is *not* NULL, invalidate only the glyphs for which glyph.cacheTexture == cacheTexture. The previous condition read: if (cacheTexture || glyph.cacheTexture == cacheTexture) This test *always* passes. Change-Id: I418886cb594c81c6178d0f9e9953d975e991cf22
/frameworks/base/libs/hwui/font/Font.cpp
|
8087246d9964b11de8ce116bc63b156faa4197e0 |
|
05-Sep-2012 |
Romain Guy <romainguy@google.com> |
Code cleanup in FontRenderer Change-Id: Ic788721c224a77f0a76f4cd6d9817b62e390a5a7
/frameworks/base/libs/hwui/font/Font.cpp
|
9b1204baf4740b4d443e72157dea98571cf84e1f |
|
05-Sep-2012 |
Romain Guy <romainguy@google.com> |
Small code cleanup in FontRenderer Change-Id: I09c00debe9b0b4f45b232cae402ed19bdaeabfe4
/frameworks/base/libs/hwui/font/Font.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/font/Font.cpp
|