Age | Commit message (Collapse) | Author |
|
tm-frc-art-release
Change-Id: I4edae1e5196da963d957eda024e0cbfb96d7726c
|
|
into HEAD" am: bc74646e90 am: b52fbe0ff4 am: b8f24097f2
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/2007868
Change-Id: Ie962b5ff821f166d79323474bc6fad66d930e8fa
|
|
into HEAD" am: bc74646e90 am: b52fbe0ff4
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/2007868
Change-Id: Ib5da17b7bcc3634a702eac2a3ee1deaec4c8b65b
|
|
into HEAD" am: bc74646e90
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/2007868
Change-Id: I1ba7f56aa6039b1ebedbb991c34af8465346e78c
|
|
into HEAD"
|
|
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
|
|
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>
|
|
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>
|
|
Fixes drm_hwcomposer build for Android-9.
Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
Change-Id: I14e931c37c3d09284dfd338e6482a27cf21e0e10
|
|
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
|
|
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
|
|
93fc130f6e
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/16843079
Change-Id: Id88c20a07892ed2019b363162a3f70df6605d736
|
|
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/16843079
Change-Id: I3488a03b3502aafda50d66a9fc91d93d05d4864a
|
|
Bug: 214455710
Merged-In: I95601c680ca1af0dc9d3b3f102f79f77af081b75
Change-Id: I96baa183ce57edeab2e627dbe9bfe061db37eb77
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
HwcDisplay can now take all necessary objects from DrmDisplayPipeline.
Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
This allow to throw away few lines from DrmDevice::Init() making it less
complicated.
Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
|
|
Cosmetic change: make GetDisplay() non-static class method + use
deduced return type.
Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
|
|
Composer service has to be started again.
Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
|
|
e6295d18ec am: 5fb10fe25e am: f5cd75234b am: 16d955d1a3
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1960322
Change-Id: I3e0778df499529a520dac41db62620f595382295
|
|
e6295d18ec am: 5fb10fe25e am: f5cd75234b
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1960322
Change-Id: Ic5831c5f52773a10050b6f9daf7b3b91a107f59c
|
|
e6295d18ec am: 5fb10fe25e
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1960322
Change-Id: Ic953f2f210d8b0b28fad969957ad73122abf5e22
|
|
e6295d18ec
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1960322
Change-Id: I0e856981f1fcd3068af68015c9cd20350f011166
|
|
... 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
|
|
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
|
|
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1956416
Change-Id: If475cb681edd145b8575b94d07e1fbb859748f76
|
|
into HEAD" am: 6ca311696d am: cdf90f5669 am: fb30bcf225
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1949446
Change-Id: I47e757287b79d8a4524db06f0e3ab3715f20eef4
|
|
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1956416
Change-Id: Iaf8a48f4e7a35377da0ad5b50f5f1b0b5c84780e
|
|
into HEAD" am: 6ca311696d am: cdf90f5669
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1949446
Change-Id: Ie31c6953a009a03da4a616dc0dc34c16d1778737
|
|
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1956416
Change-Id: I2c9bbdf037b20f1163ea9ab2475c39643b148298
|
|
into HEAD" am: 6ca311696d
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1949446
Change-Id: I312356facb8fac168d1af22615c3c56877470fa9
|
|
Original change: https://android-review.googlesource.com/c/platform/external/drm_hwcomposer/+/1956416
Change-Id: I81ac59cb0b4ea550583ea2eb36ba7143b38173c3
|
|
into HEAD"
|
|
Add dimitrysh@ and remove zachr@
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Change-Id: If807033e5a16752be759efbae9506767927f96e4
|
|
AutoLock class is no longer used.
Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
|
|
Remove unused functionality.
Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
|