默认开启“停用HW叠加层”开关,强制GPU渲染

这篇具有很好参考价值的文章主要介绍了默认开启“停用HW叠加层”开关,强制GPU渲染。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android开发者模式的选项中有一项叫“停用HW叠加层”,这个选项使能之后,系统所有的UI合成都会全部强制GPU去完成,HWC不再参与合成,需求来源就是默认要使能该功能,即禁用HW叠加,具体实现如下:

diff --git a/src/com/android/settings/FallbackHome.java b/src/com/android/settings/FallbackHome.java
index e3944a65c6..5e7e0cae59 100644
--- a/src/com/android/settings/FallbackHome.java
+++ b/src/com/android/settings/FallbackHome.java
@@ -17,6 +17,7 @@
 package com.android.settings;
 
 import android.app.Activity;
+import android.app.AppGlobals;
 import android.app.WallpaperColors;
 import android.app.WallpaperManager;
 import android.app.WallpaperManager.OnColorsChangedListener;
@@ -25,7 +26,12 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.ResolveInfo;
+import android.content.pm.IPackageManager;
 import android.os.AsyncTask;
+import android.os.IBinder;
+import android.os.Parcel;
+import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -48,6 +54,13 @@ public class FallbackHome extends Activity {
     private boolean mProvisioned;
     private WallpaperManager mWallManager;
 
+    private static final int SETTING_VALUE_ON = 1;
+    private static final String SURFACE_FLINGER_SERVICE_KEY = "SurfaceFlinger";
+    private static final String SURFACE_COMPOSER_INTERFACE_KEY = "android.ui.ISurfaceComposer";
+    private static final int SURFACE_FLINGER_DISABLE_OVERLAYS_CODE = 1008;
+
+       private static IBinder mSurfaceFlinger;
+
     private final Runnable mProgressTimeoutRunnable = () -> {
         View v = getLayoutInflater().inflate(
                 R.layout.fallback_home_finishing_boot, null /* root */);
@@ -100,10 +113,36 @@ public class FallbackHome extends Activity {
         }
         getWindow().getDecorView().setSystemUiVisibility(flags);
 
+        if (mSurfaceFlinger == null) {
+            mSurfaceFlinger = ServiceManager.getService(SURFACE_FLINGER_SERVICE_KEY);
+        }
+
+        initHardwareOverlaysSetting(SETTING_VALUE_ON);
+
         registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_USER_UNLOCKED));
         maybeFinish();
     }
 
