56 Commits

Author SHA1 Message Date
John Reck
e5530ec0b4 resolve merge conflicts of 32a95af029 to master.
Change-Id: I35b7cea1d34cb24f431ba2b76433a5b0ef1cb602
2016-01-21 16:45:31 -08:00
Dohyun Lee
c5a3efd286 libhwui: fix texture memory leak
When there is not enough space and we cannot delete any
Texture in TextureCache to secure space, a new Texture is
created over and over again for the same SkBitmap and
there is the case that it is not deleted.
This patch avoids such cases.

Change-Id: Ic5353995e6d0716c31fe3bb49c60ec1a71574643
Signed-off-by: Dohyun Lee <leedhyun11@gmail.com>
2016-01-21 13:46:21 +09: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
a55b5d6c65 Fix "leak" in FrameBuilder.textureLayer test
DeferredLayerUpdater always did a post to delete itself, which
would result in the test thinking it had leaked an object since
it wasn't deleted when it returned. Fix this by deleting immediately
if we're already on the right thread.

Remove RenderState's requireGlContext assert as it's now
covered by GpuMemoryTracker, which is also more test friendly.
RenderState's assert required an actual EGL context, which we
don't mock away in unit tests.

Change-Id: Ic23eb54e7151355f7acca483d7464350c9d6a87f
2016-01-14 15:09:10 -08:00
John Reck
38e0c32852 Track texture memory globally
Also mostly consolidates texture creation

Change-Id: Ifea01303afda531dcec99b8fe2a0f64cf2f24420
2016-01-14 13:42:12 -08:00
Chris Craik
7435eb148e Unclipped savelayer support in new renderer
bug:22480459

Change-Id: I89dd5de8d7d008a1e298d227d767aabff5c96e27
2016-01-08 16:05:35 -08: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
Chris Craik
98787e6c9b Finish shadow support in new reorderer/renderer
Now passes alphas and light radius, and correctly transforms light
center for layers.

Also fixes begin-frame/layer clears to be damage rect aware.

Change-Id: I3b1415cd7bf1518c510145ebebdb745f494a2542
2015-11-16 11:21:18 -08:00
Chris Craik
9fded232a9 Recycle OffscreenBuffers
Change-Id: Ia2e219026f211a5308ecf8209c5f986bb888aadd
2015-11-12 13:05:35 -08:00
Chris Craik
8d2cf943d9 Add region-tracking to OffscreenBuffers
Change-Id: I024c7219c080b9a89888517f5a89d49dfe8065ba
2015-11-02 17:34:06 -08:00
Chris Craik
5854b34881 Rework receiver/dispatcher design slightly, and replace Layer usage.
Switched from 'renderer/info' to 'dispatcher/renderer' to make their
interaction more natural. The new BakedOpRenderer is more similar in
responsibilities to the OpenGLRenderer, as it manages layer and frame
lifecycles, and performs the actual rendering.

However, it's still simpler because the BakedOpDispatcher handles
mapping Canvas drawing ops to Glops, and the OpReorderer handles almost
all canvas state operations.

Also switch BakedOpRenderer to use the new OffscreenBuffer, which
serves as a lightweight Layer replacement, with a much simpler
lifecycle.

Change-Id: Ie0e2e248503400041d49729d813d485d28c76eb3
2015-10-27 16:44:50 -07:00
Chris Craik
818c9fbf1d Initial version of clipped saveLayer in new pipeline
Additionally disables usage of FBO cache, so FBO destruction safely
interacts with renderstate caching.

Change-Id: I25c277cb7afec2ca33bf226445d6c8867a15a915
2015-10-26 15:51:48 -07:00
Chris Craik
12efe649d3 Move ortho matrix out of glop
It's fbo-global, so don't bother stashing/restoring it repeatedly.

