Commit Graph

73 Commits

Author SHA1 Message Date
Derek Sollenberger
2173ea286a Export symbols for the newly exposed APEX/internal headers
Bug: 137655431
Test: CtsUiRenderingTestCases
Change-Id: I71c6d1a53ae080bf104848679ee62a77cf07c9fa
2020-02-20 21:50:06 -05:00
Derek Sollenberger
ee538a3a85 Cleanup header and build targets for libhwui clients.
Targets that will also be contained within the UI module
are allowed to access internal headers.  All other targets
that depend on libhwui are restricted to using the APEX headers.

Bug: 137655431
Test: CtsUiRenderingTestCases
Change-Id: Id92e9874dafb98bd79839d45ab8f22ab999689de
2020-02-20 21:50:06 -05:00
Leon Scroggins
69b9dcf528 Merge "AImageDecoder: Make create enforce int32_t dimensions" 2020-02-12 15:41:51 +00:00
Leon Scroggins III
2e6bedf937 AImageDecoder: Make create enforce int32_t dimensions
Bug: 135133301
Test: AImageDecoderTest

AImageDecoderHeaderInfo_getWidth/Height return an int32_t. Ensure at
creation time that the actual image dimensions will fit in int32_t.

In today's code, this should almost never happen:
- PNGs have their dimensions limited to 1000000
  - see PNG_USER_WIDTH_MAX and PNG_USER_HEIGHT_MAX in pnglibconf.h
- JPEGs are limited to 65500
  - see JPEG_MAX_DIMENSION in jmorecfg.h
- WebPs' dimensions are encoded in 14 bits
- GIFs' dimensions are encoded in 16 bits
- SkBmpCodec and SkWbmpCodec require dimensions to fit in 16 bits
- SkIcoCodec uses SkBmpCodec or SkPngCodec, so their limits are
  enforced
- libheif limits to a size smaller than int32_t

It might be possible for a DNG image to be larger, and some of the above
are configurable. Just in case, make AImageDecoder_create fail on such a
large image.

Change-Id: Id520dfbc0581f990c4f52cb6675e987bf71c558c
2020-02-11 17:01:46 -05:00
Leon Scroggins III
6eeca5c776 AImageDecoder: allow no color conversion
Bug: 135133301
Test: I5e8bdcdae6837db23c0f4ef08f931f3bebe0ce0d

Previously the default SkColorSpace for AImageDecoder was set to the
result of SkAndroidCodec::computeOutputColorSpace. If the image has a
profile that does not map to an SkColorSpace, it will return either
DISPLAY_P3 or SRGB. Using that at decode time will result in color
conversion.

Instead, default to a null SkColorSpace for such a profile, resulting in
no color conversion. If the image has no profile, default to SRGB, as
usual.

A client that wants SRGB can still request and get that, but this allows
getting the raw pixels for an advanced client that may want to do its
own conversion.

Change-Id: I489f31fef79dec11e97c8e8fb9207adb77a3d0c7
2020-02-04 16:11:25 -05:00
TreeHugger Robot
a4a8be3748 Merge "AImageDecoder: ensure that stride is pixel aligned" 2020-01-27 16:06:27 +00:00
TreeHugger Robot
795168a1b8 Merge "Update imagedecoder for header updates" 2020-01-23 18:58:16 +00:00
Leon Scroggins III
64301cbed1 Update imagedecoder for header updates
Bug: 135133301
Test: Ibf7c0e563feeb08ce6dbabb5e86ddb385c9dff54

Remove isAnimated and update parameters/returns to match
I93df851dd9fee2eb8d097e2158fb95003a0474db.

Change-Id: Ida2af1682b5f9b91e37079005391b1594239d345
2020-01-23 09:47:47 -05:00
Leon Scroggins
e609b0c82a Merge "Make getDataSpace fail instead of crash on recycled" 2020-01-22 23:04:23 +00:00
Leon Scroggins III
7871f4953a Rename AndroidBitmap_compress callback
Bug: 135133301
Test: No change in behavior, no new tests

