drmmode_display.h revision de2362d3
1de2362d3Smrg/* 2de2362d3Smrg * Copyright © 2007 Red Hat, Inc. 3de2362d3Smrg * 4de2362d3Smrg * Permission is hereby granted, free of charge, to any person obtaining a 5de2362d3Smrg * copy of this software and associated documentation files (the "Software"), 6de2362d3Smrg * to deal in the Software without restriction, including without limitation 7de2362d3Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8de2362d3Smrg * and/or sell copies of the Software, and to permit persons to whom the 9de2362d3Smrg * Software is furnished to do so, subject to the following conditions: 10de2362d3Smrg * 11de2362d3Smrg * The above copyright notice and this permission notice (including the next 12de2362d3Smrg * paragraph) shall be included in all copies or substantial portions of the 13de2362d3Smrg * Software. 14de2362d3Smrg * 15de2362d3Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16de2362d3Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17de2362d3Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18de2362d3Smrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19de2362d3Smrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20de2362d3Smrg * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21de2362d3Smrg * SOFTWARE. 22de2362d3Smrg * 23de2362d3Smrg * Authors: 24de2362d3Smrg * Dave Airlie <airlied@redhat.com> 25de2362d3Smrg * 26de2362d3Smrg */ 27de2362d3Smrg#ifndef DRMMODE_DISPLAY_H 28de2362d3Smrg#define DRMMODE_DISPLAY_H 29de2362d3Smrg 30de2362d3Smrg#include "xf86drmMode.h" 31de2362d3Smrg#ifdef HAVE_LIBUDEV 32de2362d3Smrg#include "libudev.h" 33de2362d3Smrg#endif 34de2362d3Smrg 35de2362d3Smrg#include "radeon_probe.h" 36de2362d3Smrg 37de2362d3Smrg#ifndef DRM_CAP_TIMESTAMP_MONOTONIC 38de2362d3Smrg#define DRM_CAP_TIMESTAMP_MONOTONIC 0x6 39de2362d3Smrg#endif 40de2362d3Smrg 41de2362d3Smrgtypedef struct { 42de2362d3Smrg int fd; 43de2362d3Smrg unsigned fb_id; 44de2362d3Smrg drmModeResPtr mode_res; 45de2362d3Smrg drmModeFBPtr mode_fb; 46de2362d3Smrg int cpp; 47de2362d3Smrg struct radeon_bo_manager *bufmgr; 48de2362d3Smrg ScrnInfoPtr scrn; 49de2362d3Smrg#ifdef HAVE_LIBUDEV 50de2362d3Smrg struct udev_monitor *uevent_monitor; 51de2362d3Smrg InputHandlerProc uevent_handler; 52de2362d3Smrg#endif 53de2362d3Smrg drmEventContext event_context; 54de2362d3Smrg} drmmode_rec, *drmmode_ptr; 55de2362d3Smrg 56de2362d3Smrgtypedef struct { 57de2362d3Smrg drmmode_ptr drmmode; 58de2362d3Smrg unsigned old_fb_id; 59de2362d3Smrg int flip_count; 60de2362d3Smrg void *event_data; 61de2362d3Smrg unsigned int fe_frame; 62de2362d3Smrg unsigned int fe_tv_sec; 63de2362d3Smrg unsigned int fe_tv_usec; 64de2362d3Smrg} drmmode_flipdata_rec, *drmmode_flipdata_ptr; 65de2362d3Smrg 66de2362d3Smrgtypedef struct { 67de2362d3Smrg drmmode_flipdata_ptr flipdata; 68de2362d3Smrg Bool dispatch_me; 69de2362d3Smrg} drmmode_flipevtcarrier_rec, *drmmode_flipevtcarrier_ptr; 70de2362d3Smrg 71de2362d3Smrgtypedef struct { 72de2362d3Smrg drmmode_ptr drmmode; 73de2362d3Smrg drmModeCrtcPtr mode_crtc; 74de2362d3Smrg int hw_id; 75de2362d3Smrg struct radeon_bo *cursor_bo; 76de2362d3Smrg struct radeon_bo *rotate_bo; 77de2362d3Smrg unsigned rotate_fb_id; 78de2362d3Smrg int dpms_mode; 79de2362d3Smrg CARD64 dpms_last_ust; 80de2362d3Smrg uint32_t dpms_last_seq; 81de2362d3Smrg int dpms_last_fps; 82de2362d3Smrg uint32_t interpolated_vblanks; 83de2362d3Smrg uint16_t lut_r[256], lut_g[256], lut_b[256]; 84de2362d3Smrg int scanout_pixmap_x; 85de2362d3Smrg} drmmode_crtc_private_rec, *drmmode_crtc_private_ptr; 86de2362d3Smrg 87de2362d3Smrgtypedef struct { 88de2362d3Smrg drmModePropertyPtr mode_prop; 89de2362d3Smrg uint64_t value; 90de2362d3Smrg int num_atoms; /* if range prop, num_atoms == 1; if enum prop, num_atoms == num_enums + 1 */ 91de2362d3Smrg Atom *atoms; 92de2362d3Smrg} drmmode_prop_rec, *drmmode_prop_ptr; 93de2362d3Smrg 94de2362d3Smrg 95de2362d3Smrgtypedef struct { 96de2362d3Smrg drmmode_ptr drmmode; 97de2362d3Smrg int output_id; 98de2362d3Smrg drmModeConnectorPtr mode_output; 99de2362d3Smrg drmModeEncoderPtr *mode_encoders; 100de2362d3Smrg drmModePropertyBlobPtr edid_blob; 101de2362d3Smrg int dpms_enum_id; 102de2362d3Smrg int num_props; 103de2362d3Smrg drmmode_prop_ptr props; 104de2362d3Smrg int enc_mask; 105de2362d3Smrg int enc_clone_mask; 106de2362d3Smrg} drmmode_output_private_rec, *drmmode_output_private_ptr; 107de2362d3Smrg 108de2362d3Smrg 109de2362d3Smrgextern Bool drmmode_pre_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int cpp); 110de2362d3Smrgextern void drmmode_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode); 111de2362d3Smrgextern void drmmode_fini(ScrnInfoPtr pScrn, drmmode_ptr drmmode); 112de2362d3Smrgextern Bool drmmode_set_bufmgr(ScrnInfoPtr pScrn, drmmode_ptr drmmode, struct radeon_bo_manager *bufmgr); 113de2362d3Smrgextern void drmmode_set_cursor(ScrnInfoPtr scrn, drmmode_ptr drmmode, int id, struct radeon_bo *bo); 114de2362d3Smrgvoid drmmode_adjust_frame(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int x, int y); 115de2362d3Smrgextern Bool drmmode_set_desired_modes(ScrnInfoPtr pScrn, drmmode_ptr drmmode); 116de2362d3Smrgextern void drmmode_copy_fb(ScrnInfoPtr pScrn, drmmode_ptr drmmode); 117de2362d3Smrgextern Bool drmmode_setup_colormap(ScreenPtr pScreen, ScrnInfoPtr pScrn); 118de2362d3Smrg 119de2362d3Smrgextern void drmmode_uevent_init(ScrnInfoPtr scrn, drmmode_ptr drmmode); 120de2362d3Smrgextern void drmmode_uevent_fini(ScrnInfoPtr scrn, drmmode_ptr drmmode); 121de2362d3Smrg 122de2362d3Smrgextern int drmmode_get_height_align(ScrnInfoPtr scrn, uint32_t tiling); 123de2362d3Smrgextern int drmmode_get_pitch_align(ScrnInfoPtr scrn, int bpe, uint32_t tiling); 124de2362d3Smrgextern int drmmode_get_base_align(ScrnInfoPtr scrn, int bpe, uint32_t tiling); 125de2362d3Smrg 126de2362d3SmrgBool radeon_do_pageflip(ScrnInfoPtr scrn, struct radeon_bo *new_front, void *data, int ref_crtc_hw_id); 127de2362d3Smrgint drmmode_get_current_ust(int drm_fd, CARD64 *ust); 128de2362d3Smrg 129de2362d3Smrg#endif 130de2362d3Smrg 131