530 Commits

Author SHA1 Message Date
Chet Haase
0904c203c4 Merge "Fix issues from recent glyph caching change" 2011-12-16 06:49:59 -08:00
Chet Haase
2a47c14e2a 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
2011-12-15 15:43:02 -08:00
Romain Guy
8f85e80b64 Generate even fewer GL commands
Change-Id: I0f4dcacb03ef5ee7f6ebd501df98bfead5f0a7f8
2011-12-14 19:23:32 -08:00
Romain Guy
2d4fd36484 Reduce the number of active texture changes
Change-Id: I94046bdfe20740c26c8183822e3002d692fde7c4
2011-12-13 22:00:19 -08:00
Romain Guy
ec31f83bd3 <Insert something improper about OpenGL>
Change-Id: Ib645376093838156771588adc76a718da0ceb0db
2011-12-13 18:41:12 -08:00
Romain Guy
a1d3c91afb Further reduce the number of GL commands sent to the driver
Change-Id: Id922b2a166ea4573b767c27d3195e11c70320b23
2011-12-13 14:58:14 -08:00
Chet Haase
e829bc0f03 Merge "Make glyph cache more flexible" 2011-12-13 14:03:43 -08:00
Chet Haase
7de0cb12d0 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
2011-12-13 13:41:58 -08:00
Romain Guy
15bc6437f8 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
2011-12-13 13:11:32 -08:00
Romain Guy
f3a910b423 Optimize state changes
Change-Id: Iae59bc8dfd6427d0967472462cc1994987092827
2011-12-12 20:35:21 -08:00
Romain Guy
d71dd367af Minimize the amount of data uploaded to draw text
Change-Id: I6313ac039291c9cd93aadafe3566ad9d60cab42d
2011-12-12 19:03:35 -08:00
Romain Guy
39d252a663 Various OpenGL optimizations
Change-Id: Ib0742c96f10f5f50e7e5148b742c31b6c232d127
2011-12-12 18:14:06 -08:00
Romain Guy
f44e66fcf7 Remove leftover debugging code
Change-Id: I1589af7991da36744071d5081daa24ebae5b4dfd
2011-12-12 16:50:13 -08:00
Romain Guy
3e263fac8c Keep shaders to render properly
I don't know who's to blame, SGX or Tegra2 but one of those two GPUs is not
following the OpenGL ES 2.0 spec.

Change-Id: I2624e0efbc9c57d571c55c8b440a5e43f08a54f2
2011-12-12 16:47:48 -08:00
Romain Guy
6752d0ab02 Mark color uniform fetched after fetching it
Change-Id: I10e8027018608070a536eb8b51c7a4272e37006c
2011-12-12 12:15:17 -08:00
Romain Guy
24edca8b52 Code cleanup
Change-Id: If92e3addfc4d8546a60edcdea60a1fc89c27b680
2011-12-09 13:08:06 -08:00
Romain Guy
05bbde70fd Free up resources by deleting shaders early on
Change-Id: I29a39775732c0a48d3e6823f7afa3e741cae8541
2011-12-09 12:55:37 -08:00
Romain Guy
9c4b79af22 Discard framebuffer rendering queues when discarding layers
Bug #5581817

Change-Id: Ie30700a29059d2ea60eb7bd3f8bd20ac48a149ab
2011-12-06 16:37:10 -08:00
Romain Guy
8f9a9f61ab Clip text correctly
Bug #5706056

A newly introduced optimization relied on the display list renderer
to properly measure text to perform fast clipping. The paint used
to measure text needs to have AA and glyph id encoding set to return
the correct results. Unfortunately these properties were set by
the GL renderer and not by the display list renderer. This change
simply sets the properties in the display list renderer instead.

This change also improves the error message printed out when the
application attempts to use a bitmap larger than the max texture
size.

Change-Id: I4d84e1c7d194aed9ad476f69434eaa2c8f3836a8
2011-12-05 11:53:26 -08:00
Romain Guy
cac5fd3e09 Faster text clipping
Change-Id: I03a00c4261d81a416b1ad7b86ce2d432c71908b4
2011-12-01 20:08:50 -08:00
Romain Guy
d21b6e1fe3 Optimize away unnecessary state changes
Change-Id: I0f6816f9f6234853575ecee5033186ad19e76380
2011-11-30 20:21:23 -08:00
Romain Guy
cb52d67600 am 02e88f23: am 46685db9: Merge "Fix crash in existing applications Bug #5659476" into ics-mr1
* commit '02e88f23a65c602e83d7a46c0925e653b948e418':
  Fix crash in existing applications Bug #5659476
2011-11-28 16:11:27 -08:00
Romain Guy
46685db957 Merge "Fix crash in existing applications Bug #5659476" into ics-mr1 2011-11-28 16:06:52 -08:00
Chet Haase
d3ea6b40bb am 38928899: am 8990cb57: Merge "Fix flashing wifi dialog after rotating back from landscape." into ics-mr1
* commit '3892889952b0ad3fa0b095c96d8ae2ae110585e2':
  Fix flashing wifi dialog after rotating back from landscape.
