简而言之,硬件加速就是利用硬件模块来替代软件算法以充分利用硬件所固有的快速特性。
硬件解码生效的时候,系统是怎么运转的呢?现在我们有两个处理器,CPU1和GPU2。他们通过PCI/AGP/PCIE总线交换数据。
1。CPU1从文件系统里读出原始数据(DirectSHow的源滤镜),分离出压缩的视频数据(分离器)。放在系统内存中。 GPU2发呆
2。CPU1把压缩视频数据交给GPU2, 这时总线上开始忙了,压缩数据从系统内存拷贝到显卡上的显存里。
3. CPU2要求GPU1开始硬件解码,现在CPU2进入发呆期,GPU1开始忙。当然CPU2会定期查询一下GPU1忙的怎么样了。
4。GPU1开始用自己的电路解码视频数据(已经在显存里了),解压后的数据还是放在显存里面。CPU2继续发呆。
5. 视频数据刚解码完成以后还不能立刻拿去显示,因为还需要后期处理,如deinterlace, 3:2pulldown,等等。GPU1再用自己的后期处理电路来进行处理。CPU2还是发呆
6。后期处理以后的未压缩数据拿去显示到屏幕上, GPU1再开始忙视频的缩放,亮度,gamma等事情。CPU2还是闲
7. GPU1终于忙完了,下面的视频数据在哪里?通知CPU2,GPU1先歇会。 CPU2又开始忙了,回到第1步。
上面可以看到,硬件解码生效的时候,CPU2真的可以很闲,但是为了让它生效,有些条件必须满足。最关键的原因是,与CPu1->系统内存和GPU2->显卡显存比起来,PCI、AGP、PCIE总线是龟速。PCI是133MB/S, AGP8X是2.1GB/S, PCIE16X是4GB/S, 而CPU1-系统内存,GPU2-显存则快若干倍。有兴趣的可以把不同时代的内存总线和AGP/PCIE总线速度进行一下对比。因为CPU1和GPU2互连的总线很慢,因此,视频数据(无论是解压前还是解压后)一旦交给GPU1,GPU2就要负责把它处理完,直到最终显示。
如果在前面1-5步里有哪一步GPU1不能做或你不让它做,视频硬件解码就不生效,CPU2要负责。
当然,你可能会问,也许CPU1很慢,说不定在龟速总线上传输数据,GPU2分担一部分工作,还是比全部CPU做要快呢? 也许如此,但在Directshow架构里,代表视频数据处理各环节的滤镜(分离器,解码器,后期处理,渲染器)需要协商出一个大家都接受的视频数据存储方式,如果某个滤镜说我只能在系统内存里玩,大家都得要在内存里玩,GPU1和显存只好放弃。
3D硬件加速是什么意思
我们看到的画面就不那么舒服了……)马赛克现象没有了,贴图更细致,连衣服的褶皱和皮肤的细部都表现完美。这些都是拜3D硬件加速所赐
现在一般的显卡都支持,下载安装一个显卡驱动就可以了