+    public void initHardwareOverlaysSetting(int val) {
+        if (mSurfaceFlinger == null) {
+            return;
+        }
+
+        IPackageManager pm = AppGlobals.getPackageManager();
+        // magic communication with surface flinger.
+        try {
+            if (pm.isFirstBoot()) {
+                final Parcel data = Parcel.obtain();
+                data.writeInterfaceToken(SURFACE_COMPOSER_INTERFACE_KEY);
+                data.writeInt(val);
+                mSurfaceFlinger.transact(SURFACE_FLINGER_DISABLE_OVERLAYS_CODE, data, null, 0 /* flags */);
+                data.recycle();
+            }
+        } catch (RemoteException ex) {
+            // intentional no-op
+        }
+    }
+
     @Override
     protected void onResume() {
         super.onResume();

因为开机默认状态,不会加载开发者模式的页面,因此在开发者模式的控制类是无法修改默认的,只能在开机必走的阶段执行使能,这里我选择的是FallbackHome这个类,每次在launcher启动之前都会调用这里,故选择该类。

编译验证,刷机即可发现在开发者选项中,该项值已经默认打开了。文章来源地址https://www.toymoban.com/news/detail-506564.html

到了这里,关于默认开启“停用HW叠加层”开关,强制GPU渲染的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity】渲染性能开挂GPU Animation, 动画渲染合批GPU Instance

    博文介绍了最基本的实现原理,有些老板懒得折腾,所以特意熬了几个秃头的夜把RVO、BRG、GPU动画、海量物体目标搜索等高度封装成了开箱即用的插件。 划重点!!此方案是绕开Entities(ECS),不用写一行ECS代码,现有MonoBehavior开发工作流享受Entities渲染的性能。已有项目也能使

    2024年02月05日
    浏览(47)
  • 如何正确选择集体渲染(云渲染)和gpu离线渲染

    在数字娱乐领域,渲染是制作高质量影像的关键步骤之一。随着技术的不断发展和应用的广泛普及,渲染方式也在不断演进。目前,集体渲染(云渲染)和GPU离线渲染是两种比较流行的渲染方式。那么,哪种方式会更快呢?下面,我们来详细分析一下。 集体渲染(云渲染)

    2023年04月25日
    浏览(36)
  • Unity实现GPU Cull渲染

    开放世界游戏中植被和物件的数量往往是巨大,  而传统组织大量植被渲染的方式是利用QuadTree/Octree/Kd-Tree等数据结构对植被Intance数据进行预先生成一个个Cluster,然后在运行时进行FrustumCull,收集可视的所有Cluster,最后进行DrawInstance. 这种方式往往存在两个缺点:  [1]Cluster粒度和

    2024年02月07日
    浏览(35)
  • 【Unity】GPU骨骼 GPU Spine动画 2D/3D渲染性能开挂 合批渲染 支持武器挂载 动画事件 动画融合 实时获取骨骼位置

     GPU 3D骨骼动画和 GPU 2D Spine动画插件均包含在【万人同屏整合方案】中,老板们可在某宝搜:[游戏开发资源商店] 以获取全套方案的所有源码插件。   万人同屏渲染避障锁敌方案实现对抗战斗demo 展示GPU动画高级功能 动画事件 动画平滑过渡 融合   插件功能: 1. 支持3D动画

    2024年02月22日
    浏览(46)
  • python运行使用gpu运算【python基础】python开启GPU加速

    1.首先需要确认是否成功安装cuda,代码见图一;打印结果如图二所示。  图一   图二  2.如果未安装成功可以自行搜索,不麻烦;安装成功后需要分三步设置使用GPU,以简单的softmax分类器为例: a.导入os模块 b.将模型放进GPU中运算。  c.更改训练、测试两个步骤,使用GPU运算

    2024年02月16日
    浏览(40)
  • Android13 网络 Adb 默认开启

    通过代码分析发现Android13 上对 网络adb 进行了限制! Android13原生代码要求:必现连接上某个wifi,才能进行adb ,并且切换wifi或者关闭wifi都是会停止adb。 如果要做成Android11 或者之前一样,设备连接WiFi/有线网络后电脑可以直接进行adb连接,就要对系统代码进行适配修改。 之前

    2024年02月12日
    浏览(42)
  • 支持C4D的GPU云渲染平台有哪些?

    目前国内支持GPU云渲染的农场较多,但能“稳定支持”的农场相对较少,还是受限于技术稳定性。 ​ 国内支持GPU云渲染的几家大平台分别是:瑞云、炫云、渲云、蓝海创意云、renderG、渲染101; 稳定支持的渲染农场,以软件C4D+OC为例,仅瑞云、炫云和渲染101平台了! 关于计

    2024年02月19日
    浏览(43)
  • Centos7安装docker后默认开启docker0的网卡|卸载默认网卡

                         docker实战(一):centos7 yum安装docker docker实战(二):基础命令篇 docker实战(三):docker网络模式(超详细) docker实战(四):docker架构原理 docker实战(五):docker镜像及仓库配置 docker实战(六):docker 网络及数据卷设置 docker实战(七):docker 性质及版本选择 认知升维: 道、法、

    2024年02月12日
    浏览(45)
  • 谷歌云开启GPU算力狂飙,驱动AIGC时代加速到来

    ‍数据智能产业创新服务媒体 ——聚焦数智 · 改变商业 随着人工智能的飞速发展,尤其是大型AI模型、AIGC的崛起,对AI算力产生了巨大的需求。以GPU为核心的算力供给,已经成为大模型、AIGC乃至整个智能产业发展的关键基础设施。因此,对于有志于在大模型产业掘金的企业

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包