1081 Commits

Author SHA1 Message Date
Romain Guy
f296dca95f (Small) 9patch drawing improvements
Save a bit of memory in meshs generated from native code
Avoid an extra if/else when drawing with hardware accelration on

Change-Id: I31a4550bde4d2c27961710ebcc92b66cd71153cc
2013-06-24 16:45:41 -07:00
Chris Craik
4f20f8ae50 Merge "Initialize MergingDrawBatch clip with viewport bounds" 2013-06-21 20:51:54 +00:00
Chris Craik
0e87f00f8c Initialize MergingDrawBatch clip with viewport bounds
This allows merged, clipped operations to behave correctly within a
savelayer, even if the base viewport has a large offset.

Additionally, disregard opaqueness when within a
complexclip/savelayer, as the coverage can't be trusted.

Change-Id: Ic908b82a4bb410bc7fac1b4295f4874ed166efc5
2013-06-21 13:16:31 -07:00
Romain Guy
64d592129e Merge "Refcount the paint used by Canvas.drawPatch()" 2013-06-21 18:37:56 +00:00
Romain Guy
16ea8d373b Refcount the paint used by Canvas.drawPatch()
Prevents crashes :)

Change-Id: I62103ce97490613142321f080b82c2edaed67a95
2013-06-21 11:35:52 -07:00
Romain Guy
2c290392c9 Merge "Batch 9-patches in a single mesh whenever possible" 2013-06-21 17:42:23 +00:00
Chris Craik
ede7eb7749 Merge "Make op outputting const, for more general logging" 2013-06-21 17:39:14 +00:00
Romain Guy
03c00b5a13 Batch 9-patches in a single mesh whenever possible
This change also fixes the way batched bitmaps were handled
inside a layer. The layer is now correctly dirtied to minimize
the amount of pixels to blend.

Fix alpha, mode and opaque computations for DrawPatchOp.

Change-Id: I1b6cd581c0f0db66c1002bb4fb1a9811e55bfa78
2013-06-21 10:13:58 -07:00
Romain Guy
d485ef27c7 Merge "An identity matrix should be considered a pure translate matrix" 2013-06-21 01:31:55 +00:00
Romain Guy
f6bed4f12a An identity matrix should be considered a pure translate matrix
Change-Id: I75e91797e8270f902f67bdd7bb526cccc23adc6b
2013-06-20 17:52:07 -07:00
Romain Guy
d4fed90d24 Merge "Add debugging logs for GPU pixel buffers" 2013-06-20 23:32:40 +00:00
Romain Guy
9e6f3ac109 Add debugging logs for GPU pixel buffers
Change-Id: I7edb04dd30ee6fd823099e72788169cc185e70f2
2013-06-20 16:31:35 -07:00
Chris Craik
c5493fb7fa Make op outputting const, for more general logging
Change-Id: Iaf78985ee5558e0b5d32d7bc1cd039eaffc820e5
2013-06-19 16:58:58 -07:00
Romain Guy
fb5a41a371 Merge "Fix regression: TextureView.setAlpha() was ignored" 2013-06-19 23:40:57 +00:00
Romain Guy
2458939b5f Fix regression: TextureView.setAlpha() was ignored
Change-Id: I9f43eec0fe23a65dcc1cf9cd0ac1f5e8907786a7
2013-06-19 12:17:01 -07:00
Romain Guy
cadc5bf411 Merge "Share Caches' index buffer with FontRenderer" 2013-06-19 19:16:21 +00:00
Romain Guy
31e08e953f 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
2013-06-18 15:53:53 -07:00
Romain Guy
77d55c7e5c Merge "Take hinting into account when caching fonts Bug #9464403" 2013-06-18 20:08:39 +00:00
Romain Guy
2d5945e887 Take hinting into account when caching fonts
Bug #9464403

