Commit Graph

54 Commits

Author SHA1 Message Date
Stan Iliev
564ca3e2c9 Reland "TextureView Vulkan support and optimized OpenGL draw"
Fix an issue with incorrect texture matrix, when there is 90/270 rotation.
This happened, because after refactoring SkImage has buffer width/height,
instead of layer width/height.
This reverts commit a683eb3945.

Bug: 113673613
Test: Ran TextureView CTS and lensblur in camera app
Change-Id: If3bcf9cd5195de09fd67a753708568a8e3ca3a9a
2018-09-05 01:58:34 +00:00
Stan Iliev
a683eb3945 Revert "Revert "Revert "TextureView Vulkan support and optimized OpenGL draw"""
This reverts commit 85f9096b52.

Reason for revert: lensblur broken.

Change-Id: I83ac163159fc537bc15936a0f8597a7512ca9d6e
2018-09-04 15:42:18 +00:00
Stan Iliev
85f9096b52 Revert "Revert "TextureView Vulkan support and optimized OpenGL draw""
This reverts commit 867c43de05.

Reason for revert: Fixed issue with unsupported hardware buffer formats by landing https://skia-review.googlesource.com/c/skia/+/150470 "Support more hardware buffer formats"

Bug: 113673613
Change-Id: I1f7c528f138e290160e75833c8d989d9535002ee
2018-08-31 22:13:15 +00:00
John Reck
867c43de05 Revert "TextureView Vulkan support and optimized OpenGL draw"
This reverts commit c8e22a6532.

Reason for revert: broke camera, b/113555199

Bug: 113555199
Change-Id: Iae9b462694d5de0cd99427afead63b567fb4d71d
2018-08-30 18:42:08 +00:00
Stan Iliev
c8e22a6532 TextureView Vulkan support and optimized OpenGL draw
Render TextureView as hardware bitmaps, instead of GL textures.
Cache SkImage for each observed GraphicBuffer, which is faster
even for GL.
Implement C++ SurfaceTexture, which allows Java SurfaceTexture
to be used with Vulkan HWUI render thread and application GL.
threads. Delete GLLayer and VkLayer classes and texture code
from old HWUI pipeline.

Test: Ran skiagl and skiavk pipeline with a TextureView app.
Test: TextureView CTS tests pass for GL pipeline.
Test: Ran Android NDK Native codec sample app.
Change-Id: Idc94f864ce2d34fd6ceff4be4fc7d3327e99879c
2018-08-29 10:22:03 -04:00
Leon Scroggins III
4f354e9388 IWYU for SkUnPreMultiply
Test: build

The Skia to Android master roll is due to not being able to find
SkUnPreMultiply. It must have been included transitively previously.
Include it directly to ensure it's defined.

Change-Id: I9eedce274f5329641a7ebcd65979f10861f17cb0
2018-05-11 13:19:37 -04:00
android-build-team Robot
404632bcf2 Merge "Pass full context to Minikin" 2018-05-04 19:34:57 +00:00
Seigo Nonaka
3a4217fb74 Pass full context to Minikin
Bug: 72461923
Test: atest CtsWidgetTestCases:EditTextTest
    CtsWidgetTestCases:TextViewFadingEdgeTest
    FrameworksCoreTests:TextViewFallbackLineSpacingTest
    FrameworksCoreTests:TextViewTest FrameworksCoreTests:TypefaceTest
    CtsGraphicsTestCases:TypefaceTest CtsWidgetTestCases:TextViewTest
    CtsTextTestCases FrameworksCoreTests:android.text
    CtsWidgetTestCases:TextViewPrecomputedTextTest
Test: minikin_tests
Test: hwui_unit_tests

Change-Id: Ic0827a85dbf1ab2b38d44514e400f524686748d2
2018-05-02 16:43:58 -07:00
Mike Reed
3ad4f8aef5 remove unused layout method in TestUtils
Test: make

