硬件加速

OpenGL中 Canvas 性能分析

此生再无相见时 提交于 2020-04-06 02:02:44
本文将通过分析部分源码,描述 Android 里面的 Canvas 的大致实现。并且会对 Canvas 的性能做一定分析,提供对 Canvas 的使用建议。 GLES20RecordingCanvas 类 这个类是什么?为什么我从没用过? 我们来看看它的代码: class GLES20RecordingCanvas extends GLES20Canvas { ... } class GLES20Canvas extends HardwareCanvas { ... } public abstract class HardwareCanvas extends Canvas { ... } 它是不暴露给开发者的,所以我们也使用不了它。 而由 extends Canvas 可见,它是 Canvas 的一个实现类,所以应当也提供和 Canvas 一样的功能。那么它在哪里被使用了呢? 它是在 Android framework 源码处的,我们可以自定义一个 view,在 debug 时,断点到 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); } 就可以看到这个 canvas 的实例是 GLES21RecordingCanvas 了。 也就是说,几乎 Android 的所有 View

GPU硬件加速原理 /转

本小妞迷上赌 提交于 2020-04-04 07:49:43
现代浏览器大都可以利用GPU来加速页面渲染。每个人都痴迷于60桢每秒的顺滑动画。在GPU的众多特性之中,它可以存储一定数量的纹理(一个矩形的像素点集合)并且高效地操作这些纹理(比如进行特定的移动、缩放和旋转操作)。这些特性在实现一个流畅的动画时特别有用。浏览器不会在动画的每一帧都绘制一次,而是生成DOM元素的快照,并作为GPU纹理(也被叫做层)存储起来。之后浏览器只需要告诉GPU去转换指定的纹理来实现DOM元素的动画效果。这就叫做 GPU合成 ,也经常被称这种借助于显卡的优势改变渲染操作:通常被笼统的称为“硬件加速(hardware acceleration)”。 “注”:fps:帧/秒(frames per second)的缩写,也称为帧速率。是指1秒钟时间里刷新的图片的帧数 GPU(Graphic Processing Unit,图形处理器)。GPU是相对于CPU的一个概念,由于在现代的计算机中图形的处理变得越来越重要,需要一个专门的图形的核心处理器。在浏览器中用css开启硬件加速,使GPU发挥功能。CSS animations, transforms 以及 transitions 不会自动开启GPU加速,而是由浏览器的缓慢的软件渲染引擎来执行。那我们怎样才可以切换到GPU模式呢,很多浏览器提供了某些触发的CSS规则。现在,像Chrome, FireFox, Safari,

Android 开发大坑汇总(持续更新)

≡放荡痞女 提交于 2020-03-02 09:17:05
android开发大坑汇总 1.EditText --> gravity与hint冲突 表现在2.X版本当在EditText设置android:gravity="center"属性后,android:hint会无效。 解决办法:再添加android:ellipsize="start"就会好了。 感觉:很无厘头的大坑,记住吧!要不旧机子就只有显示不出来的份。 2.DatePickerDialog --> 时间超过最大值变为最小时间时显示出错。 解决办法:暂无 感觉:这个控件的bug一直存在,很多应用用这个控件。。 3. 小米部分机型(例如:小米NOTE PRO, 固件:5.1.1 LMY47V)。禁用WebView的硬件加速,会导致部分web动画长时间不结束。影响用户使用。解决方式:开启硬件加速! android:hardwareAccelerated="true" 4. static 变量(静态变量)被回收。 类的static变量会在内存少的时候类被回收后重置。 比如 static String cookies==‘xxxxxxxx’;回收后,cookies会被初始化为原始值。 360的清理内存会触发此操作。 Application中的static变量稍微耐久一些,360的清理内存不会导致static变量初始化。 但是小米的清理进程会导致Application完全关闭。 5.

为什么需要硬件加速来验证深度学习设计?

