Commit Graph

49263 Commits

Author SHA1 Message Date
Jamie Gennis
d1700756ec SurfaceFlinger: Add EventControlThread
This change adds a new thread for calling HWComposer's eventControl
asynchronously.  The DispSync-based vsync approach ends up enabling and
disabling HWComposer's vsync callbacks at arbitrary times, and some HWComposer
implementations do not have these calls optimized.

Bug: 11175503
Change-Id: I719be82bd200b391c61d40863b991c7b59acdfd6
2013-10-15 14:31:41 -07:00
Jesse Hall
247423751f Merge "Disable hardware vsync when blanking the screen" into klp-dev 2013-10-15 19:53:11 +00:00
Aravind Akella
641a18688b Merge "SensorService Flush API bug fix." into klp-dev 2013-10-15 17:01:55 +00:00
The Android Automerger
3bd1b65ffb merge in klp-release history after reset to klp-dev 2013-10-15 06:00:54 -07:00
Aravind Akella
c551eac5b1 SensorService Flush API bug fix.
SensorService is dead locking itself when flush is called on older devices which don't support batching. mConnectionLock is acquired twice.

Change-Id: I5c25585bfb2b396df4b05826a9cba1da7997a3ee
2013-10-14 17:09:19 -07:00
Jesse Hall
948fe0ce74 Disable hardware vsync when blanking the screen
Bug: 11220224
Change-Id: I99d0a42e1a6bb0aaf89706f6d100e9ef2a5deaa4
2013-10-14 16:25:01 -07:00
Jesse Hall
8e26b28be6 Filter out vsync events from HWC with duplicate timestamps
Bug: 11220224
Change-Id: I4efe0b66ea8969bf0ec3c4fcb325d354c8a0c315
2013-10-14 15:34:00 -07:00
The Android Automerger
4fec2900a3 merge in klp-release history after reset to klp-dev 2013-10-13 19:20:31 -07:00
Aravind Akella
2d344979eb Merge "Adding PackageManager feature strings for stepcounter and stepdetector." into klp-dev 2013-10-13 22:47:47 +00:00
Aravind Akella
d7a5342828 Adding PackageManager feature strings for stepcounter and stepdetector.
Change-Id: I75ec21900fdc3ea80b61ec12c851a0c5ce9c44e8
2013-10-13 14:53:45 -07:00
Jesse Hall
44e45cfeb3 Merge "DispSync: don't compensate for wakeup latency" into klp-dev 2013-10-13 20:13:59 +00:00
The Android Automerger
26ef413c59 merge in klp-release history after reset to klp-dev 2013-10-13 06:02:02 -07:00
Andy McFadden
6410c8c409 Merge "Use black for blackout layer" into klp-dev 2013-10-11 21:39:49 +00:00
Aravind Akella
4c4cd9c8cc Change API from flush(handle) to flush(). Call flush on all active sensors in the given SensorEventConnection.
Change-Id: I4ef2bec80406c517903ab9782dc9eaf3fa8b7f36
2013-10-11 12:42:13 -07:00
Andy McFadden
c6f2169559 Use black for blackout layer
SurfaceFlinger was rendering dark purple for secure content, which
showed up when we took a screen shot for the orientation change
animation.  Use black instead.

Bug 11157921

Change-Id: I3895e8168891d49dc5b84eed599bcd0a303bb70a
2013-10-11 11:16:03 -07:00
Michael Wright
a8b5982c32 Eliminate latency when resampling is disabled
Since the latency was introduced to avoid egregious errors during
resampling, remove it when we aren't resampling.

Change-Id: Ia8e9a9afb1e16212fec81a8c9c661c598e1b0ebf
2013-10-10 22:13:38 -07:00
Dave Burke
9c0dfa0973 Merge "Eliminate latency when resampling is disabled" into klp-dev 2013-10-11 02:33:15 +00:00
Aravind Akella
5d6aa95129 Merge "Change API from flush(handle) to flush(). Call flush on all active sensors in the given SensorEventConnection." into klp-dev 2013-10-11 02:05:41 +00:00
Michael Wright
ad526f8505 Eliminate latency when resampling is disabled
Since the latency was introduced to avoid egregious errors during
resampling, remove it when we aren't resampling.

