radeon_dri2.h revision de2362d3
1de2362d3Smrg/* 2de2362d3Smrg * Copyright 2008 Jerome Glisse 3de2362d3Smrg * 4de2362d3Smrg * All Rights Reserved. 5de2362d3Smrg * 6de2362d3Smrg * Permission is hereby granted, free of charge, to any person obtaining 7de2362d3Smrg * a copy of this software and associated documentation files (the 8de2362d3Smrg * "Software"), to deal in the Software without restriction, including 9de2362d3Smrg * without limitation on the rights to use, copy, modify, merge, 10de2362d3Smrg * publish, distribute, sublicense, and/or sell copies of the Software, 11de2362d3Smrg * and to permit persons to whom the Software is furnished to do so, 12de2362d3Smrg * subject to the following conditions: 13de2362d3Smrg * 14de2362d3Smrg * The above copyright notice and this permission notice (including the 15de2362d3Smrg * next paragraph) shall be included in all copies or substantial 16de2362d3Smrg * portions of the Software. 17de2362d3Smrg * 18de2362d3Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19de2362d3Smrg * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20de2362d3Smrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21de2362d3Smrg * NON-INFRINGEMENT. IN NO EVENT SHALL ATI, VA LINUX SYSTEMS AND/OR 22de2362d3Smrg * THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 23de2362d3Smrg * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24de2362d3Smrg * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25de2362d3Smrg * DEALINGS IN THE SOFTWARE. 26de2362d3Smrg */ 27de2362d3Smrg#ifndef RADEON_DRI2_H 28de2362d3Smrg#define RADEON_DRI2_H 29de2362d3Smrg 30de2362d3Smrg#include <xorg-server.h> 31de2362d3Smrg 32de2362d3Smrgstruct radeon_dri2 { 33de2362d3Smrg drmVersionPtr pKernelDRMVersion; 34de2362d3Smrg int drm_fd; 35de2362d3Smrg Bool available; 36de2362d3Smrg Bool enabled; 37de2362d3Smrg char *device_name; 38de2362d3Smrg}; 39de2362d3Smrg 40de2362d3Smrg#ifdef DRI2 41de2362d3Smrg 42de2362d3Smrg#include "dri2.h" 43de2362d3SmrgBool radeon_dri2_screen_init(ScreenPtr pScreen); 44de2362d3Smrgvoid radeon_dri2_close_screen(ScreenPtr pScreen); 45de2362d3Smrg 46de2362d3Smrgint drmmode_get_crtc_id(xf86CrtcPtr crtc); 47de2362d3Smrgvoid radeon_dri2_frame_event_handler(unsigned int frame, unsigned int tv_sec, 48de2362d3Smrg unsigned int tv_usec, void *event_data); 49de2362d3Smrgvoid radeon_dri2_flip_event_handler(unsigned int frame, unsigned int tv_sec, 50de2362d3Smrg unsigned int tv_usec, void *event_data); 51de2362d3Smrg 52de2362d3Smrg#else 53de2362d3Smrg 54de2362d3Smrgstatic inline Bool radeon_dri2_screen_init(ScreenPtr pScreen) { return FALSE; } 55de2362d3Smrgstatic inline void radeon_dri2_close_screen(ScreenPtr pScreen) {} 56de2362d3Smrg 57de2362d3Smrgstatic inline void 58de2362d3Smrgradeon_dri2_dummy_event_handler(unsigned int frame, unsigned int tv_sec, 59de2362d3Smrg unsigned int tv_usec, void *event_data, 60de2362d3Smrg const char *name) 61de2362d3Smrg{ 62de2362d3Smrg static Bool warned; 63de2362d3Smrg 64de2362d3Smrg if (!warned) { 65de2362d3Smrg ErrorF("%s called but DRI2 disabled at build time\n", name); 66de2362d3Smrg warned = TRUE; 67de2362d3Smrg } 68de2362d3Smrg 69de2362d3Smrg free(event_data); 70de2362d3Smrg} 71de2362d3Smrg 72de2362d3Smrgstatic inline void 73de2362d3Smrgradeon_dri2_frame_event_handler(unsigned int frame, unsigned int tv_sec, 74de2362d3Smrg unsigned int tv_usec, void *event_data) 75de2362d3Smrg{ 76de2362d3Smrg radeon_dri2_dummy_event_handler(frame, tv_sec, tv_usec, event_data, 77de2362d3Smrg __func__); 78de2362d3Smrg} 79de2362d3Smrg 80de2362d3Smrgstatic inline void 81de2362d3Smrgradeon_dri2_flip_event_handler(unsigned int frame, unsigned int tv_sec, 82de2362d3Smrg unsigned int tv_usec, void *event_data) 83de2362d3Smrg{ 84de2362d3Smrg radeon_dri2_dummy_event_handler(frame, tv_sec, tv_usec, event_data, 85de2362d3Smrg __func__); 86de2362d3Smrg} 87de2362d3Smrg 88de2362d3Smrg#endif 89de2362d3Smrg 90de2362d3Smrg#endif /* RADEON_DRI2_H */ 91