别来无恙 提交于 2020-01-16 00:43:36
介绍 毫无疑问,计算机已经彻底改变了我们的生活。尽管如此,在完成复杂的任务(诸如在几乎不需花费时间的情况下解决复杂的数学方程之类)时,计算机的性能远远优于人类;但在解决人类可以轻松完成的任务(例如图像识别)时,它们的性能可能会不如人类。世界上任何人都可以立即识别出猫的照片,但世界上最强大的PC可能需要几个小时才能得到相同的答案。 该问题属于传统的控制处理单元(CPU) 冯·诺伊曼结构(Von Neuman architecture) 。该存储程序计算机旨在克服早期计算机的不灵活性,这些计算机被硬连线地执行一项任务,而存储程序计算机(归功于冯·诺伊曼)则获得了执行任何程序的灵活性,但其是以降低性能为代价的。 存储程序计算机的局限性,再加上可用于分析的数据的有限和执行分析的算法的不足,导致人工智能(AI)及其深度学习(DL)的子类的实现延迟了数十年。 转折点出现在本世纪初,自那时起,通过DL识别图像的能力中的计算误差已开始减少,并在2015年超越了人的能力,如图1所示。图像识别中的人为误差略有增加,高于5%。如今, DL在图像和视频识别领域已获得广泛成功。 图1-多年来,计算机在解决人类可以轻松解决的问题方面表现不佳。(来源:维基百科) 卷积神经网络(CNN) 深度学习(DL)是建立在卷积神经网络(CNN)上的。CNN是类似于大脑神经元网络的人工神经网络

CEF 设置:禁用 GPU 硬件加速

随声附和 提交于 2020-01-14 08:59:21
在高分辨率下, 如果设置了系统-显示-缩放级别(例如设置为200%缩放级别)的情况下, CEF 49版本(高版本未测试是否有这个问题)会出现黑边、黑屏的情况, 这时候需要禁用gpu加速,有两种方式, 第一种是在程序快捷方式中加command-line flag: --disable-gpu --disable-gpu-compositing, reference: https://bitbucket.org/chromiumembedded/cef/issues/1480/off-screen-rendering-problem-on-windows-7 clickonce发布的程序无法设置快捷方式,所以: 第二种:在代码中设置: var settings = new CefSettings(); //NOTE: The following function will set all three params //settings.SetOffScreenRenderingBestPerformanceArgs(); settings.CefCommandLineArgs.Add("disable-gpu", "1"); settings.CefCommandLineArgs.Add("disable-gpu-compositing", "1"); settings

解决:Bitmap too large to be uploaded into a texture

