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往外写一次 真麻烦
  • 相关阅读:
    使用java中的注解@see
    MacOS软件默认安装路径
    学习MACD指标
    go CD 用虚拟机快速增加一个新agent
    git推送本地分支到远程分支
    git如何切换远程仓库
    git命令查看远程分支
    Java 学习札记(一)JDK安装配置
    Oracle 基本操作符
    C# 常用控件属性及方法介绍
  • 原文地址:https://www.cnblogs.com/minggoddess/p/10896502.html
Copyright © 2011-2022 走看看