5043 Commits

Author SHA1 Message Date
Chris Craik
3f76e65d25 Use RenderScript for large text blurs
Still fall back to simple path for small tasks

Change-Id: I492f1b3f7d6fec1738f3e45cbfb15864bd23a392
2013-02-12 17:45:28 -08:00
Romain Guy
e67307c816 Prevent crash when setting up a stencil-based clip
Bug #8177690

Clear the layers before we setup the stencil to avoid dereferencing
the recently deleted rects.

Change-Id: I5dce5f965672f276f9490636d85b6018d3ab9422
2013-02-11 18:04:23 -08:00
Romain Guy
d71ff91dcd Apply the clip rect/region to drawLines()
Without the check to quickReject, drawConvexPath would never
setup the clip properly.

Change-Id: I23e5b25de3383c9e9b86eea4ee7a9552f8d9efb4
2013-02-08 13:46:40 -08:00
Romain Guy
b4c1dc1c15 Merge "Don't clip when drawing a layer" 2013-02-07 23:32:42 +00:00
Romain Guy
63696bfc05 Don't clip when drawing a layer
A layer will, by definition, clip its content already. The extra
clip added by the UI toolkit/renderer is wasteful and in some
situations very expensive. If a layered view is rotated, the clip
will be transformed into a non-rectangular region, thus forcing
the renderer to rely on the stencil buffer. The whole point of
using layers is to draw efficiently so let's avoid this case.

Change-Id: I813465f6468cc386b84a4d058c11a258fef8507a
2013-02-07 15:20:55 -08:00
Romain Guy
da8d8b9699 Merge "Add a RenderBuffer object to store stencil buffers. Bug #7146141" 2013-02-07 20:11:56 +00:00
Romain Guy
3bbacf27c0 Add a RenderBuffer object to store stencil buffers.
Bug #7146141

This change is needed to add a render buffer cache to avoid
creating and destroying stencil buffers on every frame.

This change also allows the renderer to use a 1 bit or 4 bit
stencil buffer whenever possible.

Finally this change fixes a bug introduced by a previous CL
which causes the stencil buffer to not be updated in certain
conditions. The fix relies on a new optional parameter in
drawColorRects() that can be used to avoid performing a
quickReject on rectangles generated by the clip region.

Change-Id: I2f55a8e807009887b276a83cde9f53fd5c01199f
2013-02-07 12:11:22 -08:00
Jeffrey Brown
6b7fcc8f67 am 75701e8f: am 7eb4db35: am b9185fd1: Merge "Fix PointerCoords Parcel incorrectly storing values as Int32"
# By Ilya Polenov
# Via Android Git Automerger (2) and Gerrit Code Review (2)
* commit '75701e8fc92285680637f69e0f004741919ddc10':
  Fix PointerCoords Parcel incorrectly storing values as Int32
2013-02-06 20:56:07 -08:00
Jeffrey Brown
7eb4db3593 am b9185fd1: Merge "Fix PointerCoords Parcel incorrectly storing values as Int32"
# By Ilya Polenov
# Via Gerrit Code Review
* commit 'b9185fd1ffd85239e3ab10ab34cb9d8508970fb4':
  Fix PointerCoords Parcel incorrectly storing values as Int32
2013-02-06 20:50:17 -08:00
Chris Craik
1ba0289d18 Merge "Add cap tessellation support" 2013-02-07 00:14:38 +00:00
Chris Craik
65cd612fac Add cap tessellation support
bug:7117155
bug:8114304

Currently used for lines (with and without AA) and arcs with useCenter=false

Also removes 0.375, 0.375 offset for AA lines

Change-Id: Ic8ace418739344db1e2814edf65253fe7448b0b0
2013-02-06 15:35:12 -08:00
Romain Guy
511afdd3ac Merge "Fix uninitialized variables in Caches.cpp Bug #8151401" 2013-02-06 23:34:36 +00:00
Romain Guy
c2a972131f Fix uninitialized variables in Caches.cpp
Bug #8151401

