Home | History | Annotate | Download | only in drm

Lines Matching refs:ws

127     if (drmCommandWriteRead(applier->ws->fd, DRM_RADEON_INFO,
173 static boolean do_winsys_init(struct radeon_drm_winsys *ws)
200 version = drmGetVersion(ws->fd);
213 ws->info.drm_major = version->version_major;
214 ws->info.drm_minor = version->version_minor;
215 ws->info.drm_patchlevel = version->version_patchlevel;
219 if (!radeon_get_drm_value(ws->fd, RADEON_INFO_DEVICE_ID, "PCI ID",
220 &ws->info.pci_id))
224 switch (ws->info.pci_id) {
228 ws->gen = R300;
234 ws->gen = R600;
240 ws->gen = SI;
249 retval = drmCommandWriteRead(ws->fd, DRM_RADEON_GEM_INFO,
256 ws->info.gart_size = gem_info.gart_size;
257 ws->info.vram_size = gem_info.vram_size;
259 ws->num_cpus = sysconf(_SC_NPROCESSORS_ONLN);
262 if (ws->gen == R300) {
263 if (!radeon_get_drm_value(ws->fd, RADEON_INFO_NUM_GB_PIPES,
265 &ws->info.r300_num_gb_pipes))
268 if (!radeon_get_drm_value(ws->fd, RADEON_INFO_NUM_Z_PIPES,
270 &ws->info.r300_num_z_pipes))
273 else if (ws->gen >= R600) {
274 if (ws->info.drm_minor >= 9 &&
275 !radeon_get_drm_value(ws->fd, RADEON_INFO_NUM_BACKENDS,
277 &ws->info.r600_num_backends))
281 radeon_get_drm_value(ws->fd, RADEON_INFO_CLOCK_CRYSTAL_FREQ, NULL,
282 &ws->info.r600_clock_crystal_freq);
284 radeon_get_drm_value(ws->fd, RADEON_INFO_TILING_CONFIG, NULL,
285 &ws->info.r600_tiling_config);
287 if (ws->info.drm_minor >= 11) {
288 radeon_get_drm_value(ws->fd, RADEON_INFO_NUM_TILE_PIPES, NULL,
289 &ws->info.r600_num_tile_pipes);
291 if (radeon_get_drm_value(ws->fd, RADEON_INFO_BACKEND_MAP, NULL,
292 &ws->info.r600_backend_map))
293 ws->info.r600_backend_map_valid = TRUE;
296 ws->info.r600_virtual_address = FALSE;
297 if (ws->info.drm_minor >= 13) {
298 ws->info.r600_virtual_address = TRUE;
299 if (!radeon_get_drm_value(ws->fd, RADEON_INFO_VA_START, NULL,
300 &ws->info.r600_va_start))
301 ws->info.r600_virtual_address = FALSE;
302 if (!radeon_get_drm_value(ws->fd, RADEON_INFO_IB_VM_MAX_SIZE, NULL,
303 &ws->info.r600_ib_vm_max_size))
304 ws->info.r600_virtual_address = FALSE;
307 if (ws->gen == R600 && !debug_get_bool_option("RADEON_VA", FALSE))
308 ws->info.r600_virtual_address = FALSE;
313 ws->info.r600_max_pipes = 2;
314 radeon_get_drm_value(ws->fd, RADEON_INFO_MAX_PIPES, NULL,
315 &ws->info.r600_max_pipes);
322 struct radeon_drm_winsys *ws = (struct radeon_drm_winsys*)rws;
324 pipe_mutex_destroy(ws->hyperz_owner_mutex);
325 pipe_mutex_destroy(ws->cmask_owner_mutex);
327 ws->cman->destroy(ws->cman);
328 ws->kman->destroy(ws->kman);
329 if (ws->gen >= R600) {
330 radeon_surface_manager_free(ws->surf_man);
350 return radeon_set_fd_access(cs, &cs->ws->hyperz_owner,
351 &cs->ws->hyperz_owner_mutex,
359 return radeon_set_fd_access(cs, &cs->ws->cmask_owner,
360 &cs->ws->cmask_owner_mutex,
372 struct radeon_drm_winsys *ws = (struct radeon_drm_winsys*)rws;
374 return radeon_surface_init(ws->surf_man, surf);
380 struct radeon_drm_winsys *ws = (struct radeon_drm_winsys*)rws;
382 return radeon_surface_best(ws->surf_man, surf);
387 struct radeon_drm_winsys *ws = (struct radeon_drm_winsys*)rws;
390 if (ws->info.drm_minor < 20 ||
391 ws->gen < R600) {
396 radeon_get_drm_value(ws->fd, RADEON_INFO_TIMESTAMP, "timestamp",
403 struct radeon_drm_winsys *ws = CALLOC_STRUCT(radeon_drm_winsys);
404 if (!ws) {
408 ws->fd = fd;
410 if (!do_winsys_init(ws))
414 ws->kman = radeon_bomgr_create(ws);
415 if (!ws->kman)
417 ws->cman = pb_cache_manager_create(ws->kman, 1000000);
418 if (!ws->cman)
421 if (ws->gen >= R600) {
422 ws->surf_man = radeon_surface_manager_new(fd);
423 if (!ws->surf_man)
428 ws->base.destroy = radeon_winsys_destroy;
429 ws->base.query_info = radeon_query_info;
430 ws->base.cs_request_feature = radeon_cs_request_feature;
431 ws->base.surface_init = radeon_drm_winsys_surface_init;
432 ws->base.surface_best = radeon_drm_winsys_surface_best;
433 ws->base.query_timestamp = radeon_query_timestamp;
435 radeon_bomgr_init_functions(ws);
436 radeon_drm_cs_init_functions(ws);
438 pipe_mutex_init(ws->hyperz_owner_mutex);
439 pipe_mutex_init(ws->cmask_owner_mutex);
441 return &ws->base;
444 if (ws->cman)
445 ws->cman->destroy(ws->cman);
446 if (ws->kman)
447 ws->kman->destroy(ws->kman);
448 if (ws->surf_man)
449 radeon_surface_manager_free(ws->surf_man);
450 FREE(ws);