blob: 25364d859067d6737985fbe413c3035c6b56e717 [file] [log] [blame]
#ifndef ANDROID_DVR_DISPLAY_TYPES_H_
#define ANDROID_DVR_DISPLAY_TYPES_H_
#include <sys/cdefs.h>
__BEGIN_DECLS
// Define types used in pose buffer fields. These types have atomicity
// guarantees that are useful in lock-free shared memory ring buffers.
#ifdef __ARM_NEON
#include <arm_neon.h>
#else
#ifndef __FLOAT32X4T_86
#define __FLOAT32X4T_86
typedef float float32x4_t __attribute__((__vector_size__(16)));
typedef struct float32x4x4_t { float32x4_t val[4]; };
#endif
#endif
// VrFlinger display manager surface state snapshots per surface flags
// indicating what changed since the last snapshot.
enum {
// No changes.
DVR_SURFACE_UPDATE_FLAGS_NONE = 0,
// This surface is new.
DVR_SURFACE_UPDATE_FLAGS_NEW_SURFACE = (1 << 0),
// Buffer queues added/removed.
DVR_SURFACE_UPDATE_FLAGS_BUFFERS_CHANGED = (1 << 1),
// Visibility/z-order changed.
DVR_SURFACE_UPDATE_FLAGS_VISIBILITY_CHANGED = (1 << 2),
// Generic attributes changed.
DVR_SURFACE_UPDATE_FLAGS_ATTRIBUTES_CHANGED = (1 << 3),
};
// Surface attribute keys. VrFlinger defines keys in the negative integer space.
// The compositor is free to use keys in the positive integer space for
// implementation-defined purposes.
enum {
// DIRECT: bool
// Determines whether a direct surface is created (compositor output) or an
// application surface. Defaults to false (application surface). May only be
// set to true by a process with either UID=root or UID validated with
// IsTrustedUid() (VrCore).
DVR_SURFACE_ATTRIBUTE_DIRECT = -3,
// Z_ORDER: int32_t
// Interpreted by VrFlinger only on direct surfaces to order the corresponding
// hardware layers. More positive values render on top of more negative
// values.
DVR_SURFACE_ATTRIBUTE_Z_ORDER = -2,
// VISIBLE: bool
// Interpreted by VrFlinger only on direct surfaces to determine whether a
// surface is assigned to a hardware layer or ignored.
DVR_SURFACE_ATTRIBUTE_VISIBLE = -1,
// INVALID
// Invalid key. No attributes should have this key.
DVR_SURFACE_ATTRIBUTE_INVALID = 0,
// FIRST_USER_KEY
// VrFlinger ingores any keys with this value or greater, passing them to the
// compositor through surface state query results.
DVR_SURFACE_ATTRIBUTE_FIRST_USER_KEY = 1,
};
__END_DECLS
#endif // ANDROID_DVR_DISPLAY_TYPES_H_