Lines Matching defs:wsi

84    struct wsi_display           *wsi;
146 struct wsi_display *wsi;
155 struct wsi_display *wsi;
174 wsi_display_mode_matches_drm(wsi_display_mode *wsi,
177 return wsi->clock == drm->clock &&
178 wsi->hdisplay == drm->hdisplay &&
179 wsi->hsync_start == drm->hsync_start &&
180 wsi->hsync_end == drm->hsync_end &&
181 wsi->htotal == drm->htotal &&
182 wsi->hskew == drm->hskew &&
183 wsi->vdisplay == drm->vdisplay &&
184 wsi->vsync_start == drm->vsync_start &&
185 wsi->vsync_end == drm->vsync_end &&
186 wsi->vtotal == drm->vtotal &&
187 MAX2(wsi->vscan, 1) == MAX2(drm->vscan, 1) &&
188 wsi->flags == drm->flags;
192 wsi_display_mode_refresh(struct wsi_display_mode *wsi)
194 return (double) wsi->clock * 1000.0 / ((double) wsi->htotal *
195 (double) wsi->vtotal *
196 (double) MAX2(wsi->vscan, 1));
236 struct wsi_display *wsi =
237 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
246 display_mode = vk_zalloc(wsi->alloc, sizeof (struct wsi_display_mode),
279 struct wsi_display *wsi =
280 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
282 wsi_for_each_connector(connector, wsi) {
291 wsi_display_alloc_connector(struct wsi_display *wsi,
295 vk_zalloc(wsi->alloc, sizeof (struct wsi_display_connector),
299 connector->wsi = wsi;
312 struct wsi_display *wsi =
313 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
328 connector = wsi_display_alloc_connector(wsi, connector_id);
333 list_addtail(&connector->list, &wsi->connectors);
444 struct wsi_display *wsi =
445 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
460 vk_zalloc(wsi->alloc, sizeof(*props2) * *pPropertyCount, 8,
477 vk_free(wsi->alloc, props2);
488 struct wsi_display *wsi =
489 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
491 if (wsi->fd < 0)
494 drmModeResPtr mode_res = drmModeGetResources(wsi->fd);
502 wsi_display_get_connector(wsi_device, wsi->fd,
521 struct wsi_display *wsi =
522 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
532 wsi_for_each_connector(connector, wsi) {
577 struct wsi_display *wsi =
578 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
587 wsi_for_each_connector(connector, wsi) {
611 struct wsi_display *wsi =
612 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
622 wsi_for_each_connector(connector, wsi) {
647 struct wsi_display *wsi =
648 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
654 wsi_for_each_connector(connector, wsi) {
742 wsi_display_mode_matches_vk(wsi_display_mode *wsi,
745 return (vk->visibleRegion.width == wsi->hdisplay &&
746 vk->visibleRegion.height == wsi->vdisplay &&
747 fabs(wsi_display_mode_refresh(wsi) * 1000.0 - vk->refreshRate) < 10);
882 struct wsi_display *wsi =
883 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
885 *pSupported = wsi->fd != -1;
1056 if (wsi_device_matches_drm_fd(wsi_device, mode->connector->wsi->fd)) {
1069 wsi_display_destroy_buffer(struct wsi_display *wsi,
1072 (void) drmIoctl(wsi->fd, DRM_IOCTL_GEM_CLOSE,
1085 struct wsi_display *wsi = chain->wsi;
1107 int ret = drmPrimeFDToHandle(wsi->fd, image->base.dma_buf_fd,
1117 int ret = drmModeAddFB2(wsi->fd,
1135 wsi_display_destroy_buffer(wsi, image->buffer[i]);
1150 struct wsi_display *wsi = chain->wsi;
1152 drmModeRmFB(wsi->fd, image->fb_id);
1154 wsi_display_destroy_buffer(wsi, image->buffer[i]);
1265 struct wsi_display *wsi = data;
1267 .fd = wsi->fd,
1275 pthread_mutex_lock(&wsi->wait_mutex);
1276 (void) drmHandleEvent(wsi->fd, &event_context);
1277 pthread_cond_broadcast(&wsi->wait_cond);
1278 pthread_mutex_unlock(&wsi->wait_mutex);
1285 wsi_display_start_wait_thread(struct wsi_display *wsi)
1287 if (!wsi->wait_thread) {
1288 int ret = pthread_create(&wsi->wait_thread, NULL,
1289 wsi_display_wait_thread, wsi);
1297 wsi_display_stop_wait_thread(struct wsi_display *wsi)
1299 pthread_mutex_lock(&wsi->wait_mutex);
1300 if (wsi->wait_thread) {
1301 pthread_cancel(wsi->wait_thread);
1302 pthread_join(wsi->wait_thread, NULL);
1303 wsi->wait_thread = 0;
1305 pthread_mutex_unlock(&wsi->wait_mutex);
1328 wsi_display_wait_for_event(struct wsi_display *wsi,
1331 int ret = wsi_display_start_wait_thread(wsi);
1336 return cond_timedwait_ns(&wsi->wait_cond, &wsi->wait_mutex, timeout_ns);
1343 wsi_device_wait_for_event(struct wsi_display *wsi,
1346 return cond_timedwait_ns(&wsi->hotplug_cond, &wsi->wait_mutex, timeout_ns);
1356 struct wsi_display *wsi = chain->wsi;
1368 pthread_mutex_lock(&wsi->wait_mutex);
1386 ret = wsi_display_wait_for_event(wsi, timeout);
1394 pthread_mutex_unlock(&wsi->wait_mutex);
1406 wsi_display_crtc_solo(struct wsi_display *wsi,
1417 drmModeGetConnector(wsi->fd, mode_res->connectors[c]);
1433 drmModeGetEncoder(wsi->fd, mode_res->encoders[e]);
1455 struct wsi_display *wsi = connector->wsi;
1460 drmModeGetEncoder(wsi->fd, drm_connector->encoder_id);
1466 if (wsi_display_crtc_solo(wsi, mode_res, drm_connector, crtc_id))
1473 drmModeCrtcPtr crtc = drmModeGetCrtc(wsi->fd, mode_res->crtcs[c]);
1485 struct wsi_display *wsi = connector->wsi;
1492 drmModeResPtr mode_res = drmModeGetResources(wsi->fd);
1502 drmModeGetConnectorCurrent(wsi->fd, connector->id);
1559 pthread_mutex_lock(&fence->wsi->wait_mutex);
1579 ret = wsi_device_wait_for_event(fence->wsi, timeout);
1581 ret = wsi_display_wait_for_event(fence->wsi, timeout);
1590 pthread_mutex_unlock(&fence->wsi->wait_mutex);
1602 vk_free(fence->wsi->alloc, fence);
1608 (void) drmSyncobjSignal(fence->wsi->syncobj_fd, &fence->syncobj, 1);
1609 (void) drmSyncobjDestroy(fence->wsi->syncobj_fd, fence->syncobj);
1621 mtx_lock(&fence->wsi->wait_mutex);
1623 mtx_unlock(&fence->wsi->wait_mutex);
1633 wsi_display_fence_alloc(struct wsi_display *wsi, int sync_fd)
1636 vk_zalloc(wsi->alloc, sizeof (*fence),
1643 int ret = drmSyncobjFDToHandle(wsi->syncobj_fd, sync_fd, &fence->syncobj);
1646 vk_free(wsi->alloc, fence);
1651 fence->wsi = wsi;
1729 struct wsi_display *wsi =
1730 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
1734 if (wsi->fd < 0)
1749 int ret = drmCrtcQueueSequence(wsi->fd, connector->crtc_id,
1777 pthread_mutex_lock(&wsi->wait_mutex);
1778 ret = wsi_display_wait_for_event(wsi, wsi_rel_to_abs_time(100000000ull));
1779 pthread_mutex_unlock(&wsi->wait_mutex);
1797 struct wsi_display *wsi = chain->wsi;
1803 if (wsi->fd < 0)
1838 ret = drmModePageFlip(wsi->fd, connector->crtc_id, image->fb_id,
1858 ret = drmModeSetCrtc(wsi->fd, connector->crtc_id,
1867 ret = drmModeSetCursor(wsi->fd, connector->crtc_id, 0, 0, 0 );
1903 struct wsi_display *wsi = chain->wsi;
1914 pthread_mutex_lock(&wsi->wait_mutex);
1923 pthread_mutex_unlock(&wsi->wait_mutex);
1940 struct wsi_display *wsi =
1941 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
1968 chain->wsi = wsi;
2058 struct wsi_display *wsi =
2059 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2104 mtx_lock(&wsi->wait_mutex);
2105 pthread_cond_broadcast(&wsi->hotplug_cond);
2109 drmSyncobjSignal(wsi->syncobj_fd, &fence->syncobj, 1);
2112 mtx_unlock(&wsi->wait_mutex);
2140 struct wsi_display *wsi = vk_zalloc(alloc, sizeof(*wsi), 8,
2144 if (!wsi) {
2149 wsi->fd = display_fd;
2150 if (wsi->fd != -1 && !local_drmIsMaster(wsi->fd))
2151 wsi->fd = -1;
2153 wsi->syncobj_fd = wsi->fd;
2155 wsi->alloc = alloc;
2157 list_inithead(&wsi->connectors);
2159 int ret = pthread_mutex_init(&wsi->wait_mutex, NULL);
2165 if (!wsi_init_pthread_cond_monotonic(&wsi->wait_cond)) {
2170 if (!wsi_init_pthread_cond_monotonic(&wsi->hotplug_cond)) {
2175 wsi->base.get_support = wsi_display_surface_get_support;
2176 wsi->base.get_capabilities2 = wsi_display_surface_get_capabilities2;
2177 wsi->base.get_formats = wsi_display_surface_get_formats;
2178 wsi->base.get_formats2 = wsi_display_surface_get_formats2;
2179 wsi->base.get_present_modes = wsi_display_surface_get_present_modes;
2180 wsi->base.get_present_rectangles = wsi_display_surface_get_present_rectangles;
2181 wsi->base.create_swapchain = wsi_display_surface_create_swapchain;
2183 wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY] = &wsi->base;
2188 pthread_cond_destroy(&wsi->wait_cond);
2190 pthread_mutex_destroy(&wsi->wait_mutex);
2192 vk_free(alloc, wsi);
2201 struct wsi_display *wsi =
2202 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2204 if (wsi) {
2205 wsi_for_each_connector(connector, wsi) {
2207 vk_free(wsi->alloc, mode);
2209 vk_free(wsi->alloc, connector);
2212 wsi_display_stop_wait_thread(wsi);
2214 if (wsi->hotplug_thread) {
2215 pthread_cancel(wsi->hotplug_thread);
2216 pthread_join(wsi->hotplug_thread, NULL);
2219 pthread_mutex_destroy(&wsi->wait_mutex);
2220 pthread_cond_destroy(&wsi->wait_cond);
2221 pthread_cond_destroy(&wsi->hotplug_cond);
2223 vk_free(alloc, wsi);
2236 struct wsi_display *wsi =
2237 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2239 if (wsi->fd >= 0) {
2240 wsi_display_stop_wait_thread(wsi);
2242 close(wsi->fd);
2243 wsi->fd = -1;
2261 struct wsi_display *wsi =
2262 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2264 wsi_for_each_connector(connector, wsi) {
2439 wsi_display_mode_matches_x(struct wsi_display_mode *wsi,
2442 return wsi->clock == (xcb->dot_clock + 500) / 1000 &&
2443 wsi->hdisplay == xcb->width &&
2444 wsi->hsync_start == xcb->hsync_start &&
2445 wsi->hsync_end == xcb->hsync_end &&
2446 wsi->htotal == xcb->htotal &&
2447 wsi->hskew == xcb->hskew &&
2448 wsi->vdisplay == xcb->height &&
2449 wsi->vsync_start == xcb->vsync_start &&
2450 wsi->vsync_end == xcb->vsync_end &&
2451 wsi->vtotal == xcb->vtotal &&
2452 wsi->vscan <= 1 &&
2453 wsi->flags == xcb->mode_flags;
2474 struct wsi_display *wsi =
2475 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2484 display_mode = vk_zalloc(wsi->alloc, sizeof (struct wsi_display_mode),
2514 struct wsi_display *wsi =
2515 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2545 connector = wsi_display_alloc_connector(wsi, connector_id);
2549 list_addtail(&connector->list, &wsi->connectors);
2658 struct wsi_display *wsi =
2659 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2666 if (wsi->fd >= 0)
2709 wsi->fd = fd;
2745 struct wsi_display *wsi =
2746 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2751 if (wsi->fd < 0)
2765 drmModeConnectorSetProperty(wsi->fd,
2781 struct wsi_display *wsi =
2782 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2787 mtx_lock(&wsi->wait_mutex);
2788 if (!wsi->hotplug_thread) {
2789 if (pthread_create(&wsi->hotplug_thread, NULL, udev_event_listener_thread,
2791 mtx_unlock(&wsi->wait_mutex);
2795 mtx_unlock(&wsi->wait_mutex);
2802 fence = wsi_display_fence_alloc(wsi, sync_fd);
2809 mtx_lock(&wsi->wait_mutex);
2811 mtx_unlock(&wsi->wait_mutex);
2863 struct wsi_display *wsi =
2864 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2871 fence = wsi_display_fence_alloc(wsi, sync_fd);
2889 drmSyncobjDestroy(wsi->syncobj_fd, fence->syncobj);
2890 vk_free2(wsi->alloc, allocator, fence);
2934 struct wsi_display *wsi =
2935 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2936 wsi->syncobj_fd = fd;
2947 struct wsi_display *wsi =
2948 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2954 if (wsi->fd < 0)
2962 int ret = drmCrtcGetSequence(wsi->fd, connector->crtc_id,
2981 struct wsi_display *wsi =
2982 (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];
2985 if (wsi->fd >= 0 || !local_drmIsMaster(drmFd))
2999 wsi->fd = drmFd;