blob: c4634b165b5b7d6538b1b368028022d148f1ec9d [file] [log] [blame]
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -07001#include "include/dvr/dvr_api.h"
2
3#include <errno.h>
4
5// Headers from libdvr
6#include <dvr/display_manager_client.h>
7#include <dvr/dvr_buffer.h>
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -07008#include <dvr/dvr_buffer_queue.h>
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -07009#include <dvr/dvr_surface.h>
10#include <dvr/vsync_client_api.h>
11
12// Headers not yet moved into libdvr.
13// TODO(jwcai) Move these once their callers are moved into Google3.
Daniel Nicoara37cdc8d2017-03-27 16:56:05 -040014#include <dvr/dvr_hardware_composer_client.h>
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070015#include <dvr/pose_client.h>
16#include <dvr/virtual_touchpad_client.h>
17
18extern "C" {
19
20DVR_EXPORT int dvrGetApi(void* api, size_t struct_size, int version) {
21 if (version == 1) {
22 if (struct_size != sizeof(DvrApi_v1)) {
23 return -EINVAL;
24 }
25 DvrApi_v1* dvr_api = static_cast<DvrApi_v1*>(api);
26
27 // display_manager_client.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070028 dvr_api->display_manager_client_create = dvrDisplayManagerClientCreate;
29 dvr_api->display_manager_client_destroy = dvrDisplayManagerClientDestroy;
30 dvr_api->display_manager_client_get_surface_list =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070031 dvrDisplayManagerClientGetSurfaceList;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070032 dvr_api->display_manager_client_surface_list_destroy =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070033 dvrDisplayManagerClientSurfaceListDestroy;
Hendrik Wagenaareaa55222017-04-06 10:56:23 -070034 dvr_api->display_manager_setup_named_buffer =
35 dvrDisplayManagerSetupNamedBuffer;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070036 dvr_api->display_manager_client_surface_list_get_size =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070037 dvrDisplayManagerClientSurfaceListGetSize;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070038 dvr_api->display_manager_client_surface_list_get_surface_id =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070039 dvrDisplayManagerClientSurfaceListGetSurfaceId;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070040 dvr_api->display_manager_client_get_surface_buffer_list =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070041 dvrDisplayManagerClientGetSurfaceBuffers;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070042 dvr_api->display_manager_client_surface_buffer_list_destroy =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070043 dvrDisplayManagerClientSurfaceBuffersDestroy;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070044 dvr_api->display_manager_client_surface_buffer_list_get_size =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070045 dvrDisplayManagerClientSurfaceBuffersGetSize;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070046 dvr_api->display_manager_client_surface_buffer_list_get_fd =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070047 dvrDisplayManagerClientSurfaceBuffersGetFd;
48
49 // dvr_buffer.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070050 dvr_api->write_buffer_destroy = dvrWriteBufferDestroy;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070051 dvr_api->write_buffer_get_ahardwarebuffer =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070052 dvrWriteBufferGetAHardwareBuffer;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070053 dvr_api->write_buffer_post = dvrWriteBufferPost;
54 dvr_api->write_buffer_gain = dvrWriteBufferGain;
55 dvr_api->write_buffer_gain_async = dvrWriteBufferGainAsync;
John Bates28b58bf2017-04-18 10:45:23 -070056 dvr_api->write_buffer_get_native_handle = dvrWriteBufferGetNativeHandle;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070057
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070058 dvr_api->read_buffer_destroy = dvrReadBufferDestroy;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070059 dvr_api->read_buffer_get_ahardwarebuffer = dvrReadBufferGetAHardwareBuffer;
60 dvr_api->read_buffer_acquire = dvrReadBufferAcquire;
61 dvr_api->read_buffer_release = dvrReadBufferRelease;
62 dvr_api->read_buffer_release_async = dvrReadBufferReleaseAsync;
John Bates28b58bf2017-04-18 10:45:23 -070063 dvr_api->read_buffer_get_native_handle = dvrReadBufferGetNativeHandle;
64
Hendrik Wagenaareaa55222017-04-06 10:56:23 -070065 dvr_api->buffer_destroy = dvrBufferDestroy;
66 dvr_api->buffer_get_ahardwarebuffer = dvrBufferGetAHardwareBuffer;
John Bates28b58bf2017-04-18 10:45:23 -070067 dvr_api->buffer_get_native_handle = dvrBufferGetNativeHandle;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070068
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -070069 // dvr_buffer_queue.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070070 dvr_api->write_buffer_queue_destroy = dvrWriteBufferQueueDestroy;
71 dvr_api->write_buffer_queue_get_capacity = dvrWriteBufferQueueGetCapacity;
72 dvr_api->write_buffer_queue_get_external_surface =
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -070073 dvrWriteBufferQueueGetExternalSurface;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070074 dvr_api->write_buffer_queue_create_read_queue =
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -070075 dvrWriteBufferQueueCreateReadQueue;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070076 dvr_api->write_buffer_queue_dequeue = dvrWriteBufferQueueDequeue;
77 dvr_api->read_buffer_queue_destroy = dvrReadBufferQueueDestroy;
78 dvr_api->read_buffer_queue_get_capacity = dvrReadBufferQueueGetCapacity;
79 dvr_api->read_buffer_queue_create_read_queue =
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -070080 dvrReadBufferQueueCreateReadQueue;
81 dvr_api->read_buffer_queue_dequeue = dvrReadBufferQueueDequeue;
82
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070083 // dvr_surface.h
Hendrik Wagenaareaa55222017-04-06 10:56:23 -070084 dvr_api->get_named_buffer = dvrGetNamedBuffer;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070085 dvr_api->surface_create = dvrSurfaceCreate;
86 dvr_api->surface_get_write_buffer_queue = dvrSurfaceGetWriteBufferQueue;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070087
88 // vsync_client_api.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070089 dvr_api->vsync_client_create = dvr_vsync_client_create;
90 dvr_api->vsync_client_destroy = dvr_vsync_client_destroy;
91 dvr_api->vsync_client_get_sched_info = dvr_vsync_client_get_sched_info;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070092
93 // pose_client.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070094 dvr_api->pose_client_create = dvrPoseCreate;
95 dvr_api->pose_client_destroy = dvrPoseDestroy;
96 dvr_api->pose_get = dvrPoseGet;
97 dvr_api->pose_get_vsync_count = dvrPoseGetVsyncCount;
98 dvr_api->pose_get_controller = dvrPoseGetController;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070099
100 // virtual_touchpad_client.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -0700101 dvr_api->virtual_touchpad_create = dvrVirtualTouchpadCreate;
102 dvr_api->virtual_touchpad_destroy = dvrVirtualTouchpadDestroy;
103 dvr_api->virtual_touchpad_attach = dvrVirtualTouchpadAttach;
104 dvr_api->virtual_touchpad_detach = dvrVirtualTouchpadDetach;
105 dvr_api->virtual_touchpad_touch = dvrVirtualTouchpadTouch;
106 dvr_api->virtual_touchpad_button_state = dvrVirtualTouchpadButtonState;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -0700107
Daniel Nicoara37cdc8d2017-03-27 16:56:05 -0400108 // dvr_hardware_composer_client.h
109 dvr_api->hwc_client_create = dvrHwcClientCreate;
110 dvr_api->hwc_client_destroy = dvrHwcClientDestroy;
111 dvr_api->hwc_frame_destroy = dvrHwcFrameDestroy;
112 dvr_api->hwc_frame_get_display_id = dvrHwcFrameGetDisplayId;
113 dvr_api->hwc_frame_get_display_width = dvrHwcFrameGetDisplayWidth;
114 dvr_api->hwc_frame_get_display_height = dvrHwcFrameGetDisplayHeight;
Daniel Nicoarad3201d12017-04-06 13:46:31 -0400115 dvr_api->hwc_frame_get_display_removed = dvrHwcFrameGetDisplayRemoved;
Albert Chaulk730c89a2017-04-10 13:53:32 -0400116 dvr_api->hwc_frame_get_active_config = dvrHwcFrameGetActiveConfig;
117 dvr_api->hwc_frame_get_color_mode = dvrHwcFrameGetColorMode;
118 dvr_api->hwc_frame_get_color_transform = dvrHwcFrameGetColorTransform;
119 dvr_api->hwc_frame_get_power_mode = dvrHwcFrameGetPowerMode;
120 dvr_api->hwc_frame_get_vsync_enabled = dvrHwcFrameGetVsyncEnabled;
Daniel Nicoara37cdc8d2017-03-27 16:56:05 -0400121 dvr_api->hwc_frame_get_layer_count = dvrHwcFrameGetLayerCount;
122 dvr_api->hwc_frame_get_layer_id = dvrHwcFrameGetLayerId;
123 dvr_api->hwc_frame_get_layer_buffer = dvrHwcFrameGetLayerBuffer;
124 dvr_api->hwc_frame_get_layer_fence = dvrHwcFrameGetLayerFence;
125 dvr_api->hwc_frame_get_layer_display_frame =
126 dvrHwcFrameGetLayerDisplayFrame;
127 dvr_api->hwc_frame_get_layer_crop = dvrHwcFrameGetLayerCrop;
128 dvr_api->hwc_frame_get_layer_blend_mode = dvrHwcFrameGetLayerBlendMode;
129 dvr_api->hwc_frame_get_layer_alpha = dvrHwcFrameGetLayerAlpha;
130 dvr_api->hwc_frame_get_layer_type = dvrHwcFrameGetLayerType;
131 dvr_api->hwc_frame_get_layer_application_id =
132 dvrHwcFrameGetLayerApplicationId;
Albert Chaulk730c89a2017-04-10 13:53:32 -0400133 dvr_api->hwc_frame_get_layer_z_order = dvrHwcFrameGetLayerZOrder;
134 dvr_api->hwc_frame_get_layer_cursor = dvrHwcFrameGetLayerCursor;
135 dvr_api->hwc_frame_get_layer_transform = dvrHwcFrameGetLayerTransform;
136 dvr_api->hwc_frame_get_layer_dataspace = dvrHwcFrameGetLayerDataspace;
137 dvr_api->hwc_frame_get_layer_color = dvrHwcFrameGetLayerColor;
138 dvr_api->hwc_frame_get_layer_num_visible_regions =
139 dvrHwcFrameGetLayerNumVisibleRegions;
140 dvr_api->hwc_frame_get_layer_visible_region =
141 dvrHwcFrameGetLayerVisibleRegion;
142 dvr_api->hwc_frame_get_layer_num_damaged_regions =
143 dvrHwcFrameGetLayerNumDamagedRegions;
144 dvr_api->hwc_frame_get_layer_damaged_region =
145 dvrHwcFrameGetLayerDamagedRegion;
Daniel Nicoara37cdc8d2017-03-27 16:56:05 -0400146
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -0700147 return 0;
148 }
149 return -EINVAL;
150}
151
152} // extern "C"