4687 Commits

Author SHA1 Message Date
Chris Craik
c93c6aa555 Merge "Object-based DisplayList recording" 2013-01-30 18:42:56 +00: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
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
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
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
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
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
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
886b275e52 Properly support ALPHA_8 bitmaps in all drawBitmap() methods
Change-Id: I869993c59e0a0d76f369c09acbae711753908f48
2013-01-04 15:15:16 -08:00
Romain Guy
15a65bfee5 Remove unnecessary & uninitialized variable
Bug #7728929

The uninitialized variable was taken into account to compute
the hash of gradient cache entries, thus causing cache corruptions
and sometimes infinite loops (it would also cause the cache to fill
up.)

Change-Id: Ic807a9bf901888b121a6a781a81dafc33075ed2a
2013-01-03 14:45:39 -08:00
Romain Guy
dcfc836b45 Remove C++11 related warning
Change-Id: I250ff7bd0ea49908e11b14c995d77312cd09a8b4
2013-01-03 13:08:57 -08:00
Christopher Tate
17697f234f am eea47240: am 4b0ed017: Merge "BackupHelpers: Fix Typo"
* commit 'eea47240b085fa0260011423774506b5375b9351':
  BackupHelpers: Fix Typo
2012-12-17 11:03:45 -08:00
Christopher Tate
eea47240b0 am 4b0ed017: Merge "BackupHelpers: Fix Typo"
* commit '4b0ed0178de2c9c21bd5514671b8b4282f6a03db':
  BackupHelpers: Fix Typo
2012-12-17 11:02:04 -08:00
You Kim
8b2e2c8abc BackupHelpers: Fix Typo
delete --> free

Change-Id: Idbf7e677f8cc4a9a9d04e58b5cf7d0f1589c5211
2012-12-17 03:36:10 +09:00
Fabrice Di Meglio
7345f24ff8 am 5780e196: am 5c0d6f99: am 9de88dad: Merge "Fix bug #7724071 ImageView drawable is not loaded correctly when changing Locale" into jb-mr1.1-dev
* commit '5780e196806b3741786b212866435593990f97ee':
  Fix bug #7724071 ImageView drawable is not loaded correctly when changing Locale
2012-12-13 12:35:14 -08:00
Fabrice Di Meglio
5780e19680 am 5c0d6f99: am 9de88dad: Merge "Fix bug #7724071 ImageView drawable is not loaded correctly when changing Locale" into jb-mr1.1-dev
* commit '5c0d6f9980ed4684cbeefc28036dd9eeac474375':
  Fix bug #7724071 ImageView drawable is not loaded correctly when changing Locale
2012-12-13 12:33:35 -08:00
Fabrice Di Meglio
3509935919 Fix bug #7724071 ImageView drawable is not loaded correctly when changing Locale
aapt is not generating the correct CONFIG_LAYOUTDIR bit when a Drawable has a
LTR and RTL version. It was generating instead the wrong CONFIG_SCREEN_LAYOUT bit.

This was linked to the fact that the layout direction bits are contained into the
screen layout bit.

So now make sure that we are generating the correct CONFIG_LAYOUTDIR bit.

Change-Id: If17c84d31e6c128721ed97ee6711660b131bf941
2012-12-12 11:52:03 -08:00
Romain Guy
53018e520d Merge "Apply dev. settings at runtime Bug #7434649" 2012-11-30 17:00:10 -08:00
Romain Guy
5bb3c730f5 Apply dev. settings at runtime
Bug #7434649

Change-Id: I16f00eaa8a5eefd9f9849e196cf2cb1659215390
2012-11-30 16:29:33 -08:00
Romain Guy
69fcbccf47 Fix crash in TextDropShadowCache
The lengths used to copy/read arrays were completely wrong.

Change-Id: If21f23a73cce59bbd32975760e6d728eeeb9e40d
2012-11-30 15:29:15 -08:00
Chris Craik
c4aa38a1e3 am c0da873e: am a9473881: am 2435f98d: Merge "Use the same interrupt/resume logic for all functor calls" into jb-mr1.1-dev
* commit 'c0da873ee25e1e67fd0454ebc2473a5c3cac002c':
  Use the same interrupt/resume logic for all functor calls
2012-11-29 14:32:45 -08:00
Chris Craik
c0da873ee2 am a9473881: am 2435f98d: Merge "Use the same interrupt/resume logic for all functor calls" into jb-mr1.1-dev
* commit 'a9473881eb066b41ea2fb3389b5c0031c2ab4f38':
  Use the same interrupt/resume logic for all functor calls
