Tizen 2.0 Release
[profile/ivi/osmesa.git] / src / gallium / state_trackers / egl / common / native_modeset.h
1 /*
2  * Mesa 3-D graphics library
3  * Version:  7.8
4  *
5  * Copyright (C) 2009-2010 Chia-I Wu <olv@0xlab.org>
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining a
8  * copy of this software and associated documentation files (the "Software"),
9  * to deal in the Software without restriction, including without limitation
10  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11  * and/or sell copies of the Software, and to permit persons to whom the
12  * Software is furnished to do so, subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be included
15  * in all copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23  * DEALINGS IN THE SOFTWARE.
24  */
25
26 #ifndef _NATIVE_MODESET_H_
27 #define _NATIVE_MODESET_H_
28
29 #include "pipe/p_compiler.h"
30
31 struct native_display;
32 struct native_surface;
33 struct native_config;
34
35 struct native_connector {
36    int dummy;
37 };
38
39 struct native_mode {
40    const char *desc;
41    int width, height;
42    int refresh_rate; /* HZ * 1000 */
43 };
44
45 /**
46  * Mode setting interface of the native display.  It exposes the mode setting
47  * capabilities of the underlying graphics hardware.
48  */
49 struct native_display_modeset {
50    /**
51     * Get the available physical connectors and the number of CRTCs.
52     */
53    const struct native_connector **(*get_connectors)(struct native_display *ndpy,
54                                                      int *num_connectors,
55                                                      int *num_crtcs);
56
57    /**
58     * Get the current supported modes of a connector.  The returned modes may
59     * change every time this function is called and those from previous calls
60     * might become invalid.
61     */
62    const struct native_mode **(*get_modes)(struct native_display *ndpy,
63                                            const struct native_connector *nconn,
64                                            int *num_modes);
65
66    /**
67     * Create a scan-out surface.  Required unless no config has scanout_bit
68     * set.
69     */
70    struct native_surface *(*create_scanout_surface)(struct native_display *ndpy,
71                                                     const struct native_config *nconf,
72                                                     uint width, uint height);
73
74    /**
75     * Program the CRTC to output the surface to the given connectors with the
76     * given mode.  When surface is not given, the CRTC is disabled.
77     *
78     * This interface does not export a way to query capabilities of the CRTCs.
79     * The native display usually needs to dynamically map the index to a CRTC
80     * that supports the given connectors.
81     */
82    boolean (*program)(struct native_display *ndpy, int crtc_idx,
83                       struct native_surface *nsurf, uint x, uint y,
84                       const struct native_connector **nconns, int num_nconns,
85                       const struct native_mode *nmode);
86 };
87
88 #endif /* _NATIVE_MODESET_H_ */