Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 356fc4f7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert "VR: Move VR HWC DVR API to libdvr""

parents b28d0f2f a1b81d6d
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ 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 \

@@ -43,15 +42,12 @@ 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)

+0 −21
Original line number Diff line number Diff line
@@ -11,7 +11,6 @@

// 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>

@@ -101,26 +100,6 @@ 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_create_client_ = dvrHwcCreateClient;
    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;
+0 −52
Original line number Diff line number Diff line
@@ -5,7 +5,6 @@
#include <stddef.h>
#include <stdint.h>

#include <dvr/dvr_hardware_composer_defs.h>
#include <jni.h>

#ifdef __cplusplus
@@ -145,38 +144,6 @@ typedef int (*DvrVirtualTouchpadTouchPtr)(DvrVirtualTouchpad* client,
typedef int (*DvrVirtualTouchpadButtonStatePtr)(DvrVirtualTouchpad* client,
                                                int touchpad, int buttons);

// dvr_hardware_composer_client.h
typedef struct AHardwareBuffer AHardwareBuffer;
typedef struct DvrHwcClient DvrHwcClient;
typedef struct DvrHwcFrame DvrHwcFrame;
typedef int(*DvrHwcOnFrameCallback)(void* client_state, DvrHwcFrame* frame);
typedef DvrHwcClient* (*DvrHwcCreateClientPtr)(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_;
@@ -253,25 +220,6 @@ struct DvrApi_v1 {
  DvrVirtualTouchpadDetachPtr virtual_touchpad_detach_;
  DvrVirtualTouchpadTouchPtr virtual_touchpad_touch_;
  DvrVirtualTouchpadButtonStatePtr virtual_touchpad_button_state_;

  // VR HWComposer client
  DvrHwcCreateClientPtr hwc_create_client_;
  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);
+25 −0
Original line number Diff line number Diff line
@@ -75,6 +75,31 @@ cc_binary {
  ],
}

cc_library_static {
  name: "libdvr_hwc",
  srcs: [
    "dvr_hardware_composer_client.cpp",
  ],
  static_libs: [
    "libvr_hwc-impl",
    // NOTE: This needs to be included after the *-impl lib otherwise the
    // symbols in the *-binder library get optimized out.
    "libvr_hwc-binder",
  ],
  shared_libs: [
    "libbase",
    "libbinder",
    "liblog",
    "libnativewindow",
    "libui",
    "libutils",
  ],
  export_include_dirs: ["private"],
  export_shared_lib_headers: [
    "libnativewindow",
  ],
}

cc_test {
  name: "vr_hwc_test",
  gtest: true,
+7 −27
Original line number Diff line number Diff line
#include "include/dvr/dvr_hardware_composer_client.h"
#include "private/android/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>

@@ -16,8 +15,7 @@ namespace {

class HwcCallback : public android::dvr::BnVrComposerCallback {
 public:
  explicit HwcCallback(DvrHwcOnFrameCallback callback,
                       void* client_state);
  explicit HwcCallback(DvrHwcOnFrameCallback callback);
  ~HwcCallback() override;

  std::unique_ptr<DvrHwcFrame> DequeueFrame();
@@ -29,14 +27,13 @@ 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, void* client_state)
    : callback_(callback), client_state_(client_state) {}
HwcCallback::HwcCallback(DvrHwcOnFrameCallback callback)
    : callback_(callback) {}

HwcCallback::~HwcCallback() {}

@@ -46,8 +43,7 @@ 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_(client_state_,
                                                      dvr_frame.release())));
  fence->set_fence(android::base::unique_fd(callback_(dvr_frame.release())));
  return android::binder::Status::ok();
}

@@ -58,7 +54,7 @@ struct DvrHwcClient {
  android::sp<HwcCallback> callback;
};

DvrHwcClient* dvrHwcCreateClient(DvrHwcOnFrameCallback callback, void* data) {
DvrHwcClient* dvrHwcCreateClient(DvrHwcOnFrameCallback callback) {
  std::unique_ptr<DvrHwcClient> client(new DvrHwcClient());

  android::sp<android::IServiceManager> sm(android::defaultServiceManager());
@@ -67,7 +63,7 @@ DvrHwcClient* dvrHwcCreateClient(DvrHwcOnFrameCallback callback, void* data) {
  if (!client->composer.get())
    return nullptr;

  client->callback = new HwcCallback(callback, data);
  client->callback = new HwcCallback(callback);
  android::binder::Status status = client->composer->registerObserver(
      client->callback);
  if (!status.isOk())
@@ -76,10 +72,6 @@ DvrHwcClient* dvrHwcCreateClient(DvrHwcOnFrameCallback callback, void* data) {
  return client.release();
}

void dvrHwcClientDestroy(DvrHwcClient* client) {
  delete client;
}

void dvrHwcFrameDestroy(DvrHwcFrame* frame) {
  delete frame;
}
@@ -88,18 +80,6 @@ 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