Change-Id: I30f4406750d7dfc8fb0f6a8aa07229a7478219e2
2018-05-02 16:43:55 -04:00
android-build-team Robot
635dc181ed Merge "Respect a Layer's (e.g. SurfaceTexture) colorSpace when compositing" 2018-04-30 21:05:29 +00:00
Derek Sollenberger
be3876c434 Respect a Layer's (e.g. SurfaceTexture) colorSpace when compositing
This CL extracts the android_dataspace from the GLConsumer and converts
it to a SkColorSpace.  HWUI always expects to composite into an sRGB
destination so when we draw the layer we run the draw through a
colorFilter that converts the input colorSpace into that of the
destination.

Test: CtsViewTestCases
Bug: 78016220
Change-Id: Ic0446a0d861e86a5a9d0382346b57fcc45c8a61b
2018-04-30 15:53:46 -04:00
John Reck
1e51071240 Remove RenderThread from EglManager
Refactor to make EglManager re-usable.

Test: hwuiunit passes, hwuimacro works

Change-Id: Ie8e9398c703fada1dc5d8baca5f42485eadea202
2018-04-26 13:46:12 -07:00
John Reck
44627c264f So long OpenGLPipeline & OpenGLReadback (2/??)
Hello EglReadback

Test: hwuiunit & PixelCopyTests pass
Change-Id: I36a8cb45b11141b09e75a2e978ed13e336425625
2018-04-12 13:58:13 -07:00
John Reck
18f442eb2d Remove RenderPipelineType::OpenGL (1/many)
Just removes the define & all things referencing the define.

Test: hwui_unit passes
Change-Id: I3f98c271e23ef696c40addf260abdc0fb149a70d
2018-04-11 13:39:19 -07:00
Seigo Nonaka
a7a62d0b81 Merge "Remove mtOffset from drawTextRun" into pi-dev am: bc20993e4b
am: 17abcf0b76

Change-Id: Ib0dbce1bc5efe12193d0d9770830ed046c08869d
2018-03-15 06:49:49 +00:00
Seigo Nonaka
83143d005b Remove mtOffset from drawTextRun
Bug: 72998298
Test: atest CtsWidgetTestCases:EditTextTest
    CtsWidgetTestCases:TextViewFadingEdgeTest
    FrameworksCoreTests:TextViewFallbackLineSpacingTest
    FrameworksCoreTests:TextViewTest FrameworksCoreTests:TypefaceTest
    CtsGraphicsTestCases:TypefaceTest CtsWidgetTestCases:TextViewTest
    CtsTextTestCases FrameworksCoreTests:android.text
    CtsWidgetTestCases:TextViewPrecomputedTextTest

Change-Id: Ia886c1ce9f7387559d7fe00b34ce03378d56ecec
2018-03-15 04:09:19 +00:00
Derek Sollenberger
086994b6c5 Update legacy font renderer to use the updated method names from Skia
Part 2

Test: hwui_unit_tests
Change-Id: I749b0339dd05589d43e04b04e68df286b69884af
2018-03-09 17:06:21 +00:00
Derek Sollenberger
36b73a89f8 Update legacy font renderer to use the updated method names from Skia
Test: hwui_unit_tests
Change-Id: Ie7c823a135f17b851dbf7d3305f3f12591e93daf
2018-03-07 08:01:19 -05:00
Seigo Nonaka
783f961d2f Compute full text layout in MeasuredText and use it for drawing
The full layout is required for drawing text on UI thread.
To save this work, store the full layout result in MeasuredText and
compose the final layout from stored full layout if possible.

Currently justification/hyphenation is not supported but works normally
as before. Nothing changes on existing non measured text.

StaticLayout creation time for no style text (w/o patch -> w/ patch, N=30)
  MeasuredText Balanced Hyphenation  :    721,297 ->    720,657: (-0.1%)
  MeasuredText Balanced NoHyphenation:    550,588 ->    546,069: (-0.8%)
  MeasuredText Greedy Hyphenation    :    503,582 ->    498,009: (-1.1%)
  MeasuredText Greedy NoHyphenation  :    502,344 ->    498,507: (-0.8%)
  RandomText Balanced Hyphenation    : 19,351,802 -> 19,176,024: (-0.9%)
  RandomText Balanced NoHyphenation  :  8,033,830 ->  7,973,336: (-0.8%)
  RandomText Greedy Hyphenation      :  7,957,335 ->  7,927,316: (-0.4%)
  RandomText Greedy NoHyphenation    :  7,988,884 ->  7,929,717: (-0.7%)

