2
* Mesa 3-D graphics library
5
* Copyright (C) 2011 LunarG Inc.
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:
14
* The above copyright notice and this permission notice shall be included
15
* in all copies or substantial portions of the Software.
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.
26
* Chia-I Wu <olv@lunarg.com>
28
#include "target-helpers/inline_debug_helper.h"
29
#include "target-helpers/inline_sw_helper.h"
33
#include "i915/drm/i915_drm_public.h"
34
#include "i915/i915_public.h"
36
#include "target-helpers/inline_wrapper_sw_helper.h"
37
#include "i965/drm/i965_drm_public.h"
38
#include "i965/brw_public.h"
40
#include "nouveau/drm/nouveau_drm_public.h"
42
#include "radeon/drm/radeon_drm_public.h"
43
#include "r300/r300_public.h"
45
#include "r600/drm/r600_drm_public.h"
46
#include "r600/r600_public.h"
48
#include "svga/drm/svga_drm_public.h"
49
#include "svga/svga_public.h"
51
static struct pipe_screen *
52
pipe_i915_create_screen(int fd)
55
struct i915_winsys *iws;
56
struct pipe_screen *screen;
58
iws = i915_drm_winsys_create(fd);
62
screen = i915_screen_create(iws);
66
screen = debug_screen_wrap(screen);
74
static struct pipe_screen *
75
pipe_i965_create_screen(int fd)
78
struct brw_winsys_screen *bws;
79
struct pipe_screen *screen;
81
bws = i965_drm_winsys_screen_create(fd);
85
screen = brw_screen_create(bws);
89
screen = sw_screen_wrap(screen);
91
screen = debug_screen_wrap(screen);
99
static struct pipe_screen *
100
pipe_nouveau_create_screen(int fd)
102
#if _EGL_PIPE_NOUVEAU
103
struct pipe_screen *screen;
105
screen = nouveau_drm_screen_create(fd);
109
screen = debug_screen_wrap(screen);
117
static struct pipe_screen *
118
pipe_r300_create_screen(int fd)
121
struct radeon_winsys *sws;
122
struct pipe_screen *screen;
124
sws = radeon_drm_winsys_create(fd);
128
screen = r300_screen_create(sws);
132
screen = debug_screen_wrap(screen);
140
static struct pipe_screen *
141
pipe_r600_create_screen(int fd)
145
struct pipe_screen *screen;
147
rw = r600_drm_winsys_create(fd);
151
screen = r600_screen_create(rw);
155
screen = debug_screen_wrap(screen);
163
static struct pipe_screen *
164
pipe_vmwgfx_create_screen(int fd)
167
struct svga_winsys_screen *sws;
168
struct pipe_screen *screen;
170
sws = svga_drm_winsys_screen_create(fd);
174
screen = svga_screen_create(sws);
178
screen = debug_screen_wrap(screen);
187
egl_pipe_create_drm_screen(const char *name, int fd)
189
if (strcmp(name, "i915") == 0)
190
return pipe_i915_create_screen(fd);
191
else if (strcmp(name, "i965") == 0)
192
return pipe_i965_create_screen(fd);
193
else if (strcmp(name, "nouveau") == 0)
194
return pipe_nouveau_create_screen(fd);
195
else if (strcmp(name, "r300") == 0)
196
return pipe_r300_create_screen(fd);
197
else if (strcmp(name, "r600") == 0)
198
return pipe_r600_create_screen(fd);
199
else if (strcmp(name, "vmwgfx") == 0)
200
return pipe_vmwgfx_create_screen(fd);
206
egl_pipe_create_swrast_screen(struct sw_winsys *ws)
208
struct pipe_screen *screen;
210
screen = sw_screen_create(ws);
212
screen = debug_screen_wrap(screen);