有關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