StaticLayout.draw time for no style text (w/o patch -> w/ patch, N=30)
  MeasuredText NoStyled              :    644,453 ->    660,684: (+2.5%)
  MeasuredText NoStyled WithoutCache :  9,251,919 ->    648,992: (-93.0%)
  MeasuredText Styled                :  3,092,353 ->    870,702: (-71.8%)
  MeasuredText Styled WithoutCache   : 12,544,014 ->  1,114,557: (-91.1%)
  RandomText NoStyled                :    582,167 ->    572,092: (-1.7%)
  RandomText NoStyled WithoutCache   :  9,167,670 ->  9,056,447: (-1.2%)
  RandomText Styled                  :  3,064,490 ->  3,029,028: (-1.2%)
  RandomText Styled WithoutCache     : 12,314,863 -> 12,283,026: (-0.3%)

Test: minikin_test
Test: bit CtsTextTestCases:*
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit FrameworksCoreTests:android.text.MeasuredParagraphTest
Bug: 63897135

Change-Id: I7e6ec5c953d7d0f767aba4f61f94e62b6f3a3a2b
2018-01-23 17:45:55 -08:00
Stan Iliev
ec08381261 Refactor TestUtils::drawUtf8ToCanvas usage in macrobench tests
Set text encoding inside TestUtils::drawUtf8ToCanvas and use
TestUtils::drawUtf8ToCanvas instead Canvas::drawText.
This CL is a follow-up of ag/3287411.

Test: Ran macrobench tests
Change-Id: I1b2f014d17f26ccc8fbdae9cfeea4ac25fd4c51f
2018-01-03 15:30:37 +00:00
John Reck
1bcacfdcab Format the world (or just HWUI)
Test: No code changes, just ran through clang-format
Change-Id: Id23aa4ec7eebc0446fe3a30260f33e7fd455bb8c
2017-11-03 10:57:44 -07:00
Seigo Nonaka
7c93e86882 Make casting to bidi flags explicit
Bug: 65024629
Test: checkbuild
Change-Id: I0771036359cc1ee5471e9fd4da304598a2f8bf98
2017-10-26 11:43:15 -07:00
Chris Craik
09df887c90 Always flush renderstate in DeferredLayerUpdater::apply
Bug: 34206215
Test: hwui unit tests passing, manual test of TextureView video playback

Always flush renderstate to the GlLayer's texture, regardless of
whether updateTexImage has ever been called.

Change-Id: I3974dce9d90633a0299e6bc4259b76c622717c90
2017-02-15 17:22:22 +00:00
sergeyv
3e9999bd86 Explicitly destroy Layer in DeferredLayerUpdater on destroyHardwareResources()
Change-Id: I0987104eabda9a2a302b9e765213aad48f93aea4
Test: refactoring CL. Existing tests still pass
bug:33753499
2017-01-30 16:42:41 -08:00
Mike Reed
5e43898231 use new clipbounds api
Allows us to remove SK_SUPPORT_LEGACY_GETCLIPBOUNDS flag

Change-Id: I7c6665b4eb67c58fe747c07b8b87d58fe9b10120
2017-01-25 13:26:41 +00:00
Stan Iliev
c1db0e0ff7 Remove all calls to SkCanvas::getClipStack from HWUI unit tests
Refactor HWUI unit tests to not invoke SkCanvas::getClipStack,
because this Skia API is going to be deprecated.

