HardwareBuffer 的 shadow buffer

HardwareBuffer在使用shadow buffer时,会在内存中创建一个镜像,用于动态或静态读写的场景。当需要读写时,操作的是内存中的shadow buffer,而非硬件buffer本身。在最后的unlock阶段,会将shadow buffer的内容同步到硬件buffer。尽管内存中已经有了buffer,但依然使用`HardwareBuffer* mpShadowBuffer;`来表示,可能是为了逻辑一致性,尽管这可能导致理解上的混淆。
AI助手已提取文章相关产品:

shadow buffer

从字面上理解影子缓冲?e文不好理解不能。。

 

仔细看代码,HardwareBuffer在构造的时候有这么一句

 

 

当要对buffer进行读写操作的时候,如果使用shadow buffer, 将对内存中的shadow buffer进行读写, 硬件部分的buffer将声明为 write only。修改完后写入硬件的buffer。(注意一下这里有个限制就是只有当buffer为动态的才这么做)

 

 也就是说shadow buffer 只不过是当前hardware buffer的一个内存中的镜像。

 

 

在最终unlock的时候 会将shadowbuffer的内容更新到hardwarebuffer上

 

有一点疑问就是:

虽然两者在逻辑操作上没有什么不同,不过明明是内存上的buffer却要写成

HardwareBuffer* mpShadowBuffer;

其实是偷懒吧!XD

 

 

               ┌─ HardwareBuffer

Buffer─┤

               └─ MemoryBuffer

MemoryBuffer* mpShadowBuffer;

这种结构从理解上感觉要好一点,不过MemoryBuffer明显要和别的地方的理解产生冲突。因为在内存里是不存在lock unlock操作的。

 

 

所以最终结论是:

HardwareBuffer* mpShadowBuffer;

这样写也能接受T_T。。。。。(这么快就屈服了。。

 

您可能感兴趣的与本文相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值