Change-Id: I221f93de0f1981974f82a094297836dd3fe418bc
2013-02-06 15:29:46 -08:00
Romain Guy
83315e0cb4 Merge "Fix Snapshot::resetClip to also reset the clip region" 2013-02-06 23:29:15 +00:00
Romain Guy
3c099c42fd Fix Snapshot::resetClip to also reset the clip region
Change-Id: I979151e73f64ff9d45f8a5232d8700361b09fbc7
2013-02-06 15:28:04 -08:00
Derek Sollenberger
23e500d168 Merge "Merge remote-tracking branch 'goog/master-chromium' into 'goog/master'" 2013-02-06 12:57:38 +00:00
Romain Guy
b969a0de65 Add support for non-antialiased text
Change-Id: I17c073955ab94abc9b409e5fcfbc675faa07c5ba
2013-02-05 14:44:43 -08:00
Derek Sollenberger
f5db9b8ed4 Merge "Changes needed to roll Skia to r7527." into master-chromium 2013-02-05 18:17:56 +00:00
Romain Guy
43c6eda4d3 am b3778531: Merge "Set the scissor from OpenGLRenderer::drawColorRects Bug #8131254"
# Via Android (Google) Code Review (1) and Romain Guy (1)
* commit 'b377853123ff53974bb06ffc30e09db41a767c3a':
  Set the scissor from OpenGLRenderer::drawColorRects Bug #8131254
2013-02-04 14:00:44 -08:00
Romain Guy
b377853123 Merge "Set the scissor from OpenGLRenderer::drawColorRects Bug #8131254" 2013-02-04 21:56:40 +00:00
Romain Guy
a362c69d6c Set the scissor from OpenGLRenderer::drawColorRects
Bug #8131254

This method is used as an optimization for paths containing only
non-overlapping rectangles. The implementation was correctly
rejecting rectangles invidually but not the bounds of the array
of rectangles. If quickReject() is not called, setupDraw() won't
be able to properly set the scissor.

Change-Id: I50aa11a4bd8b525b267d36a3039fe7a6fba50518
2013-02-04 13:50:16 -08:00
Chris Craik
d4cf7df151 am e51ccb15: Merge "Simplify display list logging, removing pointers"
# Via Android (Google) Code Review (1) and Chris Craik (1)
* commit 'e51ccb1543ef5b6427e5f270ae38be75e18daccd':
  Simplify display list logging, removing pointers
2013-02-04 13:48:48 -08:00
Chris Craik
e51ccb1543 Merge "Simplify display list logging, removing pointers" 2013-02-04 21:44:48 +00:00
Chris Craik
3dc553babe Simplify display list logging, removing pointers
Also fix save indents

Change-Id: Ia1add83422fbc200b85fd6688f5be60292b0f178
2013-02-04 12:45:13 -08:00
Derek Sollenberger
d81ec456bb Changes needed to roll Skia to r7527.
Change-Id: I84aef3f8a733c869fade06021816646001532758
2013-02-04 15:42:26 -05:00
Michael Wright
974fb7a5e9 am 3e295c3f: Merge "Add initial plumbing for brightness keys"
# Via Android (Google) Code Review (1) and Michael Wright (1)
* commit '3e295c3f2ec931ad9f7e38c6a083d711ab710717':
  Add initial plumbing for brightness keys
2013-02-01 16:55:31 -08:00
Michael Wright
1df477acf6 Add initial plumbing for brightness keys
Change-Id: I595e8a25e6c245e4b22f06df9a8acdbb75e4b041
2013-02-01 16:29:59 -08:00
Romain Guy
da805b149f am c5801680: Merge "Tag HardwareRenderers with a name to help debugging"
# Via Android (Google) Code Review (1) and Romain Guy (1)
* commit 'c580168011334db756f5e68aa005d20bace69171':
  Tag HardwareRenderers with a name to help debugging
2013-01-31 23:06:13 -08:00
Romain Guy
b86e75ea85 am b7475e7b: Merge "Fix tiling on QCOM GPU"
# Via Android (Google) Code Review (1) and Romain Guy (1)
* commit 'b7475e7b0b0ababe8c5f3fbfde565c97960c633c':
  Fix tiling on QCOM GPU
