1321 Commits

Author SHA1 Message Date
Eino-Ville Talvala
b2675542c2 Initial commit of new camera API, mostly just the interface.
- New core API classes in android.hardware.photography
- android.media.Image and android.media.ImageReader classes for
  application access to direct hardware image buffers.
- Additions to android.graphics.ImageFormat to describe new image
  types needed by new camera API.
- Some documentation included; very little implementation.

Bug: 9111736
Change-Id: I0680f35944d1cb8845b7dc0c67edc8c0f0864573
2013-06-07 21:29:45 +00:00
Romain Guy
81056427e8 Merge "Remove unnecessary Rect, better reuse of NinePatch objects" 2013-06-07 20:14:58 +00:00
Romain Guy
f3187b7df1 Remove unnecessary Rect, better reuse of NinePatch objects
Cloning drawables (which happens a lot) was creating copies of NinePatch
objects, which would cause the hardware renderer to generate more meshes
than necessary. Also avoid keeping a String we don't need (it was interned
but still.) Last but not least, remove 1 RectF per NinePatch in the system.

Change-Id: If4dbfa0c30892c9b00d68875e334fd5c2bde8b94
2013-06-07 12:17:11 -07:00
Chris Craik
34bff87b32 Merge "Add support for post-decode density scaling with reuse" 2013-06-06 21:04:49 +00:00
Alan Viverette
b33d778e9c Merge "Deprecate DrawableStateList.getChildren() and add getChild()." 2013-06-06 17:36:40 +00:00
Chris Craik
1e97ceb469 Merge "Support all formats for BitmapFactory.Options.inBitmap" 2013-06-06 16:13:30 +00:00
Alan Viverette
7214643332 Deprecate DrawableStateList.getChildren() and add getChild().
Moves from exposing the internal structure of a drawable state list
to only exposing the data. Adds getCapacity() and mutate() as
package-private APIs to support various drawable subclasses.

Change-Id: Id08743f979287e1a305f069ccc3c0085a7da6f7b
2013-06-05 17:12:19 -07:00
Chris Craik
905e8246ef Add support for post-decode density scaling with reuse
Also, simplifies scaling path, removing java variant - we always do
the scaling in native, which has the benefit of avoiding non-native
temporary allocations

Change-Id: I39c2219f5d77a267719629704e65611cf4388a82
2013-06-05 16:09:31 -07:00
Tim Murray
3f4579fbe4 am 379641a7: am ea45ab6f: Merge "Improve RS documentation." into jb-mr2-dev
* commit '379641a7ef09e1d7fab34d3027c5809fb2bc21ad':
  Improve RS documentation.
2013-06-05 13:53:28 -07:00
Tim Murray
c11e25c4e6 Improve RS documentation.
bug 8570568
Change-Id: I465fcc8ec3e2cc892dc3cb0067aacf5224338102
2013-06-05 11:28:45 -07:00
Chris Craik
7e8c03c0fe Support all formats for BitmapFactory.Options.inBitmap
bug:9194265

Instead of using custom code in skia to avoid allocations, use a
custom allocator that reuses the allocations from the inBitmap.

In order to avoid inconsistent state, the decode is done in a
separate bitmap and swapped into the existing native bitmap.

Eventually, we'd like to support inScaled=true completely avoiding
java allocations.

Change-Id: Ic4a2f2373b100a80a32c1cdebb7bcb726711c8a7
2013-06-03 18:14:44 -07:00
Jason Sams
1b1c39d773 am d19068a7: am 413adc92: Merge "Fix free after use with createFromBitmapResource" into jb-mr2-dev
* commit 'd19068a7d28d129f5a1a1be478e972b40cea04eb':
  Fix free after use with createFromBitmapResource
2013-06-01 09:51:46 -07:00
Jason Sams
3ece2f3268 Fix free after use with createFromBitmapResource
Bug 9227350

Change-Id: Iee7610a9bf3d9d1baf14b968aed2a7d0876d2af7
2013-05-31 14:01:04 -07:00
Romain Guy
54999da4b6 Remove MipmapDrawable
It's a hidden API that nobody uses.

Change-Id: Ie0ecbc45cd191a595e53fe8765defe6f2aa7e3f6
2013-05-30 17:34:27 -07:00
Chris Craik
9f58361e98 Support larger bitmaps in BitmapFactory.Options.inBitmap
bug:8121994

