天天看點

tbdr+mrt

有關mrt的在tbdr的架構下的記憶體排布

system memory肯定是dither 我對這裡把握比較大

rt0 rgba8 rt1 r8

這樣像素排列是rgba8r8rgba8r8rgba8r8.......

在tile上我傾向也是這麼排的

是以如果rt多了 也會像msaa一樣 增加tile數量

但是這個事情有個上限 比如powervr sgx5 是256bits(大概) 多了它就會system local來回倒騰了

然後如果解綁rt1

tile上的mem需要變成rgba8rgba8....是以。。會觸發一次system到local mem的copy

so 這裡有帶寬

去掉的方法是用programmable blending

這個擴充 ogl 和metal都有相應功能

可以拿到前一次drawcall的像素 其實是tile mem上的像素内容

這樣 對于一類問題

一個rt即使srv又是rtv這類問題很有幫助

這樣就不需要解綁或者copy了

但是 這個擴充隻能處理目前pixel的曆史像素内容 

拿不到隔壁像素 是以那些uv有offset的都略尴尬

是以這個方案隻能解決depth作為srv的事情 reflection和distorsion需要另想解決方案

 ============

上文中的refs沒标

mark一篇還沒看的 mali

https://community.arm.com/developer/tools-software/graphics/b/blog/posts/the-mali-gpu-an-abstract-machine-part-1---frame-pipelining

openglinsight 

realtime rendering 4

和siggraph 的advances in realtime rendering  啥時候看啊。。啊啊。

 https://developer.qualcomm.com/qfile/28557/80-nu141-1_b_adreno_opengl_es_developer_guide.pdf  mali adreno... -------------------------------------------- tbdr 上解綁一張mrt會導緻一次system 到local的 flush增加帶寬 解決方案 用frame buffer fetch 這個擴充在es3.0之後是在tile上做的 可以省掉這次帶寬 就是frame buffer fetch depth stencil這個擴充 隻在arm上目前沒看到别的平台 這樣别的平台的depth還要用mrt往外寫一次 真麻煩

轉載于:https://www.cnblogs.com/minggoddess/p/10896502.html