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