5 #include "tdm_backend.h"
11 struct _tdm_backend_module_data {
15 struct _tdm_backend_module_output_data {
19 struct _tdm_backend_module_layer_data {
23 typedef struct _tdm_backend_module_data tdm_backend_module_data;
24 typedef struct _tdm_backend_module_output_data tdm_backend_module_output_data;
25 typedef struct _tdm_backend_module_layer_data tdm_backend_module_layer_data;
27 tdm_backend_module_data backend_module_data;
28 tdm_backend_module_output_data backend_module_output[4];
29 tdm_backend_module_layer_data backend_module_layer;
32 tdm_backend_module_creat_output(tdm_backend_module_data *backend_module_data)
34 return TDM_ERROR_NONE;
38 tdm_backend_module_destroy_output(tdm_backend_module_data *backend_module_data)
44 tdm_backend_module_creat_layer(tdm_backend_module_data *backend_module_data)
46 return TDM_ERROR_NONE;
50 tdm_backend_module_destroy_layer(tdm_backend_module_data *backend_module_data)
55 backend_module_display_get_pp_capability(tdm_backend_data *bdata, tdm_caps_pp *caps)
57 return TDM_ERROR_NONE;
61 backend_module_display_get_capability(tdm_backend_data *bdata, tdm_caps_display *caps)
63 caps->max_layer_count = 1;
64 return TDM_ERROR_NONE;
68 backend_module_display_get_outputs(tdm_backend_data *bdata, int *count, tdm_error *error)
72 outputs = calloc(1, sizeof(tdm_backend_module_output_data*) * (4));
73 outputs[0] = &backend_module_output[0];
74 outputs[1] = &backend_module_output[1];
75 outputs[2] = &backend_module_output[2];
76 outputs[3] = &backend_module_output[3];
77 if (error) *error = TDM_ERROR_NONE;
82 backend_module_display_create_pp(tdm_backend_data *bdata, tdm_error *error)
88 backend_module_display_get_capture_capability(tdm_backend_data *bdata, tdm_caps_capture *caps)
90 return TDM_ERROR_NONE;
94 backend_module_output_create_capture(tdm_output *output, tdm_error *error)
96 return (tdm_capture*)1;
99 backend_module_layer_create_capture(tdm_layer *layer, tdm_error *error)
101 return (tdm_capture*)1;
106 backend_module_output_get_capability(tdm_output *output, tdm_caps_output *caps)
109 tdm_backend_module_output_data *backend_output = (tdm_backend_module_output_data*)output;
110 memcpy(caps, &backend_output->caps, sizeof(tdm_caps_output));
112 return TDM_ERROR_NONE;
116 backend_module_output_get_layers(tdm_output *output, int *count, tdm_error *error)
120 layers = calloc(*count, sizeof(tdm_layer));
121 layers[0] = &backend_module_layer;
122 if (error) *error = TDM_ERROR_NONE;
129 backend_module_output_set_property(tdm_output *output, unsigned int id, tdm_value value)
131 return TDM_ERROR_NONE;
135 backend_module_output_get_property(tdm_output *output, unsigned int id, tdm_value *value)
137 return TDM_ERROR_NONE;
141 backend_module_output_wait_vblank(tdm_output *output, int interval, int sync, void *user_data)
143 return TDM_ERROR_NONE;
147 backend_module_output_set_vblank_handler(tdm_output *output, tdm_output_vblank_handler func)
149 return TDM_ERROR_NONE;
153 backend_module_output_commit(tdm_output *output, int sync, void *user_data)
155 return TDM_ERROR_NONE;
159 backend_module_output_set_commit_handler(tdm_output *output, tdm_output_commit_handler func)
161 return TDM_ERROR_NONE;
165 backend_module_output_set_dpms(tdm_output *output, tdm_output_dpms dpms_value)
167 return TDM_ERROR_NONE;
171 backend_module_output_get_dpms(tdm_output *output, tdm_output_dpms *dpms_value)
173 *dpms_value = TDM_OUTPUT_DPMS_ON;
174 return TDM_ERROR_NONE;
178 backend_module_output_set_mode(tdm_output *output, const tdm_output_mode *mode)
180 return TDM_ERROR_NONE;
184 backend_module_output_get_mode(tdm_output *output, const tdm_output_mode **mode)
186 return TDM_ERROR_NONE;
190 backend_module_layer_get_capability(tdm_layer *layer, tdm_caps_layer *caps)
192 return TDM_ERROR_NONE;
196 backend_module_layer_set_property(tdm_layer *layer, unsigned int id, tdm_value value)
198 return TDM_ERROR_NONE;
202 backend_module_layer_get_property(tdm_layer *layer, unsigned int id, tdm_value *value)
204 return TDM_ERROR_NONE;
208 backend_module_layer_set_info(tdm_layer *layer, tdm_info_layer *info)
210 return TDM_ERROR_NONE;
214 backend_module_layer_get_info(tdm_layer *layer, tdm_info_layer *info)
216 return TDM_ERROR_NONE;
220 backend_module_layer_set_buffer(tdm_layer *layer, tbm_surface_h buffer)
222 return TDM_ERROR_NONE;
226 backend_module_layer_unset_buffer(tdm_layer *layer)
228 return TDM_ERROR_NONE;
233 tdm_backend_module_deinit(tdm_backend_data *bdata)
238 backend_module_pp_destroy(tdm_pp *pp)
242 backend_module_pp_set_info(tdm_pp *pp, tdm_info_pp *info)
244 return TDM_ERROR_NONE;
247 backend_module_pp_attach(tdm_pp *pp, tbm_surface_h src, tbm_surface_h dst)
249 return TDM_ERROR_NONE;
252 backend_module_pp_commit(tdm_pp *pp)
254 return TDM_ERROR_NONE;
257 backend_module_pp_set_done_handler(tdm_pp *pp, tdm_pp_done_handler func, void *user_data)
259 return TDM_ERROR_NONE;
264 backend_module_capture_destroy(tdm_capture *capture)
268 backend_module_capture_set_info(tdm_capture *capture, tdm_info_capture *info)
270 return TDM_ERROR_NONE;
273 backend_module_capture_attach(tdm_capture *capture, tbm_surface_h buffer)
275 return TDM_ERROR_NONE;
278 backend_module_capture_commit(tdm_capture *capture)
280 return TDM_ERROR_NONE;
283 backend_module_capture_set_done_handler(tdm_capture *capture,
284 tdm_capture_done_handler func, void *user_data)
286 return TDM_ERROR_NONE;
290 tdm_backend_module_init(tdm_display *dpy, tdm_error *error)
292 tdm_func_display backend_module_func_display;
293 tdm_func_output backend_module_func_output;
294 tdm_func_layer backend_module_func_layer;
295 tdm_func_capture func_capture;
301 if (error) *error = TDM_ERROR_BAD_REQUEST;
305 backend_module_output[0].caps.status = TDM_OUTPUT_CONN_STATUS_CONNECTED;
306 backend_module_output[0].caps.type = TDM_OUTPUT_TYPE_DSI;
307 backend_module_output[1].caps.status = TDM_OUTPUT_CONN_STATUS_CONNECTED;
308 backend_module_output[1].caps.type = TDM_OUTPUT_TYPE_LVDS;
309 backend_module_output[2].caps.status = TDM_OUTPUT_CONN_STATUS_CONNECTED;
310 backend_module_output[2].caps.type = TDM_OUTPUT_TYPE_HDMIA;
311 backend_module_output[3].caps.status = TDM_OUTPUT_CONN_STATUS_CONNECTED;
312 backend_module_output[3].caps.type = TDM_OUTPUT_TYPE_HDMIB;
314 memset(&backend_module_func_display, 0, sizeof(backend_module_func_display));
315 backend_module_func_display.display_get_pp_capability = backend_module_display_get_pp_capability;
316 backend_module_func_display.display_get_capability = backend_module_display_get_capability;
317 backend_module_func_display.display_get_outputs = backend_module_display_get_outputs;
318 backend_module_func_display.display_get_fd = NULL;
319 backend_module_func_display.display_handle_events = NULL;
321 backend_module_func_display.display_create_pp = backend_module_display_create_pp;
322 backend_module_func_display.display_get_capture_capability = backend_module_display_get_capture_capability;
323 backend_module_func_output.output_create_capture = backend_module_output_create_capture;
324 backend_module_func_layer.layer_create_capture = backend_module_layer_create_capture;
327 memset(&backend_module_func_output, 0, sizeof(backend_module_func_output));
328 backend_module_func_output.output_get_capability = backend_module_output_get_capability;
329 backend_module_func_output.output_get_layers = backend_module_output_get_layers;
330 backend_module_func_output.output_set_property = backend_module_output_set_property;
331 backend_module_func_output.output_get_property = backend_module_output_get_property;
332 backend_module_func_output.output_wait_vblank = backend_module_output_wait_vblank;
333 backend_module_func_output.output_set_vblank_handler = backend_module_output_set_vblank_handler;
334 backend_module_func_output.output_commit = backend_module_output_commit;
335 backend_module_func_output.output_set_commit_handler = backend_module_output_set_commit_handler;
336 backend_module_func_output.output_set_dpms = backend_module_output_set_dpms;
337 backend_module_func_output.output_get_dpms = backend_module_output_get_dpms;
338 backend_module_func_output.output_set_mode = backend_module_output_set_mode;
339 backend_module_func_output.output_get_mode = backend_module_output_get_mode;
341 memset(&backend_module_func_layer, 0, sizeof(backend_module_func_layer));
342 backend_module_func_layer.layer_get_capability = backend_module_layer_get_capability;
343 backend_module_func_layer.layer_set_property = backend_module_layer_set_property;
344 backend_module_func_layer.layer_get_property = backend_module_layer_get_property;
345 backend_module_func_layer.layer_set_info = backend_module_layer_set_info;
346 backend_module_func_layer.layer_get_info = backend_module_layer_get_info;
347 backend_module_func_layer.layer_set_buffer = backend_module_layer_set_buffer;
348 backend_module_func_layer.layer_unset_buffer = backend_module_layer_unset_buffer;
350 memset(&func_capture, 0, sizeof(tdm_func_capture));
351 func_capture.capture_attach = backend_module_capture_attach;
352 func_capture.capture_commit = backend_module_capture_commit;
353 func_capture.capture_destroy = backend_module_capture_destroy;
354 func_capture.capture_set_done_handler = backend_module_capture_set_done_handler;
355 func_capture.capture_set_info = backend_module_capture_set_info;
358 memset(&func_pp, 0, sizeof(tdm_func_pp));
359 func_pp.pp_attach = backend_module_pp_attach;
360 func_pp.pp_commit = backend_module_pp_commit;
361 func_pp.pp_destroy = backend_module_pp_destroy;
362 func_pp.pp_set_done_handler = backend_module_pp_set_done_handler;
363 func_pp.pp_set_info = backend_module_pp_set_info;
365 ret = tdm_backend_register_func_display(dpy, &backend_module_func_display);
366 ret = tdm_backend_register_func_output(dpy, &backend_module_func_output);
367 ret = tdm_backend_register_func_layer(dpy, &backend_module_func_layer);
368 ret = tdm_backend_register_func_pp(dpy, &func_pp);
369 ret = tdm_backend_register_func_capture(dpy, &func_capture);
372 *error = TDM_ERROR_NONE;
374 return (tdm_backend_data*) &backend_module_data;
377 tdm_backend_module tdm_backend_module_stub = {
378 "backend_module_stub",
380 TDM_BACKEND_ABI_VERSION,
381 tdm_backend_module_init,
382 tdm_backend_module_deinit