141 Commits

Author SHA1 Message Date
Tenghui Zhu
a7a6be1085 Merge "Turn off some path drawing logs by default" 2016-05-11 21:33:44 +00:00
Matt Sarett
3727a7fada Remove dead code from NinePatch::Draw
This will give me the flexibility to change this API.

Change-Id: I1ee34986e37fffeb03b8a349f29923541f95b593
2016-05-11 19:09:44 +00:00
Chih-Hung Hsieh
d53e3bed1c Fix google-explicit-constructor warnings.
Bug: 28341362
Change-Id: I080090d50f1a368a4e7c1a0732297bb6a295e34f
2016-05-03 10:02:51 -07:00
Teng-Hui Zhu
85d99528b2 Turn off some path drawing logs by default
Originally the logs are added to track potential performance bug.
Like unexpectedly deep recursion loop.
However so far, we haven't captured anything by these logs.
And they are causing some misunderstanding in some bugs.
So I think it is better to disable it by default.

In the future, we will consider switching to direct Skia arcTo support
and drop this part.

Change-Id: Iff6df7a92e40b4775a644a1497e113de0eedbc8a
2016-04-25 15:10:48 -07:00
Sergei Vasilinetc
849ffa33bc Merge "Stop comparing Descriptions with memcmp" into nyc-dev am: e414371
am: 55134c8

* commit '55134c89fe5a524be26558b4ccccdfa6ffa0105f':
  Stop comparing Descriptions with memcmp

Change-Id: I43ea9f9bc2f3f7ba607a85d08dbecf95fcb9e585
2016-04-11 23:14:43 +00:00
Sergei Vasilinetc
e41437167b Merge "Stop comparing Descriptions with memcmp" into nyc-dev 2016-04-11 22:58:57 +00:00
sergeyv
7224e2b624 Stop comparing Descriptions with memcmp
bug:27894959
Change-Id: I379c11381c08f6f77577a914638b32415768f26e
2016-04-11 13:09:00 -07:00
John Reck
4e2838ead6 Merge "Fix some edge cases" into nyc-dev am: 4a62eff
am: c01a9b6

* commit 'c01a9b6a9ba2662fafa6f4152ca9986faacd2d66':
  Fix some edge cases

Change-Id: I52d65ed7c5da33b33a4f98953800c1dedea2bf09
2016-04-07 23:15:52 +00:00
John Reck
51f2d606dc Fix some edge cases
Bug: 27709981

This desperately needs a refactor, but to keep
the current (really needed & nice) behavior of
dispatching after sync finishes would be difficult
to handle cleanly without lots of ripping so... #yolo

Change-Id: I831a06c6ae7412a062720d68ecbe3085190f0258
2016-04-07 14:10:43 -07:00
Chris Craik
5a23f2d940 Merge "Overdraw avoidance in new pipeline" into nyc-dev am: 80a67f3
am: f42e9b1

* commit 'f42e9b1b1e2eeb0e97bfc8d77d1dd24cb21d9e31':
  Overdraw avoidance in new pipeline

Change-Id: I5fa751a4a2a212ef4c805a473d62da41ebaf70ae
2016-03-29 21:55:11 +00:00
Chris Craik
80d2ade939 Overdraw avoidance in new pipeline
bug:27873093

Adds the simple overdraw avoidance optimization to the new
pipeline. This means when LayerBuilder defers draws that are opaque over
the full area of the repaint region, it will discard all drawing content
beneth.

Also moves a lot of complexity out of BakedOpState's header.

Change-Id: Iffca6d8e1b170ef31a5d6c83d25592670e02323d
2016-03-29 13:30:15 -07:00
Chris Craik
a15762ef76 Support op dumping in new pipeline am: 91eff22b5d
am: d39f57e0a7

* commit 'd39f57e0a7bb669adc4aab2a3b40db771dbd23a2':
  Support op dumping in new pipeline
2016-02-23 19:11:47 +00:00
Chris Craik
91eff22b5d Support op dumping in new pipeline
bug:26565102

Change-Id: I266e420a2f18ba9ad62942b8a0de295dfa3a2a88
2016-02-23 18:52:54 +00:00
Chris Craik
a17b5366d5 Merge "Add create_trivial_array" into nyc-dev am: 339fc0a1d2
am: 064b467718

