OSDN Git Service

android: add genrule for generated_static_table_fourcc.h
[android-x86/external-libdrm.git] / xf86drmMode.h
index fc0bbd8..4bde6e3 100644 (file)
@@ -41,15 +41,13 @@ extern "C" {
 #endif
 
 #include <drm.h>
+#include <drm_mode.h>
 #include <stddef.h>
 #include <stdint.h>
 
 /*
  * This is the interface for modesetting for drm.
  *
- * In order to use this interface you must include either <stdint.h> or another
- * header defining uint32_t, int32_t and uint16_t.
- *
  * It aims to provide a randr1.2 compatible interface for modesettings in the
  * kernel, the interface is also meant to be used by libraries like EGL.
  *
@@ -62,120 +60,6 @@ extern "C" {
  */
 
 /*
- * If we pickup an old version of drm.h which doesn't include drm_mode.h
- * we should redefine defines. This is so that builds doesn't breaks with
- * new libdrm on old kernels.
- */
-#ifndef _DRM_MODE_H
-
-#define DRM_DISPLAY_INFO_LEN    32
-#define DRM_CONNECTOR_NAME_LEN  32
-#define DRM_DISPLAY_MODE_LEN    32
-#define DRM_PROP_NAME_LEN       32
-
-#define DRM_MODE_TYPE_BUILTIN   (1<<0)
-#define DRM_MODE_TYPE_CLOCK_C   ((1<<1) | DRM_MODE_TYPE_BUILTIN)
-#define DRM_MODE_TYPE_CRTC_C    ((1<<2) | DRM_MODE_TYPE_BUILTIN)
-#define DRM_MODE_TYPE_PREFERRED (1<<3)
-#define DRM_MODE_TYPE_DEFAULT   (1<<4)
-#define DRM_MODE_TYPE_USERDEF   (1<<5)
-#define DRM_MODE_TYPE_DRIVER    (1<<6)
-
-/* Video mode flags */
-/* bit compatible with the xorg definitions. */
-#define DRM_MODE_FLAG_PHSYNC                   (1<<0)
-#define DRM_MODE_FLAG_NHSYNC                   (1<<1)
-#define DRM_MODE_FLAG_PVSYNC                   (1<<2)
-#define DRM_MODE_FLAG_NVSYNC                   (1<<3)
-#define DRM_MODE_FLAG_INTERLACE                        (1<<4)
-#define DRM_MODE_FLAG_DBLSCAN                  (1<<5)
-#define DRM_MODE_FLAG_CSYNC                    (1<<6)
-#define DRM_MODE_FLAG_PCSYNC                   (1<<7)
-#define DRM_MODE_FLAG_NCSYNC                   (1<<8)
-#define DRM_MODE_FLAG_HSKEW                    (1<<9) /* hskew provided */
-#define DRM_MODE_FLAG_BCAST                    (1<<10)
-#define DRM_MODE_FLAG_PIXMUX                   (1<<11)
-#define DRM_MODE_FLAG_DBLCLK                   (1<<12)
-#define DRM_MODE_FLAG_CLKDIV2                  (1<<13)
-#define DRM_MODE_FLAG_3D_MASK                  (0x1f<<14)
-#define  DRM_MODE_FLAG_3D_NONE                 (0<<14)
-#define  DRM_MODE_FLAG_3D_FRAME_PACKING                (1<<14)
-#define  DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE    (2<<14)
-#define  DRM_MODE_FLAG_3D_LINE_ALTERNATIVE     (3<<14)
-#define  DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL    (4<<14)
-#define  DRM_MODE_FLAG_3D_L_DEPTH              (5<<14)
-#define  DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH        (6<<14)
-#define  DRM_MODE_FLAG_3D_TOP_AND_BOTTOM       (7<<14)
-#define  DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF    (8<<14)
-
-/* DPMS flags */
-/* bit compatible with the xorg definitions. */
-#define DRM_MODE_DPMS_ON        0
-#define DRM_MODE_DPMS_STANDBY   1
-#define DRM_MODE_DPMS_SUSPEND   2
-#define DRM_MODE_DPMS_OFF       3
-
-/* Scaling mode options */
-#define DRM_MODE_SCALE_NON_GPU          0
-#define DRM_MODE_SCALE_FULLSCREEN       1
-#define DRM_MODE_SCALE_NO_SCALE         2
-#define DRM_MODE_SCALE_ASPECT           3
-
-/* Dithering mode options */
-#define DRM_MODE_DITHERING_OFF  0
-#define DRM_MODE_DITHERING_ON   1
-
-#define DRM_MODE_ENCODER_NONE    0
-#define DRM_MODE_ENCODER_DAC     1
-#define DRM_MODE_ENCODER_TMDS    2
-#define DRM_MODE_ENCODER_LVDS    3
-#define DRM_MODE_ENCODER_TVDAC   4
-#define DRM_MODE_ENCODER_VIRTUAL 5
-#define DRM_MODE_ENCODER_DSI     6
-#define DRM_MODE_ENCODER_DPMST   7
-#define DRM_MODE_ENCODER_DPI     8
-
-#define DRM_MODE_SUBCONNECTOR_Automatic 0
-#define DRM_MODE_SUBCONNECTOR_Unknown   0
-#define DRM_MODE_SUBCONNECTOR_DVID      3
-#define DRM_MODE_SUBCONNECTOR_DVIA      4
-#define DRM_MODE_SUBCONNECTOR_Composite 5
-#define DRM_MODE_SUBCONNECTOR_SVIDEO    6
-#define DRM_MODE_SUBCONNECTOR_Component 8
-#define DRM_MODE_SUBCONNECTOR_SCART     9
-
-#define DRM_MODE_CONNECTOR_Unknown      0
-#define DRM_MODE_CONNECTOR_VGA          1
-#define DRM_MODE_CONNECTOR_DVII         2
-#define DRM_MODE_CONNECTOR_DVID         3
-#define DRM_MODE_CONNECTOR_DVIA         4
-#define DRM_MODE_CONNECTOR_Composite    5
-#define DRM_MODE_CONNECTOR_SVIDEO       6
-#define DRM_MODE_CONNECTOR_LVDS         7
-#define DRM_MODE_CONNECTOR_Component    8
-#define DRM_MODE_CONNECTOR_9PinDIN      9
-#define DRM_MODE_CONNECTOR_DisplayPort  10
-#define DRM_MODE_CONNECTOR_HDMIA        11
-#define DRM_MODE_CONNECTOR_HDMIB        12
-#define DRM_MODE_CONNECTOR_TV           13
-#define DRM_MODE_CONNECTOR_eDP          14
-#define DRM_MODE_CONNECTOR_VIRTUAL      15
-#define DRM_MODE_CONNECTOR_DSI          16
-#define DRM_MODE_CONNECTOR_DPI          17
-
-#define DRM_MODE_PROP_PENDING   (1<<0)
-#define DRM_MODE_PROP_RANGE     (1<<1)
-#define DRM_MODE_PROP_IMMUTABLE (1<<2)
-#define DRM_MODE_PROP_ENUM      (1<<3) /* enumerated type with text strings */
-#define DRM_MODE_PROP_BLOB      (1<<4)
-
-#define DRM_MODE_CURSOR_BO      (1<<0)
-#define DRM_MODE_CURSOR_MOVE    (1<<1)
-
-#endif /* _DRM_MODE_H */
-
-
-/*
  * Feature defines
  *
  * Just because these are defined doesn't mean that the kernel
@@ -267,6 +151,11 @@ static __inline int drm_property_type_is(drmModePropertyPtr property,
        return property->flags & type;
 }
 
+static inline uint32_t drmModeGetPropertyType(const drmModePropertyRes *prop)
+{
+       return prop->flags & (DRM_MODE_PROP_LEGACY_TYPE | DRM_MODE_PROP_EXTENDED_TYPE);
+}
+
 typedef struct _drmModeCrtc {
        uint32_t crtc_id;
        uint32_t buffer_id; /**< FB id to connect to 0 = disconnect */
@@ -288,6 +177,18 @@ typedef struct _drmModeEncoder {
        uint32_t possible_clones;
 } drmModeEncoder, *drmModeEncoderPtr;
 
+/**
+ * Describes the connector status.
+ *
+ * DRM_MODE_CONNECTED means that the connector has a sink plugged in.
+ * DRM_MODE_DISCONNECTED means the contrary. DRM_MODE_UNKNOWNCONNECTION is used
+ * when it could be either.
+ *
+ * User-space should first try to enable DRM_MODE_CONNECTED connectors and
+ * ignore other connectors. If there are no DRM_MODE_CONNECTED connectors,
+ * user-space should then try to probe and enable DRM_MODE_UNKNOWNCONNECTION
+ * connectors.
+ */
 typedef enum {
        DRM_MODE_CONNECTED         = 1,
        DRM_MODE_DISCONNECTED      = 2,
@@ -364,6 +265,13 @@ extern void drmModeFreePlane( drmModePlanePtr ptr );
 extern void drmModeFreePlaneResources(drmModePlaneResPtr ptr);
 
 /**
+ * Check whether the DRM node supports Kernel Mode-Setting.
+ *
+ * Returns 1 if suitable for KMS, 0 otherwise.
+ */
+extern int drmIsKMS(int fd);
+
+/**
  * Retrieves all of the resources associated with a card.
  */
 extern drmModeResPtr drmModeGetResources(int fd);
@@ -547,14 +455,14 @@ extern int drmModeCreateLease(int fd, const uint32_t *objects, int num_objects,
 
 typedef struct drmModeLesseeList {
        uint32_t count;
-       uint32_t lessees[0];
+       uint32_t lessees[];
 } drmModeLesseeListRes, *drmModeLesseeListPtr;
 
 extern drmModeLesseeListPtr drmModeListLessees(int fd);
 
 typedef struct drmModeObjectList {
        uint32_t count;
-       uint32_t objects[0];
+       uint32_t objects[];
 } drmModeObjectListRes, *drmModeObjectListPtr;
 
 extern drmModeObjectListPtr drmModeGetLease(int fd);