RK3288 android7.1 异形屏修改补丁

0.dts中配置1920x1080的分辨率
1.build.prop添加下面属性:
persist.sys.framebuffer.main=1920x600@60  
2.hardware/rockchip/hwcomposer合入下面修改:

diff --git a/hwcomposer.cpp b/hwcomposer.cpp
index 0fd2177..3ad13a9 100755
--- a/hwcomposer.cpp
+++ b/hwcomposer.cpp
@@ -3498,8 +3498,10 @@ static int hwc_get_display_configs(struct hwc_composer_device_1 *dev,

   char framebuffer_size[PROPERTY_VALUE_MAX];
   uint32_t width = 0, height = 0 , vrefresh = 0 ;
+  if (display == HWC_DISPLAY_PRIMARY)
   property_get("persist.sys.framebuffer.main", framebuffer_size, "use_baseparameter");
-
+  else if(display == HWC_DISPLAY_EXTERNAL)
+  property_get("persist.sys.framebuffer.aux", framebuffer_size, "use_baseparameter");
   /*
    * if unset framebuffer_size, get it from baseparameter , by libin
    */

@@ -2298,7 +2301,8 @@ static int hwc_prepare(hwc_composer_device_1_t *dev, size_t num_displays,
     hd->rel_yres = mode.v_display();
     hd->v_total = mode.v_total();
     hd->w_scale = (float)mode.h_display() / hd->framebuffer_width;
-    hd->h_scale = (float)mode.v_display() / hd->framebuffer_height;
+    //hd->h_scale = (float)mode.v_display() / hd->framebuffer_height;
+    hd->h_scale = 1.0;
     int fbSize = hd->framebuffer_width * hd->framebuffer_height;
     //get plane size for display
     std::vector& plane_groups = ctx->drm.GetPlaneGroups();
@@ -3638,7 +3647,8 @@ static int hwc_set_active_config(struct hwc_composer_device_1 *dev, int display,
     return -ENOENT;
   }
   hd->w_scale = (float)mode.h_display() / hd->framebuffer_width;
-  hd->h_scale = (float)mode.v_display() / hd->framebuffer_height;
+  //hd->h_scale = (float)mode.v_display() / hd->framebuffer_height;
+  hd->h_scale = 1.0;

   c->set_current_mode(mode);
   ctx->drm.UpdateDisplayRoute();

 

 

RK3288 android7.1 异形屏修改补丁_第1张图片

你可能感兴趣的:(Rockchip)