return bo->format;
}
+PUBLIC uint64_t
+gbm_bo_get_format_modifier(struct gbm_bo *bo)
+{
+ return gbm_bo_get_plane_format_modifier(bo, 0);
+}
+
PUBLIC struct gbm_device *
gbm_bo_get_device(struct gbm_bo *bo)
{
return bo->strides[plane];
}
+PUBLIC uint64_t
+gbm_bo_get_plane_format_modifier(struct gbm_bo *bo, size_t plane)
+{
+ assert(plane < bo->num_planes);
+ return bo->format_modifiers[plane];
+}
+
PUBLIC void
gbm_bo_set_user_data(struct gbm_bo *bo, void *data,
void (*destroy_user_data)(struct gbm_bo *, void *))
#define GBM_FORMAT_YUV444 __gbm_fourcc_code('Y', 'U', '2', '4') /* non-subsampled Cb (1) and Cr (2) planes */
#define GBM_FORMAT_YVU444 __gbm_fourcc_code('Y', 'V', '2', '4') /* non-subsampled Cr (1) and Cb (2) planes */
+/*
+ * Format Modifiers:
+ *
+ * Format modifiers describe, typically, a re-ordering or modification
+ * of the data in a plane of an FB. This can be used to express tiled/
+ * swizzled formats, or compression, or a combination of the two.
+ *
+ * The upper 8 bits of the format modifier are a vendor-id as assigned
+ * below. The lower 56 bits are assigned as vendor sees fit.
+ */
+
+/* Vendor Ids: */
+#define GBM_FORMAT_MOD_NONE 0
+#define GBM_FORMAT_MOD_VENDOR_INTEL 0x01
+#define GBM_FORMAT_MOD_VENDOR_AMD 0x02
+#define GBM_FORMAT_MOD_VENDOR_NV 0x03
+#define GBM_FORMAT_MOD_VENDOR_SAMSUNG 0x04
+#define GBM_FORMAT_MOD_VENDOR_QCOM 0x05
+/* add more to the end as needed */
+
+#define gbm_fourcc_mod_code(vendor, val) \
+ ((((__u64)GBM_FORMAT_MOD_VENDOR_## vendor) << 56) | (val & 0x00ffffffffffffffULL))
/**
* Flags to indicate the intended use for the buffer - these are passed into
uint32_t
gbm_bo_get_format(struct gbm_bo *bo);
+uint64_t
+gbm_bo_get_format_modifier(struct gbm_bo *bo);
+
struct gbm_device *
gbm_bo_get_device(struct gbm_bo *bo);
uint32_t
gbm_bo_get_plane_stride(struct gbm_bo *bo, size_t plane);
+uint64_t
+gbm_bo_get_plane_format_modifier(struct gbm_bo *bo, size_t plane);
+
void
gbm_bo_set_user_data(struct gbm_bo *bo, void *data,
void (*destroy_user_data)(struct gbm_bo *, void *));
uint32_t offsets[GBM_MAX_PLANES];
uint32_t sizes[GBM_MAX_PLANES];
uint32_t strides[GBM_MAX_PLANES];
+ uint64_t format_modifiers[GBM_MAX_PLANES];
void *priv;
void *user_data;
void (*destroy_user_data)(struct gbm_bo *, void *);