* commit '064b467718e02e42360fce45c985d88333a35cdf':
  Add create_trivial_array
2016-02-22 21:53:15 +00:00
Ben Wagner
ed87fa2a2d Use android_memset32 instead of sk_memset32.
Android code should use the Android version. Also, Skia is interested
in making sk_memset32 private.

BUG:27290333

Change-Id: Id5c8bc190cdd21673c8844eaa48e8b6a93e2e9df
2016-02-22 16:26:02 +00:00
Chris Craik
7a89600bac Add create_trivial_array
Change-Id: I5e4236ff59fdaceb95105c5590f4deeda6d0b4c8
2016-02-19 15:51:02 -08:00
John Reck
7df9ff2a08 Fix all LA memory leaks forever!
Bug: 27072626

Or at least fix this one and make it harder to leak
going forward. static_asserts are cool, use them liberally

Also makes allocation via LA (slightly) faster by fixing create*
variants to use rvalue references & std::forward, preventing
an accidental pass-by-value

Change-Id: I18fd696a93dd6ea49c8d8c587d4c8bee56dbfdf5
2016-02-11 00:42:23 +00:00
John Reck
e537330ead Revert "Fix all LA memory leaks forever!"
This reverts commit 499d83f21e7ffb687788bba1668b05fe38f6ebaf.

Change-Id: Ia893ae16ebbeae68e49cd13a20587104b73d39a0
2016-02-11 00:36:34 +00:00
John Reck
499d83f21e Fix all LA memory leaks forever!
Bug: 27072626

Or at least fix this one and make it harder to leak
going forward. static_asserts are cool, use them liberally

Also makes allocation via LA (slightly) faster by fixing create*
variants to use rvalue references & std::forward, preventing
an accidental pass-by-value

Change-Id: I5e0e36e72c6dd93324194ebf9a95f8204f05f261
2016-02-10 16:11:26 -08:00
John Reck
c52ac0b9e2 Merge "Add fine-grained debug layer" 2016-01-26 15:21:07 +00:00
John Reck
975591a7af Add fine-grained debug layer
Full GLES error checking layer via -include
trickery. Change DEBUG_OPENGL to a level system.

HIGH = every GL call is error checked
MODERATE = checkpointing at interesting spots
LOW = only asserts there are no errors at the end of a frame
 or when the FBO changes
NONE = AIN'T GOT NO TIME FOR ERRORS GOTTA GO FAST!

Change-Id: Ibe81aae93d942059c4ddf1cbb11c828b7ce4c10b
2016-01-25 16:15:14 -08:00
Derek Sollenberger
a3f16d4377 Replace SkALWAYSBREAK with equivalent Android macros.
Change-Id: Icb7786c789915375d7d8754fc8536302c1020858
2016-01-25 10:33:01 -05:00
John Reck
2de7771740 Normalize GL_UNPACK_ALIGNMENT
Several places were setting GL_UNPACK_ALIGNMENT
unneccessarily, whereas other places were assuming an
unpack alignment of 1. Since we never actually
do explicit row-alignment, set GL_UNPACK_ALIGNMENT
to 1 at context creation time and never change it

Bug: 26584230

Also turns on aggressive glGetError checking to
better catch potential problem zones

Change-Id: I190c8f0f0494a7f046d5ed769405c75d363be59a
2016-01-20 13:16:24 -08:00
John Reck
9372ac3621 Fix ordering of texture->upload arguments
Caught by scatter-shotting GL_CHECKPOINTS which
seem generally useful to have

Bug: 26609444

Change-Id: Ie31d9297d8dae56405126720f338b4256c8bae77
2016-01-19 12:58:48 -08:00
John Reck
cbc5bd57f0 Merge "Track texture memory globally" 2016-01-14 21:49:42 +00:00
John Reck
38e0c32852 Track texture memory globally
Also mostly consolidates texture creation

Change-Id: Ifea01303afda531dcec99b8fe2a0f64cf2f24420
2016-01-14 13:42:12 -08:00
Derek Sollenberger
3d5278b638 Update TestWindowContext to work with new HWUI ops.
This enables HWUI to be testing within Skia's infrastructure and
fixes skia bug 4775.