2012-11-29 14:26:33 -08:00
Romain Guy
b8dca777ca Merge "Use LruCache instead of GenerationCache in libhwui" 2012-11-29 13:58:57 -08:00
Romain Guy
059e12ccd2 Use LruCache instead of GenerationCache in libhwui
Change-Id: Ic26ddc7151eb5462bcd243b21daf7187ed6d3bec
2012-11-29 11:44:02 -08:00
Chet Haase
288f20c603 am 51812754: am 25082e33: Merge "Another optimization of glyph cache uploads"
* commit '518127549997fbf01fd3af59c4312e43f137e194':
  Another optimization of glyph cache uploads
2012-11-28 15:05:03 -08:00
Chris Craik
d15321bbf5 Use the same interrupt/resume logic for all functor calls
bug:7093396

The functor was able to change the renderer's blend mode without it
being restored in process mode. This single path of updating gl caches
reduces likelihood of this occurring in the future.

Change-Id: Ie367532f9c683299f02bc4f635d7cb31f96db39f
2012-11-28 14:45:04 -08:00
Sangkyu Lee
7bb3cfe1cc Another optimization of glyph cache uploads
Previously, cache textures were updated whenever mCurrentCacheTexuture was changed.
Since updating cache textures needs glTexSubImage2D call, frequent changing
of mCurrentCacheTexture (which can easily happen when an app uses lots of unique glyphs
even with precaching) caused many glTexSubImage2D calls and bad framerates.
This patch optimized isssueDrawCommand function. Consequently, changing mCurrentCacheTexture doesn't
cause glTexSubImage2D call any more and it will improve font rendering performance.

Change-Id: Id19d959fa0e69eeb2a39f83a57e311d7394586b2
Signed-off-by: Sangkyu Lee <geteuid@gmail.com>
2012-11-28 09:28:50 +09:00
Kenny Root
9a9f874c15 am e2a2fe4e: am be37b5fa: Merge "Free resources in correct order in ResStringPool::uninit"
* commit 'e2a2fe4ef3695baf3c7dca1637373ebd968a4704':
  Free resources in correct order in ResStringPool::uninit
2012-11-14 10:45:51 -08:00
Kenny Root
be37b5fa24 Merge "Free resources in correct order in ResStringPool::uninit" 2012-11-14 09:33:49 -08:00
Chris Craik
ffa68f04b6 am 7f92d516: am 7494f0c0: am a84c9639: Merge "Avoid tesselation path when useCenter is set" into jb-mr1-dev
* commit '7f92d516a90ec1474d4df798585ac26239aa83fd':
  Avoid tesselation path when useCenter is set
2012-11-01 14:42:08 -07:00
Chris Craik
7f92d516a9 am 7494f0c0: am a84c9639: Merge "Avoid tesselation path when useCenter is set" into jb-mr1-dev
* commit '7494f0c04b1abd010207ee5c7e8c9aff6d69c956':
  Avoid tesselation path when useCenter is set
2012-11-01 14:40:04 -07:00
Chris Craik
7fae5216d2 Avoid tesselation path when useCenter is set
bug:7458300

The tesselation path doesn't handle sharp joins.

Change-Id: I28bf03f3b72fc584a205daa40934dda17031098f
2012-11-01 11:27:03 -07:00
Mike Lockwood
fdf85b6b88 Merge "More changes to fix PDK build:" 2012-10-24 12:34:21 -07:00
Mike Lockwood
c59b2f9a77 More changes to fix PDK build:
move screencap back to frameworks/base
move libdiskusage to frameworks/native

Change-Id: I8abe425c4bbf305bbe8650094c40c16df8c6d5e4
2012-10-24 12:31:10 -07:00
Chet Haase
4a82a0fc09 am f5fa64f2: am fbba753f: Merge "Handle offscreen animations correctly" into jb-mr1-dev
* commit 'f5fa64f24b0ee6aa53ac2803590e8729122c445b':
  Handle offscreen animations correctly
2012-10-23 15:51:24 -07:00
Chet Haase
fbba753f62 Merge "Handle offscreen animations correctly" into jb-mr1-dev 2012-10-23 15:46:04 -07:00
Chet Haase
3561d062ff Handle offscreen animations correctly
A bug in software rendering caused animations on views that are offscreen
to not get drawn, therefore the animation doesn't continue (since old-style
animations depend on the logic in the drawing code to keep running). Fix is
to special case the isAnimating case in ViewRoot to go ahead and schedule
a traversal even if the dirty rect does not intersect with the visible region.

Issue #7396035 Animations starting offscreen don't draw run/end/draw properly (sw rendering only)

