summaryrefslogtreecommitdiff
path: root/libs/hwui/DeferredLayerUpdater.cpp
AgeCommit message (Collapse)Author
2021-05-26In Vk DeferredLayerUpdater make sure we releause buffers to foreign queue.Greg Daniel
For Vulkan we need to make sure that when we draw AHBs we must transition them to and from the foreign queue so that the producer is able to write new data to them and we are able to see the new writes. Test: Manual running of Lens app Bug: 178773035 Change-Id: I807709d2b671bf5a01a82237f3b5838734f0d978
2020-07-28Migrate from GrContext to GrDirectContextAdlai Holler
This is part of an effort to distinguish between different types of contexts in GPU Skia. When using a DeferredDisplayList (DDL) recorder, the context you get is not a direct context and cannot be used for operations like uploading or reading textures. Since Android does not use DDLs, it is not directly affected by this change but other APIs, such as SkImage::MakeFromTexture are being migrated to require a GrDirectContext to increase sanity. Change-Id: I9afbdf3c026a9f9cb6ad2aad904915e189e584d6
2020-07-16Fix TextureView calling eglCreateImage with a destructed bufferStan Iliev
Fix an issue with hardware buffer passed from the SurfaceTexture being destroyed before an SkImage is created. This CL is matched by a change in frameworks/native I2e025e683052168546f2e271a20a857b1e556b64. Test: Ran TextureView CTS tests and a few apps that use TextureView. Test: Fix verified by partner Mediatek Bug: 160930384 Bug: 152781833 Bug: 153045874 Bug: 156047948 Bug: 160514803 Bug: 155545635 Bug: 155171712 Change-Id: I4d121f087fc842ce317745e7b7e2656f80a52b7d
2020-01-17Refactor TextureLayer JNI to use only APEX APIsStan Iliev
Move ASurfaceTexture JNI implementation from libandroid to libnativedisplay. TextureLayer uses ASurfaceTexture_fromSurfaceTexture from libnativedisplay instead of libandroid_runtime code. libgui is no longer leaked through surface_texture_platform.h. DeferredLayerUpdater uses ASurfaceTexture_release instead of private ASurfaceTexture dtor. Test: pass CtsUiRenderingTestCases and CtsViewTestCases Bug: 147060713 Exempt-From-Owner-Approval: Changed only a header path in android_hardware_camera2_legacy_LegacyCameraDevice.cpp Change-Id: I9720d9c383f8120f9db116fd2b74fc241af84396
2019-11-08Decouple SurfaceTexture from HWUIStan Iliev
Remove all Skia and HWUI types from SurfaceTexture implementation. Move SurfaceTexture to libgui (ag/9578265). Define private C++ API for SurfaceTexture, which is consumed by DeferredLayerUpdater. Move AutoBackendTextureRelease/Skia code from SurfaceTexture to HWUI. Test: pass CtsUiRenderingTestCases and CtsViewTestCases Bug: 136263580 Change-Id: I3f971bb490f64a3ac0b2a66a89ba935bf7f08213
2019-06-21Move GL specific code away from headerFedor Kudasov
Bug: 117921091 Test: all tests should pass Change-Id: I124a17ac6a378029fc6836ad234bf45095675aae
2018-11-07Set the color space to sRGB on the Surface and remove colorFilter.Derek Sollenberger
Also for a canvas wrapping a bitmap the colorspace of the bitmap will be used to correctly blend content. Test: CtsUiRenderingTestCases Bug: 111436479 Change-Id: I63ad7a30605a7f725cc0ef4716d42ea978fb03e3
2018-09-20Refactor RenderState and remove unused functionality.Derek Sollenberger
Test: hwui_unit_tests still pass Change-Id: Ie943671535ab8c5da1bac05985e815e0cb842dc1
2018-09-10Refactor HWUI readback code to be backend independentStan Iliev
Implement readback from Surface, TextureView and HW Bitmap for Vulkan pipeline by wrapping the graphics buffer in an SkImage. Refactor both Vulkan and GL readback to use common code. TextureView readback is moved from IRenderPipeline interface to Readback class. Refactor all 3 readback flows to use common implementation. Test: Passed all view, uirendering and graphics CTS tests with GL Test: Passed many CTS test with Vulkan, that require readback Bug: 113673613 Change-Id: Ifbfd8170a5401f87a709b4b1b9fa058e8e11768d
2018-09-05Reland "TextureView Vulkan support and optimized OpenGL draw"Stan Iliev
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 a683eb3945320f592f58705c3c31b3c044f4bd72. Bug: 113673613 Test: Ran TextureView CTS and lensblur in camera app Change-Id: If3bcf9cd5195de09fd67a753708568a8e3ca3a9a
2018-09-04Revert "Revert "Revert "TextureView Vulkan support and optimized OpenGL draw"""Stan Iliev
This reverts commit 85f9096b5272c9a39e592e2e97cbbe6cb0e767ab. Reason for revert: lensblur broken. Change-Id: I83ac163159fc537bc15936a0f8597a7512ca9d6e
2018-08-31Revert "Revert "TextureView Vulkan support and optimized OpenGL draw""Stan Iliev
This reverts commit 867c43de0544217d26c3ee18f4d6603bb2ea97ce. 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-30Revert "TextureView Vulkan support and optimized OpenGL draw"John Reck
This reverts commit c8e22a653297837da9a80b0ba65f6854c8986c96. Reason for revert: broke camera, b/113555199 Bug: 113555199 Change-Id: Iae9b462694d5de0cd99427afead63b567fb4d71d
2018-08-29TextureView Vulkan support and optimized OpenGL drawStan Iliev
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-04-30Respect a Layer's (e.g. SurfaceTexture) colorSpace when compositingDerek Sollenberger
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
2017-11-03Format the world (or just HWUI)John Reck
Test: No code changes, just ran through clang-format Change-Id: Id23aa4ec7eebc0446fe3a30260f33e7fd455bb8c
2017-02-15Always flush renderstate in DeferredLayerUpdater::applyChris Craik
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-13DeferredLayerUpdater: clean up Layer lifecyclesergeyv
Test: refactoring CL, all existent tests should pass bug:34919311 Change-Id: Ib2889667a5ab8a2aaba443458782bc163467f0ea
2017-02-02Check if layer is created in detachSurfaceTexturesergeyv
Test: manual bug:34937475 Change-Id: Iaab7a341917456b40427efd2746d33ddd88514d1
2017-01-30Explicitly destroy Layer in DeferredLayerUpdater on destroyHardwareResources()sergeyv
Change-Id: I0987104eabda9a2a302b9e765213aad48f93aea4 Test: refactoring CL. Existing tests still pass bug:33753499
2017-01-18Update hwui_unit_tests to support running with Vulkan backend.Greg Daniel
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-10Add support for dummy draws for Vulkan webview and texture views.Greg Daniel
Test: manual testing Change-Id: Iaec8c3a34367673c281665ff6c6e97d1ce532265
2017-01-10Break Layer class into Gl and Vulkan subclassesGreg Daniel
Test: manual testing Change-Id: Ibd2beed39de3ac6da7448e96496253cfe427dfbb
2016-10-13use SkBlendMode instead of SkXfermodeMike Reed
use sk_sp versions of paint setters/getters Change-Id: I86591a0a8ec92e6039776cbf00424ea24f585b28
2016-07-26Remove LayerRenderer.Derek Sollenberger
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-07Delete old rendering pipelineChris Craik
fixes: 30002246 Change-Id: I45df0e924708526cee045b14c291bd23aa1a92db
2015-12-16Add TextureView support to new renderer/reordererChris Craik
bug:22480459 Change-Id: I2e4c0bc6b904706132f3f5087ededc9cac9b40fb
2015-10-01Move more utils into paintutilsChris Craik
Change-Id: I1eb3fd52386bc61a592da235533e40b509eeec24
2015-07-29Re-enable -Werror on clangJohn Reck
Change-Id: I582bd0665752c7a9deb4f9de094d0dd0a50cda6a
2015-05-20Eliminate requireGlContextJohn Reck
Bug: 20297820 Change-Id: I37c63bab6f6c0d2337c8c6002046d2ef17e74097
2015-03-10Track down unsupported texture targetChris Craik
bug:19641517 Change-Id: Idc2e413abef5bb1438ffb3f52efb001504d3e89f
2015-02-19Glop layer mesh renderingChris Craik
Change-Id: I2d902819d5d77f496b67d4d25a298782903e410d
2015-01-05Add overrides and switch to nullptr keyword for all filesChris Craik
Adds remaining missing overrides and nullptr usages, missed due to an extreme failure in tool usage. Change-Id: I56abd72975a3999ad13330003c348db40f59aebf
2014-11-21Cast buffer width and height to intDan Stoza
GraphicBuffer::get{Width,Height} are going to start returning uint32_t values soon, so add the cast now to avoid breaking the build later. Change-Id: Ied33700fdf81e8aecbad95d66583818d15987b93
2014-10-31Layer changesJohn Reck
Bug: 17208461 * Switch Layer to be VirtualLightRefBase instead of Caches' side-channel ref-counting * Include active layers in gfxinfo dump * Run gfxinfo dump on the correct thread * Dump gfxinfo on Layer creation failure Change-Id: I28d195699e2334518e215ab28c7a17355aee9678
2014-10-03Cleanup DeferredLayerUpdaterJohn Reck
Bug: 17765082 DeferredLayerUpdater had fallen behind RT updates. Re-snap to latest expectations, ensuring to call requireGlContext() prior to detachSurfaceTexture to avoid leaking SurfaceTextures Change-Id: Ic65fb9831e5284f658866da8da9ad5af1d227699
2014-06-27More cleanupsJohn Reck
Change-Id: Id5967944b949a2aec57e4fe9fdcdc04c11b8c35a
2014-06-26Animator refactoring & fixesJohn Reck
Tweaks animators to have less unnecessary refcounting Pull animator management out into seperate class More control to tweak animator lifecycle, such as doing Java-side handling of start delay by attaching but not starting the animator Change-Id: I4ff8207580ca11fb38f45ef0007b406e0097281c
2014-06-12Move LayerType to RenderNodeJohn Reck
Change-Id: Icb79a5015cb0362b1f3a66d09007450730135a97
2014-06-04Even FASTER damage calculations!John Reck
* Now with more native! * Less matrix math thanks to bulk-property-update support! * Zero JNI on the View.damageInParent() path! * Fully aware of RT-driven animators! * Likely full of new and exciting bugs! * But it also fixes at least 1 existing invalidate bug! Change-Id: Ie0773f85a60850ff2668370c58defef2e8aa079f
2014-05-30Re-jigger layersJohn Reck
Bug: 15185239 Bug: 15238382 Make DeferredLayerUpdater ref counted so that HardwareLayer:finalizer() works non-crashily on leaked layers Give DeferredLayerUpdater the ability to have a layer destroyer set so that leaked layers can still be recycled on the RenderThread Order layer updates based off of pushLayerUpdate() calls to fix issue with nested layers Change-Id: I4449cee607f7e5126e02fed7464cf48038e3dfdf
2014-04-14Fix issue with bitmap uploadingJohn Reck
Bug: 13912749 Change-Id: Ic23fa1d280118dc93dc2716a4a24cc0bbbdca595
2014-04-10Remove sync flushJohn Reck
Bug: 13952590 It was attempting to flush state changes after the canvas was destroyed, which caused layer updates to crash. Due to the removal of SetDisplayListData, the sync mode isn't able to do anything ever, so remove it. Change-Id: I1e18ce288d81fd47cc6e612afda9476f75ecef2e
2014-04-09Merge hasFunctors & pushStaging into prepareTreeJohn Reck
Bug: 13902607 Fixes synchronous mode for WebView in HardwareLayers Change-Id: I90de1e26dcfd9b75cc2f03bac72705fc23237b68
2014-04-09Switch DisplayListData to a staging modelJohn Reck
Bug: 13912977 Change-Id: I5b2f664e797be22a58300964f57ceb4fab60528c
2014-04-07Refcount RenderNodeJohn Reck
Change-Id: I7a86db8acc2b78ef33d987a43a119f5933d7d752
2014-03-27Async drawing!John Reck
Change-Id: I7e728356f58af88174328a8c0b90d27b128bfe01
2014-03-24Move where updateProperties is calledJohn Reck
Change-Id: I27da448996019094c44487ce28c5689d098d6535
2014-03-12Rename DisplayList->RenderNodeJohn Reck
Change-Id: Id42e23c9a1a6eb6eaeafef707ced7fa6887b03d0
2014-02-25Fix TextureView texture filtering.Chris Craik
bug:11748993 TextureView should always be drawn with linear filtering if drawing a buffer sized differently from the layer. This fixes a bug where TextureViews that were sized differently from their contents wouldn't be drawn with texture filtering, causing visible scaling artifacts. Change-Id: I8a5d27452fe7269ec53896992f37cff51e3ce15a