1033 Commits

Author SHA1 Message Date
Alexander Toresson
3ed1927603 Fix for positioning of glyphs within a bitmap
For positioning of glyphs within a bitmap, roundf(int + float) is used,
where the float is the glyph position and the int is the text position.
When the text position is varied, this may lead to the sum being rounded
in different directions, due to floating point rounding, caused by that
floating point numbers have different precision in different ranges.

This may therefore lead to slightly different positioning for glyphs and
therefore slightly different widths and heights for text strings,
depending on the position they are rendered at.

The solution in this patch is to use int + (int) roundf(float), which
has consistent rounding, and also enables us to use the full range of
ints.

Change-Id: Id1143cdfcbdfa9915ced878ae04df589a3e03cee
2014-01-23 13:31:15 +01:00
lina.x.pi
920287399a Initialize pointer members to NULL to avoid illegal reference
mBitmap and mTexture is not initialized to NULL which causes
illegal address access when it fails to be created from
oversized bitmap.

Change-Id: Iea54bec8788bc5f3a10040fdb43f416c0d41a14c
2014-01-17 13:49:26 +09:00
Tim Murray
804ff38bff Handle user-defined cache path for RS.
Change-Id: I92e3346dca331ae6a9dfbe4f95292bc604dfd196
2013-12-18 17:04:04 -08:00
The Android Open Source Project
dbccd44a63 Merge commit 'b873a17ce7be0a9771c24999adca6964431728f6' into HEAD
Change-Id: I938755073e70602cc8f51ce9bd420fdcf870cecd
2013-11-22 11:18:57 -08:00
Digish Pandya
a5ff739d3c Update the layer's alpha value upon composition of the layer
Fixes: This patch makes sure that the layer's alpha value is
up-to-date and does not reflect the previous view's alpha value.
it fixes the square block on marquee fading edge when text view
is applied transparency.

Change-Id: I110649db72a75fecc02ba56c201a05773f80328c
2013-11-05 09:22:37 +05:30
Romain Guy
318ae7bb92 Take SkBitmap's stride into account when uploading textures
Bug #10151807

Change-Id: I7ba4804fa3619088fea70eb55f10519fff0bf5f0
2013-09-25 22:31:31 +00:00
Chris Craik
d8a84a8609 Merge "Correct bitmap merging logic" into klp-dev 2013-09-21 00:33:36 +00:00
Chris Craik
996fe65634 Correct bitmap merging logic
bug:10863163

This fixes two issues

The check for pure translation was incorrect. It was fixed and renamed
for clarity.

Certain matrix paths weren't setting kTypePositiveScale. For
simplicity (and because positive scale is simple to check) removed
flag in favor of dynamic checking.

Change-Id: Ic5ce235653ef49a68b8b242bd89fc2e95874ecc9
2013-09-20 17:25:31 -07:00
Victoria Lease
16c84069a4 fix emoji clipping in hw draw path
I guess we don't want to overwrite the last line in every RGBA glyph
with our one-line texture atlas spacer?

Bug: 10841207
Change-Id: Ief85ca58650c731e9d21dbf90942b7b44670abcc
2013-09-19 15:38:21 -07:00
Chris Craik
ce9ee16d65 Merge "Conservatively estimate geometry bounds" into klp-dev 2013-09-18 01:50:02 +00:00
Chris Craik
a42ceb03cf Merge "Disallow negative scale matrices in merged Bitmap drawing" into klp-dev 2013-09-18 01:49:32 +00:00
Chris Craik
32f05e343c Conservatively estimate geometry bounds
bug:10761696

Avoids a case where a rect with top coordinate of (e.g.) 0.51f is
assumed to not draw in the first row of pixels, which leads to it not
being clipped. Since rounding can cause it to render in this first
pixel anyway, we very slightly expand geometry bounds.

Now, in ambiguous cases, the geometry bounds are expanded so clipping
is more likely to happen.

Change-Id: I119b7c7720de07bac1634549724ffb63935567fc
2013-09-17 17:48:14 -07:00
Chris Craik
d965bc5823 Disallow negative scale matrices in merged Bitmap drawing
bug:10622962

Change-Id: I55ac18ad56b53dc9e6e6ea14cd3ec4bdafa98ac3
2013-09-16 18:19:55 -07:00
Chris Craik
5af5fc50c2 Fix merged operation clipping
bug:10745870

Missing 'const' meant MergingDrawBatch would never clip anything.

Change-Id: Ia6367eff94cf5f437efafbc3ba7f0da102ffd956
2013-09-13 14:44:08 -07:00
Romain Guy
1de466fc91 Always disable the clip for layers
Bug #8149344

Change-Id: Ifd413cadb171232eb846b3d91b05b2d2457b9f35
2013-09-12 23:13:38 +00:00
Chris Craik
88ee0dac81 Merge "Move DeferredDisplayState out of ops" into klp-dev 2013-09-12 22:08:54 +00:00
Chris Craik
c1c5f08702 Move DeferredDisplayState out of ops
bug:9969358