Change-Id: Icb32e3eda5d2086aaae07140f8ff40e038dad5fe
2015-09-28 15:52:14 -07:00
Chris Craik
8e5ca2a990 Remove legacy enable/disable methods from Blend
Change-Id: I147f96d1fbdd34b9d056620e7259a9f96b13fea7
2015-09-21 16:00:14 -07:00
Chris Craik
68f5b8a781 Move texture upload behavior to TextureState
Change-Id: If1cb32bbc04f437fa0d079084de832de9fd777c2
2015-09-09 14:11:03 -07:00
Chris Craik
8adc30a805 Merge "Add static asserts around assumed-static skia enum values" 2015-08-21 23:09:24 +00:00
Chris Craik
b9ce116dac Switch several enums to enum classes
Change-Id: I00ecd0b61657196b51704f70ca31a9d1c1ac254e
2015-08-21 23:05:44 +00:00
Chris Craik
216048ffb0 Add static asserts around assumed-static skia enum values
Protects assumptions around enums value built into LUTs

Change-Id: Ica0692e4309d50b4d3897e0f3f47809d14f786fe
2015-08-21 15:32:58 -07:00
Chris Craik
9db58c031f Remove MathUtils::min/max
bug:22202895

Change-Id: Ia115d86871314e3819f684ea7307356aed13a28e
2015-08-19 15:53:01 -07:00
John Reck
9acd09d364 am 598b0123: am 67716c13: am e28c5d62: am a975a844: am 70e5db94: Merge "Fix crash in kModeProcessNoContext" into mnc-dev
* commit '598b0123d322b396e8bfc3d66f228cf0b7485eac':
  Fix crash in kModeProcessNoContext
2015-08-04 20:20:41 +00:00
John Reck
95cd24bb9d Fix crash in kModeProcessNoContext
Bug: 22931143
Change-Id: I9897a28b1edd006aee67ae2343874ad92bbd15a0
2015-08-04 18:19:11 +00:00
Chris Craik
9a579f58a6 am e375685a: am 9c458148: am 3d208671: am 7dfb1d99: am 730c0f65: Merge "Fix stencil mask usage in HWUI" into mnc-dev
* commit 'e375685aa4b8d7f31b2cbe08170c32bd4150468d':
  Fix stencil mask usage in HWUI
2015-07-30 20:07:06 +00:00
Chris Craik
fa51a0e1ce Fix stencil mask usage in HWUI
bug:21588246

Ensure we always set the mask before clearing, and removes
some unneeded optimizations around mask usage in
debug (overdraw) mode.

Change-Id: I71ed06c16f8d9f158953d5aa160098514f0f7f00
2015-07-30 11:06:53 -07:00
Chris Craik
1d5d34624b Merge "Clean up unncessary defines" 2015-07-16 20:11:05 +00:00
Chris Craik
5a4690bf26 Clean up unncessary defines
LOG_TAG and TRACE_TAG are already defined in the makefile

Change-Id: I9e53e3dacbe018441edd74cb7c8c90846defee74
2015-07-14 13:25:38 -07:00
Chris Craik
e310f83d59 Fix unsafety in SkiaShader storage, and texture unit accounting
bug:22390304

Fixes two issues:

1) The max texture unit wasn't large enough to handle the most complex
ComposeShader case (1 for draw primitive, 2 for gradient shader, 1 for
bitmap shader).

2) If a shader isn't supported by SkiaShader::store, the shader data
needs to be explicitly disabled, so we won't read uninitilized data
from it when trying to read shader information out.

Change-Id: I29ee7b7c1e07f67db88c1707bdc857daa305e713
2015-07-13 13:34:07 -07:00
Chris Craik
53e51e4aa9 Handle shader matrix correctly when ignoring canvas transform
bug:20063841

Restores old SkShader matrix behavior from before the Glop refactor.

Many drawing operations draw without sending the canvas transform to
the GL shader. In such cases, we need to adapt the matrix sent to the
SkShader logic to invert the canvas transform that's built into
the mesh.

Change-Id: I42b6f59df36ce46436322b95bf9ad2140795ee58
2015-06-02 16:28:39 -07:00
Chris Craik
1e6d566c5f Merge "Fix GL texture binding for TextureViews" into mnc-dev 2015-05-27 19:22:44 +00:00
Chris Craik
5f1356c80a Fix GL texture binding for TextureViews
bug:21431334

Should be explicitly passing target through, to ensure
GL_EXTERNAL_OES textures are bound correctly.

Change-Id: I997672ae292ea7fc016c02a59a3c7c8358ecfe0b
2015-05-27 11:06:22 -07:00
John Reck
d7db4d7672 Eliminate requireGlContext
Bug: 20297820

