648bf61240f7bee6845770991aaa9f8537ec37af
[mesa.git] / src / mesa / drivers / dri / intel / intel_screen.h
1 /**************************************************************************
2 *
3 * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
4 * All Rights Reserved.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
13 *
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
16 * of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 *
26 **************************************************************************/
27
28 #ifndef _INTEL_INIT_H_
29 #define _INTEL_INIT_H_
30
31 #include <sys/time.h>
32 #include "dri_util.h"
33 #include "i915_drm.h"
34 #include "xmlconfig.h"
35
36 enum tiling_mode {
37 INTEL_TILE_NONE,
38 INTEL_TILE_X,
39 INTEL_TILE_Y
40 };
41
42 /* XXX: change name or eliminate to avoid conflict with "struct
43 * intel_region"!!!
44 */
45 typedef struct
46 {
47 drm_handle_t handle;
48 drmSize size; /* region size in bytes */
49 char *map; /* memory map */
50 int offset; /* from start of video mem, in bytes */
51 unsigned int bo_handle; /* buffer object id if available, or -1 */
52 /**
53 * Flags if the region is tiled.
54 *
55 * Not included is Y versus X tiling.
56 */
57 GLboolean tiled;
58 } intelRegion;
59
60 typedef struct
61 {
62 intelRegion front;
63 intelRegion back;
64 intelRegion third;
65 intelRegion depth;
66 intelRegion tex;
67
68 int deviceID;
69 int width;
70 int height;
71 int pitch; /* common row stride, in pixels */
72
73 int logTextureGranularity;
74
75 __DRIscreenPrivate *driScrnPriv;
76 unsigned int sarea_priv_offset;
77
78 int drmMinor;
79
80 int irq_active;
81 int allow_batchbuffer;
82
83 int ttm;
84
85 /**
86 * Configuration cache with default values for all contexts
87 */
88 driOptionCache optionCache;
89 } intelScreenPrivate;
90
91
92
93 extern GLboolean intelMapScreenRegions(__DRIscreenPrivate * sPriv);
94
95 extern void intelUnmapScreenRegions(intelScreenPrivate * intelScreen);
96
97 extern void
98 intelUpdateScreenFromSAREA(intelScreenPrivate * intelScreen,
99 struct drm_i915_sarea * sarea);
100
101 extern void intelDestroyContext(__DRIcontextPrivate * driContextPriv);
102
103 extern GLboolean intelUnbindContext(__DRIcontextPrivate * driContextPriv);
104
105 extern GLboolean
106 intelMakeCurrent(__DRIcontextPrivate * driContextPriv,
107 __DRIdrawablePrivate * driDrawPriv,
108 __DRIdrawablePrivate * driReadPriv);
109
110 extern void intelSwapBuffers(__DRIdrawablePrivate * dPriv);
111
112 extern void
113 intelCopySubBuffer(__DRIdrawablePrivate * dPriv, int x, int y, int w, int h);
114
115 extern struct intel_context *intelScreenContext(intelScreenPrivate *intelScreen);
116
117 #endif