Test: Build and ran sailfish-eng. Ran HWUI unit tests.
Change-Id: Iac277aa26fbe9e2a0860cde2dd43732ed1c4c4e3
2017-01-23 13:47:35 -05:00
Greg Daniel
98c78dad19 Update hwui_unit_tests to support running with Vulkan backend.
Added Macros for RENDERTHREAD_TESTS which run these tests using specific backends.
RENDERTHREAD_TESTS - Runs OpenGL, SkiaGL, and SkiaVulkan
RENDERTHREAD_SKIA_TESTS - Runs SkiaGL and SkiaVulkan
RENDERTHREAD_OPENGL_TESTS - Runs OpenGL

Test: manual running of hwui_unit_tests

Change-Id: Ia7420ee7a38803a15e2d58394d14b38cae8208d3
2017-01-18 09:12:31 -05:00
Leon Scroggins III
ee708facf1 Remove unnecessary dependency, and fix the chain
Test: No new tests. This should not affect behavior; only dependencies.

Font.h does not need to include SkGlyphCache.h, and doing so requires
a transitive dependency on external/skia/src/utils, which was not
intended. Forward declare it instead, and fix the build errors that
resulted.

Change-Id: Ifd09430bb848d51b139df0f0c06c63e7e48711eb
2016-12-13 08:27:19 -05:00
Stan Iliev
52771272f4 Add more Skia pipeline unit tests.
Add more Skia pipeline unit tests and fix an issue
in backdrop/content bounds clip logic.

Test: built and run angler-eng and HWUI unit tests.
Change-Id: Ie41f80ff7ce9802a4d76e8b14f1695dbc9771a2b
2016-12-12 14:13:16 -05:00
Stan Iliev
021693b967 Implement SkiaRecordingCanvas, RenderNodeDrawable and other drawables.
Implement SkiaRecordingCanvas, RenderNodeDrawable, GLFunctorDrawable,
LayerDrawable, StartReorderBarrierDrawable, EndReorderBarrierDrawable.
Move AnimatedRoundRect and AnimatedCircle in a separate file.
All Skia pipeline files are moved in hwui/pipeline/skia folder.
Add unit tests for RenderNodeDrawable, StartReorderBarrierDrawable,
EndReorderBarrierDrawable and SkiaRecordingCanvas.

Test: I tested manually on 6P devices and did run the unit tests.
Change-Id: If2a347bd1fc4689953822294ce5bf98c7f3f57c7
2016-10-31 14:27:02 -04:00
Derek Sollenberger
56ad6ec42f Remove LayerRenderer.
There is only one caller each for the static functions here so this
CL moves the logic to the caller.  Also by moving some of the code
into the pipeline it makes it easier for future changes to configure
how a pipeline handles a layer.

Change-Id: Ib735b5154325cbb658fd151f7a19dbf434ab44b7
2016-07-26 13:05:13 -04:00
sergeyv
7dc370bfe3 HWUI: add leak check for macrobench
Change-Id: Id2037921fdbe599b3c722f2e1d17b99f3b74361c
2016-06-17 14:34:22 -07:00
Chris Craik
df55ced813 Merge "Consume TextureView matrix safely" into nyc-dev am: 3839ab1
am: 2841963

* commit '2841963e51c7d75e27b57b7c29824df5c5b45da3':
  Consume TextureView matrix safely
2016-03-28 21:13:42 +00:00
Chris Craik
aafb01d8ad Consume TextureView matrix safely
Fixes: 27825042

TextureView's matrix may not be set at record time - delay using it
until on RenderThread, when deferring the op.

Change-Id: Icf8b55d656e304ec049ca803b042dc2359482db2
2016-03-28 10:12:37 -07:00
Chris Craik
0f0f6c21f4 Merge "Fix TextureLayer test" into nyc-dev am: fd39aa1
am: 716ae9c

* commit '716ae9c350d34fe12d610fec5ec11eef35cf4a93':
  Fix TextureLayer test
2016-03-26 00:25:24 +00:00
Chris Craik
243e85b2e4 Fix TextureLayer test
Fixes: 27823158

