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