Commit Graph

8686 Commits

Author SHA1 Message Date
Seigo Nonaka
373b15bda9 Fix double bolding
resolveStyle increases minikinStyle's weight value based on Skia's style
value. Since we compute Skia's style based on given weight value, we
should not add extra bold weight to minikinStyle.

This CL also fixes misunderstanding of base weight.
The base weight is only used for computing weight relative to the
weighted alias. Thus, base weight should not be updated except for
createWeightAlias method.

To be clear, this CL changes the function names but keeps the same
semantics as before.

Test: adb shell /data/nativetest/hwui_unit_tests/hwui_unit_tests
Test: am instrument -w -e class android.graphics.cts.TypefaceTest\
      android.graphics.cts/android.support.test.runner.AndroidJUnitRunner
Bug: 37880319
Merged-In: Ied73189b11792fb062da46f45afd2db664e6ecb4

Change-Id: I82350a1bfb99ce198b955f127949e21bccccb1cb
2017-05-09 04:10:07 +00:00
Sergey Vasilinets
01a5cc9004 Merge "Add StrictMode.noteSlowCall to calls that result in hw bitmap readback" into oc-dev 2017-05-05 19:31:53 +00:00
sergeyv
9fd259c9b0 Add StrictMode.noteSlowCall to calls that result in hw bitmap readback
bug:37748500
Test: BitmapTest:*inStrictMode
Change-Id: Ifea1c6f0c50ba2f409c96b7ccf7eb31c89ef81c8
2017-05-03 17:41:33 -07:00
Chris Craik
e681bf6b5c Make all FrameBuilderTests run on RT
Fixes: 33834637
Test: adb shell /data/nativetest/hwui_unit_tests/hwui_unit_tests  --gtest_filter=FrameBuilder.renderNode_OpenGL
Test: adb shell /data/nativetest/hwui_unit_tests/hwui_unit_tests  --gtest_filter=FrameBuilder.projection*

They essentially all use Caches, so making RT-only for safety. This
prevents crashes when trying to access Caches in a non-rt test, when
it's not guaranteed to be created.

Change-Id: I530c73d0ffe2d4f4ef53a46715f5bcca2c485f70
2017-05-03 10:55:29 -07:00
Chris Craik
8f4ac4ac05 Merge "Revert "Temporarily enable GL validation"" into oc-dev 2017-04-28 23:04:02 +00:00
TreeHugger Robot
ebd44d0076 Merge "Add conic support for Path#approximate" into oc-dev 2017-04-28 18:47:37 +00:00
TreeHugger Robot
e7172ff9fb Merge "AAPT2: Add workaround for non-standard package IDs" into oc-dev 2017-04-27 23:45:44 +00:00
Chris Craik
96202d56ad Add conic support for Path#approximate
Fixes: 37722722
Test: bit CtsGraphicsTestCases:PathTest
Test: bit CtsUiRenderingTestCases:android.uirendering.cts.testclasses.PathTests

Also adds static asserts to path-walking code, to avoid this problem
in the future.

Also adds annotations, since this is public API now.

Change-Id: Ic39b167968b98fd8197be2d0f9aca79949717237
2017-04-27 16:24:18 -07:00
TreeHugger Robot
f9dc09f4ea Merge "Disable Vulkan backend when running hwui_unit_tests." into oc-dev 2017-04-27 22:10:49 +00:00
Derek Sollenberger
0f89539de6 Disable Vulkan backend when running hwui_unit_tests.
The Vulkan backend fails to run on devices without vulkan drivers.
Until we can stub out the vulkan drivers for those devices we find
an acceptable solution.

Test: hwui_unit_tests on device w/out vulkan
Bug: 37422708
Change-Id: I3d7c21882053459f25ca1eb5648cdf5dfd4c333e
2017-04-27 11:30:20 -04:00
Adam Lesinski
4ca56978a9 AAPT2: Add workaround for non-standard package IDs
The dynamic ref table used to map build-time IDs to runtime IDs
is mainly used for shared resource libraries and has a few built-in
mappings (app 0x7f and framework 0x01).

Using a non-standard package ID like 0x80 causes a failure in package ID
lookup. The solution is to ship the dynamic_ref_table with an identity mapping
with any resource table that uses a non-standard package ID.

Adds some tests to ensure this works correctly.

