Lines Matching refs:device
79 collect_enabled_features(struct vk_device *device,
84 device->enabled_features.robustBufferAccess = true;
92 device->enabled_features.robustBufferAccess = true;
104 vk_device_init(struct vk_device *device,
110 memset(device, 0, sizeof(*device));
111 vk_object_base_init(device, &device->base, VK_OBJECT_TYPE_DEVICE);
113 device->alloc = *alloc;
115 device->alloc = physical_device->instance->alloc;
117 device->physical = physical_device;
119 device->dispatch_table = *dispatch_table;
123 &device->dispatch_table, &vk_common_device_entrypoints, false);
150 device->enabled_extensions.extensions[idx] = true;
159 collect_enabled_features(device, pCreateInfo);
161 p_atomic_set(&device->private_data_next_index, 0);
163 list_inithead(&device->queues);
165 device->drm_fd = -1;
167 device->timeline_mode = get_timeline_mode(physical_device);
169 switch (device->timeline_mode) {
172 device->submit_mode = VK_QUEUE_SUBMIT_MODE_IMMEDIATE;
176 device->submit_mode = VK_QUEUE_SUBMIT_MODE_DEFERRED;
181 device->submit_mode = VK_QUEUE_SUBMIT_MODE_THREADED;
183 device->submit_mode = VK_QUEUE_SUBMIT_MODE_THREADED_ON_DEMAND;
192 mtx_init(&device->swapchain_private_mtx, mtx_plain);
193 device->swapchain_private = NULL;
200 vk_device_finish(struct vk_device *device)
203 assert(list_is_empty(&device->queues));
206 if (device->swapchain_private) {
207 hash_table_foreach(device->swapchain_private, entry)
209 ralloc_free(device->swapchain_private);
213 vk_object_base_finish(&device->base);
217 vk_device_enable_threaded_submit(struct vk_device *device)
220 assert(list_is_empty(&device->queues));
227 device->physical->supported_sync_types; *t; t++) {
237 if (device->submit_mode != VK_QUEUE_SUBMIT_MODE_THREADED)
238 device->submit_mode = VK_QUEUE_SUBMIT_MODE_THREADED_ON_DEMAND;
242 vk_device_flush(struct vk_device *device)
244 if (device->submit_mode != VK_QUEUE_SUBMIT_MODE_DEFERRED)
251 vk_foreach_queue(queue, device) {
266 timeline_mode_str(struct vk_device *device)
268 switch (device->timeline_mode) {
280 _vk_device_report_lost(struct vk_device *device)
282 assert(p_atomic_read(&device->_lost.lost) > 0);
284 device->_lost.reported = true;
286 vk_foreach_queue(queue, device) {
294 vk_logd(VK_LOG_OBJS(device), "Timeline mode is %s.",
295 timeline_mode_str(device));
299 _vk_device_set_lost(struct vk_device *device,
303 /* This flushes out any per-queue device lost messages */
304 if (vk_device_is_lost(device))
307 p_atomic_inc(&device->_lost.lost);
308 device->_lost.reported = true;
312 __vk_errorv(device, VK_ERROR_DEVICE_LOST, file, line, msg, ap);
315 vk_logd(VK_LOG_OBJS(device), "Timeline mode is %s.",
316 timeline_mode_str(device));
325 vk_device_get_proc_addr(const struct vk_device *device,
328 if (device == NULL || name == NULL)
331 struct vk_instance *instance = device->physical->instance;
332 return vk_device_dispatch_table_get_if_supported(&device->dispatch_table,
336 &device->enabled_extensions);
343 VK_FROM_HANDLE(vk_device, device, _device);
344 return vk_device_get_proc_addr(device, pName);
353 VK_FROM_HANDLE(vk_device, device, _device);
370 device->dispatch_table.GetDeviceQueue2(_device, &info, pQueue);
378 VK_FROM_HANDLE(vk_device, device, _device);
381 vk_foreach_queue(iter, device) {
392 * value from this structure as that used at device creation time in a
394 * at device creation time then pQueue will return VK_NULL_HANDLE."
407 VK_FROM_HANDLE(vk_device, device, _device);
416 device->dispatch_table.GetBufferMemoryRequirements2(_device, &info, &reqs);
427 VK_FROM_HANDLE(vk_device, device, _device);
436 return device->dispatch_table.BindBufferMemory2(_device, 1, &bind);
444 VK_FROM_HANDLE(vk_device, device, _device);
453 device->dispatch_table.GetImageMemoryRequirements2(_device, &info, &reqs);
464 VK_FROM_HANDLE(vk_device, device, _device);
473 return device->dispatch_table.BindImageMemory2(_device, 1, &bind);
482 VK_FROM_HANDLE(vk_device, device, _device);
490 device->dispatch_table.GetImageSparseMemoryRequirements2(_device,
504 device->dispatch_table.GetImageSparseMemoryRequirements2(_device,
518 VK_FROM_HANDLE(vk_device, device, _device);
519 const struct vk_device_dispatch_table *disp = &device->dispatch_table;
521 vk_foreach_queue(queue, device) {