Instead of storing DeferredDisplayState within an op (thus forcing ops
to be tied to a single state instance), associate each op with a new
state at DeferredDisplayList insertion time.

Now, DisplayLists (and the ops within) can be reused in a single
DeferredDisplayList draw call, as ops will use different state
instances at different points in the frame.

Change-Id: I525ab2abe0c3883679f2fa00b219b293e9ec53d9
2013-09-12 13:33:01 -07:00
John Reck
874ae2adf8 Merge "Fix scissor for functor invocation" into klp-dev 2013-09-10 21:03:48 +00:00
Tim Murray
7a454ba5fe Fix FontRenderer bug.
bug 10691313

Change-Id: Icd5341a3c2066e337911f040ddc935c48c8d7cd1
2013-09-10 13:46:49 -07:00
John Reck
25d2f7bc1f Fix scissor for functor invocation
Bug: 10677765
 enableScissor() must precede setScissorFromClip() as
 otherwise setScissorFromClip() doesn't do anything.
 Also make sure to call setScissorFromClip() if
 enableScissor() returns true as enableScissor() calls
 resetScissor() if the scissor state has changed.

Change-Id: I9226b20bb256c92066aae344e4e6407540b6eae9
2013-09-10 20:45:29 +00:00
Tim Murray
9578e64240 Add flags word to initialization.
bug 10427951

Change-Id: I1356b9b96315ead44aa3898de5604d75f9bb8be5
2013-09-09 16:23:27 -07:00
Chris Craik
66063ae2d6 Dump the right matrix when logging display lists
bug:10631274
Change-Id: I6b32bfcb3e207321da60807091d7ac0ecf6112ab
2013-09-05 16:11:18 -07:00
Chris Craik
54f574acf4 Move functor GL setup to just before functor
bug:10399469

Because the stencil setup can issue draws, it *must* come before the
GL state setup.

Change-Id: I52a36213549fc60b091a90cbb923a1f0d35f9a65
2013-08-26 11:23:46 -07:00
Romain Guy
5d92320084 Second attempt at avoiding infinite loop in PathCache::trim()
Bug #10347089

Change-Id: I70f5a3933e848632473acc6636c88be5dc6ac430
2013-08-21 18:42:46 -07:00
Romain Guy
0a8c51b1d0 Properly account for created paths in the cache
Change-Id: I47b89b3085cefab6daac9194e7bfd3c140b37fa2
2013-08-21 17:35:38 -07:00
Romain Guy
627c6fd913 Add overdraw debugging that accounts for Deuteranomaly
Change-Id: I31f68a07aa7cf0490d2572e24e4c5ac2066a1151
2013-08-21 11:53:18 -07:00
Tim Murray
d8c8aaa82e Handle updates to C++ API.
Change-Id: I8ab17cbae3a9a4cc3c3202b8277d49f27bdf1fec
2013-08-19 12:07:52 -07:00
Romain Guy
46bfc48110 Fix hardware layers lifecycle
Bug #10075732

Hardware layers could survive across EGL terminate events.

Change-Id: Ie8565d55cb29fe6625fa1584d695edfecd37ab5e
2013-08-16 18:38:29 -07:00
Romain Guy
b0a41ed3dc Prevent ANR in apps using drawPath()
Bug #10347089

If an app clears its path cache before stopping background tasks, it could
get into an infinite loop in PathCache::trim().

Change-Id: Ieb865b762e7b00aebaba0c023769c2db286a94f5
2013-08-16 14:44:38 -07:00
Romain Guy
b746371de7 Clear FBO cache on full memory flush
Change-Id: I44e06d5d15cd899a0522c62d7c0d042170665abb
2013-08-16 13:55:29 -07:00
Victoria Lease
723b2feb92 fix kBW_Format glyphs
Oops! kBW_Format was omitted from a couple of switch statements,
resulting in glyphs in that format being invisible.

Bug: 10206452
Change-Id: Ib2aa52250aeeecc0de1b1b78e3d0f568f368c73e
2013-08-12 15:12:49 -07:00
Romain Guy
9b5a1a28c3 Take shadow bounds into account for quick rejects
Bug #8634346

Change-Id: I995c5205c2959d8e4da638ae47fedcda92eb1b36
2013-08-09 14:06:29 -07:00
Romain Guy
003123004f Remove an unnecessary allocation
Also remove dead code from OpenGLRenderer.cpp

Change-Id: I7eb54ca19e77ee3c32f1fe9513a031e6b2e115cf
(cherry picked from commit 5c7d5ab878b26f855175a3305a14ac12fcacf25e)
2013-08-09 03:52:29 +00:00
Romain Guy
7f6d6b0370 Split assets atlas batches
Bug #10185769

The assets atlas contains assets that need to be blended and assets
that do not need to be blended. With a single merge id, currently
set to be the pointer to the atlas itself, draw ops merging could
generate batches of commands containing both opaque and translucent
assets. The blend state was chosen from only one of the assets in
the batch, leading either to inefficiencies (blending large opaque
assets) or incorrect behaviors (not blending translucent assets.)