Change-Id: Ia8e9a9afb1e16212fec81a8c9c661c598e1b0ebf
2013-10-10 18:54:12 -07:00
Jesse Hall
5c65efe2b1 Merge "Wake up disp sync thread when setting display period" into klp-dev 2013-10-10 22:24:32 +00:00
Jesse Hall
72f69d9f23 Wake up disp sync thread when setting display period
Bug: 10624956
Change-Id: I272c15f319521bfbd1bb70451366c7dd84d60bf9
2013-10-10 14:48:22 -07:00
Andy McFadden
0e9c51ec78 Fix blank / partial screenshots
The screen capture code wasn't waiting for the render to finish,
so sometimes you'd see an empty or partial image.

Bug 11131777

Change-Id: Ic64087322ce3bb15bb5f4fb1eb07579880fe6197
2013-10-10 12:16:58 -07:00
Jamie Gennis
0d5c60edf1 DispSync: don't compensate for wakeup latency
This change removes the wakeup latency compensation from the software-generated
vsync events.  Choreographer can't handle timestamps in the future, so don't
aim for early wake-ups with the expectation that the actual wake-up will be
late.

Bug: 11153576
2013-10-09 17:56:42 -07:00
Aravind Akella
701166d9f6 Change API from flush(handle) to flush(). Call flush on all active sensors in the given SensorEventConnection.
Change-Id: I4ef2bec80406c517903ab9782dc9eaf3fa8b7f36
2013-10-09 17:26:01 -07:00
Andy McFadden
2d8d120dc1 Fix blank / partial screenshots
The screen capture code wasn't waiting for the render to finish,
so sometimes you'd see an empty or partial image.

Bug 11131777

Change-Id: Ic64087322ce3bb15bb5f4fb1eb07579880fe6197
2013-10-09 16:38:02 -07:00
The Android Automerger
e0df32c9a7 merge in klp-release history after reset to klp-dev 2013-10-09 06:01:16 -07:00
Ed Heyl
98c197d826 merge in KQS81M 2013-10-08 15:40:38 -07:00
Jamie Gennis
faf77cce9d SurfaceFlinger: SW-based vsync events
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
2013-10-07 17:59:53 -07:00
The Android Automerger
38234af6bd merge in klp-release history after reset to klp-dev 2013-10-06 06:01:27 -07:00
Alex Ray
d457ec52d7 Add feature android.hardware.consumerir xml file
Bug: 10676690
Change-Id: I2cc62b9c97a71588c43ff96ca38d470976bde9b0
2013-10-03 13:09:37 -07:00
Marco Nelissen
48d3741ba5 Merge "Allow blaming a single uid for work done" into klp-dev 2013-10-03 16:34:51 +00:00
Lajos Molnar
b1f94ef3f9 Merge "media/hardware/HardwareAPI.h: Added PrepareForAdaptivePlaybackParams" into klp-dev 2013-10-03 16:10:25 +00:00
Marco Nelissen
9a7706bb17 Allow blaming a single uid for work done
This lets audioflinger assign blame for wakelocks to a single uid.
Currently this is only used for recording wakelocks.
b/10985160

Change-Id: Idc9adb22c29030010ac690d4cb95e7e7ea6b91e6
2013-10-03 08:49:07 -07:00
The Android Automerger
25274b00b0 merge in klp-release history after reset to klp-dev 2013-10-03 06:02:17 -07:00
Jesse Hall
062019b8ce Set the outbuf acquire fence after we actually have it.
In GLES-only mode, we don't have the outbuf acquire fence until after
GLES composition is done for the frame. We were setting the fence in
HWC's state immediately after dequeueing the buffer from the consumer,
before GLES had started. This fence got passed through HWC and on to
the consumer, so the consumer was reading the buffer before GLES was
done writing to it.

Now we update HWC's state just before set(), when we know we have the
right fence.

Bug: 11000763
Change-Id: Iea9db4c69634c352dc2d600f0bdb6bef2a432636
2013-10-02 14:44:42 -07:00
Mathias Agopian
d5350dea05 only clear FB when asked for the opaque layer
a layer need to be considered NOT opaque if it has a
plane-alpha.

