summaryrefslogtreecommitdiffstats
path: root/services/surfaceflinger/DisplayHardware
Commit message (Collapse)AuthorAgeFilesLines
...
* | surfaceflinger: Replace blank/unblank with setPowerModePrashant Malani2014-06-052-16/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We replace the blank/unblank calls in surfaceFlinger with a more generic setPowerMode() routine. Some displays support different power modes (for example, with reduced color palettes). Depending on the use case we should be able to toggle these modes, so as to achieve incremental power savings. Initially, three power modes will be supported: - HWC_POWER_MODE_OFF - HWC_POWER_MODE_DOZE - HWC_POWER_MODE_NORMAL HWC_POWER_MODE_OFF will correspond to blanking the display, while HWC_POWER_MODE_NORMAL will correspond to unblanking. HWC_POWER_MODE_DOZE will put the display into a low power setting, if it is supported in hardware. If such a low power mode is not supported, it should be treated as a call to set the mode to HWC_POWER_MODE_NORMAL. As a consequence of adding the mPowerMode field, the mScreenAcquired is no longer required, and thus references to it are removed and replaced equivalent references to mPowerMode. We also add the glue code to connect the services invocation of setting a power mode and the HAL implementation in HWComposer. Bug: 13472578 Change-Id: I431595ecf16d2f2c94259272db3dd42f29636204 Signed-off-by: Prashant Malani <pmalani@google.com>
* | Add IMPLEMENTATION_DEFINED to dumpAndy McFadden2014-05-201-0/+2
| | | | | | | | | | | | | | The "dumpsys SurfaceFlinger" output shows pixel formats in human-readable form now. Add IMPLEMENTATION_DEFINED. Change-Id: If567e34dad4b940fbfb4d0b70c65f6ab8cd5f5e7
* | Merge "Enable changing display configuration"Dan Stoza2014-05-062-87/+129
|\ \
| * | Enable changing display configurationDan Stoza2014-05-052-87/+129
| | | | | | | | | | | | | | | | | | | | | | | | This allows querying and switching display device configurations through the ISurfaceComposer/SurfaceComposerClient interface. Bug: 14320401 Change-Id: I8c22165698950e5da32204c1c4da92122f91a715
* | | Merge "Improve SurfaceFlinger PTS estimation"Andy McFadden2014-05-022-2/+2
|\ \ \
| * | | Improve SurfaceFlinger PTS estimationAndy McFadden2014-05-022-2/+2
| |/ / | | | | | | | | | | | | | | | | | | Get the next refresh time from DispSync instead of guessing based on the current time. Change-Id: I8dc72a3217bfd4e9b4c905034194d1a298cad69a
* | | Handle failed requestBuffer after successful dequeueBufferJesse Hall2014-05-011-1/+6
|/ / | | | | | | | | | | | | | | | | | | | | If the virtual display consumer disconnects after the VirtualDisplaySurface dequeues a buffer but before it requests it, the request will fail. Previously the error was ignored, and the caller would get a success result but a NULL buffer. Now the dequeued buffer is cancelled and the error propagated to the caller. Bug: 14140551 Change-Id: I91547885c2cf6063dc7a8f02d97f2df282cdde2c
* | Merge "Update HWC dump format"Andy McFadden2014-04-251-9/+28
|\ \
| * | Update HWC dump formatAndy McFadden2014-04-221-9/+28
| | | | | | | | | | | | | | | | | | Shortens a few fields. Displays the format as a string. Change-Id: Ib471f05603763e250bad165db610f8e173e8423a
* | | Merge "BufferQueue: Increase max slots from 32 to 64"Dan Stoza2014-04-212-7/+7
|\ \ \ | |/ / |/| |
| * | BufferQueue: Increase max slots from 32 to 64Dan Stoza2014-04-182-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | Increases NUM_BUFFER_SLOTS from 32 to 64 and changes the mask returned by IGBC::getReleasedBuffers from 32 to 64 bits. Bug: 13174352 Change-Id: Ie8ef0853916cfb91f83881c7241886bb1950f01a
| * | Revert "SurfaceFlinger: send VSYNC power hints to IPowerManager"Ruchi Kandoi2014-04-042-20/+30
| | | | | | | | | | | | This reverts commit d469a1c3285b974cf2637517cc25727da8f82668.
| * | SurfaceFlinger: send VSYNC power hints to IPowerManagerRuchi Kandoi2014-04-042-30/+20
| | | | | | | | | | | | | | | | | | | | | | | | VSYNC power hints are now sent via binder to IPowerManager. SurfaceFlinger no longer loads a second copy of the PowerHAL. VSYNC power hints are sent in batches and not on per frame basis. Change-Id: Icc2eee5df56135bd24dc244a84e7c12dd5511fec
* | | BufferQueueProducer: add detachNextBufferDan Stoza2014-04-152-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds a new method, IGBP::detachNextBuffer, that effectively does dequeue + request + detach in a single call, but does not need to know anything about the dequeued buffer, and will not block on dequeue. This is mostly for the upcoming StreamSplitter to use in its onBufferReleased callback. Change-Id: Ie88a69de109003acebaa486a5b44c8a455726550
* | | BufferQueue: Add producer buffer-released callbackDan Stoza2014-03-312-3/+5
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a callback to the producer side, onBufferReleased, which will be called every time the consumer releases a buffer back to the BufferQueue. This will enable a buffer stream splitter to work autonomously without having to block on dequeueBuffer. The binder object used for the callback replaces the generic IBinder token that was passed into IGraphicBufferProducer::connect to detect the death of the producer. If a producer does not wish to listen for buffer release events, it can pass in an instance of the DummyProducerListener class defined in IProducerListener.h, if it even cares about death events (BufferQueue doesn't enforce the token being non-NULL, though perhaps we should). Change-Id: I23935760673524abeafea2b58dccc3583b368710
* | Remove deprecated BufferQueue constructorDan Stoza2014-03-182-4/+6
| | | | | | | | | | Bug: 13415624 Change-Id: I9fe15e45daa7351f1db34ee75bfee6f19cb347d3
* | am d4dabf87: am cdbf28b3: Merge "native frameworks: 64-bit compile issues"Mark Salyzyn2014-03-132-6/+7
|\ \ | |/ | | | | | | * commit 'd4dabf872ac0a12e12aebae9032f7d62762c2aeb': native frameworks: 64-bit compile issues
| * native frameworks: 64-bit compile issuesMark Salyzyn2014-03-122-6/+7
| | | | | | | | | | | | | | - Fix format (print/scanf) - Suppress unused argument warning messages (bonus) Change-Id: I05c7724d2aba6da1e82a86000e11f3a8fef4e728
* | Merge "Add sideband streams to BufferQueue and related classes"Jesse Hall2014-03-134-1/+19
|\ \
| * | Add sideband streams to BufferQueue and related classesJesse Hall2014-03-114-1/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sideband streams are essentially a device-specific buffer queue that bypasses the BufferQueue system. They can be used for situations with hard real-time requirements like high-quality TV and video playback with A/V sync. A handle to the stream is provided by the source HAL, and attached to a BufferQueue. The sink HAL can read buffers via the stream handle rather than acquiring individual buffers from the BufferQueue. Change-Id: Ib3f262eddfc520f4bbe3d9b91753ed7dd09d3a9b
* | | VirtualDisplaySurface: no attach/detach supportDan Stoza2014-03-121-5/+7
| | | | | | | | | | | | Change-Id: I630dd6e352940318c33a4e072d2f33a6ec58c556
* | | BufferQueue: Allow detaching/reattaching buffersDan Stoza2014-03-102-0/+11
|/ / | | | | | | | | | | | | | | | | | | Adds detachBuffer and attachBuffer calls to both the producer and consumer sides of BufferQueue. Buffers may be detached while dequeued by the producer or acquired by the consumer, and when attached, enter the dequeued and acquired states, respectively. Bug: 13173343 Change-Id: Ic152692b0a94d99e0135b9bfa62747dab2a54220
* | Fix virtual display nestingDan Stoza2014-02-045-16/+31
| | | | | | | | | | | | | | | | | | This fixes the cycling rendering loop caused by nesting virtual displays by preventing them from recomposing if their contents haven't changed. Bug: 12101046 Change-Id: I600365c0fd5d3ad93e04295d26cf9de177ffc79b
* | am ade9a911: am f65ebc3b: am f5bcb391: Merge "SurfaceFlinger: ↵Jesse Hall2014-01-281-0/+1
|\ \ | |/ | | | | | | | | | | mFbProducerSlot initailization" * commit 'ade9a911d04dbd4bfbd3e80a917ea67a581b4797': SurfaceFlinger: mFbProducerSlot initailization
| * SurfaceFlinger: mFbProducerSlot initailizationmayank parshar2014-01-281-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b/12487813 SurfaceFlinger crash is observed during simulation of Secondary display Note: change 14e8b01a761180250671f3d6494532d8bd04fa8e removed the initialization leading to the crash when simulating secondary display. Restore the initialization to solve the problem. Change-Id: Iae5845fb82735e01de5cc0dc582d13c27e3c614f Signed-off-by: mayank parshar <mayankp@broadcom.com> Signed-off-by: Pierre Couillaud <pierre@broadcom.com>
* | am 25f75c36: am 8c303f7e: am fcf9c1ba: Merge "SurfaceFlinger: mFbFence ↵Jesse Hall2014-01-261-0/+1
|\ \ | |/ | | | | | | | | | | initialization" * commit '25f75c361098086ffa2b87dcc3f22ac5f64c05be': SurfaceFlinger: mFbFence initialization
| * SurfaceFlinger: mFbFence initializationmayank parshar2014-01-251-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MobC00383030 b/12487813 SurfaceFlinger crash is observed while connecting to Wi-Fi display. Note: change 14e8b01a761180250671f3d6494532d8bd04fa8e removed the initialization leading to the crash when running through the HWC composition path. Restore the initialization to solve the problem. Change-Id: I581defc7135ac512080c0da06a62b1dae7d218c4 Signed-off-by: mayank parshar <mayankp@broadcom.com> Signed-off-by: Pierre Couillaud <pierre@broadcom.com>
* | am 03691218: am e5f7bf74: am b6c21004: Merge "Implement per-display ↵Jesse Hall2014-01-031-2/+6
|\ \ | |/ | | | | | | | | | | EGLConfig and configless EGLContext" * commit '03691218ada2fb7e084ad4ae7ddd54f9b28d5611': Implement per-display EGLConfig and configless EGLContext
| * Implement per-display EGLConfig and configless EGLContextJesse Hall2013-12-231-2/+6
| | | | | | | | | | | | Bug: 12230666 Change-Id: Icca608b108cbdcab9cf01a9236d8cdbda000a836 Signed-off-by: Jesse Hall <jessehall@google.com>
* | am 1ee45c2d: am 14e8b01a: Don\'t change the framebuffer target until we ↵Jesse Hall2013-11-081-12/+10
|\ \ | |/ | | | | | | | | | | render a new one * commit '1ee45c2d2d816ee912624d81ff1b0aaa98e8fa74': Don't change the framebuffer target until we render a new one
| * Don't change the framebuffer target until we render a new oneJesse Hall2013-11-071-12/+10
| | | | | | | | | | | | | | | | | | Continuing to send the last-rendered framebuffer to HWC on subsequent frames allows the HWC to read partially-composed regions that haven't changed, instead of re-composing from scratch. Bug: 11573910 Change-Id: I8829877d2a06001f1e1b3f168cbba71c7b217b2d
* | am 2d32aa59: am 356c2386: Merge "Provide virtual display output buffer to ↵Jesse Hall2013-11-061-1/+1
|\ \ | |/ | | | | | | | | | | HWC in prepare" into klp-dev * commit '2d32aa5918de1c12c54a32e8eb28bbc96d430796': Provide virtual display output buffer to HWC in prepare
| * Merge "Provide virtual display output buffer to HWC in prepare" into klp-devJesse Hall2013-11-071-1/+1
| |\
| | * Provide virtual display output buffer to HWC in prepareJesse Hall2013-11-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | We were already making sure the HWComposer class had the handle before prepare, but it wasn't passing the handle along to HWC as intended. Partial fix for bug: 11430248 Change-Id: I25f672c4fdfaa6a81fe0acb24d9ad05153ee17dc
* | | am f111ee13: am 49318631: Merge "Don\'t use implementation-defined format ↵Jesse Hall2013-11-062-7/+24
|\ \ \ | |/ / | | | | | | | | | | | | | | | with CPU consumers" into klp-dev * commit 'f111ee13a6f5d8606c5dc7a5cc07cedf929e69a8': Don't use implementation-defined format with CPU consumers
| * | Don't use implementation-defined format with CPU consumersJesse Hall2013-11-042-7/+24
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the virtual display surface is being consumed by the CPU, it can't be allowed with HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED since there is no way for the CPU consumer to find out what format gralloc chose. So for CPU-consumer surfaces, just use the BufferQueue's default format, which can be set by the consumer. A better but more invasive change would be to let the consumer require a certain format (or set of formats?), and disallow the producer from requesting a different format. Bug: 11479817 Change-Id: I5b20ee6ac1146550e8799b806e14661d279670c0
* | am 96002be4: am c354effe: Fix handling of undefined ↵Jesse Hall2013-10-251-1/+5
|\ \ | |/ | | | | | | | | | | TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS * commit '96002be4bd4b8bbfecba2cc45bdf0b47f06464bc': Fix handling of undefined TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS
| * Fix handling of undefined TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYSJesse Hall2013-10-251-1/+5
| | | | | | | | | | related to b/8316155 - Implement HWComposer 1.3 w/ virtual display support Change-Id: I2dc8d65a74174aa833cc491264f97f1f2df49307
* | am a54a8b63: am 93fcb823: Merge "Add a boardconfig to force HWC composition ↵Jesse Hall2013-10-231-0/+14
|\ \ | |/ | | | | | | | | | | of virtual displays" into klp-dev * commit 'a54a8b63d191d2c1c4669f89b32c4b8a9c04cd31': Add a boardconfig to force HWC composition of virtual displays
| * Add a boardconfig to force HWC composition of virtual displaysNaseer Ahmed2013-10-171-0/+14
| | | | | | | | | | | | | | | | | | | | | | When this boardconfig is defined, even when all virtual display composition is done by GLES, the HWC will be forced to copy from the GLES framebuffer to the output buffer. On some hardware this allows HWC to do format conversions that would otherwise have to be done by the consumer, with worse power and/or performance. Bug: 8316155 Change-Id: If980ecc589f138cef063eafa757f7f748196713e
* | am 48775386: am c5807f90: Merge "Use implementation-defined format when HWC ↵Jesse Hall2013-10-232-15/+42
|\ \ | |/ | | | | | | | | | | writes to output buffer" into klp-dev * commit '487753868aa86902f723dbdedd7083783701188d': Use implementation-defined format when HWC writes to output buffer
| * Use implementation-defined format when HWC writes to output bufferJesse Hall2013-10-172-15/+42
| | | | | | | | | | | | | | | | | | | | | | When GLES isn't writing to the output buffer directly, request an implementation-defined format with minimal usage flags, leaving the format choice up to gralloc. On some hardware this allows HWC to do format conversions during composition that would otherwise need to be done (with worse power and/or performance) by the consumer. Bug: 8316155 Change-Id: Iee6ee8404282036f9fd1833067cfe11dbadbf0bf
* | am a04fd39c: am 8e26b28b: Filter out vsync events from HWC with duplicate ↵Jesse Hall2013-10-151-2/+16
|\ \ | |/ | | | | | | | | | | timestamps * commit 'a04fd39cb88bb6df5f639464f70795f58cd0aefa': Filter out vsync events from HWC with duplicate timestamps
| * Filter out vsync events from HWC with duplicate timestampsJesse Hall2013-10-141-2/+16
| | | | | | | | | | Bug: 11220224 Change-Id: I4efe0b66ea8969bf0ec3c4fcb325d354c8a0c315
* | resolved conflicts for merge of 790b6d09 to masterJamie Gennis2013-10-081-1/+1
|\ \ | |/
| * SurfaceFlinger: SW-based vsync eventsJamie Gennis2013-10-071-1/+1
| | | | | | | | | | | | | | | | | | | | This change adds the DispSync class, which models the hardware vsync event times to allow vsync event callbacks to be done at an arbitrary phase offset from the hardware vsync. This can be used to reduce the minimum latency from Choreographer wake-up to on-screen image presentation. Bug: 10624956 Change-Id: I8c7a54ceacaa4d709726ed97b0dcae4093a7bdcf
* | am f3fa0712: am 93573e91: Merge "Treat composition frames with no layers as ↵Jesse Hall2013-10-021-0/+9
|\ \ | |/ | | | | | | | | | | using GLES composition" into klp-dev * commit 'f3fa0712282e760c316f44cba05f884f9399b98f': Treat composition frames with no layers as using GLES composition
| * Merge "Treat composition frames with no layers as using GLES composition" ↵Jesse Hall2013-10-021-0/+9
| |\ | | | | | | | | | into klp-dev
| | * Treat composition frames with no layers as using GLES compositionJesse Hall2013-09-301-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When there are no window layers for a display, SurfaceFlinger clears the undefined region using GLES. Some of the places that check for GLES composition weren't considering this special case, in particular: - We were skipping the eglSwapBuffers() on these frames. - We were putting VirtualDisplaySurface in HWC-only composition mode. This change centralizes the logic for this special case. Bug: 10957068 Change-Id: I2deaf2ed101e8ea76708862a6bb67751b6078794
* | | am 72d270c5: am b716e570: Set the outbuf acquire fence after we actually ↵Jesse Hall2013-10-021-1/+9
|\ \ \ | |/ / | | | | | | | | | | | | | | | have it. * commit '72d270c5f0918d1dc7a6a1774b80469c9f28b7ea': Set the outbuf acquire fence after we actually have it.