GPU指令下发方式

1:概述

GPU接收CPU发送的渲染命令,执行相应的计算,渲染命令在CPU和GPU之间传递,由CPU发送给GPU。AMD的GPU有两种命令发送方式,第一种是CPU通过直接写GPU的寄存器,发送相应的渲染命令,对于GPU来说,这种方式是CPU将命令push给自己,然后开始工作,被称为push模式;第二种是系统初始化时CPU在主存上分配一块内存,用作存放GPU的渲染命令,当CPU有渲染需求时就往这块内存写命令并通知GPU读取,这种方式对GPU来说,需要主动去主存上把渲染命令pull过来,然后开始工作,被称为pull模式。通常情况下AMD都建议使用pull模式,只有系统内存不适合pull模式时采用push模式。本文分析的是pull模式,这是linux AMD GPU驱动的工作方式。

2:相关buffer

GPU下有两种buffer: ring buffer, indirect buffer。

  • ring buffer:存放写寄存器的命令
  • indirect buffer:存放渲染的命令

3:两者关系

当上层应用要传递渲染命令时,会在ring buffer中先放两条写寄存器命令,一个向gpu的IP BASE寄存器中写入indirect buffer 的地址。另一个是向buffer size寄存器中写入大小。这样就会触发GPU去BASE寄存器所指向的位置去取渲染指令执行,直到size大小。 如果在第一个indirect buffer最后又是向BASE寄存器写入地址,SIZE寄存器写入大小。那么GPU会继续执行BASE指向的另一块indirect buffer。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值