2013-01-31 22:59:17 -08:00
Romain Guy
5019546c8c am 65f4effc: Merge "Discard the correct buffer when the bound FBO is not 0"
# Via Android (Google) Code Review (1) and Romain Guy (1)
* commit '65f4effcab1f4bb6e2e96a2b8eb2c774601b87db':
  Discard the correct buffer when the bound FBO is not 0
2013-01-31 22:59:12 -08:00
Romain Guy
ef35927abc Tag HardwareRenderers with a name to help debugging
The name of the renderer is the same as the window it belongs to.

Change-Id: Ie9adc0a1978afa026923ea41f5540eda6ba65a92
2013-01-31 19:07:29 -08:00
Romain Guy
f735c8e5cb Fix tiling on QCOM GPU
Rename Caches::startTiling parameter from opaque to discard to
make it clearer what its role is. Tweak calls to startTiling
to preserve the buffer when needed and discard it when possible.

Change-Id: If7f8ff19003f79f36885a0a7207cc61901f637d2
2013-01-31 17:45:55 -08:00
Romain Guy
f158198ccc Discard the correct buffer when the bound FBO is not 0
glDiscardFramebufferEXT uses different constants depending on whether
the default FBO is bound or not. The code was choosing the proper value
for the color buffer but not for the stencil buffer.

Change-Id: I55cfcbdf663582119cb1a6289317016440d9e361
2013-01-31 17:20:30 -08:00
Derek Sollenberger
2dbd185fd0 resolved conflicts for merge of c93c6aa5 to master-chromium
Change-Id: I51429ed5359355025f873ccab11bfabbbe772a46
2013-01-30 14:32:29 -05:00
Chris Craik
c93c6aa555 Merge "Object-based DisplayList recording" 2013-01-30 18:42:56 +00:00
Ilya Polenov
716f7b3f5e Fix PointerCoords Parcel incorrectly storing values as Int32
PointerCoords stores its values as float and its Parcel should
do the same. Wrong behaviour may be noticed when MotionEvent is
injected using Instrumentation method sendPointerSync. All its
PointerCoords values(size, orientation, pressure, etc) will be
casted to integer omitting their decimal part. This fix addresses
this issue.

Change-Id: Ifa3dfce4d5c2e6c060852f4208cb5684e827c7e6
Signed-off-by: Ilya Polenov <daioptych@gmail.com>
2013-01-30 10:15:00 +00:00
Romain Guy
781fd2b7c8 am f5f85022: Merge "Fix graphical corruption on QCOM GPU Bug #7146141"
# Via Android (Google) Code Review (1) and Romain Guy (1)
* commit 'f5f8502271b04d63c518e3aecfd5eaf557904e72':
  Fix graphical corruption on QCOM GPU Bug #7146141
2013-01-29 17:50:58 -08:00
Romain Guy
c3fedafc5f Fix graphical corruption on QCOM GPU
Bug #7146141

The GL_QCOM_tiled_rendering extension requires careful use of
start/endTiling when attaching a renderbuffer dynamically.

Change-Id: I20036683ed3909ffaf40cc3d57a25257e35b6fa2
2013-01-29 17:46:17 -08:00
Chris Craik
2af4635e4a Object-based DisplayList recording
bug:8037003

Changes the DisplayList from using stream read/write commands to use an array of
objects manually allocated on a linear buffer.

Depends on frameworks/native change https://googleplex-android-review.googlesource.com/#/c/257695/ which adds LinearAllocator

Also changes drawRects to use float count instead of rect count, to be more like drawLines/drawPoints

Change-Id: Ia2e4a11acd8f0a757042a05cbc9e7563cb73ee47
2013-01-22 13:47:03 -08:00
Romain Guy
7d4f807b83 am 49464796: Merge "Allow layers with a stencil buffer to be resized on the fly Bug #7146141"
* commit '494647961feb21d925d5e6e5ce1d42aa8b6949db':
  Allow layers with a stencil buffer to be resized on the fly Bug #7146141
