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

Commit 3804e73b authored by Albert Chaulk's avatar Albert Chaulk Committed by android-build-merger
Browse files

Merge "vrwm: Push all the properties to vr window manager" into oc-dev

am: f15e6fdf

Change-Id: If50ba778985a18dec6edcb1f41a648ff4cfdbd5d
parents 6bff40e6 f15e6fdf
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -109,6 +109,11 @@ DVR_EXPORT int dvrGetApi(void* api, size_t struct_size, int version) {
    dvr_api->hwc_frame_get_display_width = dvrHwcFrameGetDisplayWidth;
    dvr_api->hwc_frame_get_display_height = dvrHwcFrameGetDisplayHeight;
    dvr_api->hwc_frame_get_display_removed = dvrHwcFrameGetDisplayRemoved;
    dvr_api->hwc_frame_get_active_config = dvrHwcFrameGetActiveConfig;
    dvr_api->hwc_frame_get_color_mode = dvrHwcFrameGetColorMode;
    dvr_api->hwc_frame_get_color_transform = dvrHwcFrameGetColorTransform;
    dvr_api->hwc_frame_get_power_mode = dvrHwcFrameGetPowerMode;
    dvr_api->hwc_frame_get_vsync_enabled = dvrHwcFrameGetVsyncEnabled;
    dvr_api->hwc_frame_get_layer_count = dvrHwcFrameGetLayerCount;
    dvr_api->hwc_frame_get_layer_id = dvrHwcFrameGetLayerId;
    dvr_api->hwc_frame_get_layer_buffer = dvrHwcFrameGetLayerBuffer;
@@ -121,6 +126,19 @@ DVR_EXPORT int dvrGetApi(void* api, size_t struct_size, int version) {
    dvr_api->hwc_frame_get_layer_type = dvrHwcFrameGetLayerType;
    dvr_api->hwc_frame_get_layer_application_id =
        dvrHwcFrameGetLayerApplicationId;
    dvr_api->hwc_frame_get_layer_z_order = dvrHwcFrameGetLayerZOrder;
    dvr_api->hwc_frame_get_layer_cursor = dvrHwcFrameGetLayerCursor;
    dvr_api->hwc_frame_get_layer_transform = dvrHwcFrameGetLayerTransform;
    dvr_api->hwc_frame_get_layer_dataspace = dvrHwcFrameGetLayerDataspace;
    dvr_api->hwc_frame_get_layer_color = dvrHwcFrameGetLayerColor;
    dvr_api->hwc_frame_get_layer_num_visible_regions =
        dvrHwcFrameGetLayerNumVisibleRegions;
    dvr_api->hwc_frame_get_layer_visible_region =
        dvrHwcFrameGetLayerVisibleRegion;
    dvr_api->hwc_frame_get_layer_num_damaged_regions =
        dvrHwcFrameGetLayerNumDamagedRegions;
    dvr_api->hwc_frame_get_layer_damaged_region =
        dvrHwcFrameGetLayerDamagedRegion;

    return 0;
  }
+78 −0
Original line number Diff line number Diff line
@@ -104,6 +104,29 @@ size_t dvrHwcFrameGetLayerCount(DvrHwcFrame* frame) {
  return frame->frame.layers.size();
}

uint32_t dvrHwcFrameGetActiveConfig(DvrHwcFrame* frame) {
  return static_cast<uint32_t>(frame->frame.active_config);
}

uint32_t dvrHwcFrameGetColorMode(DvrHwcFrame* frame) {
  return static_cast<uint32_t>(frame->frame.color_mode);
}

void dvrHwcFrameGetColorTransform(DvrHwcFrame* frame, float* out_matrix,
                                  int32_t* out_hint) {
  *out_hint = frame->frame.color_transform_hint;
  memcpy(out_matrix, frame->frame.color_transform,
         sizeof(frame->frame.color_transform));
}

uint32_t dvrHwcFrameGetPowerMode(DvrHwcFrame* frame) {
  return static_cast<uint32_t>(frame->frame.power_mode);
}

uint32_t dvrHwcFrameGetVsyncEnabled(DvrHwcFrame* frame) {
  return static_cast<uint32_t>(frame->frame.vsync_enabled);
}

DvrHwcLayer dvrHwcFrameGetLayerId(DvrHwcFrame* frame, size_t layer_index) {
  return frame->frame.layers[layer_index].id;
}
@@ -157,3 +180,58 @@ uint32_t dvrHwcFrameGetLayerApplicationId(DvrHwcFrame* frame,
                                          size_t layer_index) {
  return frame->frame.layers[layer_index].app_id;
}

uint32_t dvrHwcFrameGetLayerZOrder(DvrHwcFrame* frame, size_t layer_index) {
  return frame->frame.layers[layer_index].z_order;
}

void dvrHwcFrameGetLayerCursor(DvrHwcFrame* frame, size_t layer_index,
                               int32_t* out_x, int32_t* out_y) {
  *out_x = frame->frame.layers[layer_index].cursor_x;
  *out_y = frame->frame.layers[layer_index].cursor_y;
}

uint32_t dvrHwcFrameGetLayerTransform(DvrHwcFrame* frame, size_t layer_index) {
  return frame->frame.layers[layer_index].transform;
}

uint32_t dvrHwcFrameGetLayerDataspace(DvrHwcFrame* frame, size_t layer_index) {
  return frame->frame.layers[layer_index].dataspace;
}

uint32_t dvrHwcFrameGetLayerColor(DvrHwcFrame* frame, size_t layer_index) {
  const auto& color = frame->frame.layers[layer_index].color;
  return color.r | (static_cast<uint32_t>(color.g) << 8) |
         (static_cast<uint32_t>(color.b) << 16) |
         (static_cast<uint32_t>(color.a) << 24);
}

uint32_t dvrHwcFrameGetLayerNumVisibleRegions(DvrHwcFrame* frame,
                                              size_t layer_index) {
  return frame->frame.layers[layer_index].visible_regions.size();
}

DvrHwcRecti dvrHwcFrameGetLayerVisibleRegion(DvrHwcFrame* frame,
                                             size_t layer_index, size_t index) {
  return DvrHwcRecti{
      frame->frame.layers[layer_index].visible_regions[index].left,
      frame->frame.layers[layer_index].visible_regions[index].top,
      frame->frame.layers[layer_index].visible_regions[index].right,
      frame->frame.layers[layer_index].visible_regions[index].bottom,
  };
}

uint32_t dvrHwcFrameGetLayerNumDamagedRegions(DvrHwcFrame* frame,
                                              size_t layer_index) {
  return frame->frame.layers[layer_index].damaged_regions.size();
}

DvrHwcRecti dvrHwcFrameGetLayerDamagedRegion(DvrHwcFrame* frame,
                                             size_t layer_index, size_t index) {
  return DvrHwcRecti{
      frame->frame.layers[layer_index].damaged_regions[index].left,
      frame->frame.layers[layer_index].damaged_regions[index].top,
      frame->frame.layers[layer_index].damaged_regions[index].right,
      frame->frame.layers[layer_index].damaged_regions[index].bottom,
  };
}
+50 −0
Original line number Diff line number Diff line
@@ -159,6 +159,13 @@ typedef bool (*DvrHwcFrameGetDisplayRemovedPtr)(DvrHwcFrame* frame);
typedef size_t (*DvrHwcFrameGetLayerCountPtr)(DvrHwcFrame* frame);
typedef DvrHwcLayer (*DvrHwcFrameGetLayerIdPtr)(DvrHwcFrame* frame,
                                                size_t layer_index);
typedef uint32_t (*DvrHwcFrameGetActiveConfigPtr)(DvrHwcFrame* frame);
typedef uint32_t (*DvrHwcFrameGetColorModePtr)(DvrHwcFrame* frame);
typedef void (*DvrHwcFrameGetColorTransformPtr)(DvrHwcFrame* frame,
                                                float* out_matrix,
                                                int32_t* out_hint);
typedef uint32_t (*DvrHwcFrameGetPowerModePtr)(DvrHwcFrame* frame);
typedef uint32_t (*DvrHwcFrameGetVsyncEnabledPtr)(DvrHwcFrame* frame);
typedef AHardwareBuffer* (*DvrHwcFrameGetLayerBufferPtr)(DvrHwcFrame* frame,
                                                         size_t layer_index);
typedef int (*DvrHwcFrameGetLayerFencePtr)(DvrHwcFrame* frame,
@@ -175,6 +182,33 @@ typedef uint32_t (*DvrHwcFrameGetLayerTypePtr)(DvrHwcFrame* frame,
                                               size_t layer_index);
typedef uint32_t (*DvrHwcFrameGetLayerApplicationIdPtr)(DvrHwcFrame* frame,
                                                        size_t layer_index);
typedef uint32_t (*DvrHwcFrameGetLayerZOrderPtr)(DvrHwcFrame* frame,
                                                 size_t layer_index);

typedef void (*DvrHwcFrameGetLayerCursorPtr)(DvrHwcFrame* frame,
                                             size_t layer_index, int32_t* out_x,
                                             int32_t* out_y);

typedef uint32_t (*DvrHwcFrameGetLayerTransformPtr)(DvrHwcFrame* frame,
                                                    size_t layer_index);

typedef uint32_t (*DvrHwcFrameGetLayerDataspacePtr)(DvrHwcFrame* frame,
                                                    size_t layer_index);

typedef uint32_t (*DvrHwcFrameGetLayerColorPtr)(DvrHwcFrame* frame,
                                                size_t layer_index);

typedef uint32_t (*DvrHwcFrameGetLayerNumVisibleRegionsPtr)(DvrHwcFrame* frame,
                                                            size_t layer_index);
typedef DvrHwcRecti (*DvrHwcFrameGetLayerVisibleRegionPtr)(DvrHwcFrame* frame,
                                                           size_t layer_index,
                                                           size_t index);

typedef uint32_t (*DvrHwcFrameGetLayerNumDamagedRegionsPtr)(DvrHwcFrame* frame,
                                                            size_t layer_index);
typedef DvrHwcRecti (*DvrHwcFrameGetLayerDamagedRegionPtr)(DvrHwcFrame* frame,
                                                           size_t layer_index,
                                                           size_t index);

struct DvrApi_v1 {
  // Display manager client
@@ -261,6 +295,11 @@ struct DvrApi_v1 {
  DvrHwcFrameGetDisplayWidthPtr hwc_frame_get_display_width;
  DvrHwcFrameGetDisplayHeightPtr hwc_frame_get_display_height;
  DvrHwcFrameGetDisplayRemovedPtr hwc_frame_get_display_removed;
  DvrHwcFrameGetActiveConfigPtr hwc_frame_get_active_config;
  DvrHwcFrameGetColorModePtr hwc_frame_get_color_mode;
  DvrHwcFrameGetColorTransformPtr hwc_frame_get_color_transform;
  DvrHwcFrameGetPowerModePtr hwc_frame_get_power_mode;
  DvrHwcFrameGetVsyncEnabledPtr hwc_frame_get_vsync_enabled;
  DvrHwcFrameGetLayerCountPtr hwc_frame_get_layer_count;
  DvrHwcFrameGetLayerIdPtr hwc_frame_get_layer_id;
  DvrHwcFrameGetLayerBufferPtr hwc_frame_get_layer_buffer;
@@ -271,6 +310,17 @@ struct DvrApi_v1 {
  DvrHwcFrameGetLayerAlphaPtr hwc_frame_get_layer_alpha;
  DvrHwcFrameGetLayerTypePtr hwc_frame_get_layer_type;
  DvrHwcFrameGetLayerApplicationIdPtr hwc_frame_get_layer_application_id;
  DvrHwcFrameGetLayerZOrderPtr hwc_frame_get_layer_z_order;
  DvrHwcFrameGetLayerCursorPtr hwc_frame_get_layer_cursor;
  DvrHwcFrameGetLayerTransformPtr hwc_frame_get_layer_transform;
  DvrHwcFrameGetLayerDataspacePtr hwc_frame_get_layer_dataspace;
  DvrHwcFrameGetLayerColorPtr hwc_frame_get_layer_color;
  DvrHwcFrameGetLayerNumVisibleRegionsPtr
      hwc_frame_get_layer_num_visible_regions;
  DvrHwcFrameGetLayerVisibleRegionPtr hwc_frame_get_layer_visible_region;
  DvrHwcFrameGetLayerNumDamagedRegionsPtr
      hwc_frame_get_layer_num_damaged_regions;
  DvrHwcFrameGetLayerDamagedRegionPtr hwc_frame_get_layer_damaged_region;
};

int dvrGetApi(void* api, size_t struct_size, int version);
+27 −0
Original line number Diff line number Diff line
@@ -43,6 +43,13 @@ bool dvrHwcFrameGetDisplayRemoved(DvrHwcFrame* frame);
// @return Number of layers in the frame.
size_t dvrHwcFrameGetLayerCount(DvrHwcFrame* frame);

uint32_t dvrHwcFrameGetActiveConfig(DvrHwcFrame* frame);
uint32_t dvrHwcFrameGetColorMode(DvrHwcFrame* frame);
void dvrHwcFrameGetColorTransform(DvrHwcFrame* frame, float* out_matrix,
                                  int32_t* out_hint);
uint32_t dvrHwcFrameGetPowerMode(DvrHwcFrame* frame);
uint32_t dvrHwcFrameGetVsyncEnabled(DvrHwcFrame* frame);

DvrHwcLayer dvrHwcFrameGetLayerId(DvrHwcFrame* frame, size_t layer_index);

// Return the graphic buffer associated with the layer at |layer_index| in
@@ -73,6 +80,26 @@ uint32_t dvrHwcFrameGetLayerType(DvrHwcFrame* frame, size_t layer_index);
uint32_t dvrHwcFrameGetLayerApplicationId(DvrHwcFrame* frame,
                                          size_t layer_index);

uint32_t dvrHwcFrameGetLayerZOrder(DvrHwcFrame* frame, size_t layer_index);

void dvrHwcFrameGetLayerCursor(DvrHwcFrame* frame, size_t layer_index,
                               int32_t* out_x, int32_t* out_y);

uint32_t dvrHwcFrameGetLayerTransform(DvrHwcFrame* frame, size_t layer_index);

uint32_t dvrHwcFrameGetLayerDataspace(DvrHwcFrame* frame, size_t layer_index);

uint32_t dvrHwcFrameGetLayerColor(DvrHwcFrame* frame, size_t layer_index);

uint32_t dvrHwcFrameGetLayerNumVisibleRegions(DvrHwcFrame* frame,
                                              size_t layer_index);
DvrHwcRecti dvrHwcFrameGetLayerVisibleRegion(DvrHwcFrame* frame,
                                             size_t layer_index, size_t index);

uint32_t dvrHwcFrameGetLayerNumDamagedRegions(DvrHwcFrame* frame,
                                              size_t layer_index);
DvrHwcRecti dvrHwcFrameGetLayerDamagedRegion(DvrHwcFrame* frame,
                                             size_t layer_index, size_t index);
#ifdef __cplusplus
}  // extern "C"
#endif
+45 −0
Original line number Diff line number Diff line
@@ -28,6 +28,26 @@ status_t ParcelableComposerFrame::writeToParcel(Parcel* parcel) const {
  ret = parcel->writeBool(frame_.removed);
  if (ret != OK) return ret;

  ret = parcel->writeUint32(static_cast<uint32_t>(frame_.active_config));
  if (ret != OK) return ret;

  ret = parcel->writeUint32(static_cast<uint32_t>(frame_.color_mode));
  if (ret != OK) return ret;

  ret = parcel->writeUint32(static_cast<uint32_t>(frame_.power_mode));
  if (ret != OK) return ret;

  ret = parcel->writeUint32(static_cast<uint32_t>(frame_.vsync_enabled));
  if (ret != OK) return ret;

  ret = parcel->writeInt32(frame_.color_transform_hint);
  if (ret != OK) return ret;

  for(size_t i = 0; i < 16; i++) {
    ret = parcel->writeFloat(frame_.color_transform[i]);
    if (ret != OK) return ret;
  }

  std::vector<ParcelableComposerLayer> layers;
  for (size_t i = 0; i < frame_.layers.size(); ++i)
    layers.push_back(ParcelableComposerLayer(frame_.layers[i]));
@@ -50,6 +70,31 @@ status_t ParcelableComposerFrame::readFromParcel(const Parcel* parcel) {
  ret = parcel->readBool(&frame_.removed);
  if (ret != OK) return ret;

  uint32_t value;
  ret = parcel->readUint32(&value);
  if (ret != OK) return ret;
  frame_.active_config = static_cast<Config>(value);

  ret = parcel->readUint32(&value);
  if (ret != OK) return ret;
  frame_.color_mode = static_cast<ColorMode>(value);

  ret = parcel->readUint32(&value);
  if (ret != OK) return ret;
  frame_.power_mode = static_cast<IComposerClient::PowerMode>(value);

  ret = parcel->readUint32(&value);
  if (ret != OK) return ret;
  frame_.vsync_enabled = static_cast<IComposerClient::Vsync>(value);

  ret = parcel->readInt32(&frame_.color_transform_hint);
  if (ret != OK) return ret;

  for(size_t i = 0; i < 16; i++) {
    ret = parcel->readFloat(&frame_.color_transform[i]);
    if (ret != OK) return ret;
  }

  std::vector<ParcelableComposerLayer> layers;
  ret = parcel->readParcelableVector(&layers);
  if (ret != OK) return ret;
Loading