Change-Id: I37c63bab6f6c0d2337c8c6002046d2ef17e74097
2015-05-20 11:24:57 -07:00
Chris Craik
2507c34d91 Cleanup properties
bug:19967854

Separate properties from Caches, into static, RenderThread-only class.

Also rewrites the means for java to set properties to correctly handle
threading, and adds an override for profile bars so that SysUi doesn't clutter
the screen with them.

Change-Id: I6e21a96065f52b9ecc49d1a126244804ba106fa9
2015-05-05 10:36:09 -07:00
Chris Craik
e145013153 Require minimum 4 bit stencil for layers.
bug:19270131
Change-Id: I81367179d268e7c1642259c456c1f3d0018f6c0d
2015-04-29 13:04:02 -07:00
Chris Craik
edacf22ca1 Merge "Glop based composeLayerRegion/Rect" 2015-03-10 16:29:14 +00:00
Chris Craik
182952f5ee Glop based composeLayerRegion/Rect
Change-Id: I69440cabca84948e8aaead9479d616ebc2496517
2015-03-09 18:06:32 -07:00
Chris Craik
eb911c2b0e Rewrite glop texture asserts
bug:19641517

Also switch Glop VertexAttribFlags to use int for group of flags.

Change-Id: Ib7b1934197a62206a55baa6ab484ac59f5bec816
2015-03-09 13:36:35 -07:00
Chris Craik
26bf34200e Glop TextureLayer support
Change-Id: I348a926bd4a2f47be9fdbe74058c0aa2f8dc6276
2015-02-27 10:50:12 -08:00
Chris Craik
ef2507439c Glop mesh reorg, support for drawBitmapMesh
Change-Id: Iaf5550bdd93da93e59a5b838234ab5612e067387
2015-02-26 10:56:07 -08:00
Chris Craik
f27133df2d Glop layer mesh rendering
Change-Id: I2d902819d5d77f496b67d4d25a298782903e410d
2015-02-19 18:06:05 -08:00
Chris Craik
922d3a7f6f Glop SkiaShader support
Change-Id: I894a0b62701bd02367ab970813e4c332147351a2
2015-02-17 15:45:46 -08:00
Chris Craik
30036092b4 Glop path texture support
Change-Id: I505eb05991ca4c9b2e01e49988b8f962fad51462
2015-02-12 16:16:57 -08:00
Chris Craik
0519c810a5 Glop Bitmap and RoundRect clipping support
Change-Id: I4577546a5d2e5f084cc03f39a89db9231b8111ee
2015-02-12 12:30:59 -08:00
Chris Craik
08fa43fdeb Fix Glop vertex alpha blending
Need to force blending if vertices have alpha attribute

Change-Id: I821792db6b613b4d0243cf9c7a045cba014acdc1
2015-02-09 19:08:02 -08:00
Chris Craik
2ab95d780b Glop support for indexed quads
bug:19014311
Change-Id: If35a873421b41cc4508b0d8ac1b4d900c9bb3717
2015-02-09 11:04:31 -08:00
Chris Craik
f7ccbfbd98 Merge "Glop ColorFilter & VertexBuffer support, initial enable" 2015-02-06 23:06:44 +00:00
Chris Craik
117bdbcfa3 Glop ColorFilter & VertexBuffer support, initial enable
Enables Glop rendering for supported Rects and VertexBuffers
Also removes unused Query object

Change-Id: Ibe227bc362685a153159f75077664f0947764e06
2015-02-06 13:42:25 -08:00
Chris Craik
ecad24b49d Merge "GlopBuilder, and test app refactor" 2015-02-05 00:25:04 +00:00
Chris Craik
031888744e GlopBuilder, and test app refactor
Change-Id: I2cd299ccf178007fd5f83bab6c3448f03aec7843
2015-02-04 15:57:59 -08:00
Chris Craik
9dfd7bd520 Merge "Refactoring of Program ownership/lifecycle, and WIP Glop rendering path" 2015-02-03 00:00:58 +00:00
Chris Craik
6c15ffa196 Refactoring of Program ownership/lifecycle, and WIP Glop rendering path
Change-Id: I2549032790bddbc048b0bccc224ed8f386b4517c
2015-02-02 14:08:57 -08:00