2013-01-18 17:08:12 -08:00
Romain Guy
2055abaa0a Allow layers with a stencil buffer to be resized on the fly
Bug #7146141

This change moves the resizeLayer() from LayerCache (where it should
never have been anyway) to Layer. This makes a little more sense.

Change-Id: I8b2f9c19c558e738405a58b9e71ec5799fc6be88
2013-01-18 16:42:51 -08:00
Romain Guy
e9a983b444 am b12db26f: Merge "Implement clipRect with a transform, clipRegion & clipPath Bug #7146141"
* commit 'b12db26fec178794915d819c3dd64f13d788c461':
  Implement clipRect with a transform, clipRegion & clipPath Bug #7146141
2013-01-17 15:50:17 -08:00
Romain Guy
8ce00301a0 Implement clipRect with a transform, clipRegion & clipPath
Bug #7146141

When non-rectangular clipping occurs in a layer the render buffer
used as the stencil buffer is not cached. If this happens on a
View's hardware layer the render buffer will live for as long
as the layer is bound to the view. When a stencil buffer is
required because of a call to Canvas.saveLayer() it will be allocated
on every frame. A future change will address this problem.

If "show GPU overdraw" is enabled, non-rectangular clips are not
supported anymore and we fall back to rectangular clips instead.
This is a limitation imposed by OpenGL ES that cannot be worked
around at this time.

This change also improves the Matrix4 implementation to easily
detect when a rect remains a rect after transform.

Change-Id: I0e69fb901792d38bc0c4ca1bf9fdb02d7db415b9
2013-01-17 15:39:31 -08:00
Romain Guy
616a87736d am 61840eb0: Merge "Preliminary Support for region clipping"
* commit '61840eb03882e1a964ae971725bd21229c3db42c':
  Preliminary Support for region clipping
2013-01-15 10:28:01 -08:00
Romain Guy
735738c4dd Preliminary Support for region clipping
Region clipping, using Canvas.clipPath or Canvas.clipRegion, requires
a stencil buffer to be always present. In addition, extra wiring is
required in JNI and display lists.

This change only adds the necessary JNI/C++ APIs and some extra
plumbing to start the real work on properly supporting region
clipping.

A new debug define called DEBUG_CLIP_REGIONS can be used to draw
the current clip region. It is off by default, as is region
clipping.

The default implementation of clipPath() and clipRegion(), now
in native, mimics the previous Dalvik implementation to prevent
regressions.

Change-Id: I7903e7cfd7412b9b9b622566d4dbfce7bdcec00c
2013-01-14 14:27:54 -08:00
Romain Guy
bf06ccba95 am 33a9741c: Merge "Cleanup 9patch mesh matching code Bug #7970966"
* commit '33a9741c1be99e8be01ab799eb50df97849ed801':
  Cleanup 9patch mesh matching code Bug #7970966
2013-01-09 14:43:02 -08:00
Romain Guy
5341cead27 Cleanup 9patch mesh matching code
Bug #7970966

The bug described in #7970966 should normally never happen but just in
case, change the detection code to be more robust.

Change-Id: I7040a6087590e34abe8803cb8f83f051d77f3944
2013-01-09 14:15:58 -08:00
Romain Guy
14c40b4756 Fix build
Change-Id: Ia465bd844b592fc05e59ad392ecc5ca4d34d24d7
2013-01-08 18:03:07 -08:00
Romain Guy
19d4f1806a resolved conflicts for merge of c88c60be to master-chromium
Change-Id: I3b4b42443312068e942aa779dfdc928afa7569fd
2013-01-08 17:38:15 -08:00
Romain Guy
e3a9b24b5e Add plumbing for better text scaling
Fonts are now described by a transform matrix. This lead to switching
from a vector to a hashmap. This change therefore adds new comparators
and hash computations to Font.

Change-Id: I2daffa7d6287c18554c606b8bfa06640d28b4530
2013-01-08 15:21:42 -08:00