Lines Matching refs:device
39 radv_thread_trace_get_data_offset(struct radv_device *device, unsigned se) in radv_thread_trace_get_data_offset() argument
45 data_offset += device->thread_trace_buffer_size * se; in radv_thread_trace_get_data_offset()
51 radv_thread_trace_get_info_va(struct radv_device *device, unsigned se) in radv_thread_trace_get_info_va() argument
53 uint64_t va = radv_buffer_get_va(device->thread_trace_bo); in radv_thread_trace_get_info_va()
58 radv_thread_trace_get_data_va(struct radv_device *device, unsigned se) in radv_thread_trace_get_data_va() argument
60 uint64_t va = radv_buffer_get_va(device->thread_trace_bo); in radv_thread_trace_get_data_va()
61 return va + radv_thread_trace_get_data_offset(device, se); in radv_thread_trace_get_data_va()
65 radv_emit_thread_trace_start(struct radv_device *device, in radv_emit_thread_trace_start() argument
69 uint32_t shifted_size = device->thread_trace_buffer_size >> SQTT_BUFFER_ALIGN_SHIFT; in radv_emit_thread_trace_start()
70 unsigned max_se = device->physical_device->rad_info.max_se; in radv_emit_thread_trace_start()
72 assert(device->physical_device->rad_info.chip_class >= GFX8); in radv_emit_thread_trace_start()
75 uint64_t data_va = radv_thread_trace_get_data_va(device, se); in radv_emit_thread_trace_start()
84 if (device->physical_device->rad_info.chip_class == GFX10) { in radv_emit_thread_trace_start()
142 if (device->physical_device->rad_info.chip_class < GFX9) { in radv_emit_thread_trace_start()
166 if (device->physical_device->rad_info.chip_class == GFX9) { in radv_emit_thread_trace_start()
183 if (device->physical_device->rad_info.chip_class == GFX9) { in radv_emit_thread_trace_start()
201 device->physical_device->rad_info.chip_class >= GFX7) { in radv_emit_thread_trace_start()
232 radv_copy_thread_trace_info_regs(struct radv_device *device, in radv_copy_thread_trace_info_regs() argument
238 switch (device->physical_device->rad_info.chip_class) { in radv_copy_thread_trace_info_regs()
253 uint64_t info_va = radv_thread_trace_get_info_va(device, se_index); in radv_copy_thread_trace_info_regs()
269 radv_emit_thread_trace_stop(struct radv_device *device, in radv_emit_thread_trace_stop() argument
273 unsigned max_se = device->physical_device->rad_info.max_se; in radv_emit_thread_trace_stop()
275 assert(device->physical_device->rad_info.chip_class >= GFX8); in radv_emit_thread_trace_stop()
279 device->physical_device->rad_info.chip_class >= GFX7) { in radv_emit_thread_trace_stop()
297 if (device->physical_device->rad_info.chip_class == GFX10) { in radv_emit_thread_trace_stop()
334 radv_copy_thread_trace_info_regs(device, cs, se); in radv_emit_thread_trace_stop()
345 radv_emit_thread_trace_userdata(const struct radv_device *device, in radv_emit_thread_trace_userdata() argument
356 if (device->physical_device->rad_info.chip_class >= GFX10) in radv_emit_thread_trace_userdata()
368 radv_emit_spi_config_cntl(struct radv_device *device, in radv_emit_spi_config_cntl() argument
371 if (device->physical_device->rad_info.chip_class >= GFX9) { in radv_emit_spi_config_cntl()
377 if (device->physical_device->rad_info.chip_class == GFX10) in radv_emit_spi_config_cntl()
390 radv_emit_wait_for_idle(struct radv_device *device, in radv_emit_wait_for_idle() argument
394 si_cs_emit_cache_flush(cs, device->physical_device->rad_info.chip_class, in radv_emit_wait_for_idle()
397 device->physical_device->rad_info.chip_class >= GFX7, in radv_emit_wait_for_idle()
408 radv_thread_trace_init_cs(struct radv_device *device) in radv_thread_trace_init_cs() argument
410 struct radeon_winsys *ws = device->ws; in radv_thread_trace_init_cs()
415 device->thread_trace_start_cs[family] = ws->cs_create(ws, family); in radv_thread_trace_init_cs()
416 if (!device->thread_trace_start_cs[family]) in radv_thread_trace_init_cs()
421 radeon_emit(device->thread_trace_start_cs[family], PKT3(PKT3_CONTEXT_CONTROL, 1, 0)); in radv_thread_trace_init_cs()
422 radeon_emit(device->thread_trace_start_cs[family], CC0_UPDATE_LOAD_ENABLES(1)); in radv_thread_trace_init_cs()
423 radeon_emit(device->thread_trace_start_cs[family], CC1_UPDATE_SHADOW_ENABLES(1)); in radv_thread_trace_init_cs()
426 radeon_emit(device->thread_trace_start_cs[family], PKT3(PKT3_NOP, 0, 0)); in radv_thread_trace_init_cs()
427 radeon_emit(device->thread_trace_start_cs[family], 0); in radv_thread_trace_init_cs()
431 radv_cs_add_buffer(ws, device->thread_trace_start_cs[family], in radv_thread_trace_init_cs()
432 device->thread_trace_bo); in radv_thread_trace_init_cs()
435 radv_emit_wait_for_idle(device, in radv_thread_trace_init_cs()
436 device->thread_trace_start_cs[family], in radv_thread_trace_init_cs()
440 radv_emit_spi_config_cntl(device, in radv_thread_trace_init_cs()
441 device->thread_trace_start_cs[family], in radv_thread_trace_init_cs()
444 radv_emit_thread_trace_start(device, in radv_thread_trace_init_cs()
445 device->thread_trace_start_cs[family], in radv_thread_trace_init_cs()
448 result = ws->cs_finalize(device->thread_trace_start_cs[family]); in radv_thread_trace_init_cs()
455 device->thread_trace_stop_cs[family] = ws->cs_create(ws, family); in radv_thread_trace_init_cs()
456 if (!device->thread_trace_stop_cs[family]) in radv_thread_trace_init_cs()
461 radeon_emit(device->thread_trace_stop_cs[family], PKT3(PKT3_CONTEXT_CONTROL, 1, 0)); in radv_thread_trace_init_cs()
462 radeon_emit(device->thread_trace_stop_cs[family], CC0_UPDATE_LOAD_ENABLES(1)); in radv_thread_trace_init_cs()
463 radeon_emit(device->thread_trace_stop_cs[family], CC1_UPDATE_SHADOW_ENABLES(1)); in radv_thread_trace_init_cs()
466 radeon_emit(device->thread_trace_stop_cs[family], PKT3(PKT3_NOP, 0, 0)); in radv_thread_trace_init_cs()
467 radeon_emit(device->thread_trace_stop_cs[family], 0); in radv_thread_trace_init_cs()
471 radv_cs_add_buffer(ws, device->thread_trace_stop_cs[family], in radv_thread_trace_init_cs()
472 device->thread_trace_bo); in radv_thread_trace_init_cs()
475 radv_emit_wait_for_idle(device, in radv_thread_trace_init_cs()
476 device->thread_trace_stop_cs[family], in radv_thread_trace_init_cs()
479 radv_emit_thread_trace_stop(device, in radv_thread_trace_init_cs()
480 device->thread_trace_stop_cs[family], in radv_thread_trace_init_cs()
484 radv_emit_spi_config_cntl(device, in radv_thread_trace_init_cs()
485 device->thread_trace_stop_cs[family], in radv_thread_trace_init_cs()
488 result = ws->cs_finalize(device->thread_trace_stop_cs[family]); in radv_thread_trace_init_cs()
495 radv_thread_trace_init_bo(struct radv_device *device) in radv_thread_trace_init_bo() argument
497 struct radeon_winsys *ws = device->ws; in radv_thread_trace_init_bo()
503 device->thread_trace_buffer_size = align64(device->thread_trace_buffer_size, in radv_thread_trace_init_bo()
509 size += device->thread_trace_buffer_size * 4; in radv_thread_trace_init_bo()
511 device->thread_trace_bo = ws->buffer_create(ws, size, 4096, in radv_thread_trace_init_bo()
517 if (!device->thread_trace_bo) in radv_thread_trace_init_bo()
520 device->thread_trace_ptr = ws->buffer_map(device->thread_trace_bo); in radv_thread_trace_init_bo()
521 if (!device->thread_trace_ptr) in radv_thread_trace_init_bo()
528 radv_thread_trace_init(struct radv_device *device) in radv_thread_trace_init() argument
530 if (!radv_thread_trace_init_bo(device)) in radv_thread_trace_init()
533 radv_thread_trace_init_cs(device); in radv_thread_trace_init()
538 radv_thread_trace_finish(struct radv_device *device) in radv_thread_trace_finish() argument
540 struct radeon_winsys *ws = device->ws; in radv_thread_trace_finish()
542 if (unlikely(device->thread_trace_bo)) in radv_thread_trace_finish()
543 ws->buffer_destroy(device->thread_trace_bo); in radv_thread_trace_finish()
546 if (device->thread_trace_start_cs[i]) in radv_thread_trace_finish()
547 ws->cs_destroy(device->thread_trace_start_cs[i]); in radv_thread_trace_finish()
548 if (device->thread_trace_stop_cs[i]) in radv_thread_trace_finish()
549 ws->cs_destroy(device->thread_trace_stop_cs[i]); in radv_thread_trace_finish()
557 struct radeon_cmdbuf *cs = queue->device->thread_trace_start_cs[family]; in radv_begin_thread_trace()
565 struct radeon_cmdbuf *cs = queue->device->thread_trace_stop_cs[family]; in radv_end_thread_trace()
570 radv_is_thread_trace_complete(struct radv_device *device, in radv_is_thread_trace_complete() argument
573 if (device->physical_device->rad_info.chip_class == GFX10) { in radv_is_thread_trace_complete()
588 radv_get_expected_buffer_size(struct radv_device *device, in radv_get_expected_buffer_size() argument
591 if (device->physical_device->rad_info.chip_class == GFX10) { in radv_get_expected_buffer_size()
592 …uint32_t dropped_cntr_per_se = info->gfx10_dropped_cntr / device->physical_device->rad_info.max_se; in radv_get_expected_buffer_size()
603 struct radv_device *device = queue->device; in radv_get_thread_trace() local
604 unsigned max_se = device->physical_device->rad_info.max_se; in radv_get_thread_trace()
605 void *thread_trace_ptr = device->thread_trace_ptr; in radv_get_thread_trace()
612 uint64_t data_offset = radv_thread_trace_get_data_offset(device, se); in radv_get_thread_trace()
619 if (!radv_is_thread_trace_complete(device, info)) { in radv_get_thread_trace()
621 radv_get_expected_buffer_size(device, info); in radv_get_thread_trace()