Merge branch '7.8'
[mesa.git] / src / gallium / winsys / i915 / sw / i915_sw_winsys.c
1
2 #include "i915_sw_winsys.h"
3 #include "util/u_memory.h"
4
5
6 /*
7 * Helper functions
8 */
9
10
11 static void
12 i915_sw_get_device_id(unsigned int *device_id)
13 {
14 /* just pick a i945 hw id */
15 *device_id = 0x27A2;
16 }
17
18 static void
19 i915_sw_destroy(struct i915_winsys *iws)
20 {
21 struct i915_sw_winsys *isws = i915_sw_winsys(iws);
22 FREE(isws);
23 }
24
25
26 /*
27 * Exported functions
28 */
29
30
31 struct pipe_screen *
32 i915_sw_create_screen()
33 {
34 struct i915_sw_winsys *isws;
35 unsigned int deviceID;
36
37 isws = CALLOC_STRUCT(i915_sw_winsys);
38 if (!isws)
39 return NULL;
40
41 i915_sw_get_device_id(&deviceID);
42
43 i915_sw_winsys_init_batchbuffer_functions(isws);
44 i915_sw_winsys_init_buffer_functions(isws);
45 i915_sw_winsys_init_fence_functions(isws);
46
47 isws->base.destroy = i915_sw_destroy;
48
49 isws->id = deviceID;
50 isws->max_batch_size = 16 * 4096;
51
52 isws->dump_cmd = debug_get_bool_option("INTEL_DUMP_CMD", FALSE);
53
54 /* XXX so this will leak winsys:es */
55 return i915_create_screen(&isws->base, deviceID);
56 }