六合一的含义:
六合一,是将模拟器已知的六种渲染方式合体在一个apk中,通过选择渲染方式,由apk自动完成渲染方式切换的一个魔改apk。
六合一前身是三合一。
常心魔改的那个apk,可以看成是,渲染方式二合一。
六合一主要问题:
那个mcat服务,只能开服务,在退出模拟器前,不能正常关闭。导致vtest_llvmpipe与vtest_zink_turnip互切时,是需要选好渲染方式后,关闭一下apk才能完成切换的。
次要问题:
只改了4次,还有一些其它不明显的问题。
六合一的优势:
apk肯定会按这个方式走(事实也是如此)。尤其是完成了多wine切换(实现了不需要频繁更换不同wine版本的数据包,但不需要集成过多wine版本,有主要特征的是w30(即模拟器前官方整过的wine3.0-gl-dsound。需要懂编译wine,改一下原安装路径,不然和现在多wine共存的方式有冲突。),w6(602到604稳定版为佳),和w7(713到715为佳),自定义分辨率(作用不大,悬浮窗全屏主要用的就是高720或1080的分辨率。加上804,624,有主要作用的就是原来基础上加五个。能自定义会更好些)。
免设置pulse客户端(如11楼所示,选一下即可完成设置)。
免设置VTEST_WIN=1(如11楼所示,选一下即可完成设置)。
数据包:能够和具有上述功能的魔改apk搭配的数据包,完善的,并不会特别大。是能够结束版本众多混乱(其实是数据包众多,并不是有很多版本,主要是出现t+z,使得数据包出现了分类,选错数据包会什么也打不开,llvmpipe也用不了。),完成大一统的apk。和其搭配完善的数据包,在后面会占主流,直到模拟器玩完。
已知的六类渲染方式解释:
先说一下,一些名词的含义。
i386:模拟器模拟底层系统是u18,u16,u14之类的i386的ubuntu系统。
llvmpipe:一种用到了llvm的软渲染方式,在llvm的帮助下,其帧数远大于softpipe。是软渲染方式中的主流方式。
vtest:virgl_test_server的简称。是virgl的服务端服务。
virgl:virtual opengl的简称。全virtual OpenGL renderer,简称virglrenderer,和virgl同一个意思。
virtio gpu:virglrenderer的客户端。所有vtest转接的渲染方式,它的客户端都是virtio gpu。
zink:一个mesa的驱动编译参数,能够将opengl转化为vulkan。
turnip:mesa上面的一个高通驱动项目名称。目前仅支持部分高通gpu六。
mesa:一个由保罗最先发起的民间组织,专门逆推高通,mtk等的驱动,上面有大量逆推出来的非官方源码。
没有以上基础,是不能理解六合一合的是什么的。
第一个,
基于i386系统上的llvmpipe。有mesa1739,2034,等经典版本。
第二个
vtest_llvmpipe。意即通过vtest服务转接的llvmpipe软渲染,简称vtest_llvmpipe。最早起于Grima04的apk,其服务端是aarch64的linux系统,mesa可以是自带的或编译成的llvmpipe。因为它的服务端系统是aarch64,没有系统造成的帧数损失,虽然仍然是llvmpipe软渲染,相对于前面的i386系统上的llvmpipe却有较大幅度的帧数提升。茶壶的立体贴图帧数稳定是原来i386的两倍,球面贴图则16色才有两倍提升,32色只有15%到20%左右。
第三个
vtest_zink_turnip。意即通过vtest服务转接,用到了zink和turnip的一种渲染方式。因为turnip只支持部分高通gpu6的手机,所以这个渲染方式不是什么手机都能用的。
第四个
xlib_zink_turnip。mesa的glx参数更改为xlib,直接在i386系统上,通过zink和turnip调用手机gpu的一种渲染方式,简称xlib_zink_turnip。始于Grima04的mesa-zink-xlib。由alexrovxx解决了一些问题后,成功在xlib上弄出了可以被wine调用的zink_turnip。最初参数是gallium_xlib。在2021年12月03号,gallium_xlib与xlib合并,之后gallium_xlib参数消失,取而代之的是xlib。和第三个渲染方式,同为t+z,都支持部分高通gpu6的手机。直接在i386上调动gpu,少了一层转接,有着更高的帧数。但是因为xlib的驱动有一些无法解决的问题(参考gfoxsh的1739生成说明和llvmpipe),vtest_zink_turnip有时候还是需要用到的。