Bug: 37498913
Test: make libandroidfw_tests
Test: make aapt2_tests
Change-Id: Ic3f67942384d34e7fdcbc94ded360e940e3ebc8a
2017-04-26 21:55:31 -07:00
Chris Craik
005275d238 Revert "Temporarily enable GL validation"
Fixes: 35387665
Test: none

This reverts commit b5544d0308.

Change-Id: I4cf3fa0c65aaee38d0fa9cfea15b72c8ef42acb1
2017-04-26 00:47:42 +00:00
TreeHugger Robot
7e44951bb7 Merge "Fix include" into oc-dev 2017-04-25 23:32:11 +00:00
Chris Craik
66c3a829dc Fix include
Bug: 35387665
Test: builds with HWUI_ENABLE_OPENGL_VALIDATION := false

Dependency on gl3.h was added while that header was auto-included for
error checking purposes. Add the include to enable us to disable gl
error checking.

Change-Id: Ic969da716e2323f8e42d20da8fd0a6fa653f9775
2017-04-25 13:42:53 -07:00
Matt Sarett
e07a91a8db Add unit test for Skia path behavior
Test: This is a test.
Bug: 35369941

Change-Id: Iaf21d3a903702f81a20e08e8b50b782f311ce7f3
2017-04-19 12:38:30 +00:00
Derek Sollenberger
190fe086df Merge "Remove round rect clipping optimization." into oc-dev 2017-04-18 16:06:41 +00:00
Chris Craik
c84824942d Disable crashing drop shadow tests
Bug: 36272398
Test: HWUI unit tests now run without crashing

Change-Id: I2877ed184640e5043d33b10605db71dde501fd2a
2017-04-17 13:58:22 -07:00
Derek Sollenberger
f7d98f436c Remove round rect clipping optimization.
This optimization fails to account for inverse fill.

Test: bit CtsGraphicsTestCases.CanvasTest
Bug: 37417782
Change-Id: I04adfa93542b1bd1f5d905c64bb40e521242e29d
2017-04-17 18:05:42 +00:00
Romain Guy
5545518123 Properly decode colors spaces in BitmapRegionDecoder
Reusing a bitmap with BitmapRegionDecoder would preserve the
previous color space. This change also tweaks color space
matching to make sure we pick Display P3 with parameter d=0.039
or d=0.04045

Bug: 36905374
Test: CtsGraphicsTestCases
Change-Id: I4d2d66e5babebb0b5ce5cbdc7e8244177b4b7f9c
2017-04-15 21:41:22 -07:00
Matt Sarett
ca9b703b88 Bug fix: use legacy SkCanvas regardless of color space tag
Test: Added unit test. CtsGraphicsModule.

Bug: 32984164

Change-Id: If72e1e31c98e01f97f3a05d763f5d4c71cf88313
2017-04-14 16:26:50 +00:00
Seigo Nonaka
d154829cb1 Use provided style for fallback font selection
If the developer gives some weight/italic to the Typeface.Builder
the fallback used the metadata in the font file. We should use
provided data instead.

This CL also adjusts upper and lower limits on weight, from 100..900 to
1..1000

Bug: 37257745
Bug: 37251569
Test: android.graphics.cts.TypefaceTest passes
Change-Id: I7cf390d96b49afcce359928373698b0c9a9babd8
2017-04-14 00:54:46 +00:00
Jim Van Verth
1be9766a68 Merge "Add uncached and perspective shadows to Skia renderer" into oc-dev 2017-04-13 20:01:47 +00:00
TreeHugger Robot
729a515e5e Merge "Introduce setFallbackTypeface" into oc-dev 2017-04-13 19:21:25 +00:00
Seigo Nonaka
5b6347a6af Introduce setFallbackTypeface
setFallbackTypeface is returned by Builder.build() method when the
provided font is not loaded due to some reasons.
The fallback family is resolved with width/italic passed to Builder.

Bug: 36794225
Test: android.graphics.cts.TypefaceTest passes
Change-Id: I65e220aca823fd815a52437b11c8e6dc952de8e2
2017-04-13 10:12:27 -07:00
Matt Sarett
44dc270830 Add SkiaCanvas::captureCanvasState()
Test: Verified bug is fixed.  Wrote unit test.

Bug: 37268771

Change-Id: I9deb7db353cd2129ad245e7f65419670463bb717
2017-04-13 11:11:11 -04:00
Jim Van Verth
5745a0a37f Add uncached and perspective shadows to Skia renderer
Test: manual - looked at FrameworkShadow app