2011-11-28 15:47:16 -08:00
Chet Haase
08837c246c Fix flashing wifi dialog after rotating back from landscape.
There was an error in some of the OpenGL layer logic such that we would
occasionally set up a layer for rendering and then not clean up when it was
done. This caused future OpenGL rendering to go into that layer instead of
to the buffers being displayed on the screen, resulting in artifacts including
flashes and displaying of stale content. This happened specifically when
using the wifi settings dialog with the InputMethod keyboard displayed,
but it was probably visible in other situations as well.

Issue #5628248: Flickering/flashing after entering password for WiFi

Change-Id: I38139f620b310f4309570fa7224552d2ee633999
2011-11-28 15:19:22 -08:00
Romain Guy
ff98fa5a84 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
2011-11-28 14:55:56 -08:00
Romain Guy
c28e574037 am a2fabf4a: am 303a0695: Merge "Draw in the correct FBO after invoking a GL functor Bug #5650514" into ics-mr1
* commit 'a2fabf4a109d46f99ff7370aa05e48c1708c2838':
  Draw in the correct FBO after invoking a GL functor Bug #5650514
2011-11-22 12:42:06 -08:00
Romain Guy
421458aad7 Draw in the correct FBO after invoking a GL functor
Bug #5650514

After invoking a GL functor, libhwui restores a few OpenGL states
including the current FBO. The renderer was however making the
wrong assumption that the FBO to restore to was the base layer
instead of the FBO associated with the current canvas state.

Change-Id: Ie565500832ebffd673f6a43b83422d6cc05470a0
2011-11-21 15:14:37 -08:00
Dave Burke
7077506f99 Revert "Discard framebuffer rendering queues when discarding layers"
This reverts commit da96f8ac2c1c35a54f3f36e6d776cb386a251d03.
2011-11-14 11:39:30 -08:00
Jeff Brown
d9e688cab3 Clean up GenerationCache.
Use const references to keys and values where appropriate to avoid
copying them unnecessarily.

Deleted some dead code.

Simplified a few pieces that were doing unnecessary redundant work.

Change-Id: Ib2145b7094a40db2d679e05dafe050fe1e87b846
2011-11-11 22:14:07 -08:00
Akwasi Boateng
1333742bed am cb0db030: Merge branch \'ics-mr1-plus-aosp\' of ssh://android-git:29418/platform/frameworks/base into ics-mr1-plus-aosp
* commit 'cb0db0306b5849a35d3d99eea1b34ce019c6f0d8':
  Make the overridden ImageView#setVisibility remotable
  Clamp non-monotonic stats instead of dropping.
  DO NOT MERGE. Fix leak in LayoutTransition
  Fix lastVisible/global rects
  Fix Wimax-less build.
  Fix leak in LayoutTransition
  Deferring wallpaper update to improve workspace scrolling (issue 5506959)
  Terminate EGL when an app goes in the background
  boot animation is dithered and scaled
  Fix NdefRecord byte-stream constructor.
  PopupWindow dismiss() can get into a recursive loop.
  Fold WiMAX state into the mobile RSSI.
  Remove dedicated wimax icon to fix RSSI layout.
2011-11-11 15:34:19 +00:00
Romain Guy
da96f8ac2c Discard framebuffer rendering queues when discarding layers
Bug #5581817

Change-Id: If612846ec5f7793710fc4df152791fb32c506551
2011-11-10 19:23:58 -08:00
Romain Guy
8ff6b9ebee Terminate EGL when an app goes in the background
This does not happen on high end gfx devices. This happens
only if only one EGL context is initialized in the current
process.

Change-Id: Ibd1737efdf84eef8a84108b05795440d1ae9964e
2011-11-10 16:44:49 -08:00
Romain Guy
9039e43ab1 am 2ccc47b8: Merge "Memory optimizations for libhwui Bug #5566149" into ics-mr1
* commit '2ccc47b89868d4f39683e0e2bd057ce95d7d1217':
  Memory optimizations for libhwui Bug #5566149
2011-11-05 19:33:49 +00:00
Romain Guy
eca0ca2424 Memory optimizations for libhwui
Bug #5566149

Lazily initialize font renderers
Keep 60% of the texture cache when an app goes to the background
Delete least used font renderer when going to the background
Delete all font renderers on full memory trim

Change-Id: I3c2454d46dc1107ec0f0f72a9ce69cbbcc8825e7
2011-11-04 16:23:47 -07:00
Fabrice Di Meglio
ef9bb3c3ea Fix bug #5438102 Double Arabic harakat overlap instead of stack In TextView
IMPORTANT: this change needs two patches for Harfbuzz:
- one concerning hb_utf16_script_run_prev() which was not returning the correct "previous" script
- one for the "script_properties" table that was missing Arabic code point ranges and declaring
HB_Script_Inherited instead of HB_Script_Arabic

