谈一谈AGP
typedef enum D3DPOOL { D3DPOOL_DEFAULT = 0, D3DPOOL_MANAGED = 1, D3DPOOL_SYSTEMMEM = 2, D3DPOOL_SCRATCH = 3, D3DPOOL_FORCE_DWORD = 0x7fffffff } D3DPOOL, *LPD3DPOOL; |
D3DPOOL_DEFAULT
在"显存(video memory)"中,包括"本地显存(local video memory)"和"AGP内存",表明资源将按照"设备访问(Device Acess)",这里设备指显卡。
D3DPOOL_MANAGED
当需要时自动拷贝到显卡可直接访问的内存中(device-accessible memory),在设备丢失时不需要重建.
D3DPOOL_SYSTEMMEM
资源位于系统内存中,不能直接被设备访问.会消耗系统内存,而非可分页内存.
D3DPOOL_SCRATCH
占用系统内存,但是格式什么的都无限制.
D3DPOOL_FORCE_DWORD
凑数的,没实际用途.
什么是本地显存?什么是AGP内存?
本地显存是指显卡本身的内存,物理上在显卡上.AGP实际是一块特殊的系统内存区域,位于主板上.这段区域是CPU和GPU共享资源区,CPU写入快读取慢,GPU读取很快,但是没有直接读取本地显存快.
AGP如何工作?
AGP的全称是"加速图形接口Accelerated Graphics Port".专门用于电脑和显卡通讯.1996年intel把它带入公众视野,之前使用的是PCI总线(Peripheral Component Interconnect bus).PCI总线是条用于显卡向CPU传输信息的通路.但是PCI不是独占的,其他设备也使用PCI向CPU发送信息,当所有外围设备都通过PCI向CPU发信息后,就需要等候CPU一条条的执行.于是瓶颈诞生了.AGP是基于PCI设计的,但是不是一个总线,是基于点对点的GPU和CPU通讯,这就极大加速了复杂图形显示时信息传输瓶颈.
AGP是如何加速图形渲染的呢?
专用的端口:显卡可以完全占用这条数据路线,解决了数据阻塞的问题.
流水线处理: AGP使GPU在接收到渲染图形的信息后,请求所有所需信息并一次性发送渲染指令.而回到PCI时代,情况会变成:显卡收到图像的高,等待...显卡收到图像的宽,等待...最后收到所有信息,发送渲染指令.
边带寻址: 发送信息需要From和To,PCI是把这个信息同工作数据打包在一起.为了辨明这个信息,就需要拆包解析,进而导致占用时间和空间.AGP会为每个工作数据包加上明确的寻址信息.省去了PCI需要消耗的时间.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?