Along with Id5d039761054cf8e7fb906624a277714c21156de, which does the
rename in the header, this does the rename in the impl.

Change-Id: I27244df241a8141b0fd39e02e778eef2975f4dc0
2020-01-22 15:18:36 -05:00
Leon Scroggins
569229f0bb Merge "Implement AImageDecoder dataspace methods" 2020-01-22 19:39:06 +00:00
Leon Scroggins
69bfed8d60 Merge "Update NDK methods for HARDWARE Bitmaps" 2020-01-22 19:37:36 +00:00
Leon Scroggins III
d894c59881 AImageDecoder: ensure that stride is pixel aligned
Bug: 147749998
Test: I902de3410c45a21cf27b48a02cdc5d514b7ada60

If the client uses a stride that is not pixel aligned, AImageDecoder
will crash internally trying to access the memory. Return a failure
instead of crashing. Rely on SkImageInfo to compute the minimum size
required, too.

Change-Id: Ia4d14d6209e6f4af74906ff43208fa83ac82cbcd
2020-01-22 14:18:12 -05:00
Leon Scroggins III
e5ace3f9cb Implement AImageDecoder dataspace methods
Bug: 135133301
Test: Iffe659e50078139188c3325545624640ae177cc2

Implement AImageDecoderHeaderInfo_getDataSpace, which reports the
default ADataSpace to decode to. It may report ADATASPACE_UNKNOWN, which
means that we've mostly left the colors in their original color profile.
This matches android.graphics.ImageDecoder/BitmapFactory, which would
use a ColorSpace named "Unknown". (It will standardize on DISPLAY_P3 for
some profiles, which again matches the Java classes.)

Implement AImageDecoder_setDataSpace, which allows specifying the
ADataSpace to decode to. It only supports explicit ADataSpaces.

Change-Id: Iba2f9e09531c23fae83ebe13cb9d18394ee3cd59
2020-01-21 13:27:58 -05:00
Leon Scroggins III
f8e41c5fc2 Make getDataSpace fail instead of crash on recycled
Bug: 135133301
Test: I32e9a257a63382629b25f64d1d0abe9682ddec70

Make sure the Bitmap is valid before trying to read its data space.

Change-Id: I0d075197ddc548143a4e4845cc5cc5d3b10d87c7
2020-01-21 11:51:09 -05:00
Leon Scroggins III
84a2afcbfb Update NDK methods for HARDWARE Bitmaps
Bug: 135133301
Test: I2c1e58c41e49c72fb4bdbc64989da103885d34bf

_getInfo now sets a bit in AndroidBitmapInfo.flags to indicate whether
the Bitmap has Config.HARDWARE.

For a HARDWARE Bitmap, its AHardwareBuffer can now be retrieved with
AndroidBitmap_getHardwareBuffer. Call AHardwareBuffer_acquire on the
buffer so it will not be deleted while the client is using it.

Change-Id: I9240c1928c1478053ecf7c252443a33dbd6fd6db
2020-01-21 11:51:03 -05:00
Leon Scroggins III
f89de63304 Implement AImageDecoder_computeSampledSize
Bug: 135133301
Test: If9ed79d8dcf1169369ba454723f4ac8d26427b7b
Change-Id: I4926188cf66e2693c09dd7f1197173441936080c
2020-01-19 21:22:18 -05:00
Leon Scroggins
83d7f05c66 Merge "Update AImageDecoder_getAlphaFlags return value" 2020-01-18 14:07:55 +00:00
TreeHugger Robot
c3d20c1935 Merge "Implement native compress API" 2020-01-17 19:23:46 +00:00
Leon Scroggins III
9010e8ba91 Implement native compress API
Bug: 135133301
Test: Ifbcb41388a48afc64bb22623bb7e981b288b2457

Refactor the bulk of Bitmap_compress into hwui/Bitmap::compress, so that
it can be shared by the new API. Update its enum to match the proper
style. Also make the enum a class so it does not need to have a special
return value for a bad parameter, which is now handled by the caller.