Change-Id: I26a5f0c17eb27d096717b444d3e18ad1d2b5a43c
2013-06-18 13:02:03 -07:00
Chris Craik
49cc5d7119 Merge "Handle all text bounds as post-translated" 2013-06-17 22:50:39 +00:00
Chris Craik
f09b746acb Handle all text bounds as post-translated
We were treating immediate mode bounds as pre translate, which is
inconsistent with using them for quickRejection.

This fixes the overdraw counter not drawing correctly (since it uses
immediate mode drawing.

Change-Id: I1c734d367a00942bd7d9b041822c0a9f284e70a8
2013-06-17 15:17:11 -07:00
Chris Craik
36d38cb904 Merge "Better handle op size edge cases" 2013-06-17 21:02:56 +00:00
Chris Craik
d72b73cea4 Better handle op size edge cases
bug:9464358

Previously, empty and unknown sized ops are assumed to fully cover
their clip. This is now corrected such that empty sized ops are
pre-rejected before defer. Additionally, unknown sized ops disable
overdraw avoidance.

Change-Id: Icf2ce24f98be5ea6299e24ffcf826790373564a1
2013-06-17 13:52:06 -07:00
Romain Guy
fb5c905097 Merge "Cancel layer update when a layer is about to be destroyed Bug #9310706" 2013-06-17 20:39:45 +00:00
Romain Guy
e93482f5ea Cancel layer update when a layer is about to be destroyed
Bug #9310706

Change-Id: I73eea6314c326f15a979617e3a05b525935f0d3f
2013-06-17 13:35:03 -07:00
Chris Craik
61e1ca68fa Merge "Check for layer renderer in flush" 2013-06-17 20:16:37 +00:00
Chris Craik
8c6e17c2a9 Check for layer renderer in flush
bug:9310706

In some cases flush will occur after a layer is destroyed. Avoid
trying to draw after putting the layer in the layer cache.

Change-Id: I55d66f420e7354fe552c82eb3145a7d91b4441e3
2013-06-17 13:04:45 -07:00
Chris Craik
2a0451e54a Merge "Fix clip merging behavior" 2013-06-17 18:11:34 +00:00
Romain Guy
5216c3b05f Merge more 9patches
Change-Id: If8b16af84f0ee42afc406922d15897e51d833e68
2013-06-14 16:31:37 -07:00
Chris Craik
a02c4ed885 Fix clip merging behavior
Previously, a new op with a clipped side could be added to a
MergingDrawBatch without considering the batch's current bounds.

Change-Id: I1b873ecf821bad7cda6630c3f311edd90ac5cc8c
2013-06-14 13:43:58 -07:00
Chris Craik
d1f9aaa5d7 Merge "Fix various draw ops that may incorrectly not scissor" 2013-06-14 01:06:30 +00:00
Chris Craik
39a908c1df Fix various draw ops that may incorrectly not scissor
bug:8965976

Also consolidates quickReject scissor-ing and scissor-less paths.
Renamed plain 'quickReject' method, as it has sideEffects beyond what
the java and skia canvases do.

Change-Id: I4bdf874d3c8f469d283eae1e71c5e7ea53d47016
2013-06-13 16:16:13 -07:00
Romain Guy
735760e3c2 Merge "Add new Query class for debugging" 2013-06-13 22:10:22 +00:00
Romain Guy
7f4307668b Add new Query class for debugging
This class can be used to perform occlusion queries. An occlusion query
can be used to test whether an object is entirely hidden or not.

Change-Id: Ida456df81dbe008a64d3ff4cb7879340785c6abf
2013-06-13 14:58:32 -07:00
Chris Craik
f70119cd77 Reset batching state when overlap batch deletion occurs
Change-Id: Ifdbee9baaa734e27d15d2b54aa3b3abfffbce1e9
2013-06-13 11:28:45 -07:00
Romain Guy
7112fddbe2 Merge "Restore buildLayer()'s old behavior; it's synchronous again Bug #9193833" 2013-06-13 01:19:46 +00:00
Chris Craik
149b015db9 Merge "Overdraw avoidance and merging of clipped ops" 2013-06-13 00:37:02 +00:00
Chris Craik
9846de68f1 Remove crash workarounds, add logging
bug:9321162
Change-Id: I748c27f979af1a303be01db29aedcbad6d608c38
2013-06-12 16:26:34 -07:00
Romain Guy
405436021d Restore buildLayer()'s old behavior; it's synchronous again
Bug #9193833

Change-Id: I4ee07e65c0a8967f0b55da030ecaad6dfc46136f
2013-06-12 15:31:28 -07:00
Chris Craik
28ce94a4ff Overdraw avoidance and merging of clipped ops
bug:8951267

If an opaque op, or group of opaque ops covers the invalidate region,
skip draw operations that precede it.

Clipped operations may now be merged, but only if they share a
clipRect - this is a very case for e.g. ListView, where all background
elements may now be a part of the same MergingDrawBatch.

It is this more aggressive merging that groups together clipped
background elements in the ListView case, enabling the overdraw
avoidance skipping the window background.

Change-Id: Ib0961977e272c5ac37f59e4c67d828467422d259
2013-06-12 14:46:52 -07:00
Romain Guy
1e4795ab64 Merge "Avoid 9patch cache lookups when possible" 2013-06-12 00:23:27 +00:00
Romain Guy
4c2547fa92 Avoid 9patch cache lookups when possible
This optimization saves up to 0.3ms per frame on the Play Store's
front page, on a Nexus 4 device.

Change-Id: Iaa4ef33c6e3b37e175efd5b9eea9ef59b43f14f3
2013-06-11 17:14:59 -07:00
Chris Craik
e13fb01d25 am 8cb26c09: am cb5d644f: Merge "Workaround possible use after delete" into jb-mr2-dev
* commit '8cb26c099dc6357340141c9d81a1131ee404ae41':
  Workaround possible use after delete
2013-06-11 14:13:32 -07:00
Chris Craik
9abddd54d4 Workaround possible use after delete
bug:9321162
Change-Id: Ic35af5b5925da56e9a143e6b33658831038f3b72
2013-06-10 11:30:37 -07:00
Romain Guy
be1b127c7b Assume a texture is unbound after deleting it
Bug #9316260

The GL specification indicates that deleting a bound texture has
the side effect of binding the default texture (name=0). This change
replaces all calls to glDeleteTextures() by Caches::deleteTexture()
to properly keep track of texture bindings.

Change-Id: Ifbc60ef433e0f9776a668dd5bd5f0adbc65a77a0
2013-06-06 16:26:51 -07:00
Romain Guy
450dc7554d Remove string allocations when creating display lists
Change-Id: Id520db981a3988cb980c8da5dbea8f26ef94989f
2013-06-05 14:14:03 -07:00
Romain Guy
8aa195d708 Introduce Caches::bindTexture() to reduce glBindTexture calls
Change-Id: Ic345422567c020c0a9035ff51dcf2ae2a1fc59f4
2013-06-04 18:58:36 -07:00
Romain Guy
f9f0016b1f Enable GPU pixel buffers on OpenGL ES 3.0 devices
Change-Id: I164d72ccd7a9bf6ae0e3f79dfef50083558937ba
2013-06-04 11:57:58 -07:00
Romain Guy
7d9b1b3c02 Re-initialize the 9patch cache if cleared with onTrimMemory
The 9aptch cache was reinitialized after destroying/recreating
the EGL context but not after clearing it during a normal
memory trim.

Change-Id: If6155bfc8a62439e9878bc742a4766b3bd6c6aec
2013-05-28 14:32:01 -07:00
Romain Guy
a404e16e49 Make sure atlas antries can correctly filter/wrap textures
The virtual textures would each have their own values for wrapping
and filtering which could lead to conflict and/or extraneous GL
commands being issued.

Change-Id: I64cb59a03e598f46bf645bd1d30fccfa63a07431
2013-05-24 16:19:19 -07:00