Home | History | Annotate | Download | only in radeonsi

Lines Matching refs:rscreen

58 	struct r600_screen *rscreen = rctx->screen;
61 pipe_mutex_lock(rscreen->fences.mutex);
63 if (!rscreen->fences.bo) {
65 rscreen->fences.bo = si_resource_create_custom(&rscreen->screen,
68 if (!rscreen->fences.bo) {
72 rscreen->fences.data = rctx->ws->buffer_map(rscreen->fences.bo->cs_buf,
77 if (!LIST_IS_EMPTY(&rscreen->fences.pool)) {
81 LIST_FOR_EACH_ENTRY(entry, &rscreen->fences.pool, head) {
82 if (rscreen->fences.data[entry->index] != 0) {
95 if ((rscreen->fences.next_index + 1) >= 1024) {
100 index = rscreen->fences.next_index++;
108 LIST_ADD(&block->head, &rscreen->fences.blocks);
110 block = LIST_ENTRY(struct r600_fence_block, rscreen->fences.blocks.next, head);
119 rscreen->fences.data[fence->index] = 0;
120 si_context_emit_fence(rctx, rscreen->fences.bo, fence->index, 1);
129 pipe_mutex_unlock(rscreen->fences.mutex);
193 struct r600_screen* rscreen = (struct r600_screen *)screen;
204 rctx->screen = rscreen;
205 rctx->ws = rscreen->ws;
206 rctx->family = rscreen->family;
207 rctx->chip_class = rscreen->chip_class;
283 struct r600_screen *rscreen = (struct r600_screen *)pscreen;
285 return r600_get_family_name(rscreen->family);
290 struct r600_screen *rscreen = (struct r600_screen *)pscreen;
291 enum radeon_family family = rscreen->family;
370 return rscreen->info.drm_minor >= 9 ? 16384 : 0;
381 return rscreen->info.r600_clock_crystal_freq != 0;
395 struct r600_screen *rscreen = (struct r600_screen *)pscreen;
396 enum radeon_family family = rscreen->family;
419 struct r600_screen *rscreen = (struct r600_screen *)pscreen;
496 struct r600_screen *rscreen = (struct r600_screen *)pscreen;
498 if (rscreen == NULL)
501 if (rscreen->fences.bo) {
504 LIST_FOR_EACH_ENTRY_SAFE(entry, tmp, &rscreen->fences.blocks, head) {
509 rscreen->ws->buffer_unmap(rscreen->fences.bo->cs_buf);
510 si_resource_reference(&rscreen->fences.bo, NULL);
512 pipe_mutex_destroy(rscreen->fences.mutex);
514 rscreen->ws->destroy(rscreen->ws);
515 FREE(rscreen);
526 struct r600_screen *rscreen = (struct r600_screen *)pscreen;
527 pipe_mutex_lock(rscreen->fences.mutex);
529 LIST_ADDTAIL(&(*oldf)->head, &rscreen->fences.pool);
530 pipe_mutex_unlock(rscreen->fences.mutex);
539 struct r600_screen *rscreen = (struct r600_screen *)pscreen;
542 return rscreen->fences.data[rfence->index];
549 struct r600_screen *rscreen = (struct r600_screen *)pscreen;
561 while (rscreen->fences.data[rfence->index] == 0) {
564 rscreen->ws->buffer_wait(rfence->sleep_bo->buf, RADEON_USAGE_READWRITE);
570 if (!rscreen->ws->buffer_is_busy(rfence->sleep_bo->buf, RADEON_USAGE_READWRITE))
586 return rscreen->fences.data[rfence->index] != 0;
589 static int evergreen_interpret_tiling(struct r600_screen *rscreen, uint32_t tiling_config)
593 rscreen->tiling_info.num_channels = 1;
596 rscreen->tiling_info.num_channels = 2;
599 rscreen->tiling_info.num_channels = 4;
602 rscreen->tiling_info.num_channels = 8;
610 rscreen->tiling_info.num_banks = 4;
613 rscreen->tiling_info.num_banks = 8;
616 rscreen->tiling_info.num_banks = 16;
624 rscreen->tiling_info.group_bytes = 256;
627 rscreen->tiling_info.group_bytes = 512;
635 static int r600_init_tiling(struct r600_screen *rscreen)
637 uint32_t tiling_config = rscreen->info.r600_tiling_config;
640 rscreen->tiling_info.group_bytes = 512;
645 return evergreen_interpret_tiling(rscreen, tiling_config);
661 struct r600_screen *rscreen = CALLOC_STRUCT(r600_screen);
662 if (rscreen == NULL) {
666 rscreen->ws = ws;
667 ws->query_info(ws, &rscreen->info);
669 rscreen->family = radeon_family_from_device(rscreen->info.pci_id);
670 if (rscreen->family == CHIP_UNKNOWN) {
671 fprintf(stderr, "r600: Unknown chipset 0x%04X\n", rscreen->info.pci_id);
672 FREE(rscreen);
677 if (rscreen->family >= CHIP_TAHITI) {
678 rscreen->chip_class = TAHITI;
680 fprintf(stderr, "r600: Unsupported family %d\n", rscreen->family);
681 FREE(rscreen);
685 if (r600_init_tiling(rscreen)) {
686 FREE(rscreen);
690 rscreen->screen.destroy = r600_destroy_screen;
691 rscreen->screen.get_name = r600_get_name;
692 rscreen->screen.get_vendor = r600_get_vendor;
693 rscreen->screen.get_param = r600_get_param;
694 rscreen->screen.get_shader_param = r600_get_shader_param;
695 rscreen->screen.get_paramf = r600_get_paramf;
696 rscreen->screen.get_video_param = r600_get_video_param;
697 rscreen->screen.is_format_supported = si_is_format_supported;
698 rscreen->screen.is_video_format_supported = vl_video_buffer_is_format_supported;
699 rscreen->screen.context_create = r600_create_context;
700 rscreen->screen.fence_reference = r600_fence_reference;
701 rscreen->screen.fence_signalled = r600_fence_signalled;
702 rscreen->screen.fence_finish = r600_fence_finish;
703 r600_init_screen_resource_functions(&rscreen->screen);
707 rscreen->fences.bo = NULL;
708 rscreen->fences.data = NULL;
709 rscreen->fences.next_index = 0;
710 LIST_INITHEAD(&rscreen->fences.pool);
711 LIST_INITHEAD(&rscreen->fences.blocks);
712 pipe_mutex_init(rscreen->fences.mutex);
714 return &rscreen->screen;