Lines Matching refs:screen

37 evict_aged_allocations(struct d3d12_screen *screen, uint64_t completed_fence, int64_t time, int64_t grace_period)
42 list_for_each_entry_safe(struct d3d12_bo, bo, &screen->residency_list, residency_list_entry) {
60 screen->dev->Evict(num_pending_evictions, to_evict);
66 screen->dev->Evict(num_pending_evictions, to_evict);
70 evict_to_fence_or_budget(struct d3d12_screen *screen, uint64_t target_fence, uint64_t current_usage, uint64_t target_budget)
72 screen->fence->SetEventOnCompletion(target_fence, nullptr);
77 list_for_each_entry_safe(struct d3d12_bo, bo, &screen->residency_list, residency_list_entry) {
95 screen->dev->Evict(num_pending_evictions, to_evict);
101 screen->dev->Evict(num_pending_evictions, to_evict);
132 d3d12_process_batch_residency(struct d3d12_screen *screen, struct d3d12_batch *batch)
135 screen->get_memory_info(screen, &mem_info);
137 uint64_t completed_fence_value = screen->fence->GetCompletedValue();
138 uint64_t pending_fence_value = screen->fence_value + 1;
157 list_addtail(&base_bo->residency_list_entry, &screen->residency_list);
161 list_addtail(&base_bo->residency_list_entry, &screen->residency_list);
169 evict_aged_allocations(screen, completed_fence_value, current_time, grace_period);
177 uint64_t residency_fence_value_snapshot = screen->residency_fence_value;
185 screen->get_memory_info(screen, &mem_info);
189 assert(!list_is_empty(&screen->residency_list));
191 list_first_entry(&screen->residency_list, struct d3d12_bo, residency_list_entry);
210 hr = screen->dev->EnqueueMakeResident(D3D12_RESIDENCY_FLAG_NONE, batch_count, to_make_resident,
211 screen->residency_fence, screen->residency_fence_value + 1);
213 ++screen->residency_fence_value;
232 evict_to_fence_or_budget(screen, oldest_resident_bo->last_used_fence, mem_info.usage + size_to_make_resident, mem_info.budget);
242 if (residency_fence_value_snapshot != screen->residency_fence_value)
243 screen->cmdqueue->Wait(screen->residency_fence, screen->residency_fence_value);
247 d3d12_init_residency(struct d3d12_screen *screen)
249 list_inithead(&screen->residency_list);
250 if (FAILED(screen->dev->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&screen->residency_fence))))
257 d3d12_deinit_residency(struct d3d12_screen *screen)
259 if (screen->residency_fence) {
260 screen->residency_fence->Release();
261 screen->residency_fence = nullptr;
266 d3d12_promote_to_permanent_residency(struct d3d12_screen *screen, struct d3d12_resource* resource)
268 mtx_lock(&screen->submit_mutex);
281 list_addtail(&base_bo->residency_list_entry, &screen->residency_list);
283 HRESULT hr = screen->dev->MakeResident(1, &pageable);
287 mtx_unlock(&screen->submit_mutex);