This change introduces two new merge ids in the atlas: an opaque
key and a blend key. These keys are simple booleans set to false
and true respectively (the values do not matter really.) Their
memory addresses are used as the merge ids when createing draw ops
batches, allowing all opaque ops to be batched together and all
translucent ops to be batched together.

Change-Id: I114dba0533c44987e53864b471ccb28c811f2025
2013-08-06 18:35:01 -07:00
Tim Murray
250b1cfc83 Handle updates to RS C++ API.
Change-Id: I73127fc7369643b94d4a49f31a516b50c74b54ac
2013-08-02 15:31:29 -07:00
Chris Craik
b213cec0ce Merge "Fix quickReject's handling of AA ramp geometry" 2013-08-02 20:34:38 +00:00
Chris Craik
5e49b307eb Fix quickReject's handling of AA ramp geometry
By having quickReject round out the window-space geometry bounds, we
prevent the AA perimeter (which falls outside the local bounds passed
in) from drawing outside the clip.

Change-Id: I8ee36be9039a9c47906815ee2f0dbaa5eb910b82
2013-08-02 11:29:22 -07:00
Romain Guy
b7b93e0089 Fix region clipping bugs
See external bug #58344

Change-Id: Iecd6c41fc8076cd76add2335d3442a6dd8878f12
2013-08-01 15:35:24 -07:00
Victoria Lease
1e546815bb Support RGBA fonts and bitmap fonts (and RGBA bitmap fonts)
Quite a few things going on in this commit:

- Enable bitmap strikes by default in Paint objects.

The SkPaint parameter that enables bitmap strikes was not previously
included in DEFAULT_PAINT_FLAGS. This effectively disabled bitmap
fonts. Oops! It's for the best, though, as additional work was needed
in Skia to make bitmap fonts work anyway.

- Complain if TEXTURE_BORDER_SIZE is not 1.

Our glyph cache code does not currently handle any value other than 1
here, including zero. I've added a little C preprocessor check to
prevent future engineers (including especially future-me) from
thinking that they can change this value without updating the related
code.

- Add GL_RGBA support to hwui's FontRenderer and friends

This also happened to involve some refactoring for convenience and
cleanliness.

Bug: 9577689
Change-Id: I0abd1e5a0d6623106247fb6421787e2c2f2ea19c
2013-07-31 15:50:47 -07:00
Romain Guy
fb6c743c6e Merge "Fix 9patches' limitation of 32 empty quads" 2013-07-24 18:54:11 +00:00
Romain Guy
6cad75744e Fix 9patches' limitation of 32 empty quads
The 9patch format allows to define more empty quads than this, remove
the use of a single int to index empty quads and replace it with a
lookup in the 9patch resource data structure.

Change-Id: I148ee5d9e0c96822b534a344e15c9d88078db7c2
2013-07-24 11:49:33 -07:00
Chris Craik
98427708a8 Merge "Ensure glActiveTexture is cleaned up correctly on functor resume" 2013-07-22 23:31:20 +00:00
Chris Craik
9ab2d18475 Ensure glActiveTexture is cleaned up correctly on functor resume
Change-Id: I103d7d63b17289d599c2c08dcc442cfba9b8e51d
2013-07-22 16:21:55 -07:00
Romain Guy
448455fe78 Use global indices array to draw layers
An array of indices local to a layer would only be necessary if
we changed the way we resolve T-junctions. Since we only ever
draw quads, let's just use the indices we use everywhere else.

This change also uses the global indices array to render list
of colored rectangles to save on the number of vertices generated
CPU-side.

Change-Id: Ia6d1970b0e9247805af5a114ca2a84b5d0b7c282
2013-07-22 14:37:21 -07:00
Chris Craik
b3d8388822 Merge "Support stencil-based clipping for functors" 2013-07-16 22:43:02 +00:00
Romain Guy
4e7b772b73 Fix crashes in setMatrix() and concat()
setMatrix() was crashing in native code, only with hw acceleration on.
concat() would throw a NullPointerException. It now ignores null matrices.

Change-Id: Iebd8b410a957d2ba501570c6fbb3f680ff4a1a23
2013-07-16 14:52:55 -07:00
Chris Craik
ecca6da4ea Support stencil-based clipping for functors
bug:9070351
Change-Id: I1c54e1bea1b84b1619cce27b14f189b42cab7062
2013-07-16 13:27:18 -07:00
Chris Craik
0c20c3898a Use global references for Bitmap AndroidPixelRefs
bug:9621717

Because we're no longer holding onto Bitmaps Java side during
DisplayList lifetime, use global refs to keep the backing byte arrays
around.

Adds back bitmap buffer passing + native ref management removed by
3b748a44c6bd2ea05fe16839caf73dbe50bd7ae9

Adds back globalRef-ing removed by
f890fab5a6715548e520a6f010a3bfe7607ce56e

Change-Id: Ia59ba42f05bea6165aec2b800619221a8083d580
2013-07-08 11:08:02 -07:00
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