Add ABitmap_compress, which implements the new API by calling
hwui/Bitmap::compress.

Change-Id: Ia8ba4c17b517a05b664c6e317e235836473fd7f6
2020-01-16 22:21:10 +00:00
Leon Scroggins III
1ade46d272 Replace setAlphaFlags with setUnpremultipliedRequired
Bug: 135133301
Test: I48e49ee08ab1954eddf62ecae87942aeb128c10d

As described in I3381582e27894e1072db9b8635f3762b801f5d69, this is a
more sensible API.

In addition, remove unused methods on ImageDecoder.

Lastly, update AImageDecoder methods in the map to document which API
level they were introduced in.

Change-Id: I1aff544e8d6932b9ed0931a00da66a0aba6cd536
2020-01-16 12:17:56 -05:00
Leon Scroggins III
d8840bd9f0 Update AImageDecoder_getAlphaFlags return value
Bug: 135133301
Test: I2ea58bede5cf49a7947c96e7e6e37f967632ad6b

BAD_PARAMETER is a more sensible value than -1. The other return will
not be reached, but the code is clearer.

Change-Id: I4bee8f238f61a6c6cd13b5458f201f34d34315d9
2020-01-15 04:09:48 -05:00
TreeHugger Robot
1202d7ca24 Merge "Reland "Implement AndroidBitmap_getDataSpace"" 2020-01-14 22:30:17 +00:00
Leon Scroggins III
1994fcb2a0 Reland "Implement AndroidBitmap_getDataSpace"
Originally reviewed in Ie05a45da32b2fd670abdae35626cd6548cfb102c
(and reverted in I0b06312f6583f766512cc771a35d3d735debcce1)

Bug: 135133301
Test: I7a5fcb726fba0c832bbb86a424d7534a7cfa35b6

This supplements AndroidBitmap_getInfo, allowing NDK clients to know how
to interpret the colors in an android.graphics.Bitmap.

Only build android_bitmap.cpp on Android so that it can rely on
libnativewindow (which is Android-only) for data_space.h

Change-Id: I4b23c68c7e62ed733e95af6f76c47fecbc2c5747
2020-01-13 08:44:00 -05:00
Kweku Adams
10b2ddc1d2 Revert "Implement AndroidBitmap_getDataSpace"
Revert "Add AndroidBitmap_getDataSpace"

Revert "Test AndroidBitmap_getDataSpace"

Revert submission 9940762-_getDataSpace

Reason for revert: Breaks build: http://screen/kBMYHusKiOV.png
Reverted Changes:
Ie05a45da3: Implement AndroidBitmap_getDataSpace
I7a5fcb726: Test AndroidBitmap_getDataSpace
Ia46dfb39d: Add AndroidBitmap_getDataSpace

Change-Id: I0b06312f6583f766512cc771a35d3d735debcce1
2020-01-10 17:25:33 +00:00
Leon Scroggins III
407b544925 Implement new NDK image decoding apis
Bug: 135133301
Test: Ib84462ea5fa8a7779eaa44494775e182e52ecaca

Separate out the code for encodedFormatToString into a piece which
returns a const char* that can be used by AImageDecoder (with its own
header) and the part that the JNI code uses to convert that into a Java
String.

Change-Id: I4cf8bfb0aacfb8e22c3f9b1689bd614ed1253673
2020-01-10 09:27:38 -05:00
Leon Scroggins III
9732e29bce Create AAssetStreamAdaptor, for reading from AAssets
Bug: 135133301
Test: Ib84462ea5fa8a7779eaa44494775e182e52ecaca, once
      I4cf8bfb0aacfb8e22c3f9b1689bd614ed1253673 lands

AAssetStreamAdaptor lives in libjnigraphics, for use by AImageDecoder.

Change-Id: I4e2559c3c21c866d61fb431a0a1368150c7d39cb
2019-12-18 12:05:19 -05:00
Leon Scroggins III
9065a5fc42 Implement AndroidBitmap_getDataSpace
Bug: 135133301
Test: I7a5fcb726fba0c832bbb86a424d7534a7cfa35b6

