fence: ref could destroy the object it was referencing, fix that!
[nouveau] / src / drmmode_display.h
1 /*
2  * Copyright © 2007 Red Hat, Inc.
3  * Copyright © 2008 Maarten Maathuis
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
19  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  *
24  * Authors:
25  *     Dave Airlie <airlied@redhat.com>
26  *
27  */
28 #ifndef DRMMODE_DISPLAY_H
29 #define DRMMODE_DISPLAY_H
30
31 #ifdef XF86DRM_MODE
32
33 #include "nv_include.h"
34 #include "xf86drmMode.h"
35
36 typedef struct {
37         int fd;
38         uint32_t fb_id;
39         drmModeResPtr mode_res;
40         drmModeFBPtr mode_fb;
41         int cpp;
42
43         uint32_t (*create_new_fb)(ScrnInfoPtr pScrn, int width, int height, int *pitch);
44 } drmmode_rec, *drmmode_ptr;
45
46 typedef struct {
47         int index;
48         drmmode_ptr drmmode;
49         drmModeCrtcPtr mode_crtc;
50         struct nouveau_bo *shadow;
51         uint32_t shadow_id;
52 } drmmode_crtc_private_rec, *drmmode_crtc_private_ptr;
53
54 typedef struct {
55         drmmode_ptr drmmode;
56         int output_id;
57         drmModeConnectorPtr mode_output;
58         drmModeEncoderPtr mode_encoder;
59         drmModePropertyBlobPtr edid_blob;
60 } drmmode_output_private_rec, *drmmode_output_private_ptr;
61
62 Bool drmmode_pre_init(ScrnInfoPtr pScrn, char *busId, drmmode_ptr drmmode, int cpp);
63 void drmmode_set_fb(ScrnInfoPtr scrn, drmmode_ptr drmmode, int width, int height, int pitch, struct nouveau_bo *bo);
64
65 #endif /* XF86DRM_MODE */
66
67 #endif /* DRMMODE_DISPLAY_H */