Adds a new distiction between bitmap size and the allocation
(pixel ref/buffer) used to store its data.

BitmapFactory.inBitmap will allow a bitmap to be reinitialized with
new data if the bitmap being decoded is (after sampleSize) equal or
smaller.

Change-Id: I747750a735c858882df3af74fca6cdc46f2a9f81
2013-05-28 13:50:33 -07:00
Romain Guy
ccccc44b13 am ac629ee8: am 529a9e39: Merge "TransitionDrawable should not become a LayerDrawable Bug #9057757" into jb-mr2-dev
* commit 'ac629ee86d9e60e35098d8e731a35fc36b3bf3d5':
  TransitionDrawable should not become a LayerDrawable Bug #9057757
2013-05-24 17:42:41 -07:00
Romain Guy
529a9e391e Merge "TransitionDrawable should not become a LayerDrawable Bug #9057757" into jb-mr2-dev 2013-05-25 00:38:26 +00:00
Romain Guy
90e10cc586 TransitionDrawable should not become a LayerDrawable
Bug #9057757

Calling TransitionDrawable.mutate() would turn it into a LayerDrawable,
causing it to draw all its children on screen at the same time.

Change-Id: I5efa87c43114a9c817719f08890ce41965f3220a
2013-05-24 17:31:17 -07:00
Tim Murray
6d7a53cbdd Add support to Java for RS tracing.
Change-Id: I95c365345fea3a1e132a7eb2270d541be0745d02
2013-05-24 13:36:32 -07:00
Fabrice Di Meglio
d04aaa97c9 am ddd02537: am b4426f15: Merge "Fix bug #8858012 layer-list\'s bitmap item\'s start/end gravity is incorrect on RTL under certain conditions" into jb-mr2-dev
* commit 'ddd02537a3fb499a82097453535194f4e29583dc':
  Fix bug #8858012 layer-list's bitmap item's start/end gravity is incorrect on RTL under certain conditions
2013-05-13 11:24:47 -07:00
Fabrice Di Meglio
b4426f155f Merge "Fix bug #8858012 layer-list's bitmap item's start/end gravity is incorrect on RTL under certain conditions" into jb-mr2-dev 2013-05-13 18:18:17 +00:00
Fabrice Di Meglio
731ba6649a Fix bug #8858012 layer-list's bitmap item's start/end gravity is incorrect on RTL under certain conditions
- set correct layout direction for Drawable

Change-Id: Ic8968acadbc7c9aa0bb68dd4dfbe09aa4e7cfa62
2013-05-10 19:21:35 -07:00
Tim Murray
119143de98 am 9917c1e2: am 17502c4b: Merge "Remove extraneous logging." into jb-mr2-dev
* commit '9917c1e2e9ba8a0bd4f29ce05844cd539c3a41b9':
  Remove extraneous logging.
2013-05-10 17:08:42 -07:00
Tim Murray
da67debe22 Remove extraneous logging.
bug 8888887

Change-Id: I68d01c2ba649257be1577d53f330ad28d3b57011
2013-05-09 14:45:43 -07:00
Derek Sollenberger
0c8c0add4e am c195ef73: am bee78812: Merge "Fix bug where we incorrectly clipped the bounds to the device size." into jb-mr2-dev
* commit 'c195ef73445c3ba605355798b9f1f9a78bc52f11':
  Fix bug where we incorrectly clipped the bounds to the device size.
2013-05-09 14:19:45 -07:00
Derek Sollenberger
708144e828 Fix bug where we incorrectly clipped the bounds to the device size.
This CL also updates the documenation to make it clear that the API
returns in local space, not clipped to the size of the bitmap/device.

bug: 8747526
Change-Id: I389844672ce955341863f9940c3b401ab00dc1dc
2013-05-09 14:00:29 -04:00
Derek Sollenberger
07da9df62b am e3326143: am 2c76016c: Merge "Fix error where clips/matrices are incorrectly transferred." into jb-mr2-dev
* commit 'e3326143c63e791863c1fd95599fb9db74fb4eed':
  Fix error where clips/matrices are incorrectly transferred.
