753 Commits

Author SHA1 Message Date
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
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
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
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
Romain Guy
7bac55434c am 9acd1b4f: Merge "Add visual profiling feature"
* commit '9acd1b4fa897f3a007dd23dc1f0471b151fa03ad':
  Add visual profiling feature
2013-01-04 19:29:05 -08:00
Romain Guy
9acd1b4fa8 Merge "Add visual profiling feature" 2013-01-04 19:24:10 -08:00
Romain Guy
672433d90f Add visual profiling feature
When profiling is enabled with debug.hwui.profile set to true,
setting debug.hwui.profile_visualizer to true will display the
profiling data directly on screen.

Change-Id: I3d5fe3f0347090815087b1cbfce66b8e76d9347b
2013-01-04 19:21:54 -08:00
Romain Guy
95bdeddb97 am 48f7cfb1: Merge "Properly support ALPHA_8 bitmaps in all drawBitmap() methods"
* commit '48f7cfb10622f8675741f36bdf5b1f679e3fe37c':
  Properly support ALPHA_8 bitmaps in all drawBitmap() methods
2013-01-04 15:25:00 -08:00
Romain Guy
886b275e52 Properly support ALPHA_8 bitmaps in all drawBitmap() methods
Change-Id: I869993c59e0a0d76f369c09acbae711753908f48
2013-01-04 15:15:16 -08:00
Romain Guy
e0ece54bd9 am 59131481: Merge "Remove unnecessary & uninitialized variable Bug #7728929"
* commit '5913148104f0b233d861fab2873befc865bf57c0':
  Remove unnecessary & uninitialized variable Bug #7728929
2013-01-03 14:48:35 -08:00