summaryrefslogtreecommitdiff
path: root/libs/ui
AgeCommit message (Collapse)Author
2025-03-19add ScreenPartStatus to displayIdentification Daniel Zheng
composer Hal 3 adds screenPartStatus to the DisplayIdentification parcelable. The struct used in the client side should be updated to reflect this. Flag: EXEMPT refactor Test: th Change-Id: I8fb7ee099b2c54f3a4708aa19b3169d74e403e4b
2025-03-13Introduce a dependency monitor for fences Alec Mouri
This allows for userspace logging for a buffer and read/write dependencies on the buffer. Hook up SF to the dependency monitor. Right now this _does_ emit logs in SF when the primary display is powered down, which is likely indicative of SF being sloppy about release fences in situations where tearing won't be noticeable, but I did verify that manually making screenshotting forget to merge GPU work into a layer's release fence, which has been one way SF's torn the screen, triggers logcat, which is ultimately what we want. Bug: 360932099 Flag: com.android.graphics.surfaceflinger.flags.monitor_buffer_fences Test: manually remove screenshot fence handling and check logs Change-Id: Ica391dfa8a4f2924bb72664b9d9399e4ad9e1747
2025-03-13SF: Remove PhysicalDisplayId::getPort() Gil Dekel
Work towards DisplayId opaqueness by eliminating call-sites to APIs that parse the display ID values directly. This CL removes PhysicalDisplayId::getPort from the PhysicalDislayId interface entirely. The only call-sites that are dependant on port are replaced with getting the port info via StaticDisplayInfo. Flag: com.android.graphics.surfaceflinger.flags.stable_edid_ids Bug: 390689635 Test: libsurfaceflinger_unittest Change-Id: I92ea4850b158f9c49dff9166a9b61565ad4537d7
2025-03-13SF: Remove *DisplayId::tryCast and DisplayId::isVirtual() Gil Dekel
Work towards DisplayId opaqueness by eliminating call-sites to APIs that parse the display ID values directly. This CL removes *DisplayId::tryCast from the DislayId interface entirely and replaces it with SF APIs that check for the existence of the displays before casting. This removes direct dependency on ID value bits. It also removes DisplayId::isVirtual(). Flag: com.android.graphics.surfaceflinger.flags.stable_edid_ids Bug: 390690584 Bug: 390689313 Test: libsurfaceflinger_unittest Change-Id: I918a6b361784e41165837234b82eed027dc46673
2025-03-10SF: Remove *DisplayId::tryCast usage from VirtualDisplaySurface Gil Dekel
Work towards DisplayId opaqueness by eliminating call-sites to APIs that parse the display ID values directly. One such site is VirtualDisplaySurface. Replace all calls to *DisplayId::tryCast with a VirtualDisplayIdVariant guard. Flag: com.android.graphics.surfaceflinger.flags.stable_edid_ids Bug: 390690584 Test: libsurfaceflinger_unittest Change-Id: I7ae9e838547c31ce09349e15f7d23e99f313646b
2025-03-10SF: Remove *DisplayId::tryCast usage from Output Gil Dekel
Work towards DisplayId opaqueness by eliminating call-sites to APIs that parse the display ID values directly. One such site is compositionengine::Output and its implementers, such as compositionengine::Display. Replace all calls to *DisplayId::tryCast with local calls to cached display state at the time of Output creation. Flag: com.android.graphics.surfaceflinger.flags.stable_edid_ids Bug: 390690584 Test: libcompositionengine_test && libsurfaceflinger_unittest Change-Id: I5524928e839e683184a878d08c2515e3d9d0593d
2025-03-04Move RingBuffer from SF utils into libui Alec Mouri
Stuff in libui or libgui or elsewhere upstack might want to use this. Also remove PowerAdvisor's RingBuffer implementation, since it's basically the same thing. Change-Id: I9d8d94fa0d7b8327b320ceed0d507b83979d033d Bug: 360932099 Flag: EXEMPT refactor Test: builds
2025-02-25Merge "Set right dimmingRatio for fp16 input layers without metadata" into main Alec Mouri
2025-02-12Merge "SF: Reject hotplugs on invalid or duplicate ports" into main Gil Dekel
2025-02-11SF: Reject hotplugs on invalid or duplicate ports Gil Dekel
When a HWC returns an invalid or duplicate port that collides with an existing active port, the end result is display identification confusion in higher layers of the stack. This is especially bad when the confusion is with the internal/primary display and causes it to malfunction. Reject hotplugs in which the reported port from HWC is already active. Flag: EXEMPT bugfix Bug: 383430671 Test: Display{Id | Identification}Test && libsurfaceflinger_unittest Change-Id: Id3569ef1d973f4ace51d14c7e3cc9aef17630b22
2025-02-07Merge "Remove lpy@google.com from libs/ui/OWNERS" into main am: 764ea01a7d ↵ Treehugger Robot
am: 47effc89c3 Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/3205775 Change-Id: I961855534ef14cf907bb95f4ac27a05a31bc10bd Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2025-02-07Merge "Remove lpy@google.com from libs/ui/OWNERS" into main Treehugger Robot
2025-02-06Merge "Remove client drawn shadow code" into main Cairn Overturf
2025-02-05SF: Turn DisplayId::fromValue to an explicit wrapper Gil Dekel
Currently, fromValue() would run a tryCast() check before returning an object, otherwise returning a nullopt. This is now an issue because tryCast() is reading the bits in the ID value, which is something we are trying to eliminate. Remove the tryCast() checks from fromValue(), thus relaxing it and turning it into a simple wrapper. Since fromValue() can no longer fail, make it always return the requested type. It is now up to SF to validate given DisplayIds via its different APIs. Flag: com.android.graphics.surfaceflinger.flags.stable_edid_ids Bug: 393193354 Test: Display{Id | Identification}Test && libsurfaceflinger_unittest Change-Id: I0858567a1769bd94609919bd64bc471f4310ae55
2025-01-29Set right dimmingRatio for fp16 input layers without metadata Alec Mouri
...since 1.0 == SDR white, we can program these layers by sending SDR/HDR as the dimmingRatio to map the degamma'd value at HDR/SDR to the max panel lux. It's a little counter-intuitive at first glance, because we're sending a dimming ratio < 1.0 for an HDR layer which looks like we're intending to dim the layer. But it makes sense just from the math: layer_luminance = panel_luminance * srgb_EOTF(layer_input) * (SDR_white / panel_luminance) = srgb_EOTF(layer_input) * SDR_white. For an entirely SDR layer, then the layer luminance is capped by SDR_white as desired, and for a layer that was rendered with an HDR/SDR ratio then the layer luminance cancels out to HDR_white == panel_luminance. And, we *are* dimming the layer: since for a full range layer 1.0 before this infrastructure was in place would have mapped to the max panel luminance. Now, the HDR/SDR ratio may have differed by the time we hit the panel (the layer is slightly in the past), but assuming the ratio changed slowly: * If HDR/SDR increased, then we dim the layer a bit more than the application intended, but the user does not notice because the SDR white point stayed the same; the application just used less headroom than it could have. * If HDR/SDR decreased, then we dim the layer less than the application intended, but the panel can just clip Bug: 236745178 Flag: com.android.graphics.surfaceflinger.flags.fp16_client_target Test: builds Test: courage Change-Id: I85a0d978f994d495e34dfbdd9dc7b03bd64f293c
2025-01-28Remove client drawn shadow code Cairn Overturf
Shadows will continue to be drawn by surfaceflinger Bug: 391428079, 375624570 Change-Id: Ic527a091e77d69c6e9529782d283379a2651dea8 Test: Shadows work in free form mode Flag: com.android.window.flags.ignore_corner_radius_and_shadows
2025-01-28SF: Add EDID-ID Fabrication Logic Gil Dekel
Adds logic to fabricate a display ID that is based solely on a given, pre-parsed EDID data. It does so by concatenating the EDID's generic fields, such as manufacturer ID, product ID, etc. as a string, and hash-combine them with the hashed values of the display serial numbers. All hash functions are stable in order to consistently reproduce display IDs when the same information is fed via the EDID blob. Flag: com.android.graphics.surfaceflinger.flags.stable_edid_ids Bug: 366042891 Test: N/A Change-Id: I7693d4b0ca9fee5ed190c3530a69300a8a530cd2
2025-01-23libs/ui: Remove getManufacturerId() from DisplayId Gil Dekel
There are currently no clients of DisplayId who use getManufacturerId(). This CL removes the parsing and serving of the manufacturer's ID from DisplayID's API, together with the only client getPnpId(PhysicalDisplayId), which also isn't use in real use cases (only tests). See: go/edid-display-ids-al13 Flag: com.android.graphics.surfaceflinger.flags.stable_edid_ids Bug: 390689046 Test: Display{Id|Identification} & libsurfaceflinger_unittest Change-Id: I03db2f6d71b32fcb387e99d9bc2730ab21760012
2025-01-23libs/ui: Remove isStable() flag from DisplayId Gil Dekel
There are currently no clients of DisplayId who use isStable(). This CL removes the parsing and serving of "stableness" of a DisplayId by removing the isStable() API, and all associated tests. See: go/edid-display-ids-al13 Flag: com.android.graphics.surfaceflinger.flags.stable_edid_ids Bug: 352320847 Test: Display{Id|Identification} & libsurfaceflinger_unittest Change-Id: I903fae86085001d32f77f34286c9f03ee481093b
2025-01-06surfaceflinger: Add clientDrawnCornerRadius and clientDrawnShadowLength ↵ Surbhi Kadam
layer properties Modify RoundedCornerState and ShadowSettings to account for client drawn corners and shadows. When equal to the requested values, SurfaceFlinger will not draw corners and shadows for the layer. Bug: 375624570 Flag: com.android.window.flags.ignore_corner_radius_and_shadows Test: atest SurfaceFlinger_test; manual test - PIP, freeform window, recents, app launch Change-Id: Idde115b51a253a34cfadfbd1ff6c7b15c44518ef
2024-12-13Merge "Merge 24Q4 into AOSP main" into main Xin Li
2024-12-13Merge "Add AHARDWAREBUFFER_FORMAT_YCBCR_P210..." into main Treehugger Robot
2024-12-10Merge changes from topic "make-displayid-opaque" into main Treehugger Robot
* changes: SF: Cache display port in physical DisplaySnapshot SF: Cache display port in DisplayIdentification on onHotplugConnect
2024-12-10Merge "fix potential leakage issues" into main am: 919ba007c9 am: 17bcaf2be6 Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/3381868 Change-Id: I4f7f3cec8c4fc3bf7c4ea6a9ca7b1614a25596e5 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-12-10Merge "fix potential leakage issues" into main am: 919ba007c9 Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/3381868 Change-Id: I6c417016e3c8ecacd6c0636519a2df3b94e0ecdd Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-12-09Add AHARDWAREBUFFER_FORMAT_YCBCR_P210... Dheepthi S
* To PublicFormat * To various checks in AHardwareBuffer Bug: 294442993 Bug: 370458610 Flag: EXEMPT NDK Change-Id: I7e82febd419bc9cd6cbd74ff6fef168d864eb784 Merged-In: I7e82febd419bc9cd6cbd74ff6fef168d864eb784
2024-12-06Add AHARDWAREBUFFER_FORMAT_YCBCR_P210... Dheepthi S
* To PublicFormat * To various checks in AHardwareBuffer Bug: 370458610 Flag: EXEMPT NDK Change-Id: I7e82febd419bc9cd6cbd74ff6fef168d864eb784
2024-12-03Merge "Add HEIC_ULTRAHDR image format" into main Treehugger Robot
2024-12-02SF: Cache display port in DisplayIdentification on onHotplugConnect Gil Dekel
In order to be able to remove direct dependencies on a DisplayId's int value, we have to find alternatives for the API it provides. One such piece of data is a display port, which is encoded directly in the ID int value. Cache the port as it is retrieved from HWC into DisplayIdentification so it can be served later via alternative ISurfaceComposer APIs. Bug: 374163881 Bug: 377307639 Flag: EXEMPT refactor Test: libsurfaceflinger_unittest Change-Id: If255418ed4047531417004c4a1fd710061d93685
2024-12-02fix potential leakage issues Xiao Zhang
If validating the size of the buffer fails during the flattening process of GraphicBuffer, fd leakage will occur; You can easily reproduce this problem when validating the size of the buffer fails or simply setting the error to non NOERROR. Bug: 381504577 Test: Manual Change-Id: I7e0ba4a889d6888cc5794a0f226f6638e104eb81
2024-11-21Merge "Adds getSupportedRefreshRates support" into main Ram Indani
2024-11-20Adds getSupportedRefreshRates support ramindani
Source values for refresh rates from the RefreshRateSelector through SurfaceComposerClient. Test: atest android.display.cts.DisplayTest BUG: 365163968 Flag: com.android.server.display.feature.flags.enable_get_supported_refresh_rates Change-Id: I149e6e51b3b3718ef53e522f1fca5650dbbd8b7b
2024-11-18Limit HLG to 4.926x SDR Alec Mouri
HLG is universally too bright on basically every single platform that supports HDR. Fix this for Android. Bug: 362510107 Flag: com.android.graphics.surfaceflinger.flags.begone_bright_hlg Test: HLG playback Change-Id: I5d464c016be62b11f6a3cc1ab228e14d198afb15
2024-11-16SF: Hash and cache descriptor block serial number Gil Dekel
More EDID fields are required as a part of migrating to EDID-based display IDs. This CL parses the device's serial number from the serial number descriptor bloc, (depicted by the FF marker), hashes it using a stable hash, and serves it as a part of the Edid struct. Later, amongst others, this value will be used to fabricate a unique display ID that is based on the display's EDID. See: 1. EDID spec: https://glenwing.github.io/docs/VESA-EEDID-A2.pdf 2. https://en.wikipedia.org/wiki/Extended_Display_Identification_Data#Structure,_version_1.4 Flag: com.android.graphics.surfaceflinger.flags.stable_edid_ids Bug: 378923759 Test: DisplayIdentification_test Change-Id: If9c9358b0d0850337496740d15419fd0ed330a02
2024-11-16SF: Parse, hash, and cache block 0 serial number Gil Dekel
More EDID fields are required as a part of migrating to EDID-based display IDs. This CL parses the device's serial number from bytes 12-15 of block 0 in the EDID blob, hashes it using a stable hash, and serves it as a part of the Edid struct. Later, amongst others, this value will be used to fabricate a unique display ID that is based on the display's EDID. See: 1. EDID spec: https://glenwing.github.io/docs/VESA-EEDID-A2.pdf 2. https://en.wikipedia.org/wiki/Extended_Display_Identification_Data#Structure,_version_1.4 Flag: com.android.graphics.surfaceflinger.flags.stable_edid_ids Bug: 378923334 Test: DisplayIdentification_test Change-Id: I8e5c79f2f51c2fd2085dfaba7f5c45fbc698cbcb
2024-11-16SF: Parse Physical display size in framework Gil Dekel
More EDID fields are required as a part of migrating to EDID-based display IDs. This CL parses the physical display size in CM from bytes 21-22 of block 0 in the EDID blob and serves it as a part of the Edid struct. Later, amongst others, this value will be used to fabricate a unique display ID that is based on the display's EDID. See: 1. EDID spec: https://glenwing.github.io/docs/VESA-EEDID-A2.pdf 2. https://en.wikipedia.org/wiki/Extended_Display_Identification_Data#Structure,_version_1.4 Flag: com.android.graphics.surfaceflinger.flags.stable_edid_ids Bug: 378922658 Test: DisplayIdentification_test Change-Id: I0bb27f267421941aa56f6147082a05ea3b13f33f
2024-11-16Add HEIC_ULTRAHDR image format Emilian Peev
Flag: com.android.internal.camera.flags.camera_heif_gainmap Bug: 362608343 Test: atest -c -d cts/tests/camera/src/android/hardware/camera2/cts/ImageReaderTest.java#testHeicUltraHdr Change-Id: Icefca1f6e1676b776a0b083fc7f6f8224cb72762
2024-11-12Merge 24Q4 (ab/12406339) into aosp-main-future Xin Li
Bug: 370570306 Merged-In: I9be1254c3e2685b0aa950b314c581824f40ce26c Change-Id: I35bc501a2b1d9eb100aaab25cd660cf2e0542f99
2024-11-12Revert^2 "Use __builtin_available guard" am: 59fc51c6dc am: a5dfed1507 Jooyung Han
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/3342060 Change-Id: Id367b9f72b4be29d1b0c706f0a67f501389ef15a Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-11-09Revert^2 "Use __builtin_available guard" Jooyung Han
0034aef56f2ece07055bb4955a32df389a0334bc Change-Id: I963afc7425e38bc6b7bdbacc262e89f4d5b16f72
2024-11-08Allow apps to apply picture profiles with priority to layers Brian Lindahl
Bug: 337330263 Test: build Test: atest LayerSnapshotTest Flag: com.android.graphics.libgui.flags.apply_picture_profiles Change-Id: I1adb6069d0168084abf0a76d310abb4ffad5ce5f
2024-11-08Revert "Use __builtin_available guard" Priyanka Advani (xWF)
Revert submission 3334193-no-llndk-versioning Reason for revert: Droidmonitor created revert due to b/378038995. Will be verifying through ABTD before submission. Reverted changes: /q/submissionid:3334193-no-llndk-versioning Change-Id: I7c8262a79fe1f85f1f225a5421aab6126dc76175
2024-11-06Add plumbing to pass picture profiles down to Composer HAL Brian Lindahl
Bug: 337330263 Test: atest OutputLayerWriteStateToHWCTest Test: atest OutputUpdateAndWriteCompositionStateTest Flag: com.android.graphics.libgui.flags.apply_picture_profiles Change-Id: I082f4bc47c2d402e15fc3a3de5224889752272fa
2024-11-06Use __builtin_available guard Jooyung Han
Bug: 362658565 Test: m Change-Id: I2fa5d366b591afa878f62ba39f2831e48a6df5cd
2024-10-22Adds support for getSuggestedFrameRate api ramindani
BUG: 361433796 Flag: com.android.server.display.feature.flags.enable_get_suggested_frame_rate Test: atest android.display.cts.DisplayTest Test: Check value of the frameRateCategoryRate in the `adb shell dumpsys display` Change-Id: Iabd6040d09b3fdb5ec5aa42a8aeef01d02c2fd05
2024-10-14Merge "Fix field widths in dump, so as to make columns line up." into main Rahul Banerjee
2024-10-14Fix field widths in dump, so as to make columns line up. Rahul Banerjee
Flag: EXEMPT log only update Test: Manual (test cases listed in https://paste.googleplex.com/4796169164423168) Change-Id: Ia4e9823522dc06b14d27d762fa23a79477408509
2024-10-08Adds hasArrSupport api support ramindani
BUG: 361433651 Test: Test: atest DisplayModeDirectorTest && atest BrightnessObserverTest && atest SettingsObserverTest Flag: com.android.server.display.feature.flags.enable_has_arr_support Change-Id: Ie9f16c229a22d404acd70ae9898fe3feacbcd6dc
2024-10-03Support floating point values for layer crop Vishnu Nair
Flag: EXEMPT bug fix Fixes: 310950423 Test: presubmit Change-Id: I05feb4881a95bc8caad90a3d632b3c7881909bf3
2024-10-03Fix rounding error when constructing Rect from FloatRect Vishnu Nair
Current rounding logic does not handle negative values correctly. FloatRect(-1080,...) is converted to Rect(-1079,...) Fix this by using the standard rounding function. Flag: EXEMPT build error (b/350967139) Bug: 310950423 Test: presubmit Change-Id: Ib8c5c393040149225e5b2bc858c21894e306a456