zoukankan      html  css  js  c++  java
  • 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往外写一次 真麻烦
  • 相关阅读:
    uva 11729 Commando War
    剑指offer 38 数字在排序数组中出现的次数
    剑指offer 35 第一个只出现一次的字符
    剑指offer 33 把数组排成最小的数
    剑指offer17 合并两个排序的链表
    跳台阶
    app上线
    剑指offer54 表示数值的字符串
    剑指offer49 把字符串转换成整数
    段错误
  • 原文地址:https://www.cnblogs.com/minggoddess/p/10896502.html
Copyright © 2011-2022 走看看