xref: /aosp_15_r20/external/minigbm/minigbm_helpers.h (revision d95af8df99a05bcb8679a54dc3ab8e5cd312b38e)
1*d95af8dfSAndroid Build Coastguard Worker /*
2*d95af8dfSAndroid Build Coastguard Worker  * Copyright 2020 The Chromium OS Authors. All rights reserved.
3*d95af8dfSAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
4*d95af8dfSAndroid Build Coastguard Worker  * found in the LICENSE file.
5*d95af8dfSAndroid Build Coastguard Worker  */
6*d95af8dfSAndroid Build Coastguard Worker #ifndef _MINIGBM_HELPERS_H_
7*d95af8dfSAndroid Build Coastguard Worker #define _MINIGBM_HELPERS_H_
8*d95af8dfSAndroid Build Coastguard Worker 
9*d95af8dfSAndroid Build Coastguard Worker #include <stdint.h>
10*d95af8dfSAndroid Build Coastguard Worker 
11*d95af8dfSAndroid Build Coastguard Worker #ifdef __cplusplus
12*d95af8dfSAndroid Build Coastguard Worker extern "C" {
13*d95af8dfSAndroid Build Coastguard Worker #endif
14*d95af8dfSAndroid Build Coastguard Worker 
15*d95af8dfSAndroid Build Coastguard Worker #define GBM_DEV_TYPE_FLAG_DISCRETE (1u << 0)	 /* Discrete GPU. Separate chip, dedicated VRAM. */
16*d95af8dfSAndroid Build Coastguard Worker #define GBM_DEV_TYPE_FLAG_DISPLAY (1u << 1)	 /* Device capable of display. */
17*d95af8dfSAndroid Build Coastguard Worker #define GBM_DEV_TYPE_FLAG_3D (1u << 2)		 /* Device capable or 3D rendering. */
18*d95af8dfSAndroid Build Coastguard Worker #define GBM_DEV_TYPE_FLAG_ARMSOC (1u << 3)	 /* Device on ARM SOC. */
19*d95af8dfSAndroid Build Coastguard Worker #define GBM_DEV_TYPE_FLAG_USB (1u << 4)		 /* USB device, udl, evdi. */
20*d95af8dfSAndroid Build Coastguard Worker #define GBM_DEV_TYPE_FLAG_BLOCKED (1u << 5)	 /* Unsuitable device e.g. vgem, udl, evdi. */
21*d95af8dfSAndroid Build Coastguard Worker #define GBM_DEV_TYPE_FLAG_INTERNAL_LCD (1u << 6) /* Device is driving internal LCD. */
22*d95af8dfSAndroid Build Coastguard Worker 
23*d95af8dfSAndroid Build Coastguard Worker struct gbm_device;
24*d95af8dfSAndroid Build Coastguard Worker 
25*d95af8dfSAndroid Build Coastguard Worker struct gbm_device_info {
26*d95af8dfSAndroid Build Coastguard Worker 	uint32_t dev_type_flags;
27*d95af8dfSAndroid Build Coastguard Worker 	int dri_node_num; /* DRI node number (0..63), for easy matching of devices. */
28*d95af8dfSAndroid Build Coastguard Worker 	unsigned int connectors;
29*d95af8dfSAndroid Build Coastguard Worker 	unsigned int connected;
30*d95af8dfSAndroid Build Coastguard Worker };
31*d95af8dfSAndroid Build Coastguard Worker 
32*d95af8dfSAndroid Build Coastguard Worker #define GBM_DETECT_FLAG_CONNECTED (1u << 0) /* Check if any connectors are connected. SLOW! */
33*d95af8dfSAndroid Build Coastguard Worker 
34*d95af8dfSAndroid Build Coastguard Worker int gbm_detect_device_info(unsigned int detect_flags, int fd, struct gbm_device_info *info);
35*d95af8dfSAndroid Build Coastguard Worker int gbm_detect_device_info_path(unsigned int detect_flags, const char *dev_node,
36*d95af8dfSAndroid Build Coastguard Worker 				struct gbm_device_info *info);
37*d95af8dfSAndroid Build Coastguard Worker 
38*d95af8dfSAndroid Build Coastguard Worker /*
39*d95af8dfSAndroid Build Coastguard Worker  * Create "default" gbm device.
40*d95af8dfSAndroid Build Coastguard Worker  */
41*d95af8dfSAndroid Build Coastguard Worker struct gbm_device *minigbm_create_default_device(int *out_fd);
42*d95af8dfSAndroid Build Coastguard Worker 
43*d95af8dfSAndroid Build Coastguard Worker #ifdef __cplusplus
44*d95af8dfSAndroid Build Coastguard Worker }
45*d95af8dfSAndroid Build Coastguard Worker #endif
46*d95af8dfSAndroid Build Coastguard Worker 
47*d95af8dfSAndroid Build Coastguard Worker #endif
48