This supplements AndroidBitmap_getInfo, allowing NDK clients to know how
to interpret the colors in an android.graphics.Bitmap.

Depends on I8e06071060ab19b103900ff04d60f1c3d3fccda9

Change-Id: Ie05a45da32b2fd670abdae35626cd6548cfb102c
2019-12-18 10:57:14 -05:00
Derek Sollenberger
6c41ab13d0 Consolidate NDK and APEX implementations
the NDK APIs are implemented in terms of the APEX APIs to
reduce the number of different implementations serving the
same fundamental purpose.

Bug: 137655431
Test: CtsGraphicsTestCases
Change-Id: Idc7b85403a7e546843b9c1d822acc0a1e740059a
2019-11-21 12:49:20 -05:00
dimitry
761fe1bc0d Apply version-script to libjnigraphics library
Hide unintentionally exported symbols, validate that symbols mentioned
in the map file actually exported by the library.

Bug: http://b/69603741
Test: make
Change-Id: I80ec35b715b28dea45ebfbd216130c2c946c6668
2018-11-15 16:37:14 +01:00
Chih-Hung Hsieh
618e17473c Merge "Work around b/24465209, do not pack relocation table." am: d01890df3c
am: d7f77b5a12

Change-Id: I4922e3c5c43d90b270a23c6fff343826941a4237
2018-05-24 14:44:52 -07:00
Chih-Hung Hsieh
eeb1ea86ce Work around b/24465209, do not pack relocation table.
Global flag --pack-dyn-relocs=android is used with clang lld.
For b/24465209, we need to override that with pack_relocations:false.

Bug: 24465209
Bug: 80093890
Test: build with USE_CLANG_LLD=true and run dlext.compat_elf_hash_and_relocation_tables
Change-Id: I9364feb4070d4f75705d8651d535c792fe6ad6f7
2018-05-24 09:31:50 -07:00
Ian Pedowitz
1cd8b5c6cb Merge "Fixing app compat issue b/72143978" am: 8353a39ecc am: 61bab24fa8
am: 1993c5618a

Change-Id: If6e67a008d02dc561982583a3819de1ef3e06e46
2018-01-19 05:35:27 +00:00
Ian Pedowitz
0c3c4d1c7d Fixing app compat issue b/72143978
Revert "Remove obsolete workaround."

This reverts commit 5e48241a95.

Bug: 72143978
Bug: 24465209
Test: Tested failing case on sailfish, reverted back all CL's since
Test: 3471433 for b/24465209 and apps open
2018-01-18 16:24:11 -08:00
Elliott Hughes
14c2ae4a6e Merge "Remove obsolete workaround." am: f448371208 am: 365604c300
am: 8ca799e22f

Change-Id: I6afd17cacebc896831f3b6049e850d671c2d7f73
2018-01-10 01:55:14 +00:00
Elliott Hughes
5e48241a95 Remove obsolete workaround.
Bug: http://b/24465209
Test: manually ran the app.
Change-Id: Id64e92875417e62ae225c3369cf6bf58048dcc97
2018-01-09 14:44:10 -08:00
Colin Cross
4ed3557b95 Convert libjnigraphics to Android.bp
See build/soong/README.md for more information.

Test: m -j
Change-Id: If302f63276fa815423f50df0f12c1700975dbc43
Merged-In: If302f63276fa815423f50df0f12c1700975dbc43
(cherry picked from commit 02a8657837)
2017-10-10 01:38:44 +00:00
Colin Cross
02a8657837 Convert libjnigraphics to Android.bp
See build/soong/README.md for more information.

Test: m -j
Change-Id: If302f63276fa815423f50df0f12c1700975dbc43
2017-10-09 13:54:10 -07:00
Derek Sollenberger
d938e5a2e2 Reduce overhead by combining libskia and libhwui into a single library.
This is a multiproject change as we need to both the libraries
themselves as well as those that had dependencies on libskia.so