2013-05-09 05:05:47 -07:00
Derek Sollenberger
3bd9a6dc6b Fix error where clips/matrices are incorrectly transferred.
In these cases the caller passes in a NULL bitmap and expects it
to clear the canvas state. This change preserves that behavior.

bug: 8738494
Change-Id: I7ebf6a74bab3c2822849a3404de3828fec8d3084
2013-05-08 10:59:47 -04:00
Romain Guy
3b748a44c6 Pack preloaded framework assets in a texture atlas
When the Android runtime starts, the system preloads a series of assets
in the Zygote process. These assets are shared across all processes.
Unfortunately, each one of these assets is later uploaded in its own
OpenGL texture, once per process. This wastes memory and generates
unnecessary OpenGL state changes.

This CL introduces an asset server that provides an atlas to all processes.

Note: bitmaps used by skia shaders are *not* sampled from the atlas.
It's an uncommon use case and would require extra texture transforms
in the GL shaders.

WHAT IS THE ASSETS ATLAS

The "assets atlas" is a single, shareable graphic buffer that contains
all the system's preloaded bitmap drawables (this includes 9-patches.)
The atlas is made of two distinct objects: the graphic buffer that
contains the actual pixels and the map which indicates where each
preloaded bitmap can be found in the atlas (essentially a pair of
x and y coordinates.)

HOW IS THE ASSETS ATLAS GENERATED

Because we need to support a wide variety of devices and because it
is easy to change the list of preloaded drawables, the atlas is
generated at runtime, during the startup phase of the system process.

There are several steps that lead to the atlas generation:

1. If the device is booting for the first time, or if the device was
updated, we need to find the best atlas configuration. To do so,
the atlas service tries a number of width, height and algorithm
variations that allows us to pack as many assets as possible while
using as little memory as possible. Once a best configuration is found,
it gets written to disk in /data/system/framework_atlas

2. Given a best configuration (algorithm variant, dimensions and
number of bitmaps that can be packed in the atlas), the atlas service
packs all the preloaded bitmaps into a single graphic buffer object.

3. The packing is done using Skia in a temporary native bitmap. The
Skia bitmap is then copied into the graphic buffer using OpenGL ES
to benefit from texture swizzling.

HOW PROCESSES USE THE ATLAS

Whenever a process' hardware renderer initializes its EGL context,
it queries the atlas service for the graphic buffer and the map.

It is important to remember that both the context and the map will
be valid for the lifetime of the hardware renderer (if the system
process goes down, all apps get killed as well.)

Every time the hardware renderer needs to render a bitmap, it first
checks whether the bitmap can be found in the assets atlas. When
the bitmap is part of the atlas, texture coordinates are remapped
appropriately before rendering.

Change-Id: I8eaecf53e7f6a33d90da3d0047c5ceec89ea3af0
2013-05-02 13:32:09 -07:00
Scott Main
3fc184cf6e am 01e48e7d: am 22f6a60e: Merge "add docs for new attributes, including account restriction for restricted profiles" into jb-mr2-dev
* commit '01e48e7d1541920ece358257e4c2481936497835':
  add docs for new attributes, including account restriction for restricted profiles
2013-04-25 21:27:06 -07:00
Scott Main
b40c1fdaee add docs for new attributes, including account restriction for restricted profiles
Change-Id: I737ea55bfa58562b1b384e52626e95b479759376
2013-04-25 19:05:55 -07:00
Stephen Hines
0f59d6d34e am 4a84af89: am b322f994: Merge "Add new error code for Debug Context work." into jb-mr2-dev
* commit '4a84af896c830d6ef613d1baa607d472cf865073':
  Add new error code for Debug Context work.
2013-04-20 21:37:10 -07:00
Stephen Hines
b322f99476 Merge "Add new error code for Debug Context work." into jb-mr2-dev 2013-04-20 04:48:18 +00:00
Jason Sams
6a341fc793 am dd240d9a: am 0935f258: Merge "Updating API based on feedback" into jb-mr2-dev
* commit 'dd240d9a30578930bbf63b6bd9998e940dd16160':
  Updating API based on feedback
2013-04-19 13:17:10 -07:00
Jason Sams
f64cca905c Updating API based on feedback
bug 8656887

This hides the methods used to support Camera
Fixes the oversight in LaunchControl
Documents some missing functions