Change-Id: Iae25b3a424ddc5a16ba431ecd68cf42d5500db3f
2012-10-23 15:30:15 -07:00
Romain Guy
2635e7431a am d04fe3c1: am 04c8d402: Merge "Properly draw the window background on window resize Bug #7385090" into jb-mr1-dev
* commit 'd04fe3c1aeaf4ce63f6a6f3def61a8cc5faff705':
  Properly draw the window background on window resize Bug #7385090
2012-10-23 10:53:40 -07:00
Romain Guy
41308e2936 Properly draw the window background on window resize
Bug #7385090

This change gets rid of two silly asumptions:
- That a layer needs to be cleared with opaque black (it shouldn't,
it's already cleared to transparent and the view will cover it up
with its own background)
- The the clip should be dirty at the beginning of a frame only
when the render target is opaque

Change-Id: I415b6d3cab196057fb0281419a53fef601a44e28
2012-10-22 20:02:43 -07:00
Chet Haase
85c1aef929 am 6534dd02: am 74261d84: Merge "Don\'t null the reference to Bitmap pixels until we\'re really ready" into jb-mr1-dev
* commit '6534dd0275c8d01de7e7400ba239d203c37c8164':
  Don't null the reference to Bitmap pixels until we're really ready
2012-10-22 15:52:20 -07:00
Chet Haase
547e66531d Don't null the reference to Bitmap pixels until we're really ready
A change in the VM triggers a native memory error more aggressively than before,
showing that there's a bug in the logic of recycling bitmaps. Since the pixel
memory is allocated on the Java heap, nulling out the reference to that memory
in the Java level Bitmap object can cause that memory to get collected at any time.
Meanwhile, we may have a reference to that memory at the native level for rendering
purposes, causing an error if/when we access that memory after it has been collected
by the VM.

The fix is to avoid setting the reference to the pixels to null unless we are
not referring to it in native code. This is determined at the time we call
recycle() - we return a boolean to indicate whether the native code is still
using the memory. if not, the Java code can null out the reference and allow the
VM to collect it. Otherwise, it will get collected later when the encompassing
Bitmap object is collected.

Issue #7339156 HTML5 tests crash the app (Vellamo)

Change-Id: I3a0d6b9a6c5dd3b86cc2b0ff7719007e774b5e3c
2012-10-22 15:25:19 -07:00
Romain Guy
be432fa01c am eb78cf53: am 8b946c05: Merge "Defer layer rendering to avoid stalls Bug #7326824" into jb-mr1-dev
* commit 'eb78cf538f87301c1612bf081ae2d5f93cae50f0':
  Defer layer rendering to avoid stalls Bug #7326824
2012-10-19 10:45:41 -07:00
Romain Guy
7c25aab491 Defer layer rendering to avoid stalls
Bug #7326824

When a layer is taken out of the cache and initialized it gets cleared
to prepare it for future rendering. This triggers the following sequence
of operations:

glBindFramebuffer(layer.fbo)
attach texture storage to FBO
glClear()
glBindFramebuffer(defaultFbo)

The clear forces a resolve on tilers which stalls the CPU for a little
while, thus producing jank during animations. This change moves the
clear to the next frame when we know we will have to execute a resolve
anyway.

Change-Id: Ic1939c25df20ed65a4c48dc81ee549b2cd8b6ec3
2012-10-18 15:05:02 -07:00
Romain Guy
3786a9b97a am 07a9ebd1: am b8460d15: Merge "Take into account the texture layer\'s transform for clipping Bug #7370212" into jb-mr1-dev
* commit '07a9ebd1a01bc2819a90ddc98263a24bd6459768':
  Take into account the texture layer's transform for clipping Bug #7370212
2012-10-17 19:21:20 -07:00
Romain Guy
b2e2f24706 Take into account the texture layer's transform for clipping
Bug #7370212

Change-Id: Ibdc3161306f54a1cfe66e08458f05ee01a13b1df
2012-10-17 18:18:35 -07:00
Romain Guy
ac6a0cafc9 am cdc70209: am 16627347: Merge "Enable mipmapping, without a deadlock this time Bug #7353771" into jb-mr1-dev
* commit 'cdc702093cc807237979f14776e75ffdba869ba6':
  Enable mipmapping, without a deadlock this time Bug #7353771
2012-10-17 12:38:40 -07:00
Romain Guy
5243957080 Enable mipmapping, without a deadlock this time
Bug #7353771

Change-Id: I89a08a58608e374f1c604a26ee0769d5850b2f7b
2012-10-17 12:14:11 -07:00
Chet Haase
9cb417b76f am c894029a: am be29d82f: Merge "Correctly adjust clip regions that lie offscreen" into jb-mr1-dev
* commit 'c894029a8e398502c058c2f5332bfe75d4b01735':
  Correctly adjust clip regions that lie offscreen
2012-10-17 07:57:04 -07:00