Merge remote branch 'upstream/gallium-0.1' into gallium-0.1
[mesa.git] / src / gallium / drivers / nv50 / nv50_context.c
1 #include "draw/draw_context.h"
2 #include "pipe/p_defines.h"
3 #include "pipe/p_winsys.h"
4 #include "pipe/p_util.h"
5
6 #include "nv50_context.h"
7 #include "nv50_screen.h"
8
9 static void
10 nv50_flush(struct pipe_context *pipe, unsigned flags,
11 struct pipe_fence_handle **fence)
12 {
13 struct nv50_context *nv50 = (struct nv50_context *)pipe;
14
15 FIRE_RING(fence);
16 }
17
18 static void
19 nv50_destroy(struct pipe_context *pipe)
20 {
21 struct nv50_context *nv50 = (struct nv50_context *)pipe;
22
23 draw_destroy(nv50->draw);
24 free(nv50);
25 }
26
27
28 static void
29 nv50_set_edgeflags(struct pipe_context *pipe, const unsigned *bitfield)
30 {
31 }
32
33 struct pipe_context *
34 nv50_create(struct pipe_screen *pscreen, unsigned pctx_id)
35 {
36 struct pipe_winsys *pipe_winsys = pscreen->winsys;
37 struct nv50_screen *screen = nv50_screen(pscreen);
38 struct nv50_context *nv50;
39
40 nv50 = CALLOC_STRUCT(nv50_context);
41 if (!nv50)
42 return NULL;
43 nv50->screen = screen;
44 nv50->pctx_id = pctx_id;
45
46 nv50->pipe.winsys = pipe_winsys;
47 nv50->pipe.screen = pscreen;
48
49 nv50->pipe.destroy = nv50_destroy;
50
51 nv50->pipe.set_edgeflags = nv50_set_edgeflags;
52 nv50->pipe.draw_arrays = nv50_draw_arrays;
53 nv50->pipe.draw_elements = nv50_draw_elements;
54 nv50->pipe.clear = nv50_clear;
55
56 nv50->pipe.flush = nv50_flush;
57
58 nv50_init_surface_functions(nv50);
59 nv50_init_state_functions(nv50);
60 nv50_init_query_functions(nv50);
61
62 nv50->draw = draw_create();
63 assert(nv50->draw);
64 draw_set_rasterize_stage(nv50->draw, nv50_draw_render_stage(nv50));
65
66 return &nv50->pipe;
67 }
68
69