aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-03-09Merge "drm_hwcomposer: Merge remote-tracking branch 'aosp/upstream-main' ↵t_frc_odp_330442040t_frc_odp_330442000t_frc_ase_330444010android-13.0.0_r83android-13.0.0_r82android-13.0.0_r81android-13.0.0_r80android-13.0.0_r79android-13.0.0_r78android-13.0.0_r77android-13.0.0_r76android-13.0.0_r75android-13.0.0_r74android-13.0.0_r73android-13.0.0_r72android-13.0.0_r71android-13.0.0_r70android-13.0.0_r69android-13.0.0_r68android-13.0.0_r67android-13.0.0_r66android-13.0.0_r65android-13.0.0_r64android-13.0.0_r63android-13.0.0_r62android-13.0.0_r61android-13.0.0_r60android-13.0.0_r59android-13.0.0_r58android-13.0.0_r57android-13.0.0_r56android-13.0.0_r54android-13.0.0_r53android-13.0.0_r52android-13.0.0_r51android-13.0.0_r50android-13.0.0_r49android-13.0.0_r48android-13.0.0_r47android-13.0.0_r46android-13.0.0_r45android-13.0.0_r44android-13.0.0_r43android-13.0.0_r42android-13.0.0_r41android-13.0.0_r40android-13.0.0_r39android-13.0.0_r38android-13.0.0_r37android-13.0.0_r36android-13.0.0_r35android-13.0.0_r34android-13.0.0_r33android-13.0.0_r32aml_go_odp_330912000aml_go_ads_330915100aml_go_ads_330915000aml_go_ads_330913000android13-qpr3-s9-releaseandroid13-qpr3-s8-releaseandroid13-qpr3-s7-releaseandroid13-qpr3-s6-releaseandroid13-qpr3-s5-releaseandroid13-qpr3-s4-releaseandroid13-qpr3-s3-releaseandroid13-qpr3-s2-releaseandroid13-qpr3-s14-releaseandroid13-qpr3-s13-releaseandroid13-qpr3-s12-releaseandroid13-qpr3-s11-releaseandroid13-qpr3-s10-releaseandroid13-qpr3-s1-releaseandroid13-qpr3-releaseandroid13-qpr3-c-s8-releaseandroid13-qpr3-c-s7-releaseandroid13-qpr3-c-s6-releaseandroid13-qpr3-c-s5-releaseandroid13-qpr3-c-s4-releaseandroid13-qpr3-c-s3-releaseandroid13-qpr3-c-s2-releaseandroid13-qpr3-c-s12-releaseandroid13-qpr3-c-s11-releaseandroid13-qpr3-c-s10-releaseandroid13-qpr3-c-s1-releaseandroid13-qpr2-s9-releaseandroid13-qpr2-s8-releaseandroid13-qpr2-s7-releaseandroid13-qpr2-s6-releaseandroid13-qpr2-s5-releaseandroid13-qpr2-s3-releaseandroid13-qpr2-s2-releaseandroid13-qpr2-s12-releaseandroid13-qpr2-s11-releaseandroid13-qpr2-s10-releaseandroid13-qpr2-s1-releaseandroid13-qpr2-releaseandroid13-qpr2-b-s1-releaseandroid13-mainline-go-adservices-releaseandroid13-frc-odp-releaseandroid13-devandroid13-d4-s2-releaseandroid13-d4-s1-releaseandroid13-d4-releaseandroid13-d3-s1-releaseTreehugger Robot
into HEAD" am: bc74646e90 am: b52fbe0ff4 am: b8f24097f2 Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/2007868 Change-Id: Ie962b5ff821f166d79323474bc6fad66d930e8fa
2022-03-09Merge "drm_hwcomposer: Merge remote-tracking branch 'aosp/upstream-main' ↵Treehugger Robot
into HEAD" am: bc74646e90 am: b52fbe0ff4 Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/2007868 Change-Id: Ib5da17b7bcc3634a702eac2a3ee1deaec4c8b65b
2022-03-09Merge "drm_hwcomposer: Merge remote-tracking branch 'aosp/upstream-main' ↵Treehugger Robot
into HEAD" am: bc74646e90 Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/2007868 Change-Id: I1ba7f56aa6039b1ebedbb991c34af8465346e78c
2022-03-09Merge "drm_hwcomposer: Merge remote-tracking branch 'aosp/upstream-main' ↵Treehugger Robot
into HEAD"
2022-03-05drm_hwcomposer: Merge remote-tracking branch 'aosp/upstream-main' into HEADJohn Stultz
Sync AOSP's drm_hwcomposer branch to the upstream main branch. This includes a number of fixes and cleanups from Roman Stratiienko as well as fixes from Mauro Rossi. * aosp/upstream-main: drm_hwcomposer: Rework HwcDisplay disposal to avoid races drm_hwcomposer: Add test utility to listen for uevents drm_hwcomposer: Define DRM_FORMAT_XYUV8888 if missing drm_hwcomposer: fix sign-compare building error in uevent listener drm_hwcomposer: build with -std=c++17 cppflag drm_hwcomposer: Rename DrmDisplayCompositor->DrmAtomicStateManager drm_hwcomposer: Remove AtomicCommitArgs::clear_active_composition field drm_hwcomposer: Remove RCAR-DU specific code. drm_hwcomposer: Rework KMS composition planner + plane sharing support drm_hwcomposer: Implement SetActiveConfigWithConstraints drm_hwcomposer: Use single VSyncWorker per display drm_hwcomposer: Dynamic DrmDisplayPipeline to HwcDisplay bindings drm_hwcomposer: Initialize HwcDisplay using DrmDisplayPIpeline drm_hwcomposer: Fix PipelineBindable::BindPipeline drm_hwcomposer: Introduce DrmDisplayPipeline class drm_hwcomposer: Tidy-up DrmDevice class drm_hwcomposer: Tidy-up DrmConnector class drm_hwcomposer: Tidy-up DrmEncoder class drm_hwcomposer: Tidy-up DrmCrtc class drm_hwcomposer: Remove ability to prioritize primary display drm_hwcomposer: Handle primary display in GetDisplayConnectionType() drm_hwcomposer: Tidy-up DrmPlane class drm_hwcomposer: Simplify DrmHwcTwo::GetDisplay() drm_hwcomposer: Fix build_deploy.sh script Signed-off-by: John Stultz <john.stultz@linaro.org> Change-Id: Iba91e67371f4f1fc0a8cccf2ee97373898a5d195
2022-02-18drm_hwcomposer: Rework HwcDisplay disposal to avoid racesRoman Stratiienko
The code prior to this commit has a flaw: HwcDisplay::~HwcDisplay() { ... auto &main_lock = hwc2_->GetResMan().GetMainLock(); /* Unlock to allow pending vsync callbacks to finish */ main_lock.unlock(); At this point display is no longer in displays_[] list. After lock is released, hwc2 API thread starts to process transactions which may fail with BAD_SIAPLAY responce and cause SF to crash. vsync_worker_.VSyncControl(false); vsync_worker_.Exit(); main_lock.lock(); } 1. Rework the logic in order to avoid such scenariuos: 1.a. Temporary switch non-primary unplugged displays to headless state allowing remaining transactions to succeed without impacting the pipeline. 1.b. Give 100mSec delay before destroying / removing display from the displays_[] list to allow all pending hwc2 transactions to complete. 2. Support hotswap of the DrmDisplayPipeline, which makes primary display reattaching process smoother. Now SF should be able to gracefully remove all layers. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-02-18drm_hwcomposer: Add test utility to listen for ueventsRoman Stratiienko
Dumping uevents is useful for debugging purposes. 1. Extract logic related to uevent socket into utils/UEvent.h class. 2. Use it by both UEventListener.cpp and tests/uevent_print.cpp. Bump clang-tidy level of UEventListener.cpp to normal. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-02-15drm_hwcomposer: Define DRM_FORMAT_XYUV8888 if missingRoman Stratiienko
Fixes drm_hwcomposer build for Android-9. Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com> Change-Id: I14e931c37c3d09284dfd338e6482a27cf21e0e10
2022-02-15drm_hwcomposer: fix sign-compare building error in uevent listenerMauro Rossi
d26619b5 ("drm_hwcomposer: CI: Upgrade clang-* to v12") declared 'ret' as ssize_t but after commit 1e053b4e ("drm_hwcomposer: Make uevent listener standalone") drm/UEventListener.cpp is affected by the following builing error: external/drm_hwcomposer/drm/UEventListener.cpp:82:28: error: comparison of integers of different signs: 'uint32_t' (aka 'unsigned int') and 'ssize_t' (aka 'int') [-Werror,-Wsign-compare] for (uint32_t i = 0; i < ret;) { ~ ^ ~~~ 1 error generated. Fixes: 1e053b4e ("drm_hwcomposer: Make uevent listener standalone") Signed-off-by: Mauro Rossi <issor.oruam@gmail.com> [RomanS: Fixed CI nitpicks] Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com> Change-Id: Ia97d9019c21ac68be386a627cb101f6e423bbfc7
2022-02-15drm_hwcomposer: build with -std=c++17 cppflagMauro Rossi
Fixes the following building error: external/drm_hwcomposer/DrmHwcTwo.cpp:985:14: error: decomposition declarations are a C++17 extension [-Werror,-Wc++17-extensions] for (auto &[handle, layer] : layers_) { ^~~~~~~~~~~~~~~ 1 error generated. Signed-off-by: Mauro Rossi <issor.oruam@gmail.com> Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com> Change-Id: I236f16969e4500ff2efb79c06500bc4d3a3d810c
2022-02-11Empty merge of sc-v2-dev-plus-aosp-without-vendor@8084891 am: 90a2fedc47 am: ↵Xin Li
93fc130f6e Original change: https://googleplex-android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/16843079 Change-Id: Id88c20a07892ed2019b363162a3f70df6605d736
2022-02-11Empty merge of sc-v2-dev-plus-aosp-without-vendor@8084891 am: 90a2fedc47Xin Li
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/16843079 Change-Id: I3488a03b3502aafda50d66a9fc91d93d05d4864a
2022-02-11Empty merge of sc-v2-dev-plus-aosp-without-vendor@8084891Xin Li
Bug: 214455710 Merged-In: I95601c680ca1af0dc9d3b3f102f79f77af081b75 Change-Id: I96baa183ce57edeab2e627dbe9bfe061db37eb77
2022-02-09drm_hwcomposer: Rename DrmDisplayCompositor->DrmAtomicStateManagerRoman Stratiienko
Primary responsibilities of this class are: 1. Send composition/mode/active state over DRM atomic commit IOCTL to the kernel 2. Track commit state and keep planes owned by the Pipeline while they are either displayed or staged for displaying. 3. Keep framebuffers alive while they are in use or staged. Not much related to composition itself, therefore rename it to DrmAtomicStateManager and move it to drm folder. Bump clang-tidy level of DrmAtomicStateManager.c to normal by fixing minor clang-tidy findings. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-02-09drm_hwcomposer: Remove AtomicCommitArgs::clear_active_composition fieldRoman Stratiienko
Now we can use empty DrmKmsPlan to achieve the same goal. + Remove unused HwcDisplay::ClearDisplay() Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-02-04drm_hwcomposer: Remove RCAR-DU specific code.Roman Stratiienko
We are not testing it for more than year, therefore it's better to use generic logic for 'rcar-du' instead. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-02-04drm_hwcomposer: Rework KMS composition planner + plane sharing supportRoman Stratiienko
Rewrite Layer-to-Plane planner. Get rid of ~200 redundant lines of code + added plane sharing functionality. Closes: https://gitlab.freedesktop.org/drm-hwcomposer/drm-hwcomposer/-/issues/11 Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-02-04drm_hwcomposer: Implement SetActiveConfigWithConstraintsRoman Stratiienko
Enough to get 100% passes in Composer 2.4 VTS. Some SOCs require a VTS fix to pass [1] [1]: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1954544 Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-02-04drm_hwcomposer: Use single VSyncWorker per displayRoman Stratiienko
Composer 2.4 will require another vsyncworker callback to send VsyncPeriodTimingChanged event. It makes sence to use single VSyncWorker and flags to indicate which actions are required to perform. This should also save some runtime resources. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-02-02drm_hwcomposer: Dynamic DrmDisplayPipeline to HwcDisplay bindingsRoman Stratiienko
The following use scenarios are now possible: 1. When no display connected, primary HwcDisplay is created in headless mode. 2. When user connects first display, it binds to primary slot, replacing headless HwcDisplay. 3. When user connects another display it binds to the new HwcDisplay slot, creating new display for the framework. 4. When user disconnects first (Primary) display, drm_hwc detaches second display and attaches it to the Primary slot. In this case framework is notified as Primary display resolution updated (Plugged->Plugged transition). And second display is disconnected (Plugged->Unplugged transition). DrmDisplayPipeline is now created on demand (after hotplug event). HwcDisplay class is now destructed on connector unplug, which will give us ability to destroy any resource caches (will be required for FB caching logic). Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-02-02drm_hwcomposer: Initialize HwcDisplay using DrmDisplayPIpelineRoman Stratiienko
HwcDisplay can now take all necessary objects from DrmDisplayPipeline. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-02-02drm_hwcomposer: Fix PipelineBindable::BindPipelineRoman Stratiienko
We should assign weak pointer object to really take ownership. Fixes: cad8e0ca57c2 ("drm_hwcomposer: Introduce DrmDisplayPipeline class") Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-31drm_hwcomposer: Introduce DrmDisplayPipeline classRoman Stratiienko
Create systematic way of binding DRM objects (Crtc,Encoder,Planes...) to the pipeline using RAII. Use it to create the pipeline. + Allow pipeline creation to fail. Closes: https://gitlab.freedesktop.org/drm-hwcomposer/drm-hwcomposer/-/issues/14 Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-31drm_hwcomposer: Tidy-up DrmDevice classRoman Stratiienko
1. Move drm/DrmConnector.h to Normal clang-tidy checks list by fixing clang-tidy findings. 2. Remove DrmDevice self-reference. 3. Replace shared_ptr reference to DrmDevice in DrmFbImporter with a pointer, making ResourceManager only owner of DrmDevice and its chilren. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-31drm_hwcomposer: Tidy-up DrmConnector classRoman Stratiienko
Implement DrmConnector instantiation through CreateInstance() static method, which helps to reduce complexity of DrmDevice::Init() function. Move Connector-to-CRTC binding information to the DrmDevice class. Move drm/DrmConnector.h to Normal clang-tidy checks list by fixing clang-tidy findings. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-31drm_hwcomposer: Tidy-up DrmEncoder classRoman Stratiienko
Implement DrmEncoder instantiation through CreateInstance() static method, which helps to reduce complexity of DrmDevice::Init() function. Move Encoder-to-CRTC binding information to the DrmDevice class. Move drm/DrmEncoder.h to Normal clang-tidy checks list by fixing clang-tidy findings. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-31drm_hwcomposer: Tidy-up DrmCrtc classRoman Stratiienko
Implement DrmCrtc instantiation through CreateInstance() static method, which helps to reduce complexity of DrmDevice::Init() function. Move CRTC-to-Display binding information to the DrmDevice class. Move drm/DrmCrtc.h to Normal clang-tidy checks list by fixing clang-tidy findings. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-31drm_hwcomposer: Remove ability to prioritize primary displayRoman Stratiienko
This feature isn't correctly fits hwc2 and SF requirements. Primary display prioritization shall be done by introducing ability to override internal/external connector type for any connector. 'vendor.hwc.drm.primary_display_order' property is no longer relevant. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-31drm_hwcomposer: Handle primary display in GetDisplayConnectionType()Roman Stratiienko
Primary display should always be internal. Closes: https://gitlab.freedesktop.org/drm-hwcomposer/drm-hwcomposer/-/issues/58 Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-31drm_hwcomposer: Tidy-up DrmPlane classRoman Stratiienko
This allow to throw away few lines from DrmDevice::Init() making it less complicated. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-31drm_hwcomposer: Simplify DrmHwcTwo::GetDisplay()Roman Stratiienko
Cosmetic change: make GetDisplay() non-static class method + use deduced return type. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-31drm_hwcomposer: Fix build_deploy.sh scriptRoman Stratiienko
Composer service has to be started again. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-26Merge remote-tracking branch 'aosp/upstream-main' into 'aosp/master' am: ↵Jason Macnak
e6295d18ec am: 5fb10fe25e am: f5cd75234b am: 16d955d1a3 Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1960322 Change-Id: I3e0778df499529a520dac41db62620f595382295
2022-01-26Merge remote-tracking branch 'aosp/upstream-main' into 'aosp/master' am: ↵Jason Macnak
e6295d18ec am: 5fb10fe25e am: f5cd75234b Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1960322 Change-Id: Ic5831c5f52773a10050b6f9daf7b3b91a107f59c
2022-01-26Merge remote-tracking branch 'aosp/upstream-main' into 'aosp/master' am: ↵Jason Macnak
e6295d18ec am: 5fb10fe25e Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1960322 Change-Id: Ic953f2f210d8b0b28fad969957ad73122abf5e22
2022-01-26Merge remote-tracking branch 'aosp/upstream-main' into 'aosp/master' am: ↵Jason Macnak
e6295d18ec Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1960322 Change-Id: I0e856981f1fcd3068af68015c9cd20350f011166
2022-01-25Merge remote-tracking branch 'aosp/upstream-main' into 'aosp/master'android-t-preview-2android-t-preview-1android-t-beta-3android-s-v2-beta-3android-s-qpr3-beta-1android-t-preview-1android-s-v2-beta-3android-s-qpr3-beta-1Jason Macnak
... to pull in f0c507f16b99ff9ac30fb1a95fd1d1c1c9eaf55a to fix crashes when display does not yet have a active mode. Bug: b/216148216 Test: launch_cvd --gpu_mode=gfxstream --hwcomposer=drm Change-Id: Ic75a1c8b516017d93dc9fdb1ef691b457fb61742
2022-01-20Merge "drm_hwcomposer: Merge remote-tracking branch 'aosp/upstream-main' ↵Treehugger Robot
into HEAD" am: 6ca311696d am: cdf90f5669 am: fb30bcf225 am: 09ba880487 Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1949446 Change-Id: I695716bccc232fee08fa39a38f29d9b0c4f9ec6c
2022-01-20Update OWNERS am: 6635fd594d am: 929de2719d am: 288d0f31e2 am: 14aec06fccDmitry Shmidt
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1956416 Change-Id: If475cb681edd145b8575b94d07e1fbb859748f76
2022-01-20Merge "drm_hwcomposer: Merge remote-tracking branch 'aosp/upstream-main' ↵Treehugger Robot
into HEAD" am: 6ca311696d am: cdf90f5669 am: fb30bcf225 Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1949446 Change-Id: I47e757287b79d8a4524db06f0e3ab3715f20eef4
2022-01-20Update OWNERS am: 6635fd594d am: 929de2719d am: 288d0f31e2Dmitry Shmidt
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1956416 Change-Id: Iaf8a48f4e7a35377da0ad5b50f5f1b0b5c84780e
2022-01-20Merge "drm_hwcomposer: Merge remote-tracking branch 'aosp/upstream-main' ↵Treehugger Robot
into HEAD" am: 6ca311696d am: cdf90f5669 Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1949446 Change-Id: Ie31c6953a009a03da4a616dc0dc34c16d1778737
2022-01-20Update OWNERS am: 6635fd594d am: 929de2719dDmitry Shmidt
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1956416 Change-Id: I2c9bbdf037b20f1163ea9ab2475c39643b148298
2022-01-20Merge "drm_hwcomposer: Merge remote-tracking branch 'aosp/upstream-main' ↵Treehugger Robot
into HEAD" am: 6ca311696d Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1949446 Change-Id: I312356facb8fac168d1af22615c3c56877470fa9
2022-01-20Update OWNERS am: 6635fd594dDmitry Shmidt
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1956416 Change-Id: I81ac59cb0b4ea550583ea2eb36ba7143b38173c3
2022-01-20Merge "drm_hwcomposer: Merge remote-tracking branch 'aosp/upstream-main' ↵Treehugger Robot
into HEAD"
2022-01-20Update OWNERSDmitry Shmidt
Add dimitrysh@ and remove zachr@ Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> Change-Id: If807033e5a16752be759efbae9506767927f96e4
2022-01-20drm_hwcomposer: Remove utils/autolock.*Roman Stratiienko
AutoLock class is no longer used. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-20drm_hwcomposer: Remove write-back related helpers from DrmDevice classRoman Stratiienko
Remove unused functionality. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
2022-01-20drm_hwcomposer: Remove DrmDisplayCompositor:CreateInitializedCompositionRoman Stratiienko
Remove unused functionality. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>