前提是你 提交于 2020-01-07 17:45:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 简单说就是硬件加速的时候,对图片的大小有限制。不同设备可能有不同的最大值。这个问题悲催的地方是,程序貌似没有捕获到这个exception, 结果是程序也不报错,图片也显示不出来。只有看debug log才能发现这个error message. 一个解决的方法是禁止硬件加速,简单粗暴:有关 <application android:hardwareAccelerated="false" ...> 比较好的解决方法是类似google map的实现:将图片分成不同的块,每次加载需要的块。android提供了一个方法:( http://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html ) public void drawBitmap (Bitmap bitmap, Rect src, RectF dst, Paint paint) public Bitmap decodeRegion (Rect rect, BitmapFactory.Options options) 采取上述操作后,就可以加载很多图片,同时也可以显示超级大图了。 来源: oschina 链接: https://my.oschina.net/u

Android 加载大图问题

为君一笑 提交于 2020-01-07 07:15:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 关于如何加载大图片及其原理,可以参考: Android 高清加载巨图方案 拒绝压缩图片 以及开源项目 LargeImage ,第一次使用的时候能正常显示,但后来却无法显示(图片替换了),也没显示错误,查看bug,有一个信息: IllegalArgumentException: rectangle is not inside the image,不过不要被这条信息蒙蔽了,你在进行调试的时候,你会发现其实并未真正的超出范围,但还是输出这样的结果。当时屏幕是可以滑动的(无法显示图片,但图片高度还是填充了界面中的scrollview),此刻发现log会一直警告: Bitmap too large to be uploaded into a texture (440x6405, max=4096x4096) 由此就真相大白了,原来是因为当开启硬件加速的时候,GPU对于openglRender 有一个限制,这个不同的手机会有不同的限制: 这个限制值可以通过canvas.getMaximumBitmapHeight()和canvas.getMaximumBitmapWidth()来获得。 解决方案有两条: http://blog.csdn.net/ta893115871/article/details/9043559 1

盒子端 CSS 动画性能提升研究

最后都变了- 提交于 2020-01-04 03:37:30
不同于传统的 PC Web 或者是移动 WEB,在腾讯视频客厅盒子端,接大屏显示器(电视)下,许多能流畅运行于 PC 端、移动端的 Web 动画,受限于硬件水平,在盒子端的表现的往往不尽如人意。 基于此,对于 Web 动画的性能问题,仅仅停留在感觉已经优化的OK之上,是不够的,想要在盒子端跑出高性能接近 60 FPS 的流畅动画,就必须要刨根问底,深挖每一处可以提升的方法。 流畅动画的标准 理论上说,FPS 越高,动画会越流畅,目前大多数设备的屏幕刷新率为 60 次/秒,所以通常来讲 FPS 为 60frame/s 时动画效果最好,也就是每帧的消耗时间为 16.67ms。 直观感受,不同帧率的体验 帧率能够达到 50 ~ 60 FPS 的动画将会相当流畅,让人倍感舒适; 帧率在 30 ~ 50 FPS 之间的动画,因各人敏感程度不同,舒适度因人而异; 帧率在 30 FPS 以下的动画,让人感觉到明显的卡顿和不适感; 帧率波动很大的动画,亦会使人感觉到卡顿。 盒子端动画优化 在腾讯视频客厅盒子端,Web 动画未进行优化之前,一些复杂动画的帧率仅有 10 ~ 30 FPS,卡顿感非常明显,带来很不好的用户体验。 而进行优化之后,能将 10 ~ 30 FPS的动画优化至 30 ~ 60 FPS,虽然不算优化到最完美,但是当前盒子硬件的条件下,已经算是非常大的进步。 盒子端 Web

Android 硬件加速(Hardware acceleration)

一世执手 提交于 2020-01-04 02:19:41
原文出处: http://www.ccbu.cc/android/android-hardware-acceleration 硬件加速 Android 3.0 (API level 11), 开始支持 所有的View 的canvas都会使用GPU,但是硬件的加速会占有一定的RAM。 在API >= 14上,默认是开启的,如果你的应用只是标准的View和Drawable,全局都打开硬件加速,是不会有任何问题的。 然而,硬件加速并不支持所有的2D画图的操作,这时开着它,可能会影响到你的自定义控件或者绘画,出现异常等行为, 所以android对于硬件加速提供了可选性 如果你的应用执行了自定义的绘画,可以通过在真机上测试开启硬件加速查找问题 硬件加速的级别 Application < application android: hardwareAccelerated = " false " ... > </ application > Activity < application android: hardwareAccelerated = " true " > < activity ... /> < activity android: hardwareAccelerated = " false " /> </ application > Window getWindow ( ) .

彻底解决 Canvas 引起的 java.lang.unsupported operation exception, android.view.GLES20Canvas.clipPath(GLES20Canvas异常

泄露秘密 提交于 2019-12-31 23:52:33
======= 7 Failure [INSTALL_FAILED_INVALID_APK] 执行 adb install - r test . apk。 时出现错误 Failure [ INSTALL_FAILED_INVALID_APK ] 可能是apk的签名出现问题,这个在之前遇到过,需要给apk签名 今天安装多个apk都是出现这个错误,遂关闭系统对签名的检测 方法:修改 /system/build.prop 文件。 将 ro . install . 3rd _cert = true 修改为 ro . install . 3rd _cert = false 重启设备就可以安装apk了 =========6   安装失败:INSTALL_FAILED_VERIFICATION_FAILURE? Install_failed_verifcation_failure?     你必须允许未签名的应用。安装被Android。允许设置非市场的应用程序安装。 =========5    关于魅族MX3无法弹出Toast的问题     设置->应用->你的应用,里面有一个显示通知的选项,打上勾,应该就可以了,你试一下 ========== 4.3 Segmentation fault 问题浅谈 今天调试程序时遇到了一个问题,当我用GDB调试程序时出现了Segmentation fault