TBDR下msaa 在metal vulkan和ogles的解决方案
https://developer.arm.com/solutions/graphics/developer-guides/understanding-render-passes/multi-sample-anti-aliasing
msaa在local mem上做很省但是 带宽不处理多出8x 对于4xmsaa
计算如下
处理前
python
bytesPerFrame4x = 2560 * 1440 * 4 * 4
bytesPerFrame1x = 2560 * 1440 * 4 * 1 # Additional 4x bandwidth is doubled because the additional samples
# are written by one pass and then re-read to resolve the final color
bytesPerFrame = ((bytesPerFrame4x * 2) + bytesPerFrame1x)
bytesPerSecond = bytesPerFrame * 60
= 7.9 GB/s
处理后
python
bytesPerFrame1x = 2560 * 1440 * 4 * 1 # All additional 4x bandwidth is kept entirely inside the tile memory
bytesPerSecond = bytesPerFrame1x * 60
= 884 MB/s
处理的方法就是load store action选一共1x那种
vulkan和metal都可以这样处理 之前有发blog
https://www.cnblogs.com/minggoddess/p/10950349.html
vulkan还要用
using VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT and constructing the VkImage with VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT.做memoryless
metal直接设置memoryless
对于
ogles
用如下扩展
[EXT_multisampled_render_to_texture][EXT_msaa] extension
https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture.txt
This extension introduces functionality to perform multisampled
rendering to a color renderable texture, without requiring an
explicit resolve of multisample data.
Some GPU architectures - such as tile-based renderers - are
capable of performing multisampled rendering by storing
multisample data in internal high-speed memory and downsampling the
data when writing out to external memory after rendering has
finished. Since per-sample data is never written out to external
memory, this approach saves bandwidth and storage space. In this
case multisample data gets discarded, however this is acceptable
in most cases.
自动resolve不用显示resovle了 在tile上还可以省3x store 和footprint
FramebufferTexture2DMultisampleEXT
RenderbufferStorageMultisampleEX
还有depthstencil的
所有tbdr下这套解决方案 在ogles 要用extension unity有实现 之后会验下数据
memoryless其实是个metal和vulkan才有的概念
msaa情况下完全对应上面这个扩展1x store ok了
unity里面根据rendertexture的descriptor
antiAliasing会自动开这个扩展相关代码 glRenderbufferStorageMultisample
======================
unity里面对msaa自动开了 glRenderbufferStorageMultisample
这需要capabilities HasMultisample
ogles3 或者
HasMultiSampleAutoResolve 这个capa对应以下两个扩展
kGL_EXT_multisampled_render_to_texture
kGL_IMG_multisampled_render_to_texture
force-clamped是啥
kGL_EXT_multisampled_render_to_texture
glRenderbufferStorageMultisampleEXT
glFramebufferTexture2DMultisampleEXT
Mali用的这组
kGL_IMG_multisampled_render_to_texture
glRenderbufferStorageMultisampleIMG
glFramebufferTexture2DMultisampleIMG
kGL_APPLE_framebuffer_multisample
glRenderbufferStorageMultisampleAPPLE
glResolveMultisampleFramebufferAPPLE
有metal这个不用管了
kGL_NV_framebuffer_multisample
kGL_NV_framebuffer_blit
glRenderbufferStorageMultisampleNV
-------
----------------------------------------------------
下面就是profiler的数据了 这部分好诡异 好难理解
开了msaa
read memory和write mem 大幅下降 如果只是shaderbusy也说不通 这个降幅
--snapdragon845
和后处理有关 应该和msaa没什么关系
TBDR下msaa 在metal vulkan和ogles的解决方案的更多相关文章
- Load store action in vulkan & ogles 的解决方案
metal的带宽之前的blog有讲 这篇主要是vulkan 和ogles的解决方案 https://www.khronos.org/registry/vulkan/specs/1.1-extensio ...
- 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)
相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...
- window 下生成NodeJs(v8.9.3) 的 VS2015 解决方案node.sln
window 下生成NodeJs(v8.9.3) 的 VS2015 解决方案node.sln 使用步骤 也可以参照 github: https://github.com/nodejs/node/blo ...
- 关于ie7下display:inline-block;不支持的解决方案
关于ie7下display:inline-block:不支持的解决方案 今天码的时候遇到这个问题了. 如果本身是内联元素的,把它的display属性设置设置为inline-block时,所有浏览器都是 ...
- Ubuntu16.4下RStudio1.1.447 中文输入问题的解决方案
Ubuntu16.4下RStudio1.1.447 中文输入问题的解决方案参照:https://blog.csdn.net/matteoshenl/article/details/78603528 R ...
- 在windows环境下运行compass文件出现的错误提示解决方案
在windows环境下运行compass文件出现的错误提示解决方案 例如:经常在项目中运行grunt命令编译scss文件的时候,会出现下面的错误提示 (Encoding::CompatibilityE ...
- Linux下出现launch failed.Binary not found的解决方案
Linux下出现launch failed.Binary not found的解决方案: Project->Properties->C/C++Build->Settings-> ...
- .Net下你不得不看的分表分库解决方案-多字段分片
.Net下你不得不看的分表分库解决方案-多字段分片 介绍 本期主角:ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本.零业务代码入侵 ...
- Html-IOS下input的样式添加不上的解决方案
问题描述: <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml&qu ...
随机推荐
- 大周末的不休息,继续学习pandas吧,pandas你该这么学,No.7
其实,写文章真的挺难的 每天抽点时间,写写文采飘逸的文章 坚持个几年,成为称霸一方的大佬 坚持就会成功吧~ 最近碰到瓶颈了, 一直找不到好的运营公众号的方式(好想有人指导唉~,对了,橡皮擦有个100多 ...
- LC 202. Happy Number
问题描述 Write an algorithm to determine if a number is "happy". A happy number is a number de ...
- 线段树维护动态连续子段HDU1540
题意:http://acm.hdu.edu.cn/showproblem.php?pid=1540 #define IOS ios_base::sync_with_stdio(0); cin.tie( ...
- 7.Linux查找目录下的所有文件中是否含有某个字符串
grep -rn "map" * 说明:-r 是递归查找-n 是显示行号* : 表示当前目录所有文件,也可以是某个文件名
- Java 抽象类详解
在<Java中的抽象方法和接口>中,介绍了抽象方法与接口,以及做了简单的比较. 这里我想详细探讨下抽象类. 一.抽象类的定义 被关键字“abstract”修饰的类,为抽象类.(而且,abx ...
- nginx反向代理服务器以及负载均衡,从安装到配置
nginx的具体作用不用细说,很强大,做负载均衡.反向代理服务器解决前端跨域问题等等.下面是nginx的安装过程 首先nginx主要的依赖: pcre. pcre-devel zlib zlib-de ...
- HTTP协议探究(一):缓存
一 复习与目标 1 复习 序章主要用WrieShark抓包HTTP报文 复习了TCP协议 讲述了TCP协议与HTTP之间的关系 HTTP1.1更新原因:HTTP1.0一次TCP连接只能发送一次HTTP ...
- 补充第11期作业:Long.fastUUID与UUID.toString之间的关系
一 UUID.toString方法与Long.fastUUID方法的关联 UUID类 public final class UUID implements java.io.Serializable, ...
- 作业1:java虚拟机内存模型图示
看了很多篇文章,整理成一幅图,但仍然有许多不解的地方,以后再接着完善,哪位大神看到不正确的地方,请指出,谢谢.
- 怎么处理sqlserver2017部署在winowsDocker上时区无法修改成功的方式,并且可以多创建新的容器调用简单的方式直接使用!
在创建该容器的时候我们执行的语句中添加了一个 从图中所看到的内容,上海时区,按照正常流程一般都是可疑正常执行的,但最后事情并不是我们所想的那么简单. 我们进入对应的容器里面 ,执行语句之后查找对应的文 ...