Bug: 37300468
Change-Id: I72d820479141db2d83363747d9f76abbaca70d98
2017-04-13 13:15:12 +00:00
Derek Sollenberger
eb69cbbe22 Change behavior of setBitmap to cleanly reset the canvas
- identity matrix
 - no save stack
 - wide-open clip

This reverts commit 4f641d1e45

Test: bit CtsGraphicsTestCases:.CanvasTest
Bug: 36218535
Change-Id: Id11deb06e37d6df61f1f171d424ab150d812a7a8
2017-04-11 14:00:25 -04:00
Romain Guy
8242656f49 Color management, the missing pieces
Implement missing color management pieces for bitmaps:

- Bitmap.createBitmap(Bitmap src, ...) now creates a bitmap
  in the same color space as the source bitmap
- Bitmap.createScaledBitmap() now creates a bitmap in the
  same color space as the source bitmap
- Bitmap.createBitmap(..., ColorSpace colorSpace) to create
  bitmaps in a specific color space
- Fix copy from A8 to F16
- Copying bitmaps in F16 or with a color space does not work,
  it's currently a limitation in Skia

Bug: 36905374
Test: BitmapColorSpaceTest
Change-Id: I0092fe4432511db50daa3a9393389a9db05e0c2a
2017-04-07 07:56:14 -07:00
TreeHugger Robot
c273784c91 Merge changes I6f00614d,I987eeab2 into oc-dev
* changes:
  Convert 16 bit bitmaps to 8 bit on devices that do not have GLES3.0
  Fix HardwareBitmapTests.testBitmapConfigFromRGB565
2017-04-06 21:21:59 +00:00
Romain Guy
89de234c72 Convert 16 bit bitmaps to 8 bit on devices that do not have GLES3.0
Bug: 37077308
Test: CtsUiRenderingTests (ran to manually emulate 2.0 devices)
Change-Id: I6f00614d79797835adcfe4716bd331573e1463e3
2017-04-06 12:24:29 -07:00
Romain Guy
7c98f5da3d Fix HardwareBitmapTests.testBitmapConfigFromRGB565
Bug: 37077304
Test: HardwareBitmapTests.testBitmapConfigFromRGB565
Change-Id: I987eeab243f93f9ee8fe8d1b6a12ddbd23225651
2017-04-06 11:00:21 -07:00
Matt Sarett
ea70d22dc8 Xform bitmaps to sRGB on SW and PDF canvases
For picture-backed canvases, we will defer the xform
until playback.

Test: Unit tests and cts test.
Bug: 32984164
Change-Id: Ib74663bcb688b74b6ba8792b403b0475126732af
2017-04-06 15:14:00 +00:00
Stan Iliev
d7410f7829 Fix pop-up shadow drawn in the wrong place with Skia pipeline
Fix a bug in DrawShadow matrix calculation. Recorded matrix does
not need to be applied, because parent display lists have already
replayed matrix transformations.

Test: added a new HWUI unit test that is passing only after this fix
Bug: 33103723
Change-Id: I7a47dbe879df6b9e5920a47c0e1168d9902a3e70
2017-04-04 16:24:55 -04:00
TreeHugger Robot
f9340ca491 Merge "Fix HWUI/Skia Gradients to premultiply the colors prior to interpolation" into oc-dev 2017-04-04 19:06:32 +00:00
Chris Craik
eabb5621dd Merge "Revert "Switch libplatformproto to sharedlib"" into oc-dev 2017-04-04 17:16:43 +00:00
Derek Sollenberger
669b15a935 Fix HWUI/Skia Gradients to premultiply the colors prior to interpolation
This is fixed in Skia by passing the appropriate flag when the shader is
generated.  The fix in HWUI is to reverse the premultiplication and
interpolation steps.

Test: bit CtsUiRenderingTestCases:.testclasses.ShaderTests
Bug: 34323783
Change-Id: I3417141949f62fcc696b6d8213a4b446d7d0cbf8
2017-04-04 12:07:28 -04:00
Chris Craik
817b494739 Revert "Switch libplatformproto to sharedlib"
Bug:36847782

This reverts commit e5549d414c.

Change-Id: I38f1c501b7e40be11ba5f0a7a50651e0c3e41fc5
2017-04-03 21:46:44 +00:00
TreeHugger Robot
72c2760943 Merge "Switch libplatformproto to sharedlib" into oc-dev 2017-03-30 16:42:36 +00:00
Romain Guy
33813bd439 Merge "Convert bitmaps to sRGB/scRGB when they have a color profile" into oc-dev 2017-03-30 01:42:32 +00:00
John Reck
e5549d414c Switch libplatformproto to sharedlib
libplatformprotos is really really unhappy if it gets
loaded twice into the same process which trivially happens
if it's a static library. Switch it to a shared library
instead to fix this.

