3 #include "state_tracker/drm_driver.h"
5 #include "i915_drm_winsys.h"
6 #include "i915_drm_public.h"
7 #include "util/u_memory.h"
16 i915_drm_get_device_id(unsigned int *device_id
)
23 * FIXME: Fix this up to use a drm ioctl or whatever.
26 snprintf(path
, sizeof(path
), "/sys/class/drm/card0/device/device");
27 file
= fopen(path
, "r");
32 shutup_gcc
= fgets(path
, sizeof(path
), file
);
34 sscanf(path
, "%x", device_id
);
39 i915_drm_winsys_destroy(struct i915_winsys
*iws
)
41 struct i915_drm_winsys
*idws
= i915_drm_winsys(iws
);
43 drm_intel_bufmgr_destroy(idws
->pools
.gem
);
49 i915_drm_winsys_create(int drmFD
)
51 struct i915_drm_winsys
*idws
;
52 unsigned int deviceID
;
54 idws
= CALLOC_STRUCT(i915_drm_winsys
);
58 i915_drm_get_device_id(&deviceID
);
60 i915_drm_winsys_init_batchbuffer_functions(idws
);
61 i915_drm_winsys_init_buffer_functions(idws
);
62 i915_drm_winsys_init_fence_functions(idws
);
65 idws
->base
.pci_id
= deviceID
;
66 idws
->max_batch_size
= 16 * 4096;
68 idws
->base
.destroy
= i915_drm_winsys_destroy
;
70 idws
->pools
.gem
= drm_intel_bufmgr_gem_init(idws
->fd
, idws
->max_batch_size
);
71 drm_intel_bufmgr_gem_enable_reuse(idws
->pools
.gem
);
73 idws
->dump_cmd
= debug_get_bool_option("INTEL_DUMP_CMD", FALSE
);