{
twe_wl_disp_source *disp_source = (twe_wl_disp_source *)data;
- if (!disp_source->is_vulkan_dpy
- && !strcmp(interface, "tizen_surface_shm")) {
+ if (!strcmp(interface, "tizen_surface_shm")) {
disp_source->tss = wl_registry_bind(wl_registry,
name,
&tizen_surface_shm_interface,
if (backend == TPL_BACKEND_WAYLAND_VULKAN_WSI ||
backend == TPL_BACKEND_WAYLAND_VULKAN_WSI_THREAD) {
source->is_vulkan_dpy = TPL_TRUE;
- source->surface_capabilities.min_buffer = 2;
- source->surface_capabilities.max_buffer = VK_CLIENT_QUEUE_SIZE;
- source->surface_capabilities.present_modes =
- TPL_DISPLAY_PRESENT_MODE_MAILBOX;
-
- _twe_display_vk_init(source);
} else { /* wayland_egl backend */
/* These are not used. It just be initialized. */
source->is_vulkan_dpy = TPL_FALSE;
- source->surface_capabilities.min_buffer = 2;
- source->surface_capabilities.max_buffer = CLIENT_QUEUE_SIZE;
- source->surface_capabilities.present_modes =
- TPL_DISPLAY_PRESENT_MODE_FIFO;
-
- _twe_display_shm_init(source);
}
+ source->surface_capabilities.min_buffer = 2;
+ source->surface_capabilities.max_buffer = VK_CLIENT_QUEUE_SIZE;
+ source->surface_capabilities.present_modes =
+ TPL_DISPLAY_PRESENT_MODE_FIFO;
+ _twe_display_shm_init(source);
+
source->disp_del_source = _twe_del_source_init(ctx, source);
source->disp_del_source->destroy_target_source_func
= _twe_thread_wl_disp_source_destroy;
if (source->is_vulkan_dpy)
_twe_display_vk_fini(source);
- else
- _twe_display_shm_fini(source);
+
+ _twe_display_shm_fini(source);
_twe_display_fini_wl_tbm_client(source->wl_tbm_client);
source->wl_tbm_client = NULL;
TPL_LOG_T(BACKEND, "[FLUSH_CB] surf_source(%p)", surf_source);
+ if (surf_source->disp_source->is_vulkan_dpy) {
+ TPL_WARN("Vulkan do not support buffer flush");
+ return;
+ }
+
tsq_err = tbm_surface_queue_flush(surf_source->tbm_queue);
if (tsq_err != TBM_SURFACE_QUEUE_ERROR_NONE) {
TPL_ERR("Failed to free flush tbm_queue(%p)", surf_source->tbm_queue);
TPL_LOG_T(BACKEND, "[FREE_FLUSH_CB] surf_source(%p)", surf_source);
+ if (surf_source->disp_source->is_vulkan_dpy) {
+ TPL_WARN("Vulkan do not support buffer flush");
+ return;
+ }
+
tsq_err = tbm_surface_queue_free_flush(surf_source->tbm_queue);
if (tsq_err != TBM_SURFACE_QUEUE_ERROR_NONE) {
TPL_ERR("Failed to free flush tbm_queue(%p)", surf_source->tbm_queue);
surf_source->vblank_waiting_buffers = NULL;
}
- if (!disp_source->is_vulkan_dpy) {
- _twe_surface_buffer_flusher_fini(surf_source);
- }
+ _twe_surface_buffer_flusher_fini(surf_source);
if (surf_source->tbm_queue) {
tbm_surface_queue_destroy(surf_source->tbm_queue);
source->surf = wl_egl_window->surface;
source->latest_transform = wl_egl_window->transform;
- _twe_surface_buffer_flusher_init(source);
} else {
struct wl_surface *wl_surf = (struct wl_surface *)native_handle;
source->surf = wl_surf;
}
+ _twe_surface_buffer_flusher_init(source);
+
source->surf_del_source = _twe_del_source_init(ctx, source);
if (source->surf_del_source) {
source->surf_del_source->destroy_target_source_func