4999 Commits

Author SHA1 Message Date
Romain Guy
c36fe2fc53 am 55e789db: am ed96349a: am 3d1b158e: Merge "Fix out of range glCopyTexImage2D Bug #9425270" into jb-mr2-dev
* commit '55e789dbc782be0dcaf1d4bae5f32e9e2f674152':
  Fix out of range glCopyTexImage2D Bug #9425270
2013-06-28 11:15:02 -07:00
Romain Guy
b254c242d9 Fix out of range glCopyTexImage2D
Bug #9425270

A better solution would be to use glCopyTexImage2D whenever possible but
this change would be a little more dangerous.

Change-Id: Ib1aaceda39d838716285ef97f356721416822dbb
2013-06-27 17:15:24 -07:00
Romain Guy
55b6f95ee4 Track the atlas' generation ID
Bug #9589379

If the atlas is terminated/reinitialized and a view does not invalidate
in between it might end up using a stale AssetAtlas::Entry. This change
is similar to how 9patch meshes are cached in DrawPatchOp: we simply
track the generation ID of the cache to make sure we always use the
latest data.

Change-Id: Ib5abb3769d2ce0eabe9adc04e320ca27c422019e
2013-06-27 15:40:46 -07:00
Romain Guy
e3b0a0117a Refcount 9-patches and properly handle GC events
This change adds refcounting of Res_png_9patch instances, the native
data structure used to represent 9-patches. The Dalvik NinePatch class
now holds a native pointer instead of a Dalvik byte[]. This pointer
is used whenever we need to draw the 9-patch (software or hardware.)

Since we are now tracking garbage collection of NinePatch objects
libhwui's PatchCache must keep a list of free blocks in the VBO
used to store the meshes.

This change also removes unnecessary instances tracking from
GLES20DisplayList. Bitmaps and 9-patches are refcounted at the
native level and do not need to be tracked by the Dalvik layer.

Change-Id: Ib8682d573a538aaf1945f8ec5a9bd5da5d16f74b
2013-06-26 17:15:08 -07:00
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
Jeff Brown
8e1af51787 Merge "input: Handle a few extra error conditions." 2013-06-20 00:46:24 +00: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
Jeff Brown
0618148f90 input: Handle a few extra error conditions.
It turns out that SOCK_SEQPACKET sockets may sometimes return
ECONNREFUSED or ECONNRESET errors when the peer dies instead of
the usual EPIPE.

Bug: 9479906
Change-Id: Ia7e572b08bf63e43ba5aeda58281508beb5f8c73
2013-06-18 16:10:49 -07: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