summaryrefslogtreecommitdiff
path: root/sdm/libs/hwc2/hwc_session.cpp
AgeCommit message (Collapse)Author
2018-02-09hwc2: null display mode supportVarun Arora
Adds null display support at HWC level. HWCDisplay will internally use DisplayNull object as display_intf_ when in null display mode via sdm debug property Change-Id: I160caff9c354e23e6c5849b661dc3c3bf6c41d20 CRs-Fixed: 2186932
2018-01-29sdm: Fix refresh seqeunce for QDCM solid fill colorGopikrishnaiah Anandan
Calibration tool issues binder call to display solid fill color onto screen for calibration. Acquire scope lock to ensure that there is no race condition between binder thread and display thread w.r.t solid fill color. Block the solid fill binder call with a delay to ensure that solid fill color is displayed. Change-Id: Ic0ee320e24dc662213531362b124ff7bbfdf4309
2018-01-19hwc: Fix cancel_lock conditionSaurabh Shah
Fix cancel_lock condition while coming out of validate. HWCDisplay can return Error::HasChanges code which is not an actual error Change-Id: Id5886b27baaba0e34fa3a0e8d919da7ac8a9e495 CRs-fixed: 2175020
2018-01-12Merge "hwc: Allow callback deregistration"Linux Build Service Account
2018-01-10hwc: Allow callback deregistrationSaurabh Shah
ComposerClient calls RegisterCallbacks() with nullptr to deregister callbacks when SF dies. Allow this operation to avoid crashes since HWC is still active. Change-Id: I431d232130ec8cfb06cc40e81ef4e733496aa442 CRs-fixed: 2165931
2018-01-04qdutils/hwc: Remove unused code surrounding fps calculationsSaurabh Shah
Remove unused code surrounding fps calculations from qdutils and hwc Change-Id: I1d78a26fdd582ae184fd7367cf692e472283fee1 CRs-fixed: 2157422
2017-12-18hwc2: Add missing locks, relax some locksSaurabh Shah
Currently calls forwarded to CallDisplayFunction and CallLayerFunction are not protected via a lock, causing races. Add scope lock. Relax sequence locks in SetPowerMode, Dumpsys and Create/Destroy layer to scope locks to avoid locks ups in cases where these get called from the same binder thread that called Validate. Change-Id: I22bfc13b61dc308208cb20e8b2f3c2f76dbcafd4 CRs-fixed: 2156131
2017-12-15Merge "display: Enhance debug logging"Linux Build Service Account
2017-12-01qdcm: apply color transform after QDCM mode setCh Ganesh Kumar
color inversion effect is cleared when QDCM display mode is set. restore color transform matrix when QDCM mode is set. Change-Id: I033422f4c6e97f28536498a03d55c79f5340019a CRs-Fixed: 2120150
2017-11-28display: Enhance debug loggingSaurabh Dubey
1) Enable dynamic debugging in DRM 2) Add more Qservice debug categories, add corresponding kTags 3) Use ALOG for messages before core creation and after it is destroyed 4) Categorize existing logs correctly 5) Add more logs Change-Id: I3a9907900c6546adca907ecf720a78649fdc800b Crs-fixed: 2146757
2017-11-22Merge "sdm: Handle pending external display connection"Linux Build Service Account
2017-11-22Merge "sdm: Fix SDM Dump() design and synchronization issues"Linux Build Service Account
2017-11-16sdm: Reset needs_validate_ when SurfaceFlinger shutdownBaldev Sahu
Composer keeps on calling refresh if this flag is set to true and SurfaceFlinger can not reconnect to it after restart. So clear this flag in case it is left set when sf goes down. Change-Id: I65119d567c0a3b65df22f10067993e39d8426523
2017-11-15sdm: Fix SDM Dump() design and synchronization issuesSaurabh Shah
SDM Dump() follows a DumpImpl based design that prevent it from being called via a lock held from HWC. This leads to synchronization issues since SDM's Dump() method accesses original layer stack members. This change removes the unnecessary DumpImpl based design and routes the flow to SDM's Dump() method with HWC's Dump() method. Change-Id: I9f255c061a2509a4e9d8c6bd446389df3e8f6549 CRs-fixed: 2139697
2017-11-13sdm: Handle pending external display connectionBaldev Sahu
Need to handle pending external display connection when HDMI is connected during wfd session. CRs-Fixed: 2082617 Change-Id: I07a10127409b3f24e8d38b624d9e1b222a51b0a3
2017-11-10sdm: LLVM SA enablementRamakant Singh
CRs-Fixed: 2077191 Change-Id: I23066befa5034523788a78edac9b335494d43019
2017-11-02Merge "hwc2: Array and enum boundary checks"Linux Build Service Account
2017-11-02Merge "hwc2: syncronize HWC & client(SF) state for DP"Linux Build Service Account
2017-10-31Merge "hwc2: Add input validation and bound checks."Linux Build Service Account
2017-10-31Merge "sdm: hwc2: Reset need_invalidate_ flag"Linux Build Service Account
2017-10-31hwc2: Array and enum boundary checksSaurabh Dubey
Change-Id: If7c888656cddd5b7f62e138b50e6f2bb69550376 Crs-fixed: 2114346
2017-10-30hwc2: syncronize HWC & client(SF) state for DPPrabhanjan Kandula
Since hotplug displays are bottom up, send HPD in right order based on type of hotplug event. In connect, create display->refresh->send hotplug In disconnect, send hotplug->refresh->destroy display Change-Id: I8a87964555e17609687934d8fa7d4ad8bf2e530a CRs-fixed: 2129671
2017-10-29Merge "hwc2: Add input sanity checks"Linux Build Service Account
2017-10-27sdm: hwc2: Reset need_invalidate_ flagUday Kiran Pichika
- Reset need_invalidate_ after refresh to avoid multiple refresh calls. Change-Id: I8ce7ef4c6a75527d4085962bc3242939fc73b6cb CRs-Fixed: 2133630
2017-10-24hwc2: Add input validation and bound checks.Arun Kumar K.R
- Validate the input parameters to hwc2 and check if they are with in the allowed bounds. - On the getter functions check the out counts before populating with output parameters Change-Id: Ifd41aa4d4a0b08e521fabfe54f308a59622d109c Crs-fixed: 2114346
2017-10-19Merge "hwc2: Parameter validation and bounds checks"Linux Build Service Account
2017-10-17Merge "hwc2: Validate input parcel values for few qclient methods"Linux Build Service Account
2017-10-17hwc2: Add input sanity checksMathew Joseph Karimpanal
Add input sanity checks and return appropriate error codes. CRs-Fixed: 2114346 Change-Id: I09cd043e3bc8289e15a922e4c967dc5c66e49c17
2017-10-10hwc2: Parameter validation and bounds checksVarun Arora
- Introduce use of GetDozeSupport Change-Id: Ic7edcd14b0c390fbd58f6be05b983a40b75c90eb CRs-Fixed: 2114346
2017-10-07Merge "hwc2: Fix NULL pointer dereference and out of bound access"Linux Build Service Account
2017-10-07Merge "sdm: Add support for compliance test mode for DP"Linux Build Service Account
2017-10-07Merge "hwc: Fix locking on event handling and validation state"Linux Build Service Account
2017-10-05hwc2: Validate input parcel values for few qclient methodsRohit Kulkarni
Validate values read from input parcel as part of handling of few qclient methods Change-Id: Icf928f409a5c2ac76a73e95de58cb0ebc59d24d5 CRs-Fixed: 2114346
2017-10-05hwc2: Fix NULL pointer dereference and out of bound accessRamkumar Radhakrishnan
Change-Id: Ib7a2ce818b1e6f5203f03138a95b2754ff446127 CRs-Fixed: 2114346
2017-10-05sdm: Add support for compliance test mode for DPRamakant Singh
1. Add functionality in qdutils to get the DP test config from the sysfs node. 2. Add support to generate ColorRamp, ColorSquare and Black and White vertical line test pattern for 18/24/30 bpp DP display 3. Create layer stack with test layer and ignore all layers from the SF framework. 4. Generate the pattern with 18/24/30 bpp based on pattern type and bpp read from sysfs node and send it to DP interface. 5. Add support to calculate CRC to validate the color pattern. CRs-Fixed: 1107663 Change-Id: I49469d94a96ada729d24d7cc03a7e79f2af6edc0
2017-10-02hwc: Fix locking on event handling and validation stateSaurabh Shah
Fix a small gap in locking on event handling where validation state was reset after lock scope was over. Also validation state was being reset for all displays even if event was for primary. This is incorrect since lock was only held for primary. Move validation state reset to be per display Change-Id: I24a8930d536a906d2b8adba35833774c03b59933 CRs-fixed: 1114808
2017-09-25hqd: add qservice binder for blocking dppsPrabhanjan Kandula
Dpps should wait opening driver before composer comes up. Add a wservice binder call to query composer init status. Add util function to block dpps until composer is up. Change-Id: I82c025011e23a0b159ef2449b00b868a365d681a CRs-fixed: 2102579
2017-09-13HWC: Granular lockingSaurabh Shah
Revert "hwc2: Allow non-atomic execution of validate and present apis" This reverts commit 6c26ba95607418a39f0b82ec1212df0e6e226852. Add per display granular locking in HWC to align with the Validate, Present call sequence from SF, that happens independently for each display and possibly on different threads. Change-Id: Ia092d7f6e6dc26ad22286a93de7b663e8bdf23d0 CRs-fixed: 2095334
2017-08-29hwc2: Handle missing hotplug event [HDMI as primary].Rajavenu Kyatham
- On boot if HDMI is connected, we are dropping the hotplug event which leads to SF crash CRs-Fixed: 2085392 Change-Id: I6a3025bc50db5a302079614c49bd850a3f71ce10
2017-08-21sdm: Support external display with bootupPrabhanjan Kandula
- Register for UEvents before core creation to support bootup with external connected. Drm driver resends hpd on device open. - Break on first match config for user selected video format. - In HPD event, explicitly check for DP string for now. Change-Id: I18917097c3077fbfcb30cec3ce345487eec03318 CRs-fixed: 2017766
2017-08-09sdm: hwc2: Support Skip Validate featureSushil Chauhan
1. Set HWC2_CAPABILITY_SKIP_VALIDATE cap in GetCapabilities api. 2. If HWC2_CAPABILITY_SKIP_VALIDATE cap is exposed by HWC HAL, then SF just calls PresentDisplay api. It is the responsibility of HWC HAL to request for ValidateDisplay, if it is required. If the cap is not exposed by HWC HAL, then there will be ValidateDisplay call followed by PresentDisplay. 3. In case of Surface Damage update on a layer, SDM needs a Validate call to program SDE driver for Partial Update feature. 4. SDM needs Validate call to enter in safe Mode for use cases like Idle / Thermal fallback, HDMI and Virtual Connect/Disconnet, etc. 5. In case of layer buffer geometry, metadata or secure attributes change, SDM needs Validate call to program the SDE driver. 6. SDM needs Validate call if GPU tonemapping is required on a layer during HDR Video playback. 7. Read user defined underscan width and height, when the External display gets created and initialized. 8. SDM needs Validate call for few APIs which are exposed by the Binder Interface or by HWComposer APIs, since they need re-configuration of SDE driver or they modify Panel / LayerMixer / Display configuration. 9. The feature is enabled by default. "sdm.debug.disable_skip_validate" system property can be set to '1' to disable the feature. CRs-Fixed: 2071632 Change-Id: I68f0db3af16afa4ad4eb789cd1f6b12caf6381e4
2017-08-09hwc2: Handle corner and error conditions properly.Arun Kumar K.R
- Make changes as per the hwc2 header to return correct error codes. - Check for comp types in SetLayerColor and SetCursorPosition and error out if they are not as the expected. - As per the HWC2 header, SetCursorPosition cannot be called after validateDisplay, hence return error when its called after validate and before present. - Handle Create and Destroy Virtual Displays accordingly. - Includes 017ba1f and 5e5da2(partially) from lnx.3.9-rel. Change-Id: I02814a266cf9d03017cdbb454233540cd01b1fed Crs-fixed: 2068942
2017-08-08hwc2: validate display id in SetColorModeByIdNaseer Ahmed
Change-Id: I239670334560b9db4ef781aac2612a86ea4363a9
2017-08-04hwc2: Wait for RegisterCallback() from SF before sending events.Ramkumar Radhakrishnan
Surfaceflinger registers callback functions to be called from hwcomposer on specific events like hotplug, vsync and screen refresh. since surfaceflinger and hwcomposer are two different processes that can run asynchronously. This causes hwcomposer to send an event to surfaceflinger before surfaceflinger registers callback and results in undefined behavior. So wait for callbacks to get registered by surfaceflinger and send an event to surfacelinger. Change-Id: I288e4d7dde8179cb4a119cdedad2877344c06dae CRs-Fixed: 2085392
2017-08-02Merge "sdm: Handle error on gralloc device open and close"Linux Build Service Account
2017-08-01Merge "sdm: Enable HPD after uevent_init()"Linux Build Service Account
2017-08-01Merge "sdm: hwc2: Add static uevent thread."Linux Build Service Account
2017-07-26sdm: Handle error on gralloc device open and closeRamkumar Radhakrishnan
Handle the error returned by gralloc open and gralloc close in Init() and Deinit() functions of HWCBufferAllocator to avoid NULL pointer dereferencing. Change-Id: I56dcb0d35747d98eabb1ce9408b98e5b55aa3417 CRs-Fixed: 2066748
2017-07-26hwc2: Remove unnecessary lock in QDCMNaseer Ahmed
Fixes regression from 6c26ba95 Change-Id: Iedaa2cb253bfcc286c9b2764ef510047edd5dcec
2017-07-25hwc2: Fix color mode lockNaseer Ahmed
Bug: 64020849 CRs-Fixed: 2082171 Change-Id: I2e9386e953ed764eb7f5924ed599a79fb5b3d911