summaryrefslogtreecommitdiffstats
path: root/libs/hwui/FontRenderer.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Forget the name of a texture after freeingRomain Guy2012-05-141-4/+8
| | | | | | | | | | | | | | | | | 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
* Fix two memory leaksRomain Guy2012-05-141-11/+24
| | | | | | Bug #6408362 Change-Id: I58543938e7b64d83504e11e97b0dd21ef8ebf3b6
* Properly pre-cache latin glyphsRomain Guy2012-05-141-10/+12
| | | | | | Bug #6408362 Change-Id: Ie11644c5a9e2d87d3b851b7e619e5f04b60a7e02
* Use a status_t return type for GL functorsRomain Guy2012-03-261-1/+1
| | | | | | | | | 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
* Prevent random crashes on SGX architectureRomain Guy2012-03-261-0/+2
| | | | | | Bug #6219894 Change-Id: If77f29da03e557a50e53bae505e1c638a1dbe2cc
* Plug memory leak.Romain Guy2012-03-211-0/+2
| | | | | | | | | | | | 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
* Small tweak to Canvas.drawPath() GL implementationRomain Guy2012-03-011-9/+8
| | | | Change-Id: I1d668a912996e1267bcf2127058888e489a2d9b3
* Full implementation of Canvas.drawPath()Romain Guy2012-02-291-19/+145
| | | | Change-Id: I23223b89770a0cd2b4762365bead9bfddb094290
* Disable debugging code in the font rendererRomain Guy2012-02-021-1/+3
| | | | Change-Id: I92463057ff4ae712bb25789db1667ff1ecfd389f
* Full support for Canvas.drawPosTextRomain Guy2012-01-181-50/+112
| | | | | | This also introduces a small optimization when rendering text. Change-Id: Iff620ac97bf878eaac406bccc6daa07052c93890
* Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGESteve Block2012-01-081-4/+4
| | | | | | | See https://android-git.corp.google.com/g/#/c/157220 Bug: 5449033 Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
* De-allocate caches for large glyphs when trimming memoryChet Haase2011-12-161-2/+39
| | | | | | | | | | | | | 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
* Fix issues from recent glyph caching changeChet Haase2011-12-151-19/+31
| | | | | | | | | | | | | 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
* Reduce the number of active texture changesRomain Guy2011-12-131-2/+10
| | | | Change-Id: I94046bdfe20740c26c8183822e3002d692fde7c4
* Merge "Make glyph cache more flexible"Chet Haase2011-12-131-87/+142
|\
| * Make glyph cache more flexibleChet Haase2011-12-131-87/+142
| | | | | | | | | | | | | | | | | | | | 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
* | Reduce the number of GL commands generated by the UIRomain Guy2011-12-131-3/+14
|/ | | | | | | | 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
* Optimize state changesRomain Guy2011-12-121-13/+0
| | | | Change-Id: Iae59bc8dfd6427d0967472462cc1994987092827
* Minimize the amount of data uploaded to draw textRomain Guy2011-12-121-20/+21
| | | | Change-Id: I6313ac039291c9cd93aadafe3566ad9d60cab42d
* Fix crash in existing applicationsRomain Guy2011-11-281-2/+10
| | | | | | | | | Bug #5659476 The FontRenderer was not cleaning up its temporary state, leading to crashes when invoking renderDropShadow. Change-Id: I43b24820dd5625af8c080bbe11b64de2f74164b2
* Stupid fixed point math.Romain Guy2011-10-071-7/+7
| | | | | | Bug #5423215 Change-Id: I39379e1f8fb4d59de4ede6e4fe7cf7a2c7cc625a
* Text would disappear when the font size is 75px.Romain Guy2011-08-301-2/+2
| | | | | | | | Bug #5230196 Yes, 75px. Any other font size would work. Don't ask. Change-Id: I96c7db9926a97f65128d60c8238c3640ee2444ba
* Paint style and stroke width affect text rendering.Romain Guy2011-08-021-6/+15
| | | | | | Bug #5112207 Change-Id: Ic34037ace21a5058ba23dd15e51aae58c998454d
* Add support to OpenGLRendere to draw BiDi text.Romain Guy2011-06-011-21/+22
| | | | | | Bug #4350336 Change-Id: I1cf31693f7ca9653fa3a41b5b91c27ef288d680f
* Enable large font rendering with GPU accelerationChet Haase2011-05-191-5/+34
| | | | Change-Id: I7b022100fb0762613f9cf7753dbb0217e1e75f8d
* Fix problem with glyph cache and textScaleX propertyChet Haase2011-03-021-6/+9
| | | | | | | | | | 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
* Fixing font renderer attribute slot locations.Alex Sakhartchouk2011-02-171-7/+9
| | | | Change-Id: I6377bb641df7d8372d873c00790189f9a190afd6
* Log only 1 line per process when using OpenGLRenderer.Romain Guy2011-01-211-5/+12
| | | | Change-Id: Idbdd6b84f31301e58ed53e0d50fd61fece192dfa
* Don't attempt to create empty layers.Romain Guy2011-01-191-5/+13
| | | | | | Bug #3369888 Change-Id: Ic17bbd1c04bbf760cb17d0eb9e6767fd6479948c
* Add support for Paint::setTextSkewX in OpenGLRenderer.Romain Guy2011-01-181-6/+13
| | | | | | Bug #3360888 Change-Id: I42e81a1f10bf7b9ae1c63ca8add1878fd59a1e8a
* The font cache should respect the fake bold flag.Romain Guy2011-01-051-26/+30
| | | | Change-Id: Ie4edc9ba46610edde831b55e769944e9a19bdcb5
* Optimize FBO drawing with regions.Romain Guy2010-11-021-3/+17
| | | | | | | | | 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
* Don't draw entirely transparent 9patch meshes.Romain Guy2010-10-151-2/+2
| | | | Change-Id: If3e62e18b8e0dbde8a22f8ede2889b86500a4dc2
* Small potential performance improvement for fonts rendering.Romain Guy2010-10-131-3/+3
| | | | Change-Id: If59c1e7803b84340fbc8b31ce6171ef0e5dc6189
* Apply bilinear filtering on text only when necessary.Romain Guy2010-10-041-2/+3
| | | | Change-Id: Ic903f4b5d30e9c92528c6291941896efe4729ee3
* Initialize font texture cache.Romain Guy2010-10-031-0/+2
| | | | | | | 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
* Apply bilinear filtering to text.Romain Guy2010-10-011-10/+11
| | | | Change-Id: I2c81ad657ee2a11a2139e0b11ae3749db54c0749
* Add debug mode to measure performance.Romain Guy2010-09-241-0/+1
| | | | Change-Id: I9d4c84034dc200b99c8266165942a7cdbcb5c0c5
* Forces windows to draw the first time they show.Romain Guy2010-09-131-1/+1
| | | | Change-Id: I239572ee49bc60f30d957f548104e75844859a93
* Fix text rendering issue with text scaling.Romain Guy2010-09-121-7/+17
| | | | Change-Id: I1f3ae40025697e8f8ca0616ee6550fe215cadcc8
* Apply gamma correction to font rendering.Romain Guy2010-08-271-4/+5
| | | | Change-Id: I1b05f40e356221b2a5eb9400e67d77ecd98ed6c4
* Add drop shadows.Romain Guy2010-08-131-13/+26
| | | | Change-Id: Ic6a72409d4785968d1fbdff229f17ee5c00b240b
* Fix tons of bugs and add new text rendering support.Romain Guy2010-08-101-23/+18
| | | | Change-Id: I326c66b10784006f6df2f12d38e120cef94cd0d7
* Enforce maximum texture size.Romain Guy2010-08-071-3/+8
| | | | | | | | | | | | 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
* Added drop shadow renderer to the font class.Alex Sakhartchouk2010-08-061-18/+91
| | | | Change-Id: Id243abfbbb58e54f6a05f592a302984b5321e608
* Adding drop shadow supportAlex Sakhartchouk2010-08-021-8/+185
| | | | Change-Id: I9b1b9568d6cebc0761d96ab678b018571f705ae1
* Fix gradients rendering and destructor crashes.Romain Guy2010-07-291-1/+0
| | | | | | | This changes binds all textures to GL_TEXTURE0, this will have to be changed when combining shader capabilities. Change-Id: I02df4f5ba41e9b01ffa52fd7c26b41477c7ed18f
* Moved all the rendering code to the new shader generator.Romain Guy2010-07-291-0/+1
| | | | | | | | | | | 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
* When font cache still has empty space,Alex Sakhartchouk2010-07-261-11/+55
| | | | | | precache some commonly used characters to reduce studder. Change-Id: I1f66f57482c4a025672dfd1d8ecaf2b9736cd9a0
* Updating parts of font cache as needed instead of the entire map.Alex Sakhartchouk2010-07-231-10/+41
| | | | Change-Id: If9a37e10197255122acdb5b10a0c356edd942d67