Change-Id: Ifed0d6119349662a23899935bfe5f3bacb361617
2016-03-25 15:36:43 -07:00
Derek Sollenberger
cab9d4e199 resolve merge conflicts of 928b30a to master
Change-Id: I476d653a00e62d171f29e1d5a2f800a0f3a75f00
2016-03-25 13:59:36 -04:00
Derek Sollenberger
79abbf22d4 Update HWUI tests to use minikin to layout fonts.
This update is a precondition for landing additional tests
that depend on the minkin layout implementation.

bug: 27675371
Change-Id: I9bb98bae6b39462246e42cf8acb968b7df05292d
2016-03-25 11:53:08 -04:00
sergeyv
2a0732996d Merge "Reland: Move text logic from jni to hwui level" into nyc-dev am: d8e91f6
am: b08bd4e

* commit 'b08bd4e2a3dedeee184e7de7436ecf0402653008':
  Reland: Move text logic from jni to hwui level
2016-03-22 00:21:31 +00:00
sergeyv
dccca44ffd Reland: Move text logic from jni to hwui level
Initial CL: https://googleplex-android-review.git.corp.google.com/#/c/886854/

Change-Id: I9dfd85fe1d2a2c44f4360c8a29fd58d80e6f31c8
2016-03-21 15:55:46 -07:00
Sergei Vasilinetc
4d808f5067 Merge "Revert "Move text logic from jni to hwui level"" into nyc-dev am: 6847953
am: 30e2bb8

* commit '30e2bb845a66c3103cb23fa01d616a84b6fa565d':
  Revert "Move text logic from jni to hwui level"
2016-03-21 21:14:57 +00:00
Sergei Vasilinetc
afbd0f1fef Revert "Move text logic from jni to hwui level"
This reverts commit a7f6bba1a3.

Change-Id: If4f36f87a85411b6128fd92d391313803ccaf9dd
2016-03-21 21:03:40 +00:00
sergeyv
f41fe9a859 Merge "Move text logic from jni to hwui level" into nyc-dev am: 49658d4
am: b568e44

* commit 'b568e44f1ba32a3e879a820558eeaf2c2349090e':
  Move text logic from jni to hwui level
2016-03-21 20:21:00 +00:00
sergeyv
a7f6bba1a3 Move text logic from jni to hwui level
bug:25865834
Change-Id: I2d8c9c9544afcb5ce1784f732aed3e54e0eda372
2016-03-17 09:48:57 -07:00
John Reck
bdd6a479c6 resolve merge conflicts of 9a9bb774cd to master
Change-Id: I4093e5c5449423370689e780e55905131ea6f182
2016-03-08 12:45:37 -08:00
John Reck
dc87c52cd5 Add leak-checking to unit tests
Initial pass at leak-detection on the unit
tests. Due to quirks in jemalloc we need
to run the leak check on both the main thread
and the RT thread to get decent leak coverage.

Change-Id: I0dce754aef5593f1ef5c3bed86e1168437a34b74
2016-03-08 10:20:28 -08:00
Ben Wagner
f4cf5d3b01 Use utf32_from_utf8_at instead of SkUTF8_NextUnichar.
Skia would like to make the SkUTF* methods private to Skia. This CL
makes this Android test code use Android methods for the same function.

Change-Id: I544847c70030c818aa72dd3ec21b1926834a3e78
2016-02-22 20:39:13 +00:00
Chris Craik
1bc4ee4506 Cleanup cached state in TestUtils::runOnRenderThread
Change-Id: I097217c80db5c509d97ef050633946110fccbc80
2016-02-19 15:57:45 -08:00
Chris Craik
e8c3c813b0 Fix TextDropShadowCacheTests and glyph_t everywhere
Change-Id: I943eae4e9408c77bdfba6304ba7ee3e862351a41
2016-02-08 22:45:22 +00:00
John Reck
f1dafb5962 Hard-abort tests if LOG_ALWAYS_FATAL
Bug: 26591625

Also fixes it so debuggerd runs and we get stacks

Change-Id: I55b376e6a4e12ddcd21fa251fbfe5bd521fc0985
2016-01-15 16:58:23 -08:00