3 #include "state_tracker/drm_api.h"
5 #include "i965_drm_winsys.h"
6 #include "i965_drm_public.h"
7 #include "util/u_memory.h"
15 i965_libdrm_get_device_id(unsigned int *device_id
)
22 * FIXME: Fix this up to use a drm ioctl or whatever.
25 snprintf(path
, sizeof(path
), "/sys/class/drm/card0/device/device");
26 file
= fopen(path
, "r");
31 shutup_gcc
= fgets(path
, sizeof(path
), file
);
32 sscanf(path
, "%x", device_id
);
37 i965_libdrm_winsys_destroy(struct brw_winsys_screen
*iws
)
39 struct i965_libdrm_winsys
*idws
= i965_libdrm_winsys(iws
);
42 debug_printf("%s\n", __FUNCTION__
);
44 drm_intel_bufmgr_destroy(idws
->gem
);
49 struct brw_winsys_screen
*
50 i965_drm_winsys_screen_create(int drmFD
)
52 struct i965_libdrm_winsys
*idws
;
54 debug_printf("%s\n", __FUNCTION__
);
56 idws
= CALLOC_STRUCT(i965_libdrm_winsys
);
60 i965_libdrm_get_device_id(&idws
->base
.pci_id
);
62 i965_libdrm_winsys_init_buffer_functions(idws
);
66 idws
->base
.destroy
= i965_libdrm_winsys_destroy
;
68 idws
->gem
= drm_intel_bufmgr_gem_init(idws
->fd
, BRW_BATCH_SIZE
);
69 drm_intel_bufmgr_gem_enable_reuse(idws
->gem
);
71 idws
->send_cmd
= !debug_get_bool_option("BRW_NO_HW", FALSE
);