blob: 6b281402d53dc728c468056b3a50c1cb7ecf5700 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#include <stdio.h>
#include "pipe/p_defines.h"
#include "intel_be_device.h"
#include "i915simple/i915_screen.h"
#include "intel_api.h"
struct intel_device
{
struct intel_be_device base;
int deviceID;
};
static void
intel_destroy_winsys(struct pipe_winsys *winsys)
{
struct intel_device *dev = (struct intel_device *)winsys;
intel_be_destroy_device(&dev->base);
free(dev);
}
struct pipe_screen *
intel_create_screen(int drmFD, int deviceID)
{
struct intel_device *dev;
struct pipe_screen *screen;
/* Allocate the private area */
dev = malloc(sizeof(*dev));
if (!dev)
return NULL;
memset(dev, 0, sizeof(*dev));
dev->deviceID = deviceID;
intel_be_init_device(&dev->base, drmFD, deviceID);
/* we need to hock our own destroy function in here */
dev->base.base.destroy = intel_destroy_winsys;
screen = i915_create_screen(&dev->base.base, deviceID);
return screen;
}
|