Bug: 10846930
Change-Id: Ibd8981b63ede4560c7096bacc4cff46a7eb2a8bb
2013-10-02 14:44:42 -07:00
Jesse Hall
8eb7a481ab Treat composition frames with no layers as using GLES composition
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
2013-10-02 14:44:42 -07:00
Jamie Gennis
f0cf5f103c BufferQueue: fix a test crash
Bug: 10935880
Change-Id: If76e9fb055103bad0db7e6c16487532671573149
2013-10-02 18:02:28 +00:00
Jamie Gennis
a9c47f3273 Merge "GLConsumer: start using EGL_ANDROID_image_crop" into klp-dev 2013-10-02 17:36:48 +00:00
Dave Burke
0699350336 Merge "only clear FB when asked for the opaque layer" into klp-dev 2013-10-02 17:36:40 +00:00
Jamie Gennis
dbe9245e2e GLConsumer: start using EGL_ANDROID_image_crop
This change makes GLConsumer use the EGL_ANDROID_image_crop extension when
available on a device.  The crop rectangle is passed to the EGL driver when
creating EGLImages, allowing the crop to be performed by the driver rather than
using the texture transform matrix.

Bug: 10897141
Change-Id: I63e9a5d5c85067376abc420e3639154468346311
2013-10-02 17:34:35 +00:00
Jesse Hall
93573e91c2 Merge "Treat composition frames with no layers as using GLES composition" into klp-dev 2013-10-02 14:54:03 +00:00
Jesse Hall
b716e57048 Set the outbuf acquire fence after we actually have it.
In GLES-only mode, we don't have the outbuf acquire fence until after
GLES composition is done for the frame. We were setting the fence in
HWC's state immediately after dequeueing the buffer from the consumer,
before GLES had started. This fence got passed through HWC and on to
the consumer, so the consumer was reading the buffer before GLES was
done writing to it.

Now we update HWC's state just before set(), when we know we have the
right fence.

Bug: 11000763
Change-Id: Iea9db4c69634c352dc2d600f0bdb6bef2a432636
2013-10-01 17:25:20 -07:00
Mathias Agopian
ac68302e1c only clear FB when asked for the opaque layer
a layer need to be considered NOT opaque if it has a
plane-alpha.

Bug: 10846930
Change-Id: Ibd8981b63ede4560c7096bacc4cff46a7eb2a8bb
2013-10-01 15:36:52 -07:00
Jesse Hall
d05a17fbb3 Treat composition frames with no layers as using GLES composition
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
2013-09-30 17:08:28 -07:00
Jesse Hall
6f2bc240e9 Fix two EGLConfig selection bugs
This fixes two bugs introduced by
  Change-Id: Ia8cc084c02a0e3de910def024da8a08d02bbd89d

(a) There is no invalid EGLConfig value, in particular zero is valid.
    Checking return values of eglGetConfigs and eglChooseConfig is the
    only way to determine success.
(b) The "simple" EGLConfig query used as the emulator fallback should
    not include EGL_RECORDABLE; the emulator doesn't have it.

Bug: 10935622
Change-Id: Ib798a24e7cf06a679811c46eaa45d39174a715ec
2013-09-30 16:37:06 -07:00
Jesse Hall
b65f32ebe2 Fix two EGLConfig selection bugs
This fixes two bugs introduced by
  Change-Id: Ia8cc084c02a0e3de910def024da8a08d02bbd89d

(a) There is no invalid EGLConfig value, in particular zero is valid.
    Checking return values of eglGetConfigs and eglChooseConfig is the
    only way to determine success.
(b) The "simple" EGLConfig query used as the emulator fallback should
    not include EGL_RECORDABLE; the emulator doesn't have it.

Bug: 10935622
Change-Id: Ib798a24e7cf06a679811c46eaa45d39174a715ec
2013-09-30 10:49:16 -07:00
The Android Automerger
08db4d4ef7 merge in klp-release history after reset to klp-dev 2013-09-29 06:01:19 -07:00
Mathias Agopian
8499e93f4d fix crashers with wifi/virtual displays
Bug: 10647742
Change-Id: I4b8ed9da52ef95af3a3b3a04b98514a3776a674d
2013-09-27 11:30:59 -07:00
Mathias Agopian
86206b41b2 Merge "fix initialization of framebuffer target crop rect on hwc 1.3" into klp-dev 2013-09-26 19:41:22 +00:00