The current change is doing the following:
- pass the correct typeface for Harbuzz shaping (depending on the script of the run)
- offset correctly the glyphIDs returned by Harfbuzz

We need to offset the glyphsID as Harfbuzz will return local glyphIDs (meaning in the
local range of the font used for shapping).

We then cannot use those glyphIDs when we are using a fallback Font (Arabic, Hebrews...)
because the FontRenderer needs glyphIDs in the range of all the Fonts (including the fallbacks)

Change-Id: I494897435bbc59293b02392ee2059cebcdf0e571
2011-11-01 17:16:08 -07:00
Romain Guy
e707859415 Load identity matrix when calling Canvas.setMatrix(null)
Bug #5446826

Change-Id: I3a7817f266b17e9abe948500816d629edd9a2822
2011-10-28 14:32:20 -07:00
Romain Guy
5e7c469c7a Make sure 9patches are not filtered when not necessary
Bug #5383406

Change-Id: I061c8069a4d9f4eaf45671283710b564639eeb32
2011-10-20 20:33:07 -07:00
Romain Guy
a62f172215 Correctly dump DrawPatch operations in display lists
Change-Id: I8cd1c764ddc184ce45727913fa2a23a3d81b337e
2011-10-19 17:06:19 -07:00
Romain Guy
5cd5c3f7e4 Return early when we cannot allocate a hardware layer
Bug #5462308

Change-Id: I52dab809662f6f42a49ca03edc50f6b98fc35a06
2011-10-17 17:10:02 -07:00
Romain Guy
71e36aa7db Add missing public native API
Change-Id: Ie3bc706b2ac91d686a5b888e8ae841820e9d37c7
2011-10-12 14:11:32 -07:00
Romain Guy
7953745dd5 Reduce the size of libhwui by 50%
This change removes unnessary symbols. All symbols are hidden by
default, public APIs with exported symbols are explicitly marked
with ANDROID_API.

Change-Id: I692fde432a86c12108de1cfd1f6504919a7d5f3f
2011-10-12 13:48:51 -07:00
Romain Guy
a9dc86b21d Correctly apply transforms when getting a TextureView's bitmap
Bug #5439406

Change-Id: I271a9a2e38f5b3600dc158f8f442a6b0893f472b
2011-10-11 14:06:21 -07:00
Romain Guy
5a6d3a4c03 Stupid fixed point math.
Bug #5423215

Change-Id: I39379e1f8fb4d59de4ede6e4fe7cf7a2c7cc625a
2011-10-07 15:03:24 -07:00
Romain Guy
ed7a8fc768 Canvas.getClipBounds() was broken and unreliable with OpenGL ES 2.0
This bug was affecting several third party applications. The bug was
introduced by an optimization that prevented the local clip to be
recomputed when needed.

Change-Id: I7b5c464db21b5ff1a7274af75a3a64d0e9d84772
2011-10-04 19:21:27 -07:00
Romain Guy
59c7f80dd2 TextureView works best when it draws stuff.
Bug #5391188

Change-Id: I5e754881ccb08ff288ebd60de77282c9cbcf3f86
2011-09-29 17:21:45 -07:00
Mathias Agopian
83b186a246 fix the float Rect in OpenGLRenderer to handle NANs
- we want functions like isEmpty() to return true if NANs are
involved in the Rect

- also clean-up the intersect familly of calls

- minor cleanup in the int32_t Rect as well

These played a role in http://b/5331198.

Bug: 5331198

Change-Id: I5369725ab482e4b83da9f1bd4cee5256e5de75b2
2011-09-19 16:50:07 -07:00
Jeff Brown
13ede62fd7 Make LTE_FLOAT a strict weak order.
Bug: 5327776

Currently LTE_FLOAT isn't even a valid partial order, let alone
a strict weak order as needed by binary search.  Consequently,
KeyedVectors with keys whose types have operator< using LTE_FLOAT
sometimes find the wrong values!

This problem affects several graphics caches including the
TextLayoutCache.

(This is still not a total order because NaNs are not comparable
but hopefully we don't ever search for NaNs this way!)

Change-Id: Ic447a34c7d87f681ee81538f22a0937a039072dd
2011-09-16 12:00:05 -07:00
Romain Guy
2ffefd48e2 Add support for 3 new blend modes when blending with framebuffer:
Add
  Multiply
  Screen

Change-Id: I92a3c2612c86613087568bf0c03cc6f92b5ded44
2011-09-08 15:33:03 -07:00
Romain Guy
8a3957d43b Add reminder in the code to fix T-junctions
Change-Id: I52b112694f930e641f01fb78dc55412986023411
2011-09-07 17:55:15 -07:00