Change-Id: I5b19b65dd5ddf9917100192c180bb63d89c80679
2013-04-19 12:56:37 -07:00
Stephen Hines
42028a8756 Add new error code for Debug Context work.
Bug: 7343201

This error type is less severe when running under the debug context,
allowing developers to use RSErrorHandler to respond to errors like
out-of-bounds native accesses.

Change-Id: I79c87d1956c94833546f0f638ffa1aafecae49cd
2013-04-17 19:22:01 -07:00
Jason Sams
e8ed1eeb3f am 4b87c54b: am 097ed01a: Merge "Revert GC thread changes" into jb-mr2-dev
* commit '4b87c54b06ed6834785ea06e066bb1e988a76973':
  Revert GC thread changes
2013-04-15 12:47:30 -07:00
Jason Sams
f38c6ab76a am c4294ed2: am 330a9fe3: Merge "Unhide new RS APIs." into jb-mr2-dev
* commit 'c4294ed2f1de5c89b5e283942e0d5f8cd8822bfb':
  Unhide new RS APIs.
2013-04-14 19:28:29 -07:00
Jason Sams
9bf189228f Revert GC thread changes
This is not quite a straight revery, some manual edits were necessary.

The original CL didn't undergo sufficient design review or testing.  Revert until the regressions can be sorted out.

Bug 8585185


This reverts commit 6dacf8355a0692b52c49f603f43317772cb36175

This reverts commit f8c033db1edf36a0ab09568c3142054f0be2d1a1

Change-Id: Ie7215bdf881332e822603547e92f810f595077fc
2013-04-14 02:56:03 +00:00
Jason Sams
02d56d90e0 Unhide new RS APIs.
This exposes the fast path handling of YUV data.

bug 8566866

Change-Id: Iaa3700100db61dd51d16d80ea8ae22f2dcc41bb0
2013-04-14 02:51:57 +00:00
Dianne Hackborn
de1fae77b6 am 00c4c670: am 301e95f2: Merge "Add a little more resource load tracing." into jb-mr2-dev
* commit '00c4c67069b9d13005ae072b8744c728aa73f99a':
  Add a little more resource load tracing.
2013-04-12 18:09:58 -07:00
Dianne Hackborn
0acc1931d3 Add a little more resource load tracing.
Change-Id: Id797adb67ab411d5b1a1c223863d3bb4655d10b1
2013-04-12 17:49:17 -07:00
Tim Murray
d7fec6edad am f151a541: am d6b8a035: Merge "Add support for synchronous get()." into jb-mr2-dev
* commit 'f151a5411eb6afd104daac10b3e43f5e3a60c61d':
  Add support for synchronous get().
2013-04-12 13:11:45 -07:00
Tim Murray
d6b8a03533 Merge "Add support for synchronous get()." into jb-mr2-dev 2013-04-12 20:03:52 +00:00
Tim Murray
e1f8089a94 am 5c18ff0f: am 869d2735: Merge "Fix issues with GC thread." into jb-mr2-dev
* commit '5c18ff0f2b9eab8481acfe13603e253e9c16fb32':
  Fix issues with GC thread.
2013-04-12 00:10:47 -07:00
Tim Murray
869d273503 Merge "Fix issues with GC thread." into jb-mr2-dev 2013-04-12 07:04:08 +00:00
Tim Murray
6dacf8355a Fix issues with GC thread.
bug 8600533

Change-Id: I356902ee9897daeb2c1090815beeb572234c81e7
2013-04-11 22:04:26 -07:00
Jason Sams
5a15136572 am 4e9ce36e: am c876cc49: Fix docs typo in YUV code
* commit '4e9ce36ee03a2a27f6f80c460385a748566cde41':
  Fix docs typo in YUV code
2013-04-11 20:47:25 -07:00
Jason Sams
c876cc4994 Fix docs typo in YUV code
bug 8566866

Change-Id: I9da6d237b0a109b2c0799a41e531a0344cc19d40
2013-04-11 20:22:31 -07:00
Jason Sams
ca22277d33 am d4b1b98d: am a2f289a4: Merge "USAGE_IO_INPUT buffer notifications" into jb-mr2-dev
* commit 'd4b1b98dfd9090cf8ccf7e713d0cca9049cb10a2':
  USAGE_IO_INPUT buffer notifications
2013-04-11 19:27:15 -07:00