Bug: 31971097
Test: compile only
Change-Id: Ie6ff1f4682d03289205f4d6048cde9f95c61a90f
2017-07-24 09:42:07 -04:00
Dan Willemsen
3dcf031866 Remove .(ll)ndk suffix from (ll)ndk_library
Soong handles these automatically now.

Bug: 33241851
Test: Android-aosp_arm.mk is the same before/after
Test: build.ninja is the same before/after
Test: build-aosp_arm.ninja is the same before/after
Change-Id: Ic10796e75bb886cc3f92c234714ab3e6c85112df
2017-04-10 12:54:37 -07:00
John Reck
00799f760d Fix NDK access to recycle'd bitmaps
Also kills off one user of GraphicsJNI.h!

Change-Id: Icbf979e485b3b6ec2f37e18ff654b8ff1e44fb35
Fixes: 34712423
Test: cts CtsGraphicsTestCases --test android.graphics.cts.BitmapTest#testNdkAccessAfterRecycle passes
2017-03-01 18:11:04 -08:00
Mathias Agopian
f1cb02e7b5 fallout of splitting rect.h out of libandroid.
- Main goal here: libandroid now links against 
libarect and export its includes.

- Also fix some wrongful makefiles that included 
headers without proper dependency list.

Test: built and booted device
Bug: 35164655
Change-Id: Iae17b966bba00fe53424486a75eebff468873787
2017-02-17 12:25:26 -08:00
Dan Albert
98e462df7d Unversion NDK stub libraries.
The system versions of these libraries aren't versioned yet.

Bug: https://github.com/android-ndk/ndk/issues/278
Test: make ndk
Change-Id: I74e988be8f60f8728a0bfa7360091cbd9f5b1186
2017-01-06 11:04:14 -08:00
John Reck
03b5d506bc Re-unite sources with their headers
Move all the includes for androidfw under
a common base path for that library instead
of frameworks/base/includes.

Also fixes -Werror issues that resulted in
no longer being -isystem.

Test: builds
Change-Id: Ic4312eb61b197af114dded5691d5ae1ec82923f7
Merged-In: Ic4312eb61b197af114dded5691d5ae1ec82923f7
(cherry picked from commit f6113af2d6)
2016-11-04 13:27:37 -07:00
Dan Albert
7ce8df32a7 Move libjnigraphics to ndk_library.
The headers are already migrated because they're in
frameworks/native/include/android, which was covered when migrating
libandroid.

Test: make native
Bug: http://b/30465923
Change-Id: I610dc6c613f2a408960088a86629073da38682a0
2016-09-27 13:59:05 -07:00
Dimitry Ivanov
ef9e04b210 am 66f5affb: Merge "Fix bug number for linker related workarounds"
* commit '66f5affbe41a49bedf35e73b7c7f482db6e2fa7b':
  Fix bug number for linker related workarounds
2015-09-28 18:23:56 +00:00
Dmitriy Ivanov
ad1cf03e80 Fix bug number for linker related workarounds
Bug: http:/b/24425865
Change-Id: Iba52acc99c8ff548ff875726988600ed230c988e
2015-09-28 10:37:49 -07:00
Dmitriy Ivanov
b5228ac076 Switch libjnigraphics.so to hash-style=both
Bug: http://b/19059885
Change-Id: I15f70b434b1d450e5b62ca7c204c628e2dc9edcc
(cherry picked from commit 2e84bc6948)
2015-05-08 14:18:38 -07:00
Dmitriy Ivanov
2e84bc6948 Switch libjnigraphics.so to hash-style=both
Bug: http://b/19059885
Change-Id: I15f70b434b1d450e5b62ca7c204c628e2dc9edcc
2015-05-08 21:07:29 +00:00
John Reck
ae2e8b4891 Add warning if an in-use Bitmap is reconfigured
Bug: 18928352

Also fix an issue around re-configure not properly handling
mPinnedCount in android::Bitmap

Change-Id: I1815b121f1474ad931060771bb1d52ef31d2aac7
2015-05-06 15:30:16 -07:00