Loading libs/vr/libdvr/Android.mk +4 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ LOCAL_SRC_FILES := \ dvr_api.cpp \ dvr_buffer.cpp \ dvr_buffer_queue.cpp \ dvr_hardware_composer_client.cpp \ dvr_surface.cpp \ vsync_client_api.cpp \ Loading @@ -42,12 +43,15 @@ LOCAL_STATIC_LIBRARIES := \ libdisplay \ libvrsensor \ libvirtualtouchpadclient \ libvr_hwc-impl \ libvr_hwc-binder \ LOCAL_SHARED_LIBRARIES := \ android.hardware.graphics.bufferqueue@1.0 \ android.hidl.token@1.0-utils \ libandroid_runtime \ libbase \ libnativewindow \ include $(BUILD_STATIC_LIBRARY) Loading libs/vr/libdvr/dvr_api.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ // Headers not yet moved into libdvr. // TODO(jwcai) Move these once their callers are moved into Google3. #include <dvr/dvr_hardware_composer_client.h> #include <dvr/pose_client.h> #include <dvr/virtual_touchpad_client.h> Loading Loading @@ -100,6 +101,26 @@ DVR_EXPORT int dvrGetApi(void* api, size_t struct_size, int version) { dvr_api->virtual_touchpad_touch = dvrVirtualTouchpadTouch; dvr_api->virtual_touchpad_button_state = dvrVirtualTouchpadButtonState; // dvr_hardware_composer_client.h dvr_api->hwc_client_create = dvrHwcClientCreate; dvr_api->hwc_client_destroy = dvrHwcClientDestroy; dvr_api->hwc_frame_destroy = dvrHwcFrameDestroy; dvr_api->hwc_frame_get_display_id = dvrHwcFrameGetDisplayId; dvr_api->hwc_frame_get_display_width = dvrHwcFrameGetDisplayWidth; dvr_api->hwc_frame_get_display_height = dvrHwcFrameGetDisplayHeight; dvr_api->hwc_frame_get_layer_count = dvrHwcFrameGetLayerCount; dvr_api->hwc_frame_get_layer_id = dvrHwcFrameGetLayerId; dvr_api->hwc_frame_get_layer_buffer = dvrHwcFrameGetLayerBuffer; dvr_api->hwc_frame_get_layer_fence = dvrHwcFrameGetLayerFence; dvr_api->hwc_frame_get_layer_display_frame = dvrHwcFrameGetLayerDisplayFrame; dvr_api->hwc_frame_get_layer_crop = dvrHwcFrameGetLayerCrop; dvr_api->hwc_frame_get_layer_blend_mode = dvrHwcFrameGetLayerBlendMode; dvr_api->hwc_frame_get_layer_alpha = dvrHwcFrameGetLayerAlpha; dvr_api->hwc_frame_get_layer_type = dvrHwcFrameGetLayerType; dvr_api->hwc_frame_get_layer_application_id = dvrHwcFrameGetLayerApplicationId; return 0; } return -EINVAL; Loading services/vr/hardware_composer/dvr_hardware_composer_client.cpp→libs/vr/libdvr/dvr_hardware_composer_client.cpp +27 −7 Original line number Diff line number Diff line #include "private/android/dvr_hardware_composer_client.h" #include "include/dvr/dvr_hardware_composer_client.h" #include <android/dvr/IVrComposer.h> #include <android/dvr/BnVrComposerCallback.h> #include <android/hardware_buffer.h> #include <binder/IServiceManager.h> #include <private/android/AHardwareBufferHelpers.h> Loading @@ -15,7 +16,8 @@ namespace { class HwcCallback : public android::dvr::BnVrComposerCallback { public: explicit HwcCallback(DvrHwcOnFrameCallback callback); explicit HwcCallback(DvrHwcOnFrameCallback callback, void* client_state); ~HwcCallback() override; std::unique_ptr<DvrHwcFrame> DequeueFrame(); Loading @@ -27,13 +29,14 @@ class HwcCallback : public android::dvr::BnVrComposerCallback { android::dvr::ParcelableUniqueFd* fence) override; DvrHwcOnFrameCallback callback_; void* client_state_; HwcCallback(const HwcCallback&) = delete; void operator=(const HwcCallback&) = delete; }; HwcCallback::HwcCallback(DvrHwcOnFrameCallback callback) : callback_(callback) {} HwcCallback::HwcCallback(DvrHwcOnFrameCallback callback, void* client_state) : callback_(callback), client_state_(client_state) {} HwcCallback::~HwcCallback() {} Loading @@ -43,7 +46,8 @@ android::binder::Status HwcCallback::onNewFrame( std::unique_ptr<DvrHwcFrame> dvr_frame(new DvrHwcFrame()); dvr_frame->frame = frame.frame(); fence->set_fence(android::base::unique_fd(callback_(dvr_frame.release()))); fence->set_fence(android::base::unique_fd(callback_(client_state_, dvr_frame.release()))); return android::binder::Status::ok(); } Loading @@ -54,7 +58,7 @@ struct DvrHwcClient { android::sp<HwcCallback> callback; }; DvrHwcClient* dvrHwcCreateClient(DvrHwcOnFrameCallback callback) { DvrHwcClient* dvrHwcClientCreate(DvrHwcOnFrameCallback callback, void* data) { std::unique_ptr<DvrHwcClient> client(new DvrHwcClient()); android::sp<android::IServiceManager> sm(android::defaultServiceManager()); Loading @@ -63,7 +67,7 @@ DvrHwcClient* dvrHwcCreateClient(DvrHwcOnFrameCallback callback) { if (!client->composer.get()) return nullptr; client->callback = new HwcCallback(callback); client->callback = new HwcCallback(callback, data); android::binder::Status status = client->composer->registerObserver( client->callback); if (!status.isOk()) Loading @@ -72,6 +76,10 @@ DvrHwcClient* dvrHwcCreateClient(DvrHwcOnFrameCallback callback) { return client.release(); } void dvrHwcClientDestroy(DvrHwcClient* client) { delete client; } void dvrHwcFrameDestroy(DvrHwcFrame* frame) { delete frame; } Loading @@ -80,6 +88,18 @@ Display dvrHwcFrameGetDisplayId(DvrHwcFrame* frame) { return frame->frame.display_id; } int32_t dvrHwcFrameGetDisplayWidth(DvrHwcFrame* frame) { return frame->frame.display_width; } int32_t dvrHwcFrameGetDisplayHeight(DvrHwcFrame* frame) { return frame->frame.display_height; } bool dvrHwcFrameGetDisplayRemoved(DvrHwcFrame* frame) { return frame->frame.removed; } size_t dvrHwcFrameGetLayerCount(DvrHwcFrame* frame) { return frame->frame.layers.size(); } Loading libs/vr/libdvr/include/dvr/dvr_api.h +51 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ #include <stddef.h> #include <stdint.h> #include <dvr/dvr_hardware_composer_defs.h> #include <jni.h> #ifdef __cplusplus Loading Loading @@ -144,6 +145,37 @@ typedef int (*DvrVirtualTouchpadTouchPtr)(DvrVirtualTouchpad* client, typedef int (*DvrVirtualTouchpadButtonStatePtr)(DvrVirtualTouchpad* client, int touchpad, int buttons); // dvr_hardware_composer_client.h typedef struct DvrHwcClient DvrHwcClient; typedef struct DvrHwcFrame DvrHwcFrame; typedef int(*DvrHwcOnFrameCallback)(void* client_state, DvrHwcFrame* frame); typedef DvrHwcClient* (*DvrHwcClientCreatePtr)(DvrHwcOnFrameCallback callback, void* client_state); typedef void (*DvrHwcClientDestroyPtr)(DvrHwcClient* client); typedef void (*DvrHwcFrameDestroyPtr)(DvrHwcFrame* frame); typedef Display (*DvrHwcFrameGetDisplayIdPtr)(DvrHwcFrame* frame); typedef int32_t (*DvrHwcFrameGetDisplayWidthPtr)(DvrHwcFrame* frame); typedef int32_t (*DvrHwcFrameGetDisplayHeightPtr)(DvrHwcFrame* frame); typedef bool (*DvrHwcFrameGetDisplayRemovedPtr)(DvrHwcFrame* frame); typedef size_t (*DvrHwcFrameGetLayerCountPtr)(DvrHwcFrame* frame); typedef Layer (*DvrHwcFrameGetLayerIdPtr)(DvrHwcFrame* frame, size_t layer_index); typedef AHardwareBuffer* (*DvrHwcFrameGetLayerBufferPtr)(DvrHwcFrame* frame, size_t layer_index); typedef int (*DvrHwcFrameGetLayerFencePtr)(DvrHwcFrame* frame, size_t layer_index); typedef Recti (*DvrHwcFrameGetLayerDisplayFramePtr)(DvrHwcFrame* frame, size_t layer_index); typedef Rectf (*DvrHwcFrameGetLayerCropPtr)(DvrHwcFrame* frame, size_t layer_index); typedef BlendMode (*DvrHwcFrameGetLayerBlendModePtr)(DvrHwcFrame* frame, size_t layer_index); typedef float (*DvrHwcFrameGetLayerAlphaPtr)(DvrHwcFrame* frame, size_t layer_index); typedef uint32_t (*DvrHwcFrameGetLayerTypePtr)(DvrHwcFrame* frame, size_t layer_index); typedef uint32_t (*DvrHwcFrameGetLayerApplicationIdPtr)(DvrHwcFrame* frame, size_t layer_index); struct DvrApi_v1 { // Display manager client DvrDisplayManagerClientCreatePtr display_manager_client_create; Loading Loading @@ -220,6 +252,25 @@ struct DvrApi_v1 { DvrVirtualTouchpadDetachPtr virtual_touchpad_detach; DvrVirtualTouchpadTouchPtr virtual_touchpad_touch; DvrVirtualTouchpadButtonStatePtr virtual_touchpad_button_state; // VR HWComposer client DvrHwcClientCreatePtr hwc_client_create; DvrHwcClientDestroyPtr hwc_client_destroy; DvrHwcFrameDestroyPtr hwc_frame_destroy; DvrHwcFrameGetDisplayIdPtr hwc_frame_get_display_id; DvrHwcFrameGetDisplayWidthPtr hwc_frame_get_display_width; DvrHwcFrameGetDisplayHeightPtr hwc_frame_get_display_height; DvrHwcFrameGetDisplayRemovedPtr hwc_frame_get_display_removed; DvrHwcFrameGetLayerCountPtr hwc_frame_get_layer_count; DvrHwcFrameGetLayerIdPtr hwc_frame_get_layer_id; DvrHwcFrameGetLayerBufferPtr hwc_frame_get_layer_buffer; DvrHwcFrameGetLayerFencePtr hwc_frame_get_layer_fence; DvrHwcFrameGetLayerDisplayFramePtr hwc_frame_get_layer_display_frame; DvrHwcFrameGetLayerCropPtr hwc_frame_get_layer_crop; DvrHwcFrameGetLayerBlendModePtr hwc_frame_get_layer_blend_mode; DvrHwcFrameGetLayerAlphaPtr hwc_frame_get_layer_alpha; DvrHwcFrameGetLayerTypePtr hwc_frame_get_layer_type; DvrHwcFrameGetLayerApplicationIdPtr hwc_frame_get_layer_application_id; }; int dvrGetApi(void* api, size_t struct_size, int version); Loading services/vr/hardware_composer/private/android/dvr_hardware_composer_client.h→libs/vr/libdvr/include/dvr/dvr_hardware_composer_client.h +23 −7 Original line number Diff line number Diff line #ifndef VR_HARDWARE_COMPOSER_PRIVATE_ANDROID_DVR_HARDWARE_COMPOSER_CLIENT_H #define VR_HARDWARE_COMPOSER_PRIVATE_ANDROID_DVR_HARDWARE_COMPOSER_CLIENT_H #ifndef ANDROID_DVR_HARDWARE_COMPOSER_CLIENT_H #define ANDROID_DVR_HARDWARE_COMPOSER_CLIENT_H #include <android/dvr_hardware_composer_defs.h> #include <android/hardware_buffer.h> #include <dvr/dvr_hardware_composer_defs.h> #include <stdbool.h> #ifdef __cplusplus extern "C" { #endif typedef struct AHardwareBuffer AHardwareBuffer; typedef struct DvrHwcClient DvrHwcClient; typedef struct DvrHwcFrame DvrHwcFrame; // Called when a new frame has arrived. // // @param client_state Pointer to client state passed in |dvrHwcCreateClient()|. // @param frame New frame. Owned by the client. // @return fence FD for the release of the last frame. typedef int(*DvrHwcOnFrameCallback)(DvrHwcFrame* frame); typedef int(*DvrHwcOnFrameCallback)(void* client_state, DvrHwcFrame* frame); DvrHwcClient* dvrHwcCreateClient(DvrHwcOnFrameCallback callback); // @param callback Called when a new frame is available. // @param client_state Pointer to client state passed back in the callback. DvrHwcClient* dvrHwcClientCreate(DvrHwcOnFrameCallback callback, void* client_state); void dvrHwcClientDestroy(DvrHwcClient* client); // Called to free the frame information. void dvrHwcFrameDestroy(DvrHwcFrame* frame); Display dvrHwcFrameGetDisplayId(DvrHwcFrame* frame); int32_t dvrHwcFrameGetDisplayWidth(DvrHwcFrame* frame); int32_t dvrHwcFrameGetDisplayHeight(DvrHwcFrame* frame); // @return True if the display has been removed. In this case the current frame // does not contain any valid layers to display. It is a signal to clean up any // display related state. bool dvrHwcFrameGetDisplayRemoved(DvrHwcFrame* frame); // @return Number of layers in the frame. size_t dvrHwcFrameGetLayerCount(DvrHwcFrame* frame); Loading Loading @@ -59,4 +75,4 @@ uint32_t dvrHwcFrameGetLayerApplicationId(DvrHwcFrame* frame, } // extern "C" #endif #endif // VR_HARDWARE_COMPOSER_PRIVATE_ANDROID_DVR_HARDWARE_COMPOSER_CLIENT_H #endif // ANDROID_DVR_HARDWARE_COMPOSER_CLIENT_H Loading
libs/vr/libdvr/Android.mk +4 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ LOCAL_SRC_FILES := \ dvr_api.cpp \ dvr_buffer.cpp \ dvr_buffer_queue.cpp \ dvr_hardware_composer_client.cpp \ dvr_surface.cpp \ vsync_client_api.cpp \ Loading @@ -42,12 +43,15 @@ LOCAL_STATIC_LIBRARIES := \ libdisplay \ libvrsensor \ libvirtualtouchpadclient \ libvr_hwc-impl \ libvr_hwc-binder \ LOCAL_SHARED_LIBRARIES := \ android.hardware.graphics.bufferqueue@1.0 \ android.hidl.token@1.0-utils \ libandroid_runtime \ libbase \ libnativewindow \ include $(BUILD_STATIC_LIBRARY) Loading
libs/vr/libdvr/dvr_api.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ // Headers not yet moved into libdvr. // TODO(jwcai) Move these once their callers are moved into Google3. #include <dvr/dvr_hardware_composer_client.h> #include <dvr/pose_client.h> #include <dvr/virtual_touchpad_client.h> Loading Loading @@ -100,6 +101,26 @@ DVR_EXPORT int dvrGetApi(void* api, size_t struct_size, int version) { dvr_api->virtual_touchpad_touch = dvrVirtualTouchpadTouch; dvr_api->virtual_touchpad_button_state = dvrVirtualTouchpadButtonState; // dvr_hardware_composer_client.h dvr_api->hwc_client_create = dvrHwcClientCreate; dvr_api->hwc_client_destroy = dvrHwcClientDestroy; dvr_api->hwc_frame_destroy = dvrHwcFrameDestroy; dvr_api->hwc_frame_get_display_id = dvrHwcFrameGetDisplayId; dvr_api->hwc_frame_get_display_width = dvrHwcFrameGetDisplayWidth; dvr_api->hwc_frame_get_display_height = dvrHwcFrameGetDisplayHeight; dvr_api->hwc_frame_get_layer_count = dvrHwcFrameGetLayerCount; dvr_api->hwc_frame_get_layer_id = dvrHwcFrameGetLayerId; dvr_api->hwc_frame_get_layer_buffer = dvrHwcFrameGetLayerBuffer; dvr_api->hwc_frame_get_layer_fence = dvrHwcFrameGetLayerFence; dvr_api->hwc_frame_get_layer_display_frame = dvrHwcFrameGetLayerDisplayFrame; dvr_api->hwc_frame_get_layer_crop = dvrHwcFrameGetLayerCrop; dvr_api->hwc_frame_get_layer_blend_mode = dvrHwcFrameGetLayerBlendMode; dvr_api->hwc_frame_get_layer_alpha = dvrHwcFrameGetLayerAlpha; dvr_api->hwc_frame_get_layer_type = dvrHwcFrameGetLayerType; dvr_api->hwc_frame_get_layer_application_id = dvrHwcFrameGetLayerApplicationId; return 0; } return -EINVAL; Loading
services/vr/hardware_composer/dvr_hardware_composer_client.cpp→libs/vr/libdvr/dvr_hardware_composer_client.cpp +27 −7 Original line number Diff line number Diff line #include "private/android/dvr_hardware_composer_client.h" #include "include/dvr/dvr_hardware_composer_client.h" #include <android/dvr/IVrComposer.h> #include <android/dvr/BnVrComposerCallback.h> #include <android/hardware_buffer.h> #include <binder/IServiceManager.h> #include <private/android/AHardwareBufferHelpers.h> Loading @@ -15,7 +16,8 @@ namespace { class HwcCallback : public android::dvr::BnVrComposerCallback { public: explicit HwcCallback(DvrHwcOnFrameCallback callback); explicit HwcCallback(DvrHwcOnFrameCallback callback, void* client_state); ~HwcCallback() override; std::unique_ptr<DvrHwcFrame> DequeueFrame(); Loading @@ -27,13 +29,14 @@ class HwcCallback : public android::dvr::BnVrComposerCallback { android::dvr::ParcelableUniqueFd* fence) override; DvrHwcOnFrameCallback callback_; void* client_state_; HwcCallback(const HwcCallback&) = delete; void operator=(const HwcCallback&) = delete; }; HwcCallback::HwcCallback(DvrHwcOnFrameCallback callback) : callback_(callback) {} HwcCallback::HwcCallback(DvrHwcOnFrameCallback callback, void* client_state) : callback_(callback), client_state_(client_state) {} HwcCallback::~HwcCallback() {} Loading @@ -43,7 +46,8 @@ android::binder::Status HwcCallback::onNewFrame( std::unique_ptr<DvrHwcFrame> dvr_frame(new DvrHwcFrame()); dvr_frame->frame = frame.frame(); fence->set_fence(android::base::unique_fd(callback_(dvr_frame.release()))); fence->set_fence(android::base::unique_fd(callback_(client_state_, dvr_frame.release()))); return android::binder::Status::ok(); } Loading @@ -54,7 +58,7 @@ struct DvrHwcClient { android::sp<HwcCallback> callback; }; DvrHwcClient* dvrHwcCreateClient(DvrHwcOnFrameCallback callback) { DvrHwcClient* dvrHwcClientCreate(DvrHwcOnFrameCallback callback, void* data) { std::unique_ptr<DvrHwcClient> client(new DvrHwcClient()); android::sp<android::IServiceManager> sm(android::defaultServiceManager()); Loading @@ -63,7 +67,7 @@ DvrHwcClient* dvrHwcCreateClient(DvrHwcOnFrameCallback callback) { if (!client->composer.get()) return nullptr; client->callback = new HwcCallback(callback); client->callback = new HwcCallback(callback, data); android::binder::Status status = client->composer->registerObserver( client->callback); if (!status.isOk()) Loading @@ -72,6 +76,10 @@ DvrHwcClient* dvrHwcCreateClient(DvrHwcOnFrameCallback callback) { return client.release(); } void dvrHwcClientDestroy(DvrHwcClient* client) { delete client; } void dvrHwcFrameDestroy(DvrHwcFrame* frame) { delete frame; } Loading @@ -80,6 +88,18 @@ Display dvrHwcFrameGetDisplayId(DvrHwcFrame* frame) { return frame->frame.display_id; } int32_t dvrHwcFrameGetDisplayWidth(DvrHwcFrame* frame) { return frame->frame.display_width; } int32_t dvrHwcFrameGetDisplayHeight(DvrHwcFrame* frame) { return frame->frame.display_height; } bool dvrHwcFrameGetDisplayRemoved(DvrHwcFrame* frame) { return frame->frame.removed; } size_t dvrHwcFrameGetLayerCount(DvrHwcFrame* frame) { return frame->frame.layers.size(); } Loading
libs/vr/libdvr/include/dvr/dvr_api.h +51 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ #include <stddef.h> #include <stdint.h> #include <dvr/dvr_hardware_composer_defs.h> #include <jni.h> #ifdef __cplusplus Loading Loading @@ -144,6 +145,37 @@ typedef int (*DvrVirtualTouchpadTouchPtr)(DvrVirtualTouchpad* client, typedef int (*DvrVirtualTouchpadButtonStatePtr)(DvrVirtualTouchpad* client, int touchpad, int buttons); // dvr_hardware_composer_client.h typedef struct DvrHwcClient DvrHwcClient; typedef struct DvrHwcFrame DvrHwcFrame; typedef int(*DvrHwcOnFrameCallback)(void* client_state, DvrHwcFrame* frame); typedef DvrHwcClient* (*DvrHwcClientCreatePtr)(DvrHwcOnFrameCallback callback, void* client_state); typedef void (*DvrHwcClientDestroyPtr)(DvrHwcClient* client); typedef void (*DvrHwcFrameDestroyPtr)(DvrHwcFrame* frame); typedef Display (*DvrHwcFrameGetDisplayIdPtr)(DvrHwcFrame* frame); typedef int32_t (*DvrHwcFrameGetDisplayWidthPtr)(DvrHwcFrame* frame); typedef int32_t (*DvrHwcFrameGetDisplayHeightPtr)(DvrHwcFrame* frame); typedef bool (*DvrHwcFrameGetDisplayRemovedPtr)(DvrHwcFrame* frame); typedef size_t (*DvrHwcFrameGetLayerCountPtr)(DvrHwcFrame* frame); typedef Layer (*DvrHwcFrameGetLayerIdPtr)(DvrHwcFrame* frame, size_t layer_index); typedef AHardwareBuffer* (*DvrHwcFrameGetLayerBufferPtr)(DvrHwcFrame* frame, size_t layer_index); typedef int (*DvrHwcFrameGetLayerFencePtr)(DvrHwcFrame* frame, size_t layer_index); typedef Recti (*DvrHwcFrameGetLayerDisplayFramePtr)(DvrHwcFrame* frame, size_t layer_index); typedef Rectf (*DvrHwcFrameGetLayerCropPtr)(DvrHwcFrame* frame, size_t layer_index); typedef BlendMode (*DvrHwcFrameGetLayerBlendModePtr)(DvrHwcFrame* frame, size_t layer_index); typedef float (*DvrHwcFrameGetLayerAlphaPtr)(DvrHwcFrame* frame, size_t layer_index); typedef uint32_t (*DvrHwcFrameGetLayerTypePtr)(DvrHwcFrame* frame, size_t layer_index); typedef uint32_t (*DvrHwcFrameGetLayerApplicationIdPtr)(DvrHwcFrame* frame, size_t layer_index); struct DvrApi_v1 { // Display manager client DvrDisplayManagerClientCreatePtr display_manager_client_create; Loading Loading @@ -220,6 +252,25 @@ struct DvrApi_v1 { DvrVirtualTouchpadDetachPtr virtual_touchpad_detach; DvrVirtualTouchpadTouchPtr virtual_touchpad_touch; DvrVirtualTouchpadButtonStatePtr virtual_touchpad_button_state; // VR HWComposer client DvrHwcClientCreatePtr hwc_client_create; DvrHwcClientDestroyPtr hwc_client_destroy; DvrHwcFrameDestroyPtr hwc_frame_destroy; DvrHwcFrameGetDisplayIdPtr hwc_frame_get_display_id; DvrHwcFrameGetDisplayWidthPtr hwc_frame_get_display_width; DvrHwcFrameGetDisplayHeightPtr hwc_frame_get_display_height; DvrHwcFrameGetDisplayRemovedPtr hwc_frame_get_display_removed; DvrHwcFrameGetLayerCountPtr hwc_frame_get_layer_count; DvrHwcFrameGetLayerIdPtr hwc_frame_get_layer_id; DvrHwcFrameGetLayerBufferPtr hwc_frame_get_layer_buffer; DvrHwcFrameGetLayerFencePtr hwc_frame_get_layer_fence; DvrHwcFrameGetLayerDisplayFramePtr hwc_frame_get_layer_display_frame; DvrHwcFrameGetLayerCropPtr hwc_frame_get_layer_crop; DvrHwcFrameGetLayerBlendModePtr hwc_frame_get_layer_blend_mode; DvrHwcFrameGetLayerAlphaPtr hwc_frame_get_layer_alpha; DvrHwcFrameGetLayerTypePtr hwc_frame_get_layer_type; DvrHwcFrameGetLayerApplicationIdPtr hwc_frame_get_layer_application_id; }; int dvrGetApi(void* api, size_t struct_size, int version); Loading
services/vr/hardware_composer/private/android/dvr_hardware_composer_client.h→libs/vr/libdvr/include/dvr/dvr_hardware_composer_client.h +23 −7 Original line number Diff line number Diff line #ifndef VR_HARDWARE_COMPOSER_PRIVATE_ANDROID_DVR_HARDWARE_COMPOSER_CLIENT_H #define VR_HARDWARE_COMPOSER_PRIVATE_ANDROID_DVR_HARDWARE_COMPOSER_CLIENT_H #ifndef ANDROID_DVR_HARDWARE_COMPOSER_CLIENT_H #define ANDROID_DVR_HARDWARE_COMPOSER_CLIENT_H #include <android/dvr_hardware_composer_defs.h> #include <android/hardware_buffer.h> #include <dvr/dvr_hardware_composer_defs.h> #include <stdbool.h> #ifdef __cplusplus extern "C" { #endif typedef struct AHardwareBuffer AHardwareBuffer; typedef struct DvrHwcClient DvrHwcClient; typedef struct DvrHwcFrame DvrHwcFrame; // Called when a new frame has arrived. // // @param client_state Pointer to client state passed in |dvrHwcCreateClient()|. // @param frame New frame. Owned by the client. // @return fence FD for the release of the last frame. typedef int(*DvrHwcOnFrameCallback)(DvrHwcFrame* frame); typedef int(*DvrHwcOnFrameCallback)(void* client_state, DvrHwcFrame* frame); DvrHwcClient* dvrHwcCreateClient(DvrHwcOnFrameCallback callback); // @param callback Called when a new frame is available. // @param client_state Pointer to client state passed back in the callback. DvrHwcClient* dvrHwcClientCreate(DvrHwcOnFrameCallback callback, void* client_state); void dvrHwcClientDestroy(DvrHwcClient* client); // Called to free the frame information. void dvrHwcFrameDestroy(DvrHwcFrame* frame); Display dvrHwcFrameGetDisplayId(DvrHwcFrame* frame); int32_t dvrHwcFrameGetDisplayWidth(DvrHwcFrame* frame); int32_t dvrHwcFrameGetDisplayHeight(DvrHwcFrame* frame); // @return True if the display has been removed. In this case the current frame // does not contain any valid layers to display. It is a signal to clean up any // display related state. bool dvrHwcFrameGetDisplayRemoved(DvrHwcFrame* frame); // @return Number of layers in the frame. size_t dvrHwcFrameGetLayerCount(DvrHwcFrame* frame); Loading Loading @@ -59,4 +75,4 @@ uint32_t dvrHwcFrameGetLayerApplicationId(DvrHwcFrame* frame, } // extern "C" #endif #endif // VR_HARDWARE_COMPOSER_PRIVATE_ANDROID_DVR_HARDWARE_COMPOSER_CLIENT_H #endif // ANDROID_DVR_HARDWARE_COMPOSER_CLIENT_H