typedef struct _tpl_tbm_display tpl_tbm_display_t;
typedef struct _tpl_tbm_surface tpl_tbm_surface_t;
+#define MIN_BUFFER 2
+#define MAX_BUFFER 4
+
struct _tpl_tbm_display {
int need_dpy_deinit;
int dummy;
+
+ /* for vulkan wsi */
+ int min_buffer;
+ int max_buffer;
+ int supported_present_modes;
};
struct _tpl_tbm_surface {
display->backend.data = tbm_display;
display->bufmgr_fd = -1;
+ tbm_display->min_buffer = MIN_BUFFER;
+ tbm_display->max_buffer = MAX_BUFFER;
+
+ tbm_display->supported_present_modes = TPL_DISPLAY_PRESENT_MODE_FIFO; /* only FIFO mode */
+
TPL_LOG_B("TBM", "[INIT] tpl_display(%p) tpl_tbm_display_t(%p) tbm_bufmgr(%p)",
display, tbm_display, display->native_handle);
return (tbm_surface_h)pixmap;
}
+static tpl_result_t
+__tpl_tbm_display_query_supported_buffer_count(tpl_display_t *display,
+ tpl_handle_t window,
+ int *min, int *max)
+{
+ TPL_ASSERT(display);
+ TPL_ASSERT(window);
+
+ tpl_tbm_display_t *tbm_display = (tpl_tbm_display_t *)display->backend.data;
+ TPL_CHECK_ON_NULL_RETURN_VAL(tbm_display, TPL_ERROR_INVALID_PARAMETER);
+
+ tbm_surface_queue_h tbm_queue = (tbm_surface_queue_h)window;
+ int queue_size = tbm_surface_queue_get_size(tbm_queue);
+
+ if (min) *min = MIN_BUFFER;
+ if (max) *max = (queue_size > MAX_BUFFER ? queue_size : MAX_BUFFER);
+}
+
+static tpl_result_t
+__tpl_tbm_display_query_supported_present_modes(tpl_display_t *display,
+ tpl_handle_t window, int *present_modes)
+{
+ TPL_ASSERT(display);
+ TPL_ASSERT(window);
+
+ tpl_tbm_display_t *tbm_display = (tpl_tbm_display_t *)display->backend.data;
+ TPL_CHECK_ON_NULL_RETURN_VAL(tbm_display, TPL_ERROR_INVALID_PARAMETER);
+
+ if (present_modes)
+ *present_modes = tbm_display->supported_present_modes;
+
+ return TPL_ERROR_NONE;
+}
+
static void
__cb_tbm_queue_reset_callback(tbm_surface_queue_h tbm_queue,
void *data)
backend->get_pixmap_info = __tpl_tbm_display_get_pixmap_info;
backend->get_buffer_from_native_pixmap =
__tpl_tbm_display_get_buffer_from_native_pixmap;
+ backend->query_window_supported_buffer_count =
+ __tpl_tbm_display_query_supported_buffer_count;
+ backend->query_window_supported_present_modes =
+ __tpl_tbm_display_query_supported_present_modes;
}
void