Change-Id: I242b9e4c5ed0f4523b6075d8825a2624235a01c7
2016-01-14 19:26:04 +00:00
Chris Craik
f5baedb000 Merge "Stencil support in new recorder/reorderer" 2016-01-05 17:54:47 +00:00
Chris Craik
e4db79de12 Stencil support in new recorder/reorderer
bug:22480459
bug:26358504

Adds complex (non-rectangular) clipping support, and overdraw
visualization. Doesn't support stencil clipping in layers.

Change-Id: I8d10c7f1d2769ab5756774ca672344cc09901f87
2016-01-04 17:00:03 -08:00
Doris Liu
4bbc293126 VectorDrawable native rendering - Step 3 of MANY
- Refactored VPathRenderer & VectorDrawableState
- Moved all the VD rendering into native
- Set up hooks for VD's property changes in JNI for animated VD

TODO: JNI calls can be further reduced when we convert the animation
in AVD to use RenderNodeAnimator, in which case animation will be
driven from native and therefore most of the JNI hooks for changing
VD's properties during animation will no longer be needed.

Change-Id: I52021f4d7bea057b83ace54085d870dd45acae0f
2015-12-28 16:08:38 -08:00
Tom Hudson
58862c9f6f Fix leak of file descriptors in test code
skia_dm rendering through HWUI was hanging after roughly 300 tests.
logcat reports some process was unable to get any file descriptors.

When we migrated TestWindowContext into HWUI and started using PIMPL
I didn't clean up the implementation struct in the destructor. Doing
so solved the hang for me.

My guess was that BufferQueue was being leaked, and that gralloc is
backed by file descriptors, but some research suggests that Android
ought to be able to handle far more than 1k fds (ulimit -Hn returns
4096 on this device).

R=djsollen@google.com

Change-Id: I2cd9f8945cee9b22f838002e1ad687d5fe29cb97
2015-12-10 22:19:17 +00:00
Andres Morales
a21c1da156 make RingBuffer const viable
- mark size() const
- expose const operator[]

Change-Id: Ie94ff798caed6b0d9a039e359610204e93c073ac
2015-12-09 14:44:01 -08:00
Chris Craik
8160f20b0a Reorganize hwui test directories
Now test-only common files reside in tests/common, and each test
executable type (macrobench, microbench, and unit) has a subdir there.

This change means the shared lib no longer has test code in it, and
sets up a means for scenes to be shared between tests.

Change-Id: I37b081f6977300e03fdd961b8e6439fde730605e
2015-12-02 15:25:10 -08:00
Chris Craik
54fa17f667 Add ListView rendering benchmark
Also fixes a bug in DrawRenderNodeOp recording, which was triggered by
the new test.

Change-Id: I328f2ed908495eb95ca8ce87a365d02650e72cd5
2015-12-02 15:20:26 -08:00
Chris Craik
9b9eca5cc5 Merge "Support projection in OpReorderer" 2015-11-25 22:14:42 +00:00
Chris Craik
8d1f2120fe Support projection in OpReorderer
bug:22480459

Change-Id: Iceb71732dc50957cfb47fa1ba9b8e18e6fc51132
2015-11-25 14:09:24 -08:00
Chris Craik
42a5407f2c Fix RecordingCanvas::refPaint, add tests
Also add text align support to TestUtils::drawTextToCanvas

Change-Id: I105adb0d15e697c03adfd00a56e8ec9265953ff1
2015-11-24 13:05:04 -08:00
Chris Craik
a1717271ca Initial text support in new reorderer/renderer
Removes obsolete drawPosText codepath, and unifies text decoration behavior.

Change-Id: I9c563249ab688a3394445a0e7fe1b9d0661f6f7c
2015-11-20 11:03:18 -08:00
John Reck
16c9d6a92e Refactor hwuitest
Yank animations out into their own files