Change-Id: I90297d076d0739bab683fbd9607d7fc0884a002d
Fixes: 36272398
Test: Ran hwui_unit_test, didn't crash
2017-03-29 18:41:27 -07:00
Adam Lesinski
33af6c730f AAPT2: Parse an ID encoded as a map
ID types should not be encoded as a map. AAPT and AAPT2 emit
IDs as boolean types.

Some apps exist that for some reason have their ID types encoded
as empty maps. This is the case only for the auto generated IDs
from enum values in <attr> tags.

Allow IDs as maps and ignore their content when processing an APK
for optimizing.

Also fixes an issue with expected size of the ResTable_package struct.

Bug: 35861796
Test: tested against the APK in b/35861796
Change-Id: I29a19cd9777bb10bed6766cd42e35e50e098797b
2017-03-29 20:11:04 +00:00
Romain Guy
caaaa66e57 Convert bitmaps to sRGB/scRGB when they have a color profile
This change also fixes an issue with RGBA16F bitmaps when modulated
with a color (for instance by setting an alpha on the Paint object).

The color space conversion is currently done entirely in the shader,
by doing these operations in order:

1. Sample the texture
2. Un-premultiply alpha
3. Apply the EOTF
4. Multiply by the 3x3 color space matrix
5. Apply the OETF
6. Premultiply alpha

Optimizations:
- Steps 2 & 6 are skipped for opaque (common) bitmaps
- Step 3 is skipped when the color space's EOTF is close
  to sRGB (Display P3 for instance). Instead, we use
  a hardware sRGB fetch (when the GPU supports it)
- When step 3 is necessary, we use one of four standard
  EOTF implementations, to save cycles when possible:
  + Linear (doesn't do anything)
  + Full parametric (ICC parametric curve type 4 as defined
    in ICC.1:2004-10, section 10.15)
  + Limited parametric (ICC parametric curve type 3)
  + Gamma (ICC parametric curve type 0)

Color space conversion could be done using texture samplers
instead, for instance 3D LUTs, with or without transfer
functions baked in, or 1D LUTs for transfer functions. This
would result in dependent texture fetches which may or may
not be an advantage over an ALU based implementation. The
current solution favor the use of ALUs to save precious
bandwidth.

Test: CtsUiRenderingTests, CtsGraphicsTests
Bug: 32984164
Change-Id: I10bc3db515e13973b45220f129c66b23f0f7f8fe
2017-03-28 18:35:49 -07:00
TreeHugger Robot
2c6ac0ead0 Merge "Add missing assert that task isn't queued" 2017-03-28 00:41:11 +00:00
TreeHugger Robot
55bea5e308 Merge "Add a few asserts for possible corruption cases" 2017-03-27 23:30:22 +00:00
John Reck
1b7184f8d2 Add a few asserts for possible corruption cases
Bug: 36502346
Test: builds & boots
Change-Id: Id96a26a30e4a8c6f51a68bf07cfe6bd6d07c244e
2017-03-27 14:47:46 -07:00
John Reck
2f944482ec Add missing assert that task isn't queued
Probably won't fix anything but this assert is in queue()
but not queueAtFront() and inserting a task twice is Really Bad.

Bug: 36139852
Test:  ¯\_(ツ)_/¯
Change-Id: Ida0f829eecfdd46c17c36b816528c49d12b7cf29
2017-03-27 21:38:09 +00:00
TreeHugger Robot
81ff6ee47a Merge "Register functor draw correctly" 2017-03-27 18:36:28 +00:00
Chris Craik
48f9bb6254 Register functor draw correctly
Bug: 36602041
Test: existing tests still pass

Change-Id: I9f385da89e9e49e562031578a02f13a68697e0df
2017-03-24 17:12:19 -07:00
TreeHugger Robot
bbf038bc5e Merge "Remove "Allow persistent changes to the vendor overlay theme"" 2017-03-24 22:25:20 +00:00
Robert Phillips
3c01a07fff Update RenderNodeDrawableTests to new onNewImageSnapshot API
Test: does it compiles

Change-Id: I55e3d7e2e59bfde88357fd455fe567d07c8a26b7
2017-03-23 12:29:39 -04:00