diff options
author | Jesse Hall <jessehall@google.com> | 2012-08-22 11:42:57 -0700 |
---|---|---|
committer | Jesse Hall <jessehall@google.com> | 2012-08-22 12:10:06 -0700 |
commit | 43b51d9fdd7a447c9de7bf30960a1963c93ff5c3 (patch) | |
tree | ff180815003c85392f02b269ebebc36d26b968eb | |
parent | f4e4624ef78fa72dd976b201c08ceb394564279c (diff) | |
download | hardware_libhardware-43b51d9fdd7a447c9de7bf30960a1963c93ff5c3.zip hardware_libhardware-43b51d9fdd7a447c9de7bf30960a1963c93ff5c3.tar.gz hardware_libhardware-43b51d9fdd7a447c9de7bf30960a1963c93ff5c3.tar.bz2 |
Add NUM_DISPLAY_TYPES query and refine display list semantics
Change-Id: I740859bfa2b126edcdf06f7b2c8208770bc864f9
-rw-r--r-- | include/hardware/hwcomposer.h | 24 | ||||
-rw-r--r-- | include/hardware/hwcomposer_defs.h | 18 |
2 files changed, 38 insertions, 4 deletions
diff --git a/include/hardware/hwcomposer.h b/include/hardware/hwcomposer.h index 27b9197..a6358e4 100644 --- a/include/hardware/hwcomposer.h +++ b/include/hardware/hwcomposer.h @@ -342,8 +342,16 @@ typedef struct hwc_composer_device_1 { * handles have been updated. Typically this happens (but is not limited to) * when a window is added, removed, resized or moved. * - * The numDisplays parameter will always be greater than zero, displays - * will be non-NULL, and the array entries will be non-NULL. + * For HWC 1.0, numDisplays will always be one, and displays[0] will be + * non-NULL. + * + * For HWC 1.1, numDisplays will always be HWC_NUM_DISPLAY_TYPES. Entries + * for unsupported or disabled/disconnected display types will be NULL. + * + * For HWC 1.2 and later, numDisplays will be HWC_NUM_DISPLAY_TYPES or more. + * The extra entries correspond to enabled virtual displays, and will be + * non-NULL. In HWC 1.2, support for one virtual display is required, and + * no more than one will be used. Future HWC versions might require more. * * returns: 0 on success. An negative error code on error. If an error is * returned, SurfaceFlinger will assume that none of the layer will be @@ -368,8 +376,16 @@ typedef struct hwc_composer_device_1 { * been handled by SurfaceFlinger with OpenGL ES. In this case, (*set)() * behaves just like eglSwapBuffers(). * - * The numDisplays parameter will always be greater than zero, displays - * will be non-NULL, and the array entries will be non-NULL. + * For HWC 1.0, numDisplays will always be one, and displays[0] will be + * non-NULL. + * + * For HWC 1.1, numDisplays will always be HWC_NUM_DISPLAY_TYPES. Entries + * for unsupported or disabled/disconnected display types will be NULL. + * + * For HWC 1.2 and later, numDisplays will be HWC_NUM_DISPLAY_TYPES or more. + * The extra entries correspond to enabled virtual displays, and will be + * non-NULL. In HWC 1.2, support for one virtual display is required, and + * no more than one will be used. Future HWC versions might require more. * * IMPORTANT NOTE: there is an implicit layer containing opaque black * pixels behind all the layers in the list. It is the responsibility of diff --git a/include/hardware/hwcomposer_defs.h b/include/hardware/hwcomposer_defs.h index a5df8f0..f0f97fc 100644 --- a/include/hardware/hwcomposer_defs.h +++ b/include/hardware/hwcomposer_defs.h @@ -139,6 +139,12 @@ enum { * returns the vsync period in nanosecond */ HWC_VSYNC_PERIOD = 1, + + /* + * availability: HWC_DEVICE_API_VERSION_1_1 + * returns a mask of supported display types + */ + HWC_DISPLAY_TYPES_SUPPORTED = 2, }; /* Allowed events for hwc_methods::eventControl() */ @@ -146,6 +152,18 @@ enum { HWC_EVENT_VSYNC = 0 }; +/* Display types and associated mask bits. */ +enum { + HWC_DISPLAY_PRIMARY = 0, + HWC_DISPLAY_EXTERNAL = 1, // HDMI, DP, etc. + HWC_NUM_DISPLAY_TYPES +}; + +enum { + HWC_DISPLAY_PRIMARY_BIT = 1 << HWC_DISPLAY_PRIMARY, + HWC_DISPLAY_EXTERNAL_BIT = 1 << HWC_DISPLAY_EXTERNAL, +}; + /*****************************************************************************/ __END_DECLS |