blob: ea437b50ebde05e5fbd0b11a4bc239b86bc1d037 [file] [log] [blame]
#ifndef HIDL_GENERATED_ANDROID_HARDWARE_GRAPHICS_COMPOSER_V2_4_ICOMPOSERCLIENT_H
#define HIDL_GENERATED_ANDROID_HARDWARE_GRAPHICS_COMPOSER_V2_4_ICOMPOSERCLIENT_H
#include <android/hardware/graphics/common/1.2/types.h>
#include <android/hardware/graphics/composer/2.1/IComposerClient.h>
#include <android/hardware/graphics/composer/2.1/types.h>
#include <android/hardware/graphics/composer/2.3/IComposerClient.h>
#include <android/hardware/graphics/composer/2.4/IComposerCallback.h>
#include <android/hardware/graphics/composer/2.4/types.h>
#include <android/hidl/manager/1.0/IServiceNotification.h>
#include <hidl/HidlSupport.h>
#include <hidl/MQDescriptor.h>
#include <hidl/Status.h>
#include <utils/NativeHandle.h>
#include <utils/misc.h>
namespace android {
namespace hardware {
namespace graphics {
namespace composer {
namespace V2_4 {
struct IComposerClient : public ::android::hardware::graphics::composer::V2_3::IComposerClient {
/**
* Type tag for use in template logic that indicates this is a 'pure' class.
*/
typedef ::android::hardware::details::i_tag _hidl_tag;
/**
* Fully qualified interface name: "android.hardware.graphics.composer@2.4::IComposerClient"
*/
static const char* descriptor;
// Forward declaration for forward reference support:
enum class Attribute : int32_t;
enum class DisplayCapability : uint32_t;
enum class Command : int32_t;
enum class DisplayConnectionType : uint32_t;
enum class ContentType : uint32_t;
struct VsyncPeriodChangeConstraints;
struct ClientTargetProperty;
struct LayerGenericMetadataKey;
/**
* Display attributes queryable through getDisplayAttribute_2_4.
*/
enum class Attribute : int32_t {
INVALID = 0,
/**
* Dimensions in pixels
*/
WIDTH = 1,
HEIGHT = 2,
/**
* Vsync period in nanoseconds
*/
VSYNC_PERIOD = 3,
/**
* Dots per thousand inches (DPI * 1000). Scaling by 1000 allows these
* numbers to be stored in an int32_t without losing too much
* precision. If the DPI for a configuration is unavailable or is
* considered unreliable, the device may return UNSUPPORTED instead.
*/
DPI_X = 4,
DPI_Y = 5,
/**
* The configuration group ID (as int32_t) this config is associated to.
* Switching between configurations within the same group may be done seamlessly
* in some conditions via setActiveConfigWithConstraints.
*/
CONFIG_GROUP = 7,
};
/**
* Required capabilities which are supported by the display. The
* particular set of supported capabilities for a given display may be
* retrieved using getDisplayCapabilities.
*/
enum class DisplayCapability : uint32_t {
INVALID = 0u,
/**
* Indicates that the display must apply a color transform even when
* either the client or the device has chosen that all layers should
* be composed by the client. This prevents the client from applying
* the color transform during its composition step.
* If getDisplayCapabilities is supported, the global capability
* SKIP_CLIENT_COLOR_TRANSFORM is ignored.
* If getDisplayCapabilities is not supported, and the global capability
* SKIP_CLIENT_COLOR_TRANSFORM is returned by getCapabilities,
* then all displays must be treated as having
* SKIP_CLIENT_COLOR_TRANSFORM.
*/
SKIP_CLIENT_COLOR_TRANSFORM = 1u,
/**
* Indicates that the display supports PowerMode::DOZE and
* PowerMode::DOZE_SUSPEND. DOZE_SUSPEND may not provide any benefit
* over DOZE (see the definition of PowerMode for more information),
* but if both DOZE and DOZE_SUSPEND are no different from
* PowerMode::ON, the device must not claim support.
* Must be returned by getDisplayCapabilities when getDozeSupport
* indicates the display supports PowerMode::DOZE and
* PowerMode::DOZE_SUSPEND.
*/
DOZE = 2u,
/**
* Indicates that the display supports brightness operations.
*/
BRIGHTNESS = 3u,
/**
* Indicates that the display supports protected contents.
* When returned, hardware composer must be able to accept client target
* with protected buffers.
*/
PROTECTED_CONTENTS = 4u,
/**
* Indicates that both the composer HAL implementation and the given display
* support a low latency mode, such as HDMI 2.1 Auto Low Latency Mode.
*/
AUTO_LOW_LATENCY_MODE = 5u,
};
enum class Command : int32_t {
LENGTH_MASK = 65535 /* 0xffff */,
OPCODE_SHIFT = 16,
OPCODE_MASK = -65536 /* 0xffff << OPCODE_SHIFT */,
/**
* special commands
*/
SELECT_DISPLAY = 0 /* 0x000 << OPCODE_SHIFT */,
SELECT_LAYER = 65536 /* 0x001 << OPCODE_SHIFT */,
/**
* value commands (for return values)
*/
SET_ERROR = 16777216 /* 0x100 << OPCODE_SHIFT */,
SET_CHANGED_COMPOSITION_TYPES = 16842752 /* 0x101 << OPCODE_SHIFT */,
SET_DISPLAY_REQUESTS = 16908288 /* 0x102 << OPCODE_SHIFT */,
SET_PRESENT_FENCE = 16973824 /* 0x103 << OPCODE_SHIFT */,
SET_RELEASE_FENCES = 17039360 /* 0x104 << OPCODE_SHIFT */,
/**
* display commands
*/
SET_COLOR_TRANSFORM = 33554432 /* 0x200 << OPCODE_SHIFT */,
SET_CLIENT_TARGET = 33619968 /* 0x201 << OPCODE_SHIFT */,
SET_OUTPUT_BUFFER = 33685504 /* 0x202 << OPCODE_SHIFT */,
VALIDATE_DISPLAY = 33751040 /* 0x203 << OPCODE_SHIFT */,
ACCEPT_DISPLAY_CHANGES = 33816576 /* 0x204 << OPCODE_SHIFT */,
PRESENT_DISPLAY = 33882112 /* 0x205 << OPCODE_SHIFT */,
PRESENT_OR_VALIDATE_DISPLAY = 33947648 /* 0x206 << OPCODE_SHIFT */,
/**
* layer commands (VALIDATE_DISPLAY not required)
*/
SET_LAYER_CURSOR_POSITION = 50331648 /* 0x300 << OPCODE_SHIFT */,
SET_LAYER_BUFFER = 50397184 /* 0x301 << OPCODE_SHIFT */,
SET_LAYER_SURFACE_DAMAGE = 50462720 /* 0x302 << OPCODE_SHIFT */,
/**
* layer state commands (VALIDATE_DISPLAY required)
*/
SET_LAYER_BLEND_MODE = 67108864 /* 0x400 << OPCODE_SHIFT */,
SET_LAYER_COLOR = 67174400 /* 0x401 << OPCODE_SHIFT */,
SET_LAYER_COMPOSITION_TYPE = 67239936 /* 0x402 << OPCODE_SHIFT */,
SET_LAYER_DATASPACE = 67305472 /* 0x403 << OPCODE_SHIFT */,
SET_LAYER_DISPLAY_FRAME = 67371008 /* 0x404 << OPCODE_SHIFT */,
SET_LAYER_PLANE_ALPHA = 67436544 /* 0x405 << OPCODE_SHIFT */,
SET_LAYER_SIDEBAND_STREAM = 67502080 /* 0x406 << OPCODE_SHIFT */,
SET_LAYER_SOURCE_CROP = 67567616 /* 0x407 << OPCODE_SHIFT */,
SET_LAYER_TRANSFORM = 67633152 /* 0x408 << OPCODE_SHIFT */,
SET_LAYER_VISIBLE_REGION = 67698688 /* 0x409 << OPCODE_SHIFT */,
SET_LAYER_Z_ORDER = 67764224 /* 0x40a << OPCODE_SHIFT */,
SET_PRESENT_OR_VALIDATE_DISPLAY_RESULT = 67829760 /* 0x40b << OPCODE_SHIFT */,
/**
* SET_LAYER_PER_FRAME_METADATA has this pseudo prototype
*
* setLayerPerFrameMetadata(Display display, Layer layer,
* vec<PerFrameMetadata> data);
*
* Sets the PerFrameMetadata for the display. This metadata must be used
* by the implementation to better tone map content to that display.
*
* This is a method that may be called every frame. Thus it's
* implemented using buffered transport.
* SET_LAYER_PER_FRAME_METADATA is the command used by the buffered transport
* mechanism.
*/
SET_LAYER_PER_FRAME_METADATA = 50528256 /* 0x303 << @2.1::IComposerClient.Command:OPCODE_SHIFT */,
/**
* SET_LAYER_COLOR has this pseudo prototype
*
* setLayerColor(FloatColor color);
*
* Sets the color of the given layer. If the composition type of the layer
* is not Composition::SOLID_COLOR, this call must succeed and have no
* other effect.
*
* @param color is the new color using float type.
*/
SET_LAYER_FLOAT_COLOR = 67895296 /* 0x40c << @2.1::IComposerClient.Command:OPCODE_SHIFT */,
/**
* SET_LAYER_COLOR_TRANSFORM has this pseudo prototype
*
* setLayerColorTransform(float[16] matrix);
*
* This command has the following binary layout in bytes:
*
* 0 - 16 * 4: matrix
*
* Sets a matrix for color transform which will be applied on this layer
* before composition.
*
* If the device is not capable of apply the matrix on this layer, it must force
* this layer to client composition during VALIDATE_DISPLAY.
*
* The matrix provided is an affine color transformation of the following
* form:
*
* |r.r r.g r.b 0|
* |g.r g.g g.b 0|
* |b.r b.g b.b 0|
* |Tr Tg Tb 1|
*
* This matrix must be provided in row-major form:
*
* {r.r, r.g, r.b, 0, g.r, ...}.
*
* Given a matrix of this form and an input color [R_in, G_in, B_in],
* the input color must first be converted to linear space
* [R_linear, G_linear, B_linear], then the output linear color
* [R_out_linear, G_out_linear, B_out_linear] will be:
*
* R_out_linear = R_linear * r.r + G_linear * g.r + B_linear * b.r + Tr
* G_out_linear = R_linear * r.g + G_linear * g.g + B_linear * b.g + Tg
* B_out_linear = R_linear * r.b + G_linear * g.b + B_linear * b.b + Tb
*
* [R_out_linear, G_out_linear, B_out_linear] must then be converted to
* gamma space: [R_out, G_out, B_out] before blending.
*
* @param matrix is a 4x4 transform matrix (16 floats) as described above.
*/
SET_LAYER_COLOR_TRANSFORM = 67960832 /* 0x40d << @2.1::IComposerClient.Command:OPCODE_SHIFT */,
/*
* SET_LAYER_PER_FRAME_METADATA_BLOBS has this pseudo prototype
*
* setLayerPerFrameMetadataBlobs(Display display, Layer layer,
* vec<PerFrameMetadataBlob> metadata);
*
* This command sends metadata that may be used for tone-mapping the
* associated layer. The metadata structure follows a {key, blob}
* format (see the PerFrameMetadataBlob struct). All keys must be
* returned by a prior call to getPerFrameMetadataKeys and must
* be part of the list of keys associated with blob-type metadata
* (see PerFrameMetadataKey).
*
* This method may be called every frame.
*/
SET_LAYER_PER_FRAME_METADATA_BLOBS = 50593792 /* 0x304 << @2.1::IComposerClient.Command:OPCODE_SHIFT */,
/**
* SET_CLIENT_TARGET_PROPERTY has this pseudo prototype
*
* This command has the following binary layout in bytes:
*
* 0 - 3: clientTargetProperty.pixelFormat
* 4 - 7: clientTargetProperty.dataspace
*
* setClientTargetProperty(ClientTargetProperty clientTargetProperty);
*/
SET_CLIENT_TARGET_PROPERTY = 17104896 /* 0x105 << @2.1::IComposerClient.Command:OPCODE_SHIFT */,
/**
* SET_LAYER_GENERIC_METADATA has this pseudo prototype
*
* setLayerGenericMetadata(string key, bool mandatory, vec<uint8_t> value);
*
* Sets a piece of generic metadata for the given layer. If this
* function is called twice with the same key but different values, the
* newer value must override the older one. Calling this function with a
* 0-length value must reset that key's metadata as if it had not been
* set.
*
* A given piece of metadata may either be mandatory or a hint
* (non-mandatory) as indicated by the second parameter. Mandatory
* metadata may affect the composition result, which is to say that it
* may cause a visible change in the final image. By contrast, hints may
* only affect the composition strategy, such as which layers are
* composited by the client, but must not cause a visible change in the
* final image. The value of the mandatory flag shall match the value
* returned from getLayerGenericMetadataKeys for the given key.
*
* Only keys which have been returned from getLayerGenericMetadataKeys()
* shall be accepted. Any other keys must result in an UNSUPPORTED error.
*
* The value passed into this function shall be the binary
* representation of a HIDL type corresponding to the given key. For
* example, a key of 'com.example.V1_3.Foo' shall be paired with a
* value of type com.example@1.3::Foo, which would be defined in a
* vendor HAL extension.
*
* This function will be encoded in the command buffer in this order:
* 1) The key length, stored as a uint32_t
* 2) The key itself, padded to a uint32_t boundary if necessary
* 3) The mandatory flag, stored as a uint32_t
* 4) The value length in bytes, stored as a uint32_t
* 5) The value itself, padded to a uint32_t boundary if necessary
*
* @param key indicates which metadata value should be set on this layer
* @param mandatory indicates whether this particular key represents
* mandatory metadata or a hint (non-mandatory metadata), as
* described above
* @param value is a binary representation of a HIDL struct
* corresponding to the key as described above
*/
SET_LAYER_GENERIC_METADATA = 68026368 /* 0x40e << @2.1::IComposerClient.Command:OPCODE_SHIFT */,
};
/**
* Supersedes {@link @2.1::IComposerClient.DisplayType}.
*/
enum class DisplayConnectionType : uint32_t {
/**
* Display is connected through internal port, e.g. DSI, eDP.
*/
INTERNAL = 0u,
/**
* Display is connected through external port, e.g. HDMI, DisplayPort.
*/
EXTERNAL = 1u,
};
enum class ContentType : uint32_t {
NONE = 0u,
/**
* These modes correspond to those found in the HDMI 1.4 specification.
*/
GRAPHICS = 1u,
PHOTO = 2u,
CINEMA = 3u,
GAME = 4u,
};
/**
* Constraints for changing vsync period.
*/
struct VsyncPeriodChangeConstraints final {
/**
* Time in CLOCK_MONOTONIC after which the vsync period may change
* (i.e., the vsync period must not change before this time).
*/
int64_t desiredTimeNanos __attribute__ ((aligned(8)));
/**
* If true, requires that the vsync period change must happen seamlessly without
* a noticeable visual artifact.
*/
bool seamlessRequired __attribute__ ((aligned(1)));
};
static_assert(offsetof(::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints, desiredTimeNanos) == 0, "wrong offset");
static_assert(offsetof(::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints, seamlessRequired) == 8, "wrong offset");
static_assert(sizeof(::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints) == 16, "wrong size");
static_assert(__alignof(::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints) == 8, "wrong alignment");
struct ClientTargetProperty final {
::android::hardware::graphics::common::V1_2::PixelFormat pixelFormat __attribute__ ((aligned(4)));
::android::hardware::graphics::common::V1_2::Dataspace dataspace __attribute__ ((aligned(4)));
};
static_assert(offsetof(::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty, pixelFormat) == 0, "wrong offset");
static_assert(offsetof(::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty, dataspace) == 4, "wrong offset");
static_assert(sizeof(::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty) == 8, "wrong size");
static_assert(__alignof(::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty) == 4, "wrong alignment");
struct LayerGenericMetadataKey final {
/**
* Key names must comply with the requirements specified for
* getLayerGenericMetadataKeys below
*/
::android::hardware::hidl_string name __attribute__ ((aligned(8)));
/**
* The mandatory flag is defined in the description of
* setLayerGenericMetadata above
*/
bool mandatory __attribute__ ((aligned(1)));
};
static_assert(offsetof(::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey, name) == 0, "wrong offset");
static_assert(offsetof(::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey, mandatory) == 16, "wrong offset");
static_assert(sizeof(::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey) == 24, "wrong size");
static_assert(__alignof(::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey) == 8, "wrong alignment");
/**
* Returns whether this object's implementation is outside of the current process.
*/
virtual bool isRemote() const override { return false; }
/**
* Provides a IComposerCallback object for the device to call.
*
* This function must be called only once.
*
* @param callback is the IComposerCallback object.
*/
virtual ::android::hardware::Return<void> registerCallback(const ::android::sp<::android::hardware::graphics::composer::V2_1::IComposerCallback>& callback) = 0;
/**
* Returns the maximum number of virtual displays supported by this device
* (which may be 0). The client must not attempt to create more than this
* many virtual displays on this device. This number must not change for
* the lifetime of the device.
*
* @return count is the maximum number of virtual displays supported.
*/
virtual ::android::hardware::Return<uint32_t> getMaxVirtualDisplayCount() = 0;
/**
* Return callback for createVirtualDisplay
*/
using createVirtualDisplay_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, uint64_t display, ::android::hardware::graphics::common::V1_0::PixelFormat format)>;
/**
* Creates a new virtual display with the given width and height. The
* format passed into this function is the default format requested by the
* consumer of the virtual display output buffers.
*
* The display must be assumed to be on from the time the first frame is
* presented until the display is destroyed.
*
* @param width is the width in pixels.
* @param height is the height in pixels.
* @param formatHint is the default output buffer format selected by
* the consumer.
* @param outputBufferSlotCount is the number of output buffer slots to be
* reserved.
* @return error is NONE upon success. Otherwise,
* UNSUPPORTED when the width or height is too large for the
* device to be able to create a virtual display.
* NO_RESOURCES when the device is unable to create a new virtual
* display at this time.
* @return display is the newly-created virtual display.
* @return format is the format of the buffer the device will produce.
*/
virtual ::android::hardware::Return<void> createVirtualDisplay(uint32_t width, uint32_t height, ::android::hardware::graphics::common::V1_0::PixelFormat formatHint, uint32_t outputBufferSlotCount, createVirtualDisplay_cb _hidl_cb) = 0;
/**
* Destroys a virtual display. After this call all resources consumed by
* this display may be freed by the device and any operations performed on
* this display must fail.
*
* @param display is the virtual display to destroy.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_PARAMETER when the display handle which was passed in does
* not refer to a virtual display.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> destroyVirtualDisplay(uint64_t display) = 0;
/**
* Return callback for createLayer
*/
using createLayer_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, uint64_t layer)>;
/**
* Creates a new layer on the given display.
*
* @param display is the display on which to create the layer.
* @param bufferSlotCount is the number of buffer slot to be reserved.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* NO_RESOURCES when the device was unable to create a layer this
* time.
* @return layer is the handle of the new layer.
*/
virtual ::android::hardware::Return<void> createLayer(uint64_t display, uint32_t bufferSlotCount, createLayer_cb _hidl_cb) = 0;
/**
* Destroys the given layer.
*
* @param display is the display on which the layer was created.
* @param layer is the layer to destroy.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_LAYER when an invalid layer handle was passed in.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> destroyLayer(uint64_t display, uint64_t layer) = 0;
/**
* Return callback for getActiveConfig
*/
using getActiveConfig_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, uint32_t config)>;
/**
* Retrieves which display configuration is currently active.
*
* If no display configuration is currently active, this function must
* return BAD_CONFIG. It is the responsibility of the client to call
* setActiveConfig with a valid configuration before attempting to present
* anything on the display.
*
* @param display is the display to which the active config is queried.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_CONFIG when no configuration is currently active.
* @return config is the currently active display configuration.
*/
virtual ::android::hardware::Return<void> getActiveConfig(uint64_t display, getActiveConfig_cb _hidl_cb) = 0;
/**
* Returns whether a client target with the given properties can be
* handled by the device.
*
* This function must return true for a client target with width and
* height equal to the active display configuration dimensions,
* PixelFormat::RGBA_8888, and Dataspace::UNKNOWN. It is not required to
* return true for any other configuration.
*
* @param display is the display to query.
* @param width is the client target width in pixels.
* @param height is the client target height in pixels.
* @param format is the client target format.
* @param dataspace is the client target dataspace, as described in
* setLayerDataspace.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* UNSUPPORTED when the given configuration is not supported.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> getClientTargetSupport(uint64_t display, uint32_t width, uint32_t height, ::android::hardware::graphics::common::V1_0::PixelFormat format, ::android::hardware::graphics::common::V1_0::Dataspace dataspace) = 0;
/**
* Return callback for getColorModes
*/
using getColorModes_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::common::V1_0::ColorMode>& modes)>;
/**
* Returns the color modes supported on this display.
*
* All devices must support at least ColorMode::NATIVE.
*
* @param display is the display to query.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* @return modes is an array of color modes.
*/
virtual ::android::hardware::Return<void> getColorModes(uint64_t display, getColorModes_cb _hidl_cb) = 0;
/**
* Return callback for getDisplayAttribute
*/
using getDisplayAttribute_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, int32_t value)>;
/**
* Returns a display attribute value for a particular display
* configuration.
*
* @param display is the display to query.
* @param config is the display configuration for which to return
* attribute values.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_CONFIG when config does not name a valid configuration for
* this display.
* BAD_PARAMETER when attribute is unrecognized.
* UNSUPPORTED when attribute cannot be queried for the config.
* @return value is the value of the attribute.
*/
virtual ::android::hardware::Return<void> getDisplayAttribute(uint64_t display, uint32_t config, ::android::hardware::graphics::composer::V2_1::IComposerClient::Attribute attribute, getDisplayAttribute_cb _hidl_cb) = 0;
/**
* Return callback for getDisplayConfigs
*/
using getDisplayConfigs_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_vec<uint32_t>& configs)>;
/**
* Returns handles for all of the valid display configurations on this
* display.
*
* @param display is the display to query.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* @return configs is an array of configuration handles.
*/
virtual ::android::hardware::Return<void> getDisplayConfigs(uint64_t display, getDisplayConfigs_cb _hidl_cb) = 0;
/**
* Return callback for getDisplayName
*/
using getDisplayName_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_string& name)>;
/**
* Returns a human-readable version of the display's name.
*
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* @return name is the name of the display.
*/
virtual ::android::hardware::Return<void> getDisplayName(uint64_t display, getDisplayName_cb _hidl_cb) = 0;
/**
* Return callback for getDisplayType
*/
using getDisplayType_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, ::android::hardware::graphics::composer::V2_1::IComposerClient::DisplayType type)>;
/**
* Returns whether the given display is a physical or virtual display.
*
* @param display is the display to query.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* @return type is the type of the display.
*/
virtual ::android::hardware::Return<void> getDisplayType(uint64_t display, getDisplayType_cb _hidl_cb) = 0;
/**
* Return callback for getDozeSupport
*/
using getDozeSupport_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, bool support)>;
/**
* Returns whether the given display supports PowerMode::DOZE and
* PowerMode::DOZE_SUSPEND. DOZE_SUSPEND may not provide any benefit over
* DOZE (see the definition of PowerMode for more information), but if
* both DOZE and DOZE_SUSPEND are no different from PowerMode::ON, the
* device must not claim support.
*
* @param display is the display to query.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* @return support is true only when the display supports doze modes.
*/
virtual ::android::hardware::Return<void> getDozeSupport(uint64_t display, getDozeSupport_cb _hidl_cb) = 0;
/**
* Return callback for getHdrCapabilities
*/
using getHdrCapabilities_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::common::V1_0::Hdr>& types, float maxLuminance, float maxAverageLuminance, float minLuminance)>;
/**
* Returns the high dynamic range (HDR) capabilities of the given display,
* which are invariant with regard to the active configuration.
*
* Displays which are not HDR-capable must return no types.
*
* @param display is the display to query.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* @return types is an array of HDR types, may have 0 elements if the
* display is not HDR-capable.
* @return maxLuminance is the desired content maximum luminance for this
* display in cd/m^2.
* @return maxAverageLuminance - the desired content maximum frame-average
* luminance for this display in cd/m^2.
* @return minLuminance is the desired content minimum luminance for this
* display in cd/m^2.
*/
virtual ::android::hardware::Return<void> getHdrCapabilities(uint64_t display, getHdrCapabilities_cb _hidl_cb) = 0;
/**
* Set the number of client target slots to be reserved.
*
* @param display is the display to which the slots are reserved.
* @param clientTargetSlotCount is the slot count for client targets.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* NO_RESOURCES when unable to reserve the slots.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> setClientTargetSlotCount(uint64_t display, uint32_t clientTargetSlotCount) = 0;
/**
* Sets the active configuration for this display. Upon returning, the
* given display configuration must be active and remain so until either
* this function is called again or the display is disconnected.
*
* @param display is the display to which the active config is set.
* @param config is the new display configuration.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_CONFIG when the configuration handle passed in is not valid
* for this display.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> setActiveConfig(uint64_t display, uint32_t config) = 0;
/**
* Sets the color mode of the given display.
*
* Upon returning from this function, the color mode change must have
* fully taken effect.
*
* All devices must support at least ColorMode::NATIVE, and displays are
* assumed to be in this mode upon hotplug.
*
* @param display is the display to which the color mode is set.
* @param mode is the mode to set to.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_PARAMETER when mode is not a valid color mode.
* UNSUPPORTED when mode is not supported on this display.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> setColorMode(uint64_t display, ::android::hardware::graphics::common::V1_0::ColorMode mode) = 0;
/**
* Sets the power mode of the given display. The transition must be
* complete when this function returns. It is valid to call this function
* multiple times with the same power mode.
*
* All displays must support PowerMode::ON and PowerMode::OFF. Whether a
* display supports PowerMode::DOZE or PowerMode::DOZE_SUSPEND may be
* queried using getDozeSupport.
*
* @param display is the display to which the power mode is set.
* @param mode is the new power mode.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_PARAMETER when mode was not a valid power mode.
* UNSUPPORTED when mode is not supported on this display.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> setPowerMode(uint64_t display, ::android::hardware::graphics::composer::V2_1::IComposerClient::PowerMode mode) = 0;
/**
* Enables or disables the vsync signal for the given display. Virtual
* displays never generate vsync callbacks, and any attempt to enable
* vsync for a virtual display though this function must succeed and have
* no other effect.
*
* @param display is the display to which the vsync mode is set.
* @param enabled indicates whether to enable or disable vsync
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_PARAMETER when enabled was an invalid value.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> setVsyncEnabled(uint64_t display, ::android::hardware::graphics::composer::V2_1::IComposerClient::Vsync enabled) = 0;
/**
* Sets the input command message queue.
*
* @param descriptor is the descriptor of the input command message queue.
* @return error is NONE upon success. Otherwise,
* NO_RESOURCES when failed to set the queue temporarily.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> setInputCommandQueue(const ::android::hardware::MQDescriptorSync<uint32_t>& descriptor) = 0;
/**
* Return callback for getOutputCommandQueue
*/
using getOutputCommandQueue_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::MQDescriptorSync<uint32_t>& descriptor)>;
/**
* Gets the output command message queue.
*
* This function must only be called inside executeCommands closure.
*
* @return error is NONE upon success. Otherwise,
* NO_RESOURCES when failed to get the queue temporarily.
* @return descriptor is the descriptor of the output command queue.
*/
virtual ::android::hardware::Return<void> getOutputCommandQueue(getOutputCommandQueue_cb _hidl_cb) = 0;
/**
* Return callback for executeCommands
*/
using executeCommands_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, bool outQueueChanged, uint32_t outLength, const ::android::hardware::hidl_vec<::android::hardware::hidl_handle>& outHandles)>;
/**
* Executes commands from the input command message queue. Return values
* generated by the input commands are written to the output command
* message queue in the form of value commands.
*
* @param inLength is the length of input commands.
* @param inHandles is an array of handles referenced by the input
* commands.
* @return error is NONE upon success. Otherwise,
* BAD_PARAMETER when inLength is not equal to the length of
* commands in the input command message queue.
* NO_RESOURCES when the output command message queue was not
* properly drained.
* @param outQueueChanged indicates whether the output command message
* queue has changed.
* @param outLength is the length of output commands.
* @param outHandles is an array of handles referenced by the output
* commands.
*/
virtual ::android::hardware::Return<void> executeCommands(uint32_t inLength, const ::android::hardware::hidl_vec<::android::hardware::hidl_handle>& inHandles, executeCommands_cb _hidl_cb) = 0;
/**
* Return callback for getPerFrameMetadataKeys
*/
using getPerFrameMetadataKeys_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::composer::V2_2::IComposerClient::PerFrameMetadataKey>& keys)>;
/**
* Returns the PerFrameMetadataKeys that are supported by this device.
*
* @param display is the display on which to create the layer.
* @return keys is the vector of PerFrameMetadataKey keys that are
* supported by this device.
* @return error is NONE upon success. Otherwise,
* UNSUPPORTED if not supported on underlying HAL
*/
virtual ::android::hardware::Return<void> getPerFrameMetadataKeys(uint64_t display, getPerFrameMetadataKeys_cb _hidl_cb) = 0;
/**
* Return callback for getReadbackBufferAttributes
*/
using getReadbackBufferAttributes_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, ::android::hardware::graphics::common::V1_1::PixelFormat format, ::android::hardware::graphics::common::V1_1::Dataspace dataspace)>;
/**
* getReadbackBufferAttributes
* Returns the format which should be used when allocating a buffer for use by
* device readback as well as the dataspace in which its contents should be
* interpreted.
*
* The width and height of this buffer must be those of the currently-active
* display configuration, and the usage flags must consist of the following:
* BufferUsage::CPU_READ | BufferUsage::GPU_TEXTURE |
* BufferUsage::COMPOSER_OUTPUT
*
* The format and dataspace provided must be sufficient such that if a
* correctly-configured buffer is passed into setReadbackBuffer, filled by
* the device, and then displayed by the client as a full-screen buffer, the
* output of the display remains the same (subject to the note about protected
* content in the description of setReadbackBuffer).
*
* If the active configuration or color mode of this display has changed
* since a previous call to this function, it must be called again prior to
* setting a readback buffer such that the returned format and dataspace can
* be updated accordingly.
*
* Parameters:
* @param display - the display on which to create the layer.
*
* @return format - the format the client should use when allocating a device
* readback buffer
* @return dataspace - the dataspace to use when interpreting the
* contents of a device readback buffer
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* UNSUPPORTED if not supported on underlying HAL
*
* See also:
* setReadbackBuffer
* getReadbackBufferFence
*/
virtual ::android::hardware::Return<void> getReadbackBufferAttributes(uint64_t display, getReadbackBufferAttributes_cb _hidl_cb) = 0;
/**
* Return callback for getReadbackBufferFence
*/
using getReadbackBufferFence_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_handle& acquireFence)>;
/**
* getReadbackBufferFence
* Returns an acquire sync fence file descriptor which must signal when the
* buffer provided to setReadbackBuffer has been filled by the device and is
* safe for the client to read.
*
* If it is already safe to read from this buffer, -1 may be returned instead.
* The client takes ownership of this file descriptor and is responsible for
* closing it when it is no longer needed.
*
* This function must be called immediately after the composition cycle being
* captured into the readback buffer. The complete ordering of a readback buffer
* capture is as follows:
*
* getReadbackBufferAttributes
* // Readback buffer is allocated
* // Many frames may pass
*
* setReadbackBuffer
* validateDisplay
* presentDisplay
* getReadbackBufferFence
* // Implicitly wait on the acquire fence before accessing the buffer
*
* Parameters:
* @param display - the display on which to create the layer.
*
* @return acquireFence - a sync fence file descriptor as described above; pointer
* must be non-NULL
* @return error - is HWC2_ERROR_NONE or one of the following errors:
* BAD_DISPLAY - an invalid display handle was passed in
* NO_RESOURCES - the readback operation was successful, but
* resulted in a different validate result than would
* have occurred without readback
* UNSUPPORTED - the readback operation was unsuccessful because of
* resource constraints, the presence of protected
* content, or other reasons; -1 must be returned for
* acquireFence
*
* See also:
* getReadbackBufferAttributes
* setReadbackBuffer
*/
virtual ::android::hardware::Return<void> getReadbackBufferFence(uint64_t display, getReadbackBufferFence_cb _hidl_cb) = 0;
/**
* setReadbackBuffer
* Sets the readback buffer to be filled with the contents of the next
* composition performed for this display (i.e., the contents present at the
* time of the next validateDisplay/presentDisplay cycle).
*
* This buffer must have been allocated as described in
* getReadbackBufferAttributes and is in the dataspace provided by the same.
*
* If there is hardware protected content on the display at the time of the next
* composition, the area of the readback buffer covered by such content must be
* completely black. Any areas of the buffer not covered by such content may
* optionally be black as well.
*
* The release fence file descriptor provided works identically to the one
* described for setOutputBuffer.
*
* This function must not be called between any call to validateDisplay and a
* subsequent call to presentDisplay.
*
* Parameters:
* @param display - the display on which to create the layer.
* @param buffer - the new readback buffer
* @param releaseFence - a sync fence file descriptor as described in setOutputBuffer
*
* @return error - is HWC2_ERROR_NONE or one of the following errors:
* HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
* HWC2_ERROR_BAD_PARAMETER - the new readback buffer handle was invalid
*
* See also:
* getReadbackBufferAttributes
* getReadbackBufferFence
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> setReadbackBuffer(uint64_t display, const ::android::hardware::hidl_handle& buffer, const ::android::hardware::hidl_handle& releaseFence) = 0;
/**
* Return callback for createVirtualDisplay_2_2
*/
using createVirtualDisplay_2_2_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, uint64_t display, ::android::hardware::graphics::common::V1_1::PixelFormat format)>;
/**
* createVirtualDisplay_2_2
* Creates a new virtual display with the given width and height. The
* format passed into this function is the default format requested by the
* consumer of the virtual display output buffers.
*
* The display must be assumed to be on from the time the first frame is
* presented until the display is destroyed.
*
* @param width is the width in pixels.
* @param height is the height in pixels.
* @param formatHint is the default output buffer format selected by
* the consumer.
* @param outputBufferSlotCount is the number of output buffer slots to be
* reserved.
* @return error is NONE upon success. Otherwise,
* UNSUPPORTED when the width or height is too large for the
* device to be able to create a virtual display.
* NO_RESOURCES when the device is unable to create a new virtual
* display at this time.
* @return display is the newly-created virtual display.
* @return format is the format of the buffer the device will produce.
*/
virtual ::android::hardware::Return<void> createVirtualDisplay_2_2(uint32_t width, uint32_t height, ::android::hardware::graphics::common::V1_1::PixelFormat formatHint, uint32_t outputBufferSlotCount, createVirtualDisplay_2_2_cb _hidl_cb) = 0;
/**
* getClientTargetSupport_2_2
* Returns whether a client target with the given properties can be
* handled by the device.
*
* This function must return true for a client target with width and
* height equal to the active display configuration dimensions,
* PixelFormat::RGBA_8888, and Dataspace::UNKNOWN. It is not required to
* return true for any other configuration.
*
* @param display is the display to query.
* @param width is the client target width in pixels.
* @param height is the client target height in pixels.
* @param format is the client target format.
* @param dataspace is the client target dataspace, as described in
* setLayerDataspace.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* UNSUPPORTED when the given configuration is not supported.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> getClientTargetSupport_2_2(uint64_t display, uint32_t width, uint32_t height, ::android::hardware::graphics::common::V1_1::PixelFormat format, ::android::hardware::graphics::common::V1_1::Dataspace dataspace) = 0;
/**
* setPowerMode_2_2
* Sets the power mode of the given display. The transition must be
* complete when this function returns. It is valid to call this function
* multiple times with the same power mode.
*
* All displays must support PowerMode::ON and PowerMode::OFF. Whether a
* display supports PowerMode::DOZE or PowerMode::DOZE_SUSPEND may be
* queried using getDozeSupport.
*
* @param display is the display to which the power mode is set.
* @param mode is the new power mode.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_PARAMETER when mode was not a valid power mode.
* UNSUPPORTED when mode is not supported on this display.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> setPowerMode_2_2(uint64_t display, ::android::hardware::graphics::composer::V2_2::IComposerClient::PowerMode mode) = 0;
/**
* Return callback for getColorModes_2_2
*/
using getColorModes_2_2_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::common::V1_1::ColorMode>& modes)>;
/**
* Returns the color modes supported on this display.
*
* All devices must support at least ColorMode::NATIVE.
*
* @param display is the display to query.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* @return modes is an array of color modes.
*/
virtual ::android::hardware::Return<void> getColorModes_2_2(uint64_t display, getColorModes_2_2_cb _hidl_cb) = 0;
/**
* Return callback for getRenderIntents
*/
using getRenderIntents_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::common::V1_1::RenderIntent>& intents)>;
/**
* Returns the render intents supported by the specified display and color
* mode.
*
* For SDR color modes, RenderIntent::COLORIMETRIC must be supported. For
* HDR color modes, RenderIntent::TONE_MAP_COLORIMETRIC must be supported.
*
* @param display is the display to query.
* @param mode is the color mode to query.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_PARAMETER when an invalid color mode was passed in.
* @return intents is an array of render intents.
*/
virtual ::android::hardware::Return<void> getRenderIntents(uint64_t display, ::android::hardware::graphics::common::V1_1::ColorMode mode, getRenderIntents_cb _hidl_cb) = 0;
/**
* Sets the color mode and render intent of the given display.
*
* The color mode and render intent change must take effect on next
* presentDisplay.
*
* All devices must support at least ColorMode::NATIVE and
* RenderIntent::COLORIMETRIC, and displays are assumed to be in this mode
* upon hotplug.
*
* @param display is the display to which the color mode is set.
* @param mode is the color mode to set to.
* @param intent is the render intent to set to.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_PARAMETER when mode or intent is invalid
* UNSUPPORTED when mode or intent is not supported on this
* display.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> setColorMode_2_2(uint64_t display, ::android::hardware::graphics::common::V1_1::ColorMode mode, ::android::hardware::graphics::common::V1_1::RenderIntent intent) = 0;
/**
* Return callback for getDataspaceSaturationMatrix
*/
using getDataspaceSaturationMatrix_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_array<float, 4, 4>& matrix)>;
/*
* By default, layer dataspaces are mapped to the current color mode
* colorimetrically with a few exceptions.
*
* When the layer dataspace is a legacy dataspace (see
* common@1.1::Dataspace) and the display render intent is
* RenderIntent::ENHANCE, the pixel values can go through an
* implementation-defined saturation transform before being mapped to the
* current color mode colorimetrically.
*
* Colors that are out of the gamut of the current color mode are
* hard-clipped.
*
*
* Returns the saturation matrix of the specified legacy dataspace.
*
* The saturation matrix can be used to approximate the legacy dataspace
* saturation transform. It is to be applied on linear pixel values like
* this:
*
* (in GLSL)
* linearSrgb = saturationMatrix * linearSrgb;
*
* @param dataspace must be Dataspace::SRGB_LINEAR.
* @return error is NONE upon success. Otherwise,
* BAD_PARAMETER when an invalid dataspace was passed in.
* @return matrix is the 4x4 column-major matrix used to approximate the
* legacy dataspace saturation operation. The last row must be
* [0.0, 0.0, 0.0, 1.0].
*/
virtual ::android::hardware::Return<void> getDataspaceSaturationMatrix(::android::hardware::graphics::common::V1_1::Dataspace dataspace, getDataspaceSaturationMatrix_cb _hidl_cb) = 0;
/**
* Return callback for executeCommands_2_2
*/
using executeCommands_2_2_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, bool outQueueChanged, uint32_t outLength, const ::android::hardware::hidl_vec<::android::hardware::hidl_handle>& outHandles)>;
/**
* Executes commands from the input command message queue. Return values
* generated by the input commands are written to the output command
* message queue in the form of value commands.
*
* @param inLength is the length of input commands.
* @param inHandles is an array of handles referenced by the input
* commands.
* @return error is NONE upon success. Otherwise,
* BAD_PARAMETER when inLength is not equal to the length of
* commands in the input command message queue.
* NO_RESOURCES when the output command message queue was not
* properly drained.
* @param outQueueChanged indicates whether the output command message
* queue has changed.
* @param outLength is the length of output commands.
* @param outHandles is an array of handles referenced by the output
* commands.
*/
virtual ::android::hardware::Return<void> executeCommands_2_2(uint32_t inLength, const ::android::hardware::hidl_vec<::android::hardware::hidl_handle>& inHandles, executeCommands_2_2_cb _hidl_cb) = 0;
/**
* Return callback for getDisplayIdentificationData
*/
using getDisplayIdentificationData_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, uint8_t port, const ::android::hardware::hidl_vec<uint8_t>& data)>;
/**
* Returns the port and data that describe a physical display. The port is
* a unique number that identifies a physical connector (e.g. eDP, HDMI)
* for display output. The data blob is parsed to determine its format,
* typically EDID 1.3 as specified in VESA E-EDID Standard Release A
* Revision 1.
*
* @param display is the display to query.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* UNSUPPORTED when identification data is unavailable.
* @return port is the connector to which the display is connected.
* @return data is the EDID 1.3 blob identifying the display.
*/
virtual ::android::hardware::Return<void> getDisplayIdentificationData(uint64_t display, getDisplayIdentificationData_cb _hidl_cb) = 0;
/**
* Return callback for getReadbackBufferAttributes_2_3
*/
using getReadbackBufferAttributes_2_3_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, ::android::hardware::graphics::common::V1_2::PixelFormat format, ::android::hardware::graphics::common::V1_2::Dataspace dataspace)>;
/**
* getReadbackBufferAttributes_2_3
* Returns the format which should be used when allocating a buffer for use by
* device readback as well as the dataspace in which its contents must be
* interpreted.
*
* The width and height of this buffer must be those of the currently-active
* display configuration, and the usage flags must consist of the following:
* BufferUsage::CPU_READ | BufferUsage::GPU_TEXTURE |
* BufferUsage::COMPOSER_OUTPUT
*
* The format and dataspace provided must be sufficient such that if a
* correctly-configured buffer is passed into setReadbackBuffer, filled by
* the device, and then displayed by the client as a full-screen buffer, the
* output of the display remains the same (subject to the note about protected
* content in the description of setReadbackBuffer).
*
* If the active configuration or color mode of this display has changed
* since a previous call to this function, it must be called again prior to
* setting a readback buffer such that the returned format and dataspace will
* be updated accordingly.
*
* Parameters:
* @param display - the display on which to create the layer.
*
* @return format - the format the client should use when allocating a device
* readback buffer
* @return dataspace - the dataspace to use when interpreting the
* contents of a device readback buffer
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* UNSUPPORTED if not supported on underlying HAL
*
* See also:
* setReadbackBuffer
* getReadbackBufferFence
*/
virtual ::android::hardware::Return<void> getReadbackBufferAttributes_2_3(uint64_t display, getReadbackBufferAttributes_2_3_cb _hidl_cb) = 0;
/**
* getClientTargetSupport_2_3
* Returns whether a client target with the given properties can be
* handled by the device.
*
* This function must return true for a client target with width and
* height equal to the active display configuration dimensions,
* PixelFormat::RGBA_8888, and Dataspace::UNKNOWN. It is not required to
* return true for any other configuration.
*
* @param display is the display to query.
* @param width is the client target width in pixels.
* @param height is the client target height in pixels.
* @param format is the client target format.
* @param dataspace is the client target dataspace, as described in
* setLayerDataspace.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* UNSUPPORTED when the given configuration is not supported.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> getClientTargetSupport_2_3(uint64_t display, uint32_t width, uint32_t height, ::android::hardware::graphics::common::V1_2::PixelFormat format, ::android::hardware::graphics::common::V1_2::Dataspace dataspace) = 0;
/**
* Return callback for getDisplayedContentSamplingAttributes
*/
using getDisplayedContentSamplingAttributes_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, ::android::hardware::graphics::common::V1_2::PixelFormat format, ::android::hardware::graphics::common::V1_2::Dataspace dataspace, ::android::hardware::hidl_bitfield<::android::hardware::graphics::composer::V2_3::IComposerClient::FormatColorComponent> componentMask)>;
/**
* Query for what types of color sampling the hardware supports.
*
* @param display is the display where the samples are collected.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display was passed in, or
* UNSUPPORTED when there is no efficient way to sample.
* @return format The format of the sampled pixels.
* @return dataspace The dataspace of the sampled pixels.
* @return componentMask The mask of which components can be sampled.
*/
virtual ::android::hardware::Return<void> getDisplayedContentSamplingAttributes(uint64_t display, getDisplayedContentSamplingAttributes_cb _hidl_cb) = 0;
/**
* Enables or disables the collection of color content statistics
* on this display.
*
* Sampling occurs on the contents of the final composition on this display
* (i.e., the contents presented on screen). Samples should be collected after all
* color transforms have been applied.
*
* Sampling support is optional, and is set to DISABLE by default.
* On each call to ENABLE, all collected statistics must be reset.
*
* Sample data can be queried via getDisplayedContentSample().
*
* @param display is the display to which the sampling mode is set.
* @param enabled indicates whether to enable or disable sampling.
* @param componentMask The mask of which components should be sampled. If zero, all supported
* components are to be enabled.
* @param maxFrames is the maximum number of frames that should be stored before discard.
* The sample represents the most-recently posted frames.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in,
* BAD_PARAMETER when enabled was an invalid value, or
* NO_RESOURCES when the requested ringbuffer size via maxFrames was
* not available.
* UNSUPPORTED when there is no efficient way to sample.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> setDisplayedContentSamplingEnabled(uint64_t display, ::android::hardware::graphics::composer::V2_3::IComposerClient::DisplayedContentSampling enable, ::android::hardware::hidl_bitfield<::android::hardware::graphics::composer::V2_3::IComposerClient::FormatColorComponent> componentMask, uint64_t maxFrames) = 0;
/**
* Return callback for getDisplayedContentSample
*/
using getDisplayedContentSample_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, uint64_t frameCount, const ::android::hardware::hidl_vec<uint64_t>& sampleComponent0, const ::android::hardware::hidl_vec<uint64_t>& sampleComponent1, const ::android::hardware::hidl_vec<uint64_t>& sampleComponent2, const ::android::hardware::hidl_vec<uint64_t>& sampleComponent3)>;
/**
* Collects the results of display content color sampling for display.
*
* Collection of data can occur whether the sampling is in ENABLE or
* DISABLE state.
*
* @param display is the display to which the sampling is collected.
* @param maxFrames is the maximum number of frames that should be represented in the sample.
* The sample represents the most-recently posted frames.
* If maxFrames is 0, all frames are to be represented by the sample.
* @param timestamp is the timestamp after which any frames were posted that should be
* included in the sample. Timestamp is CLOCK_MONOTONIC.
* If timestamp is 0, do not filter from the sample by time.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display was passed in, or
* UNSUPPORTED when there is no efficient way to sample, or
* BAD_PARAMETER when the component is not supported by the hardware.
* @return frameCount The number of frames represented by this sample.
* @return sampleComponent0 is a histogram counting how many times a pixel of a given value
* was displayed onscreen for FORMAT_COMPONENT_0.
* The buckets of the histogram are evenly weighted, the number of buckets
* is device specific.
* eg, for RGBA_8888, if sampleComponent0 is {10, 6, 4, 1} this means that
* 10 red pixels were displayed onscreen in range 0x00->0x3F, 6 red pixels
* were displayed onscreen in range 0x40->0x7F, etc.
* @return sampleComponent1 is the same sample definition as sampleComponent0,
* but for FORMAT_COMPONENT_1.
* @return sampleComponent2 is the same sample definition as sampleComponent0,
* but for FORMAT_COMPONENT_2.
* @return sampleComponent3 is the same sample definition as sampleComponent0,
* but for FORMAT_COMPONENT_3.
*/
virtual ::android::hardware::Return<void> getDisplayedContentSample(uint64_t display, uint64_t maxFrames, uint64_t timestamp, getDisplayedContentSample_cb _hidl_cb) = 0;
/**
* Return callback for executeCommands_2_3
*/
using executeCommands_2_3_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, bool outQueueChanged, uint32_t outLength, const ::android::hardware::hidl_vec<::android::hardware::hidl_handle>& outHandles)>;
/**
* Executes commands from the input command message queue. Return values
* generated by the input commands are written to the output command
* message queue in the form of value commands.
*
* @param inLength is the length of input commands.
* @param inHandles is an array of handles referenced by the input
* commands.
* @return error is NONE upon success. Otherwise,
* BAD_PARAMETER when inLength is not equal to the length of
* commands in the input command message queue.
* NO_RESOURCES when the output command message queue was not
* properly drained.
* @param outQueueChanged indicates whether the output command message
* queue has changed.
* @param outLength is the length of output commands.
* @param outHandles is an array of handles referenced by the output
* commands.
*/
virtual ::android::hardware::Return<void> executeCommands_2_3(uint32_t inLength, const ::android::hardware::hidl_vec<::android::hardware::hidl_handle>& inHandles, executeCommands_2_3_cb _hidl_cb) = 0;
/**
* Return callback for getRenderIntents_2_3
*/
using getRenderIntents_2_3_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::common::V1_1::RenderIntent>& intents)>;
/**
* Returns the render intents supported by the specified display and color
* mode.
*
* For SDR color modes, RenderIntent::COLORIMETRIC must be supported. For
* HDR color modes, RenderIntent::TONE_MAP_COLORIMETRIC must be supported.
*
* @param display is the display to query.
* @param mode is the color mode to query.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_PARAMETER when an invalid color mode was passed in.
* @return intents is an array of render intents.
*/
virtual ::android::hardware::Return<void> getRenderIntents_2_3(uint64_t display, ::android::hardware::graphics::common::V1_2::ColorMode mode, getRenderIntents_2_3_cb _hidl_cb) = 0;
/**
* Return callback for getColorModes_2_3
*/
using getColorModes_2_3_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::common::V1_2::ColorMode>& modes)>;
/**
* Returns the color modes supported on this display.
*
* All devices must support at least ColorMode::NATIVE.
*
* @param display is the display to query.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* @return modes is an array of color modes.
*/
virtual ::android::hardware::Return<void> getColorModes_2_3(uint64_t display, getColorModes_2_3_cb _hidl_cb) = 0;
/**
* Sets the color mode and render intent of the given display.
*
* The color mode and render intent change must take effect on next
* presentDisplay.
*
* All devices must support at least ColorMode::NATIVE and
* RenderIntent::COLORIMETRIC, and displays are assumed to be in this mode
* upon hotplug.
*
* @param display is the display to which the color mode is set.
* @param mode is the color mode to set to.
* @param intent is the render intent to set to.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_PARAMETER when mode or intent is invalid
* UNSUPPORTED when mode or intent is not supported on this
* display.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> setColorMode_2_3(uint64_t display, ::android::hardware::graphics::common::V1_2::ColorMode mode, ::android::hardware::graphics::common::V1_1::RenderIntent intent) = 0;
/**
* Return callback for getDisplayCapabilities
*/
using getDisplayCapabilities_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::composer::V2_3::IComposerClient::DisplayCapability>& capabilities)>;
/**
* Provides a list of supported capabilities (as described in the
* definition of DisplayCapability above). This list must not change after
* initialization.
*
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* @return capabilities is a list of supported capabilities.
*/
virtual ::android::hardware::Return<void> getDisplayCapabilities(uint64_t display, getDisplayCapabilities_cb _hidl_cb) = 0;
/**
* Return callback for getPerFrameMetadataKeys_2_3
*/
using getPerFrameMetadataKeys_2_3_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::composer::V2_3::IComposerClient::PerFrameMetadataKey>& keys)>;
/**
* Returns the PerFrameMetadataKeys that are supported by this device.
*
* @param display is the display on which to create the layer.
* @return keys is the vector of PerFrameMetadataKey keys that are
* supported by this device.
* @return error is NONE upon success. Otherwise,
* UNSUPPORTED if not supported on underlying HAL
*/
virtual ::android::hardware::Return<void> getPerFrameMetadataKeys_2_3(uint64_t display, getPerFrameMetadataKeys_2_3_cb _hidl_cb) = 0;
/**
* Return callback for getHdrCapabilities_2_3
*/
using getHdrCapabilities_2_3_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::common::V1_2::Hdr>& types, float maxLuminance, float maxAverageLuminance, float minLuminance)>;
/**
* Returns the high dynamic range (HDR) capabilities of the given display,
* which are invariant with regard to the active configuration.
*
* Displays which are not HDR-capable must return no types.
*
* @param display is the display to query.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* @return types is an array of HDR types, may have 0 elements if the
* display is not HDR-capable.
* @return maxLuminance is the desired content maximum luminance for this
* display in cd/m^2.
* @return maxAverageLuminance - the desired content maximum frame-average
* luminance for this display in cd/m^2.
* @return minLuminance is the desired content minimum luminance for this
* display in cd/m^2.
*/
virtual ::android::hardware::Return<void> getHdrCapabilities_2_3(uint64_t display, getHdrCapabilities_2_3_cb _hidl_cb) = 0;
/**
* Return callback for getDisplayBrightnessSupport
*/
using getDisplayBrightnessSupport_cb = std::function<void(::android::hardware::graphics::composer::V2_1::Error error, bool support)>;
/**
* Use getDisplayCapabilities instead. If brightness is supported, must return
* DisplayCapability::BRIGHTNESS as one of the display capabilities via getDisplayCapabilities.
* Only use getDisplayCapabilities as the source of truth to query brightness support.
*
* Gets whether brightness operations are supported on a display.
*
* @param display
* The display.
*
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when the display is invalid, or
* BAD_PARAMETER when the output parameter is invalid.
* @return support
* Whether brightness operations are supported on the display.
*/
virtual ::android::hardware::Return<void> getDisplayBrightnessSupport(uint64_t display, getDisplayBrightnessSupport_cb _hidl_cb) = 0;
/**
* Sets the brightness of a display.
*
* Ideally, the brightness change should take effect in the next frame post (so that it can be
* aligned with color transforms).
*
* @param display
* The display whose brightness is set.
* @param brightness
* A number between 0.0f (minimum brightness) and 1.0f (maximum brightness), or -1.0 to
* turn the backlight off.
*
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when the display is invalid, or
* UNSUPPORTED when brightness operations are not supported, or
* BAD_PARAMETER when the brightness is invalid, or
* NO_RESOURCES when the brightness cannot be applied.
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_1::Error> setDisplayBrightness(uint64_t display, float brightness) = 0;
/**
* Provides a IComposerCallback object for the device to call.
*
* This function must be called only once.
*
* @param callback is the IComposerCallback object.
*/
virtual ::android::hardware::Return<void> registerCallback_2_4(const ::android::sp<::android::hardware::graphics::composer::V2_4::IComposerCallback>& callback) = 0;
/**
* Return callback for getDisplayCapabilities_2_4
*/
using getDisplayCapabilities_2_4_cb = std::function<void(::android::hardware::graphics::composer::V2_4::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability>& capabilities)>;
/**
* Provides a list of supported capabilities (as described in the
* definition of DisplayCapability above). This list must not change after
* initialization.
*
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* @return capabilities is a list of supported capabilities.
*/
virtual ::android::hardware::Return<void> getDisplayCapabilities_2_4(uint64_t display, getDisplayCapabilities_2_4_cb _hidl_cb) = 0;
/**
* Return callback for getDisplayConnectionType
*/
using getDisplayConnectionType_cb = std::function<void(::android::hardware::graphics::composer::V2_4::Error error, ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType type)>;
/**
* Returns whether the given physical display is internal or external.
*
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when the given display is invalid or virtual.
* @return type is the connection type of the display.
*/
virtual ::android::hardware::Return<void> getDisplayConnectionType(uint64_t display, getDisplayConnectionType_cb _hidl_cb) = 0;
/**
* Return callback for getDisplayAttribute_2_4
*/
using getDisplayAttribute_2_4_cb = std::function<void(::android::hardware::graphics::composer::V2_4::Error error, int32_t value)>;
/**
* Returns a display attribute value for a particular display
* configuration.
*
* @param display is the display to query.
* @param config is the display configuration for which to return
* attribute values.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_CONFIG when config does not name a valid configuration for
* this display.
* BAD_PARAMETER when attribute is unrecognized.
* UNSUPPORTED when attribute cannot be queried for the config.
* @return value is the value of the attribute.
*/
virtual ::android::hardware::Return<void> getDisplayAttribute_2_4(uint64_t display, uint32_t config, ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute attribute, getDisplayAttribute_2_4_cb _hidl_cb) = 0;
/**
* Return callback for getDisplayVsyncPeriod
*/
using getDisplayVsyncPeriod_cb = std::function<void(::android::hardware::graphics::composer::V2_4::Error error, uint32_t vsyncPeriodNanos)>;
/**
* Retrieves which vsync period the display is currently using.
*
* If no display configuration is currently active, this function must
* return BAD_CONFIG. If the vsync period is about to change due to a
* setActiveConfigWithConstraints call, this function must return the current vsync period
* until the change takes place.
*
* @param display is the display for which the vsync period is queried.
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_CONFIG when no configuration is currently active.
* @return vsyncPeriodNanos is the current vsync period of the display.
*/
virtual ::android::hardware::Return<void> getDisplayVsyncPeriod(uint64_t display, getDisplayVsyncPeriod_cb _hidl_cb) = 0;
/**
* Return callback for setActiveConfigWithConstraints
*/
using setActiveConfigWithConstraints_cb = std::function<void(::android::hardware::graphics::composer::V2_4::Error error, const ::android::hardware::graphics::composer::V2_4::VsyncPeriodChangeTimeline& timeline)>;
/**
* Sets the active configuration and the refresh rate for this display.
* If the new config shares the same config group as the current config,
* only the vsync period shall change.
* Upon returning, the given display configuration, except vsync period, must be active and
* remain so until either this function is called again or the display is disconnected.
* When the display starts to refresh at the new vsync period, onVsync_2_4 callback must be
* called with the new vsync period.
*
* @param display is the display for which the active config is set.
* @param config is the new display configuration.
* @param vsyncPeriodChangeConstraints are the constraints required for changing vsync period.
*
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* BAD_CONFIG when the configuration handle passed in is not valid
* for this display.
* SEAMLESS_NOT_ALLOWED when seamlessRequired was true but config provided doesn't
* share the same config group as the current config.
* SEAMLESS_NOT_POSSIBLE when seamlessRequired was true but the display cannot achieve
* the vsync period change without a noticeable visual artifact.
* When the conditions change and it may be possible to change
* the vsync period seamlessly, onSeamlessPossible callback
* must be called to indicate that caller should retry.
* @return timeline is the timeline for the vsync period change.
*/
virtual ::android::hardware::Return<void> setActiveConfigWithConstraints(uint64_t display, uint32_t config, const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& vsyncPeriodChangeConstraints, setActiveConfigWithConstraints_cb _hidl_cb) = 0;
/**
* Requests the display to enable/disable its low latency mode.
*
* If the display is connected via HDMI 2.1, then Auto Low Latency Mode should be triggered. If
* the display is internally connected and a custom low latency mode is available, that should
* be triggered.
*
* This function should only be called if the display reports support for
* DisplayCapability::AUTO_LOW_LATENCY_MODE from getDisplayCapabilities_2_4.
*
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* UNSUPPORTED when AUTO_LOW_LATENCY_MODE is not supported by the composer
* implementation or the given display
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_4::Error> setAutoLowLatencyMode(uint64_t display, bool on) = 0;
/**
* Return callback for getSupportedContentTypes
*/
using getSupportedContentTypes_cb = std::function<void(::android::hardware::graphics::composer::V2_4::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType>& supportedContentTypes)>;
/**
* Provides a list of all the content types supported by this display (any of
* ContentType::{GRAPHICS, PHOTO, CINEMA, GAME}). This list must not change after
* initialization.
*
* Content types are introduced in HDMI 1.4 and supporting them is optional. The
* ContentType::NONE is always supported and will not be returned by this method..
*
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* @return supportedContentTypes is a list of supported content types.
*/
virtual ::android::hardware::Return<void> getSupportedContentTypes(uint64_t display, getSupportedContentTypes_cb _hidl_cb) = 0;
/**
* Instructs the connected display that the content being shown is of the given type - one of
* GRAPHICS, PHOTO, CINEMA, GAME.
*
* Content types are introduced in HDMI 1.4 and supporting them is optional. If they are
* supported, this signal should switch the display to a mode that is optimal for the given
* type of content. See HDMI 1.4 specification for more information.
*
* If the display is internally connected (not through HDMI), and such modes are available,
* this method should trigger them.
*
* This function should only be called if the display reports support for the corresponding
* content type (ContentType::{GRAPHICS, PHOTO, CINEMA, GAME}) from getSupportedContentTypes.
* ContentType::NONE is supported by default and can always be set.
*
* @return error is NONE upon success. Otherwise,
* BAD_DISPLAY when an invalid display handle was passed in.
* UNSUPPORTED when the given content type is not supported by the composer
* implementation or the given display
*/
virtual ::android::hardware::Return<::android::hardware::graphics::composer::V2_4::Error> setContentType(uint64_t display, ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType type) = 0;
/**
* Return callback for getLayerGenericMetadataKeys
*/
using getLayerGenericMetadataKeys_cb = std::function<void(::android::hardware::graphics::composer::V2_4::Error error, const ::android::hardware::hidl_vec<::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey>& keys)>;
/**
* Retrieves the set of keys that may be passed into setLayerGenericMetadata
*
* Key names must meet the following requirements:
* - Must be specified in reverse domain name notation
* - Must not start with 'com.android' or 'android'
* - Must be unique within the returned vector
* - Must correspond to a matching HIDL struct type, which defines the
* structure of its values. For example, the key 'com.example.V1-3.Foo'
* should correspond to a value of type com.example@1.3::Foo, which is
* defined in a vendor HAL extension
*/
virtual ::android::hardware::Return<void> getLayerGenericMetadataKeys(getLayerGenericMetadataKeys_cb _hidl_cb) = 0;
/**
* Return callback for interfaceChain
*/
using interfaceChain_cb = std::function<void(const ::android::hardware::hidl_vec<::android::hardware::hidl_string>& descriptors)>;
/*
* Provides run-time type information for this object.
* For example, for the following interface definition:
* package android.hardware.foo@1.0;
* interface IParent {};
* interface IChild extends IParent {};
* Calling interfaceChain on an IChild object must yield the following:
* ["android.hardware.foo@1.0::IChild",
* "android.hardware.foo@1.0::IParent"
* "android.hidl.base@1.0::IBase"]
*
* @return descriptors a vector of descriptors of the run-time type of the
* object.
*/
virtual ::android::hardware::Return<void> interfaceChain(interfaceChain_cb _hidl_cb) override;
/*
* Emit diagnostic information to the given file.
*
* Optionally overriden.
*
* @param fd File descriptor to dump data to.
* Must only be used for the duration of this call.
* @param options Arguments for debugging.
* Must support empty for default debug information.
*/
virtual ::android::hardware::Return<void> debug(const ::android::hardware::hidl_handle& fd, const ::android::hardware::hidl_vec<::android::hardware::hidl_string>& options) override;
/**
* Return callback for interfaceDescriptor
*/
using interfaceDescriptor_cb = std::function<void(const ::android::hardware::hidl_string& descriptor)>;
/*
* Provides run-time type information for this object.
* For example, for the following interface definition:
* package android.hardware.foo@1.0;
* interface IParent {};
* interface IChild extends IParent {};
* Calling interfaceDescriptor on an IChild object must yield
* "android.hardware.foo@1.0::IChild"
*
* @return descriptor a descriptor of the run-time type of the
* object (the first element of the vector returned by
* interfaceChain())
*/
virtual ::android::hardware::Return<void> interfaceDescriptor(interfaceDescriptor_cb _hidl_cb) override;
/**
* Return callback for getHashChain
*/
using getHashChain_cb = std::function<void(const ::android::hardware::hidl_vec<::android::hardware::hidl_array<uint8_t, 32>>& hashchain)>;
/*
* Returns hashes of the source HAL files that define the interfaces of the
* runtime type information on the object.
* For example, for the following interface definition:
* package android.hardware.foo@1.0;
* interface IParent {};
* interface IChild extends IParent {};
* Calling interfaceChain on an IChild object must yield the following:
* [(hash of IChild.hal),
* (hash of IParent.hal)
* (hash of IBase.hal)].
*
* SHA-256 is used as the hashing algorithm. Each hash has 32 bytes
* according to SHA-256 standard.
*
* @return hashchain a vector of SHA-1 digests
*/
virtual ::android::hardware::Return<void> getHashChain(getHashChain_cb _hidl_cb) override;
/*
* This method trigger the interface to enable/disable instrumentation based
* on system property hal.instrumentation.enable.
*/
virtual ::android::hardware::Return<void> setHALInstrumentation() override;
/*
* Registers a death recipient, to be called when the process hosting this
* interface dies.
*
* @param recipient a hidl_death_recipient callback object
* @param cookie a cookie that must be returned with the callback
* @return success whether the death recipient was registered successfully.
*/
virtual ::android::hardware::Return<bool> linkToDeath(const ::android::sp<::android::hardware::hidl_death_recipient>& recipient, uint64_t cookie) override;
/*
* Provides way to determine if interface is running without requesting
* any functionality.
*/
virtual ::android::hardware::Return<void> ping() override;
/**
* Return callback for getDebugInfo
*/
using getDebugInfo_cb = std::function<void(const ::android::hidl::base::V1_0::DebugInfo& info)>;
/*
* Get debug information on references on this interface.
* @return info debugging information. See comments of DebugInfo.
*/
virtual ::android::hardware::Return<void> getDebugInfo(getDebugInfo_cb _hidl_cb) override;
/*
* This method notifies the interface that one or more system properties
* have changed. The default implementation calls
* (C++) report_sysprop_change() in libcutils or
* (Java) android.os.SystemProperties.reportSyspropChanged,
* which in turn calls a set of registered callbacks (eg to update trace
* tags).
*/
virtual ::android::hardware::Return<void> notifySyspropsChanged() override;
/*
* Unregisters the registered death recipient. If this service was registered
* multiple times with the same exact death recipient, this unlinks the most
* recently registered one.
*
* @param recipient a previously registered hidl_death_recipient callback
* @return success whether the death recipient was unregistered successfully.
*/
virtual ::android::hardware::Return<bool> unlinkToDeath(const ::android::sp<::android::hardware::hidl_death_recipient>& recipient) override;
// cast static functions
/**
* This performs a checked cast based on what the underlying implementation actually is.
*/
static ::android::hardware::Return<::android::sp<::android::hardware::graphics::composer::V2_4::IComposerClient>> castFrom(const ::android::sp<::android::hardware::graphics::composer::V2_4::IComposerClient>& parent, bool emitError = false);
/**
* This performs a checked cast based on what the underlying implementation actually is.
*/
static ::android::hardware::Return<::android::sp<::android::hardware::graphics::composer::V2_4::IComposerClient>> castFrom(const ::android::sp<::android::hardware::graphics::composer::V2_3::IComposerClient>& parent, bool emitError = false);
/**
* This performs a checked cast based on what the underlying implementation actually is.
*/
static ::android::hardware::Return<::android::sp<::android::hardware::graphics::composer::V2_4::IComposerClient>> castFrom(const ::android::sp<::android::hardware::graphics::composer::V2_2::IComposerClient>& parent, bool emitError = false);
/**
* This performs a checked cast based on what the underlying implementation actually is.
*/
static ::android::hardware::Return<::android::sp<::android::hardware::graphics::composer::V2_4::IComposerClient>> castFrom(const ::android::sp<::android::hardware::graphics::composer::V2_1::IComposerClient>& parent, bool emitError = false);
/**
* This performs a checked cast based on what the underlying implementation actually is.
*/
static ::android::hardware::Return<::android::sp<::android::hardware::graphics::composer::V2_4::IComposerClient>> castFrom(const ::android::sp<::android::hidl::base::V1_0::IBase>& parent, bool emitError = false);
// helper methods for interactions with the hwservicemanager
/**
* This gets the service of this type with the specified instance name. If the
* service is currently not available or not in the VINTF manifest on a Trebilized
* device, this will return nullptr. This is useful when you don't want to block
* during device boot. If getStub is true, this will try to return an unwrapped
* passthrough implementation in the same process. This is useful when getting an
* implementation from the same partition/compilation group.
*
* In general, prefer getService(std::string,bool)
*/
static ::android::sp<IComposerClient> tryGetService(const std::string &serviceName="default", bool getStub=false);
/**
* Deprecated. See tryGetService(std::string, bool)
*/
static ::android::sp<IComposerClient> tryGetService(const char serviceName[], bool getStub=false) { std::string str(serviceName ? serviceName : ""); return tryGetService(str, getStub); }
/**
* Deprecated. See tryGetService(std::string, bool)
*/
static ::android::sp<IComposerClient> tryGetService(const ::android::hardware::hidl_string& serviceName, bool getStub=false) { std::string str(serviceName.c_str()); return tryGetService(str, getStub); }
/**
* Calls tryGetService("default", bool). This is the recommended instance name for singleton services.
*/
static ::android::sp<IComposerClient> tryGetService(bool getStub) { return tryGetService("default", getStub); }
/**
* This gets the service of this type with the specified instance name. If the
* service is not in the VINTF manifest on a Trebilized device, this will return
* nullptr. If the service is not available, this will wait for the service to
* become available. If the service is a lazy service, this will start the service
* and return when it becomes available. If getStub is true, this will try to
* return an unwrapped passthrough implementation in the same process. This is
* useful when getting an implementation from the same partition/compilation group.
*/
static ::android::sp<IComposerClient> getService(const std::string &serviceName="default", bool getStub=false);
/**
* Deprecated. See getService(std::string, bool)
*/
static ::android::sp<IComposerClient> getService(const char serviceName[], bool getStub=false) { std::string str(serviceName ? serviceName : ""); return getService(str, getStub); }
/**
* Deprecated. See getService(std::string, bool)
*/
static ::android::sp<IComposerClient> getService(const ::android::hardware::hidl_string& serviceName, bool getStub=false) { std::string str(serviceName.c_str()); return getService(str, getStub); }
/**
* Calls getService("default", bool). This is the recommended instance name for singleton services.
*/
static ::android::sp<IComposerClient> getService(bool getStub) { return getService("default", getStub); }
/**
* Registers a service with the service manager. For Trebilized devices, the service
* must also be in the VINTF manifest.
*/
__attribute__ ((warn_unused_result))::android::status_t registerAsService(const std::string &serviceName="default");
/**
* Registers for notifications for when a service is registered.
*/
static bool registerForNotifications(
const std::string &serviceName,
const ::android::sp<::android::hidl::manager::V1_0::IServiceNotification> &notification);
};
//
// type declarations for package
//
template<typename>
static inline std::string toString(int32_t o);
static inline std::string toString(::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute o);
static inline void PrintTo(::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute o, ::std::ostream* os);
constexpr int32_t operator|(const ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute rhs) {
return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
}
constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute rhs) {
return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
}
constexpr int32_t operator|(const ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute lhs, const int32_t rhs) {
return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
}
constexpr int32_t operator&(const ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute rhs) {
return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
}
constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute rhs) {
return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
}
constexpr int32_t operator&(const ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute lhs, const int32_t rhs) {
return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
}
constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute e) {
v |= static_cast<int32_t>(e);
return v;
}
constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute e) {
v &= static_cast<int32_t>(e);
return v;
}
template<typename>
static inline std::string toString(uint32_t o);
static inline std::string toString(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability o);
static inline void PrintTo(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability o, ::std::ostream* os);
constexpr uint32_t operator|(const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability rhs) {
return static_cast<uint32_t>(static_cast<uint32_t>(lhs) | static_cast<uint32_t>(rhs));
}
constexpr uint32_t operator|(const uint32_t lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability rhs) {
return static_cast<uint32_t>(lhs | static_cast<uint32_t>(rhs));
}
constexpr uint32_t operator|(const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability lhs, const uint32_t rhs) {
return static_cast<uint32_t>(static_cast<uint32_t>(lhs) | rhs);
}
constexpr uint32_t operator&(const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability rhs) {
return static_cast<uint32_t>(static_cast<uint32_t>(lhs) & static_cast<uint32_t>(rhs));
}
constexpr uint32_t operator&(const uint32_t lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability rhs) {
return static_cast<uint32_t>(lhs & static_cast<uint32_t>(rhs));
}
constexpr uint32_t operator&(const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability lhs, const uint32_t rhs) {
return static_cast<uint32_t>(static_cast<uint32_t>(lhs) & rhs);
}
constexpr uint32_t &operator|=(uint32_t& v, const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability e) {
v |= static_cast<uint32_t>(e);
return v;
}
constexpr uint32_t &operator&=(uint32_t& v, const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability e) {
v &= static_cast<uint32_t>(e);
return v;
}
template<typename>
static inline std::string toString(int32_t o);
static inline std::string toString(::android::hardware::graphics::composer::V2_4::IComposerClient::Command o);
static inline void PrintTo(::android::hardware::graphics::composer::V2_4::IComposerClient::Command o, ::std::ostream* os);
constexpr int32_t operator|(const ::android::hardware::graphics::composer::V2_4::IComposerClient::Command lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::Command rhs) {
return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
}
constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::Command rhs) {
return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
}
constexpr int32_t operator|(const ::android::hardware::graphics::composer::V2_4::IComposerClient::Command lhs, const int32_t rhs) {
return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
}
constexpr int32_t operator&(const ::android::hardware::graphics::composer::V2_4::IComposerClient::Command lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::Command rhs) {
return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
}
constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::Command rhs) {
return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
}
constexpr int32_t operator&(const ::android::hardware::graphics::composer::V2_4::IComposerClient::Command lhs, const int32_t rhs) {
return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
}
constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::graphics::composer::V2_4::IComposerClient::Command e) {
v |= static_cast<int32_t>(e);
return v;
}
constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::graphics::composer::V2_4::IComposerClient::Command e) {
v &= static_cast<int32_t>(e);
return v;
}
template<typename>
static inline std::string toString(uint32_t o);
static inline std::string toString(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType o);
static inline void PrintTo(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType o, ::std::ostream* os);
constexpr uint32_t operator|(const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType rhs) {
return static_cast<uint32_t>(static_cast<uint32_t>(lhs) | static_cast<uint32_t>(rhs));
}
constexpr uint32_t operator|(const uint32_t lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType rhs) {
return static_cast<uint32_t>(lhs | static_cast<uint32_t>(rhs));
}
constexpr uint32_t operator|(const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType lhs, const uint32_t rhs) {
return static_cast<uint32_t>(static_cast<uint32_t>(lhs) | rhs);
}
constexpr uint32_t operator&(const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType rhs) {
return static_cast<uint32_t>(static_cast<uint32_t>(lhs) & static_cast<uint32_t>(rhs));
}
constexpr uint32_t operator&(const uint32_t lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType rhs) {
return static_cast<uint32_t>(lhs & static_cast<uint32_t>(rhs));
}
constexpr uint32_t operator&(const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType lhs, const uint32_t rhs) {
return static_cast<uint32_t>(static_cast<uint32_t>(lhs) & rhs);
}
constexpr uint32_t &operator|=(uint32_t& v, const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType e) {
v |= static_cast<uint32_t>(e);
return v;
}
constexpr uint32_t &operator&=(uint32_t& v, const ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType e) {
v &= static_cast<uint32_t>(e);
return v;
}
template<typename>
static inline std::string toString(uint32_t o);
static inline std::string toString(::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType o);
static inline void PrintTo(::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType o, ::std::ostream* os);
constexpr uint32_t operator|(const ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType rhs) {
return static_cast<uint32_t>(static_cast<uint32_t>(lhs) | static_cast<uint32_t>(rhs));
}
constexpr uint32_t operator|(const uint32_t lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType rhs) {
return static_cast<uint32_t>(lhs | static_cast<uint32_t>(rhs));
}
constexpr uint32_t operator|(const ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType lhs, const uint32_t rhs) {
return static_cast<uint32_t>(static_cast<uint32_t>(lhs) | rhs);
}
constexpr uint32_t operator&(const ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType rhs) {
return static_cast<uint32_t>(static_cast<uint32_t>(lhs) & static_cast<uint32_t>(rhs));
}
constexpr uint32_t operator&(const uint32_t lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType rhs) {
return static_cast<uint32_t>(lhs & static_cast<uint32_t>(rhs));
}
constexpr uint32_t operator&(const ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType lhs, const uint32_t rhs) {
return static_cast<uint32_t>(static_cast<uint32_t>(lhs) & rhs);
}
constexpr uint32_t &operator|=(uint32_t& v, const ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType e) {
v |= static_cast<uint32_t>(e);
return v;
}
constexpr uint32_t &operator&=(uint32_t& v, const ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType e) {
v &= static_cast<uint32_t>(e);
return v;
}
static inline std::string toString(const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& o);
static inline void PrintTo(const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& o, ::std::ostream*);
static inline bool operator==(const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& rhs);
static inline bool operator!=(const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& rhs);
static inline std::string toString(const ::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty& o);
static inline void PrintTo(const ::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty& o, ::std::ostream*);
static inline bool operator==(const ::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty& lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty& rhs);
static inline bool operator!=(const ::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty& lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty& rhs);
static inline std::string toString(const ::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey& o);
static inline void PrintTo(const ::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey& o, ::std::ostream*);
static inline bool operator==(const ::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey& lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey& rhs);
static inline bool operator!=(const ::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey& lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey& rhs);
static inline std::string toString(const ::android::sp<::android::hardware::graphics::composer::V2_4::IComposerClient>& o);
//
// type header definitions for package
//
template<>
inline std::string toString<::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute>(int32_t o) {
using ::android::hardware::details::toHexString;
std::string os;
::android::hardware::hidl_bitfield<::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute> flipped = 0;
bool first = true;
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::INVALID) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::INVALID)) {
os += (first ? "" : " | ");
os += "INVALID";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::INVALID;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::WIDTH) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::WIDTH)) {
os += (first ? "" : " | ");
os += "WIDTH";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::WIDTH;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::HEIGHT) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::HEIGHT)) {
os += (first ? "" : " | ");
os += "HEIGHT";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::HEIGHT;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::VSYNC_PERIOD) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::VSYNC_PERIOD)) {
os += (first ? "" : " | ");
os += "VSYNC_PERIOD";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::VSYNC_PERIOD;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::DPI_X) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::DPI_X)) {
os += (first ? "" : " | ");
os += "DPI_X";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::DPI_X;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::DPI_Y) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::DPI_Y)) {
os += (first ? "" : " | ");
os += "DPI_Y";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::DPI_Y;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::CONFIG_GROUP) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::CONFIG_GROUP)) {
os += (first ? "" : " | ");
os += "CONFIG_GROUP";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::CONFIG_GROUP;
}
if (o != flipped) {
os += (first ? "" : " | ");
os += toHexString(o & (~flipped));
}os += " (";
os += toHexString(o);
os += ")";
return os;
}
static inline std::string toString(::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute o) {
using ::android::hardware::details::toHexString;
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::INVALID) {
return "INVALID";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::WIDTH) {
return "WIDTH";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::HEIGHT) {
return "HEIGHT";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::VSYNC_PERIOD) {
return "VSYNC_PERIOD";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::DPI_X) {
return "DPI_X";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::DPI_Y) {
return "DPI_Y";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::CONFIG_GROUP) {
return "CONFIG_GROUP";
}
std::string os;
os += toHexString(static_cast<int32_t>(o));
return os;
}
static inline void PrintTo(::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute o, ::std::ostream* os) {
*os << toString(o);
}
template<>
inline std::string toString<::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability>(uint32_t o) {
using ::android::hardware::details::toHexString;
std::string os;
::android::hardware::hidl_bitfield<::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability> flipped = 0;
bool first = true;
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::INVALID) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::INVALID)) {
os += (first ? "" : " | ");
os += "INVALID";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::INVALID;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::SKIP_CLIENT_COLOR_TRANSFORM) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::SKIP_CLIENT_COLOR_TRANSFORM)) {
os += (first ? "" : " | ");
os += "SKIP_CLIENT_COLOR_TRANSFORM";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::SKIP_CLIENT_COLOR_TRANSFORM;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::DOZE) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::DOZE)) {
os += (first ? "" : " | ");
os += "DOZE";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::DOZE;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::BRIGHTNESS) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::BRIGHTNESS)) {
os += (first ? "" : " | ");
os += "BRIGHTNESS";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::BRIGHTNESS;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::PROTECTED_CONTENTS) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::PROTECTED_CONTENTS)) {
os += (first ? "" : " | ");
os += "PROTECTED_CONTENTS";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::PROTECTED_CONTENTS;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::AUTO_LOW_LATENCY_MODE) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::AUTO_LOW_LATENCY_MODE)) {
os += (first ? "" : " | ");
os += "AUTO_LOW_LATENCY_MODE";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::AUTO_LOW_LATENCY_MODE;
}
if (o != flipped) {
os += (first ? "" : " | ");
os += toHexString(o & (~flipped));
}os += " (";
os += toHexString(o);
os += ")";
return os;
}
static inline std::string toString(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability o) {
using ::android::hardware::details::toHexString;
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::INVALID) {
return "INVALID";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::SKIP_CLIENT_COLOR_TRANSFORM) {
return "SKIP_CLIENT_COLOR_TRANSFORM";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::DOZE) {
return "DOZE";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::BRIGHTNESS) {
return "BRIGHTNESS";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::PROTECTED_CONTENTS) {
return "PROTECTED_CONTENTS";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::AUTO_LOW_LATENCY_MODE) {
return "AUTO_LOW_LATENCY_MODE";
}
std::string os;
os += toHexString(static_cast<uint32_t>(o));
return os;
}
static inline void PrintTo(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability o, ::std::ostream* os) {
*os << toString(o);
}
template<>
inline std::string toString<::android::hardware::graphics::composer::V2_4::IComposerClient::Command>(int32_t o) {
using ::android::hardware::details::toHexString;
std::string os;
::android::hardware::hidl_bitfield<::android::hardware::graphics::composer::V2_4::IComposerClient::Command> flipped = 0;
bool first = true;
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::LENGTH_MASK) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::LENGTH_MASK)) {
os += (first ? "" : " | ");
os += "LENGTH_MASK";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::LENGTH_MASK;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::OPCODE_SHIFT) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::OPCODE_SHIFT)) {
os += (first ? "" : " | ");
os += "OPCODE_SHIFT";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::OPCODE_SHIFT;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::OPCODE_MASK) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::OPCODE_MASK)) {
os += (first ? "" : " | ");
os += "OPCODE_MASK";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::OPCODE_MASK;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SELECT_DISPLAY) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SELECT_DISPLAY)) {
os += (first ? "" : " | ");
os += "SELECT_DISPLAY";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SELECT_DISPLAY;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SELECT_LAYER) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SELECT_LAYER)) {
os += (first ? "" : " | ");
os += "SELECT_LAYER";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SELECT_LAYER;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_ERROR) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_ERROR)) {
os += (first ? "" : " | ");
os += "SET_ERROR";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_ERROR;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CHANGED_COMPOSITION_TYPES) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CHANGED_COMPOSITION_TYPES)) {
os += (first ? "" : " | ");
os += "SET_CHANGED_COMPOSITION_TYPES";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CHANGED_COMPOSITION_TYPES;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_DISPLAY_REQUESTS) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_DISPLAY_REQUESTS)) {
os += (first ? "" : " | ");
os += "SET_DISPLAY_REQUESTS";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_DISPLAY_REQUESTS;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_PRESENT_FENCE) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_PRESENT_FENCE)) {
os += (first ? "" : " | ");
os += "SET_PRESENT_FENCE";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_PRESENT_FENCE;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_RELEASE_FENCES) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_RELEASE_FENCES)) {
os += (first ? "" : " | ");
os += "SET_RELEASE_FENCES";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_RELEASE_FENCES;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_COLOR_TRANSFORM) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_COLOR_TRANSFORM)) {
os += (first ? "" : " | ");
os += "SET_COLOR_TRANSFORM";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_COLOR_TRANSFORM;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CLIENT_TARGET) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CLIENT_TARGET)) {
os += (first ? "" : " | ");
os += "SET_CLIENT_TARGET";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CLIENT_TARGET;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_OUTPUT_BUFFER) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_OUTPUT_BUFFER)) {
os += (first ? "" : " | ");
os += "SET_OUTPUT_BUFFER";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_OUTPUT_BUFFER;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::VALIDATE_DISPLAY) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::VALIDATE_DISPLAY)) {
os += (first ? "" : " | ");
os += "VALIDATE_DISPLAY";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::VALIDATE_DISPLAY;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::ACCEPT_DISPLAY_CHANGES) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::ACCEPT_DISPLAY_CHANGES)) {
os += (first ? "" : " | ");
os += "ACCEPT_DISPLAY_CHANGES";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::ACCEPT_DISPLAY_CHANGES;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::PRESENT_DISPLAY) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::PRESENT_DISPLAY)) {
os += (first ? "" : " | ");
os += "PRESENT_DISPLAY";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::PRESENT_DISPLAY;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::PRESENT_OR_VALIDATE_DISPLAY) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::PRESENT_OR_VALIDATE_DISPLAY)) {
os += (first ? "" : " | ");
os += "PRESENT_OR_VALIDATE_DISPLAY";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::PRESENT_OR_VALIDATE_DISPLAY;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_CURSOR_POSITION) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_CURSOR_POSITION)) {
os += (first ? "" : " | ");
os += "SET_LAYER_CURSOR_POSITION";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_CURSOR_POSITION;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_BUFFER) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_BUFFER)) {
os += (first ? "" : " | ");
os += "SET_LAYER_BUFFER";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_BUFFER;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SURFACE_DAMAGE) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SURFACE_DAMAGE)) {
os += (first ? "" : " | ");
os += "SET_LAYER_SURFACE_DAMAGE";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SURFACE_DAMAGE;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_BLEND_MODE) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_BLEND_MODE)) {
os += (first ? "" : " | ");
os += "SET_LAYER_BLEND_MODE";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_BLEND_MODE;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COLOR) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COLOR)) {
os += (first ? "" : " | ");
os += "SET_LAYER_COLOR";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COLOR;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COMPOSITION_TYPE) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COMPOSITION_TYPE)) {
os += (first ? "" : " | ");
os += "SET_LAYER_COMPOSITION_TYPE";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COMPOSITION_TYPE;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_DATASPACE) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_DATASPACE)) {
os += (first ? "" : " | ");
os += "SET_LAYER_DATASPACE";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_DATASPACE;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_DISPLAY_FRAME) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_DISPLAY_FRAME)) {
os += (first ? "" : " | ");
os += "SET_LAYER_DISPLAY_FRAME";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_DISPLAY_FRAME;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PLANE_ALPHA) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PLANE_ALPHA)) {
os += (first ? "" : " | ");
os += "SET_LAYER_PLANE_ALPHA";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PLANE_ALPHA;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SIDEBAND_STREAM) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SIDEBAND_STREAM)) {
os += (first ? "" : " | ");
os += "SET_LAYER_SIDEBAND_STREAM";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SIDEBAND_STREAM;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SOURCE_CROP) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SOURCE_CROP)) {
os += (first ? "" : " | ");
os += "SET_LAYER_SOURCE_CROP";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SOURCE_CROP;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_TRANSFORM) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_TRANSFORM)) {
os += (first ? "" : " | ");
os += "SET_LAYER_TRANSFORM";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_TRANSFORM;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_VISIBLE_REGION) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_VISIBLE_REGION)) {
os += (first ? "" : " | ");
os += "SET_LAYER_VISIBLE_REGION";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_VISIBLE_REGION;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_Z_ORDER) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_Z_ORDER)) {
os += (first ? "" : " | ");
os += "SET_LAYER_Z_ORDER";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_Z_ORDER;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_PRESENT_OR_VALIDATE_DISPLAY_RESULT) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_PRESENT_OR_VALIDATE_DISPLAY_RESULT)) {
os += (first ? "" : " | ");
os += "SET_PRESENT_OR_VALIDATE_DISPLAY_RESULT";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_PRESENT_OR_VALIDATE_DISPLAY_RESULT;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PER_FRAME_METADATA) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PER_FRAME_METADATA)) {
os += (first ? "" : " | ");
os += "SET_LAYER_PER_FRAME_METADATA";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PER_FRAME_METADATA;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_FLOAT_COLOR) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_FLOAT_COLOR)) {
os += (first ? "" : " | ");
os += "SET_LAYER_FLOAT_COLOR";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_FLOAT_COLOR;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COLOR_TRANSFORM) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COLOR_TRANSFORM)) {
os += (first ? "" : " | ");
os += "SET_LAYER_COLOR_TRANSFORM";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COLOR_TRANSFORM;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PER_FRAME_METADATA_BLOBS) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PER_FRAME_METADATA_BLOBS)) {
os += (first ? "" : " | ");
os += "SET_LAYER_PER_FRAME_METADATA_BLOBS";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PER_FRAME_METADATA_BLOBS;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CLIENT_TARGET_PROPERTY) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CLIENT_TARGET_PROPERTY)) {
os += (first ? "" : " | ");
os += "SET_CLIENT_TARGET_PROPERTY";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CLIENT_TARGET_PROPERTY;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_GENERIC_METADATA) == static_cast<int32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_GENERIC_METADATA)) {
os += (first ? "" : " | ");
os += "SET_LAYER_GENERIC_METADATA";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_GENERIC_METADATA;
}
if (o != flipped) {
os += (first ? "" : " | ");
os += toHexString(o & (~flipped));
}os += " (";
os += toHexString(o);
os += ")";
return os;
}
static inline std::string toString(::android::hardware::graphics::composer::V2_4::IComposerClient::Command o) {
using ::android::hardware::details::toHexString;
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::LENGTH_MASK) {
return "LENGTH_MASK";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::OPCODE_SHIFT) {
return "OPCODE_SHIFT";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::OPCODE_MASK) {
return "OPCODE_MASK";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SELECT_DISPLAY) {
return "SELECT_DISPLAY";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SELECT_LAYER) {
return "SELECT_LAYER";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_ERROR) {
return "SET_ERROR";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CHANGED_COMPOSITION_TYPES) {
return "SET_CHANGED_COMPOSITION_TYPES";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_DISPLAY_REQUESTS) {
return "SET_DISPLAY_REQUESTS";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_PRESENT_FENCE) {
return "SET_PRESENT_FENCE";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_RELEASE_FENCES) {
return "SET_RELEASE_FENCES";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_COLOR_TRANSFORM) {
return "SET_COLOR_TRANSFORM";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CLIENT_TARGET) {
return "SET_CLIENT_TARGET";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_OUTPUT_BUFFER) {
return "SET_OUTPUT_BUFFER";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::VALIDATE_DISPLAY) {
return "VALIDATE_DISPLAY";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::ACCEPT_DISPLAY_CHANGES) {
return "ACCEPT_DISPLAY_CHANGES";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::PRESENT_DISPLAY) {
return "PRESENT_DISPLAY";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::PRESENT_OR_VALIDATE_DISPLAY) {
return "PRESENT_OR_VALIDATE_DISPLAY";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_CURSOR_POSITION) {
return "SET_LAYER_CURSOR_POSITION";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_BUFFER) {
return "SET_LAYER_BUFFER";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SURFACE_DAMAGE) {
return "SET_LAYER_SURFACE_DAMAGE";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_BLEND_MODE) {
return "SET_LAYER_BLEND_MODE";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COLOR) {
return "SET_LAYER_COLOR";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COMPOSITION_TYPE) {
return "SET_LAYER_COMPOSITION_TYPE";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_DATASPACE) {
return "SET_LAYER_DATASPACE";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_DISPLAY_FRAME) {
return "SET_LAYER_DISPLAY_FRAME";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PLANE_ALPHA) {
return "SET_LAYER_PLANE_ALPHA";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SIDEBAND_STREAM) {
return "SET_LAYER_SIDEBAND_STREAM";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SOURCE_CROP) {
return "SET_LAYER_SOURCE_CROP";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_TRANSFORM) {
return "SET_LAYER_TRANSFORM";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_VISIBLE_REGION) {
return "SET_LAYER_VISIBLE_REGION";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_Z_ORDER) {
return "SET_LAYER_Z_ORDER";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_PRESENT_OR_VALIDATE_DISPLAY_RESULT) {
return "SET_PRESENT_OR_VALIDATE_DISPLAY_RESULT";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PER_FRAME_METADATA) {
return "SET_LAYER_PER_FRAME_METADATA";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_FLOAT_COLOR) {
return "SET_LAYER_FLOAT_COLOR";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COLOR_TRANSFORM) {
return "SET_LAYER_COLOR_TRANSFORM";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PER_FRAME_METADATA_BLOBS) {
return "SET_LAYER_PER_FRAME_METADATA_BLOBS";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CLIENT_TARGET_PROPERTY) {
return "SET_CLIENT_TARGET_PROPERTY";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_GENERIC_METADATA) {
return "SET_LAYER_GENERIC_METADATA";
}
std::string os;
os += toHexString(static_cast<int32_t>(o));
return os;
}
static inline void PrintTo(::android::hardware::graphics::composer::V2_4::IComposerClient::Command o, ::std::ostream* os) {
*os << toString(o);
}
template<>
inline std::string toString<::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType>(uint32_t o) {
using ::android::hardware::details::toHexString;
std::string os;
::android::hardware::hidl_bitfield<::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType> flipped = 0;
bool first = true;
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType::INTERNAL) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType::INTERNAL)) {
os += (first ? "" : " | ");
os += "INTERNAL";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType::INTERNAL;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType::EXTERNAL) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType::EXTERNAL)) {
os += (first ? "" : " | ");
os += "EXTERNAL";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType::EXTERNAL;
}
if (o != flipped) {
os += (first ? "" : " | ");
os += toHexString(o & (~flipped));
}os += " (";
os += toHexString(o);
os += ")";
return os;
}
static inline std::string toString(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType o) {
using ::android::hardware::details::toHexString;
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType::INTERNAL) {
return "INTERNAL";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType::EXTERNAL) {
return "EXTERNAL";
}
std::string os;
os += toHexString(static_cast<uint32_t>(o));
return os;
}
static inline void PrintTo(::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType o, ::std::ostream* os) {
*os << toString(o);
}
template<>
inline std::string toString<::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType>(uint32_t o) {
using ::android::hardware::details::toHexString;
std::string os;
::android::hardware::hidl_bitfield<::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType> flipped = 0;
bool first = true;
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::NONE) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::NONE)) {
os += (first ? "" : " | ");
os += "NONE";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::NONE;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::GRAPHICS) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::GRAPHICS)) {
os += (first ? "" : " | ");
os += "GRAPHICS";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::GRAPHICS;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::PHOTO) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::PHOTO)) {
os += (first ? "" : " | ");
os += "PHOTO";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::PHOTO;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::CINEMA) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::CINEMA)) {
os += (first ? "" : " | ");
os += "CINEMA";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::CINEMA;
}
if ((o & ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::GAME) == static_cast<uint32_t>(::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::GAME)) {
os += (first ? "" : " | ");
os += "GAME";
first = false;
flipped |= ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::GAME;
}
if (o != flipped) {
os += (first ? "" : " | ");
os += toHexString(o & (~flipped));
}os += " (";
os += toHexString(o);
os += ")";
return os;
}
static inline std::string toString(::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType o) {
using ::android::hardware::details::toHexString;
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::NONE) {
return "NONE";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::GRAPHICS) {
return "GRAPHICS";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::PHOTO) {
return "PHOTO";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::CINEMA) {
return "CINEMA";
}
if (o == ::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::GAME) {
return "GAME";
}
std::string os;
os += toHexString(static_cast<uint32_t>(o));
return os;
}
static inline void PrintTo(::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType o, ::std::ostream* os) {
*os << toString(o);
}
static inline std::string toString(const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& o) {
using ::android::hardware::toString;
std::string os;
os += "{";
os += ".desiredTimeNanos = ";
os += ::android::hardware::toString(o.desiredTimeNanos);
os += ", .seamlessRequired = ";
os += ::android::hardware::toString(o.seamlessRequired);
os += "}"; return os;
}
static inline void PrintTo(const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& o, ::std::ostream* os) {
*os << toString(o);
}
static inline bool operator==(const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& rhs) {
if (lhs.desiredTimeNanos != rhs.desiredTimeNanos) {
return false;
}
if (lhs.seamlessRequired != rhs.seamlessRequired) {
return false;
}
return true;
}
static inline bool operator!=(const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::VsyncPeriodChangeConstraints& rhs){
return !(lhs == rhs);
}
static inline std::string toString(const ::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty& o) {
using ::android::hardware::toString;
std::string os;
os += "{";
os += ".pixelFormat = ";
os += ::android::hardware::graphics::common::V1_2::toString(o.pixelFormat);
os += ", .dataspace = ";
os += ::android::hardware::graphics::common::V1_2::toString(o.dataspace);
os += "}"; return os;
}
static inline void PrintTo(const ::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty& o, ::std::ostream* os) {
*os << toString(o);
}
static inline bool operator==(const ::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty& lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty& rhs) {
if (lhs.pixelFormat != rhs.pixelFormat) {
return false;
}
if (lhs.dataspace != rhs.dataspace) {
return false;
}
return true;
}
static inline bool operator!=(const ::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty& lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::ClientTargetProperty& rhs){
return !(lhs == rhs);
}
static inline std::string toString(const ::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey& o) {
using ::android::hardware::toString;
std::string os;
os += "{";
os += ".name = ";
os += ::android::hardware::toString(o.name);
os += ", .mandatory = ";
os += ::android::hardware::toString(o.mandatory);
os += "}"; return os;
}
static inline void PrintTo(const ::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey& o, ::std::ostream* os) {
*os << toString(o);
}
static inline bool operator==(const ::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey& lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey& rhs) {
if (lhs.name != rhs.name) {
return false;
}
if (lhs.mandatory != rhs.mandatory) {
return false;
}
return true;
}
static inline bool operator!=(const ::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey& lhs, const ::android::hardware::graphics::composer::V2_4::IComposerClient::LayerGenericMetadataKey& rhs){
return !(lhs == rhs);
}
static inline std::string toString(const ::android::sp<::android::hardware::graphics::composer::V2_4::IComposerClient>& o) {
std::string os = "[class or subclass of ";
os += ::android::hardware::graphics::composer::V2_4::IComposerClient::descriptor;
os += "]";
os += o->isRemote() ? "@remote" : "@local";
return os;
}
} // namespace V2_4
} // namespace composer
} // namespace graphics
} // namespace hardware
} // namespace android
//
// global type declarations for package
//
namespace android {
namespace hardware {
namespace details {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wc++17-extensions"
template<> inline constexpr std::array<::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute, 7> hidl_enum_values<::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute> = {
::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::INVALID,
::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::WIDTH,
::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::HEIGHT,
::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::VSYNC_PERIOD,
::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::DPI_X,
::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::DPI_Y,
::android::hardware::graphics::composer::V2_4::IComposerClient::Attribute::CONFIG_GROUP,
};
#pragma clang diagnostic pop
} // namespace details
} // namespace hardware
} // namespace android
namespace android {
namespace hardware {
namespace details {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wc++17-extensions"
template<> inline constexpr std::array<::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability, 6> hidl_enum_values<::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability> = {
::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::INVALID,
::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::SKIP_CLIENT_COLOR_TRANSFORM,
::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::DOZE,
::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::BRIGHTNESS,
::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::PROTECTED_CONTENTS,
::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayCapability::AUTO_LOW_LATENCY_MODE,
};
#pragma clang diagnostic pop
} // namespace details
} // namespace hardware
} // namespace android
namespace android {
namespace hardware {
namespace details {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wc++17-extensions"
template<> inline constexpr std::array<::android::hardware::graphics::composer::V2_4::IComposerClient::Command, 38> hidl_enum_values<::android::hardware::graphics::composer::V2_4::IComposerClient::Command> = {
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::LENGTH_MASK,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::OPCODE_SHIFT,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::OPCODE_MASK,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SELECT_DISPLAY,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SELECT_LAYER,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_ERROR,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CHANGED_COMPOSITION_TYPES,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_DISPLAY_REQUESTS,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_PRESENT_FENCE,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_RELEASE_FENCES,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_COLOR_TRANSFORM,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CLIENT_TARGET,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_OUTPUT_BUFFER,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::VALIDATE_DISPLAY,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::ACCEPT_DISPLAY_CHANGES,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::PRESENT_DISPLAY,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::PRESENT_OR_VALIDATE_DISPLAY,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_CURSOR_POSITION,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_BUFFER,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SURFACE_DAMAGE,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_BLEND_MODE,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COLOR,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COMPOSITION_TYPE,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_DATASPACE,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_DISPLAY_FRAME,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PLANE_ALPHA,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SIDEBAND_STREAM,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_SOURCE_CROP,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_TRANSFORM,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_VISIBLE_REGION,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_Z_ORDER,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_PRESENT_OR_VALIDATE_DISPLAY_RESULT,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PER_FRAME_METADATA,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_FLOAT_COLOR,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_COLOR_TRANSFORM,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_PER_FRAME_METADATA_BLOBS,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_CLIENT_TARGET_PROPERTY,
::android::hardware::graphics::composer::V2_4::IComposerClient::Command::SET_LAYER_GENERIC_METADATA,
};
#pragma clang diagnostic pop
} // namespace details
} // namespace hardware
} // namespace android
namespace android {
namespace hardware {
namespace details {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wc++17-extensions"
template<> inline constexpr std::array<::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType, 2> hidl_enum_values<::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType> = {
::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType::INTERNAL,
::android::hardware::graphics::composer::V2_4::IComposerClient::DisplayConnectionType::EXTERNAL,
};
#pragma clang diagnostic pop
} // namespace details
} // namespace hardware
} // namespace android
namespace android {
namespace hardware {
namespace details {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wc++17-extensions"
template<> inline constexpr std::array<::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType, 5> hidl_enum_values<::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType> = {
::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::NONE,
::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::GRAPHICS,
::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::PHOTO,
::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::CINEMA,
::android::hardware::graphics::composer::V2_4::IComposerClient::ContentType::GAME,
};
#pragma clang diagnostic pop
} // namespace details
} // namespace hardware
} // namespace android
#endif // HIDL_GENERATED_ANDROID_HARDWARE_GRAPHICS_COMPOSER_V2_4_ICOMPOSERCLIENT_H