1.Select the smaller downscaling ratio for both sides as
rotator needs do the same downscaling for both direction.
2. Use rotator to do the minimum downscaling first to get the
best quality. Use decimation when rotator downscaling is
not enough.
3. Assign z_order when doing resource configuration.
4. For non src split case, if two pipes are on one mixer,
need make sure right pipe has the different z_order.
Change-Id: I1b829545053c2b719da8b6b42c1e5341a5040bcc
1. Align rectangle to be even for video format input.
2. Align width and height for rotator downscaling case.
3. Validate scaling again after config is done because scaling ratio
might be changed.
4. Make sure layer count doesn't exceed mixer stage number.
5. Add sde.disable_rotator_downscaling property for disabling
rotator downscaling.
6. Add sde.disable_decimation property for disabling decimation
7. Disable 2 pipes on non-display_split case temporarily as z-order
needs be different
Change-Id: Iec20c292552b23ff1a4135a6be1695fa8fb737de
1. Lock prepare() and set() APIs using sequence entry and sequence
exit lock respectively to prevent the critical section being
accessed by other threads.
2. Wait for sequence wait lock on HotPlugEvent thread or any other
binder threads(Eg. dumpsys), before it accesses the critical region.
3. Prevent deadlock during multiple prepare() calls before a set().
Change-Id: I5443675c870ed2967615ec383dd2d59ded30b52b
1. Implement Buffer manager to allocate and deallocate output buffers
for rotator.
2. Assign buffer slot for each layer requires rotation and manage the
internal state of buffer slot in buffer manager.
3. Get the output buffer for each layer requires rotation from buffer
manager and associate the information along with that layer.
4. Create/Destroy the rotator session from the hint provided by buffer
manager. This is required to help driver to calculate the bandwidth
for the current frame.
5. Validate the rotator configurations and submit the rotation job
using rotator validate and rotator commit ioctl.
Change-Id: I1bc1de05042f64d5f32e95ac6226890fa4fabd24
1. Define an interface between hwcomposer and display engine to collect
systrace for a module in display engine.
2. Implement the functionality of conditional ATRACE_BEGIN/ATRACE_END
in hwcomposer.
Change-Id: I441d06397a2618f87f132c8037ca83d5fc13b07c
1. Set idle timeout value to driver through sysfs interface for
primary display.
2. Get notification about idle timeout from driver and fallback to GPU
composition.
3. Avoid idle fallback, if there is only one application layer.
4. Define a binder interface to set the idle timeout value through adb.
(Eg. adb shell "service call display.qservice 16 i32 70")
Change-Id: If0cfcbea140580803ad8a67ac9425db86c0f75bb
- Provide a debug hook to change resolution on HDMI.
- Config(edid) set by user is validated before setting and this
overrides the best mode
- Add max_attempts in strategy interface which will be used for
looping through the strategy selection which removes infinite loop
- Set Max SDE layers on HDMI as 2
- Fix incorrect sde layer index in Dump
Change-Id: I9ae1d0b115a06774470be5c0f9b78c4d930b7065
Only mark dedicate block for rotator allocation. Use
rotate array other than left_rotate and right_rotate.
Use bit mask to indicate rotation usage because rotation
can be shared by multi displays.
Change-Id: I70bd03250080a24dcf7f38c39dbd6391c0bba97c
In Resource Manager, add checks for:
1. Per pipe bandwidth
2. Overlap bandwidth of system
3. SDE Clock requirement of system
Change-Id: I01cff8d3252c874061a633817cf95e615394cfdb
1. Set output of SET_BIT and CLEAR_BIT to destination.
2. Remove kernel header dependency from hwc makefile.
Change-Id: Iad6f5776997064654178b54e0aba749576d85a50
1. Add a client for qservice in hwc and enable dynamic logging.
2. Remove common makefile and merge it to respective modules makefiles.
Change-Id: I582873c296d21ecd037225ac0be8177e52cc8cda
1. No Pipe resources available for any display, move to safe mode
composition for all displays, so that strategy manager selects
the composition mode which requires optimal resource.
2. Move back to normal mode once all the displays are configured
successfully with the resources for the current drawcycle.
Change-Id: Ic66d893a6ba50eb88cf8c70dae4df3772d47e1a0
- Add DisplayEventHandler to receive VSync event from driver.
- Add hooks to enable/disable VSync from client.
- Propogate VSync timestamp to the client
Change-Id: I27ea9773c424d8ad85f11f292ddd8792564bbcdc
1. Implement dump interface and provide hooks for adding
dump information from different modules.
2. Rename writeback session module to offline controller.
3. Merge logger.h functionality into debug.h
4. Rename DISPLAY_* as SDE_*.
Change-Id: I3e8df27a848475d067801037bcdc807561d35cc8