Change-Id: Iea522ee032752019c07ff308c3a3993011054308
2015-11-19 11:35:14 -08:00
Doris Liu
804618d086 VectorDrawable native rendering - Step 2 of MANY
Introduced PathData in Java, which is effectively a thin layer around the
native instance. PathData holds the verbs and points which is being used
in path morphing/interpolation. The verbs and points can be interpreted
into skia path commands, which is now done in native and therefore saves
a handful of JNI calls during path creation.

Removed the old PathDataNode mechanism and changed the PathEvaluator
to use PathData instead.

Also added tests and a microbench. Also ran CTS tests for VectorDrawable
and AnimatedVectorDrawable, and passed all of the existing tests.

Change-Id: Ia166f5172ff031fe18b154327967f911a62caec1
2015-11-18 13:38:23 -08:00
Chris Craik
9fded232a9 Recycle OffscreenBuffers
Change-Id: Ia2e219026f211a5308ecf8209c5f986bb888aadd
2015-11-12 13:05:35 -08:00
Doris Liu
30bcf69df9 VectorDrawable native rendering - Step 1 of MANY
Implement path parsing from string to skia path in native. The parsing
contains two main stages:
1) Parse string into a list of nodes that contains one operation (such
   as move) and a vector of floats as params for that operation.
2) Interpret the operations defined in the nodes into SkPath operations,
   and create a skia path

Also provided unit test for parsing a string path into a list of nodes,
and then to a skia path.

Change-Id: I0ce13df5e3bb90987dcdc80fe8b039af175ad2e2
2015-11-10 15:46:06 -08:00
John Reck
704bed0da7 add DeviceInfo
This reverts commit 096895550b9d5430d7a001d491566decf4f9791b.

Change-Id: Ib2ed1e96d8f7f88302f5e27fe735687194553104
2015-11-05 10:13:23 -08:00
John Reck
096895550b Revert "add DeviceInfo"
This reverts commit b2442896e3a226c7ebe9d47fa80b257e98a6a34d.

Change-Id: I50f6555451f71067505245333c8e558b5e3b2b3b
2015-11-05 01:38:25 +00:00
John Reck
b2442896e3 add DeviceInfo
Change-Id: I4c122278a7e88b6f47c4dd3c5fc553df7d3c900d
2015-11-04 13:46:49 -08:00
Chris Craik
8d2cf943d9 Add region-tracking to OffscreenBuffers
Change-Id: I024c7219c080b9a89888517f5a89d49dfe8065ba
2015-11-02 17:34:06 -08:00
Chris Craik
41b10518d0 Merge "Add FatVector" 2015-10-29 20:56:40 +00:00
Chris Craik
76ace115f7 Add FatVector
FatVector uses an inlined allocation to avoid malloc costs for small
vectors, especially those which are constructed/destructed frequently.

Change-Id: I9809dfd1255cfe98b4ce2b1124ca0fd6ca33dfe0
2015-10-29 13:22:06 -07:00
Leon Scroggins III
f35b989d26 Merge six commits from master-skia to master
Also corrects some code under development behind the HWUI_NEW_OPS flags
to match the updated Skia API.

Include external/skia/include/private
use SrcConstraint for drawBitmapRect
clean up to allow removal of flags for SCALAR_DIV and IMAGEINFO_FIELDS
don't call DEPRECATED getDevice()
update to newer API for drawBitmapRect
asABitmap is deprecated, used isABitmap

previous-Change-Id: I12208855a95948897077b1c1549eb35416cc801e
previous-Change-Id: I5044f0f61315fe48c60d7af5e261a7d0ed574f56
previous-Change-Id: Ic34a3ba77b3f9e091fa7aaba75018a307abacdab
previous-Change-Id: I79f8dd779920565d1204f7fe67b3286b1bbf4e9b
previous-Change-Id: Ic04d1f8274f6a862ea00f8d241363cf31f5ec1ec
previous-Change-Id: I9e4ae257a1976c74302b6a73f17405174ae58cec
previous-Change-Id: I85de3462ad1e4877784df38edc4bcd0acbd24e5e
Change-Id: Ide8e2f669e91a13c32521af3a16efdaa085c81d0
2015-10-29 12:29:03 -04:00
Tom Hudson
1de39f1563 Merge "Revert "Merge six commits from master-skia to master"" 2015-10-28 20:48:05 +00:00