hardware/libhardware/include was being included with -isystem, which
hides warnings. Use a macro to convert modules to hw_device_t** to call
the open function that works in C++ and C.
Bug: 32018017
Test: m -j
Change-Id: If68bf15581975f1217fcab366cef7bc784894641
This adds an array of rects to hwc_layer_1_t that define which
portions of that layer's source buffer have been modified. If there
are a non-zero number of rects, then any portion of the source buffer
not touched by one of the rects may safely be assumed to not have
been modified. If no rects are defined, then the whole source buffer
must be assumed to have been modified.
Change-Id: Id5efafee74602ed7d76609180e334ed203c23f7e
Adds two functions to the HWC interface: one for querying the current
display configuration, and one for setting a new configuration. This
will enable DisplayManager to change the mode on demand.
Bug: 14320401
Change-Id: I556c509192b877b38b2103a78f937b3687f35546
The blank HWC call is being replaced by a setPowerMode() call.
This incorporates all of the blank functionality, but provides added
support for display low power modes, if they are available in hardware.
Currently there are three supported modes:
- HWC_POWER_MODE_OFF : Turn screen off.
- HWC_POWER_MODE_DOZE : Put screen in low power mode.
- HWC_POWER_MODE_NORMAL : Turn screen on, and exit low power mode (if
display was previously in low power mode).
Where applicable, the device driver is expected to retain and restore
the low power mode state of the display during entry and exit from
suspend, respectively.
Bug: 13472578
Change-Id: I743ea3a2cb58247d14d7c47158b09a5309cca710
Signed-off-by: Prashant Malani <pmalani@google.com>
The size of hwc_layer_1_t varies depending on whether we're building
for a 32- or 64-bit target. This change splits the padding into two
sections so that we can add more fields without changing the overall
size on either bitness.
Change-Id: Ib7c960a9feb0061586dc6398211d7d3dc012d573
Inheritance of HAL object is performed by composing a child structure of a
single parent structure located at offset 0 followed by new data members
and function pointers in the child structure.
For example,
struct child {
struct parent common;
int a_data_member;
void (*a_method)(struct child *c, int v);
};
HAL code assumes this layout when accessing child structures given a pointer
to a parent structure such that users write code like the following...
void child_method(struct *parent, int v) {
struct child * c = (struct child*)parent;
// do stuff with c
}
Code above will break if a member is added before "common" in "struct child".
This change adds comments that describe the restriction on the location of
parent HAL objects within a derived HAL object. HAL objects that already
have comments that describe the required location of parent objects are not
modified.
Change-Id: Ibe4300275286ef275b2097534c84f1029d761d87
Ensure none of the HAL structs change size over time.
Issues might arise when making changes without taking the different
pointer sizes for specific architectures into account.
Change-Id: I63f00004a23f09b2f46df01e7c69296766a5d03f
Both surfaceflinger and HWC implementations have been defining these
themselves, making future changes more difficult. Better to define
them centrally, where they can be updated easily.
Change-Id: I793158b858c84b2470b05f9ea77cc5a0c7e247f1
The hotplug callback is non-reentrant. The display config functions
return an error if called for a disconnected display type.
Change-Id: I52d11a53f9b30a7c39e98b0a9b07eb97a3d2becd
During the HWC 0.x evolution, some fields were left optional or
organized strangely to avoid breaking backwards compatibility. Since
we're breaking it in the transition to HWC 1.0 anyway, we can clean
these up a little.
* The current callbacks are now registered immediately after the
device is opened and guaranteed to be present, so the implementation
can rely on them being present.
* The hwc_methods_t structure is gone, with its two methods folded
into the main hwc_composer_device_1_t.
* All methods and callbacks are now required except dump(). New
methods and callbacks we add in the future will still be optional
for backwards compatibility.
Change-Id: I5d58774a5144016993c12df3dd6ad2a5d746bee9
Change the documentation of the blank function in the hw composer to
specify that the screen state transition must be complete when the
function returns.
Change-Id: Ibd0a9cdef13991c36cabada5fc0e4f7bb8fa7af9
Documentation updated for semantic changes vs. HWC 0.x:
* Prepare won't be called with NULL pointers. This used to be used to
disable hardware composition, though that wasn't documented. Now
we'll call prepare with non-NULL pointers but the layer list will
have zero layers.
* Set won't be called with NULL pointers. This used to cause the
display to turn off; that is now done by calling the blank() method,
which is no longer optional.
Change-Id: I9c69dc34f64e499a5ba5f8729836e7c216f8c733
Add a new blank operation to be called by surfaceflinger when the screen
turns on or off. Also rev the API version to 1.1 for the new field.
Change-Id: I266fb33f66184538e34cfc319f63cf809dcb2f18
The new version adds an acquire and release fence to each layer,
providing explicit producer->hwc and hwc->producer synchronization.
Change-Id: Ibd6e3c7b3515c012c767246e6d6514274fdef01d
hwcomposer_defs.h now contains enums, which are essentially names.
This won't change when we rev the h/w composer API (new ones will be added instead).
we do this to avoid having to abstract all these constants in higher
level APIs; instead hwcomposer_defs.h can be included without exposing
the hwcomposer's data structures (which are a lot more fragile wrt.
backward compatibility)
Change-Id: Ifb514f64de02a599fdd2d31c188327209ccb0ffc
This change clarifies the meaning of the HWC vsync timestamp to specify that
the timestamp must be relative to the system monotonic clock.
Change-Id: I4386ce90511fd5b8f8e988917da637d84d86f026
This is useful in various situations, for instance if the HAL
wants to change its compositing strategy.
Bug: 4488017
Change-Id: Idc410c689af30a2c9613dc3141e323d6e02a5648