zoukankan      html  css  js  c++  java
  • memory management Vulkan

    https://www.youtube.com/watch?v=rXSdDE7NWmA

    vulkan/Bifrost

    1. DEVICE_LOCAL_BIT | HOST_VISIBLE_BIT | HOST_COHERENT_BIT

    2. DEVICE_LOCAL_BIT | HOST_VISIBLE_BIT | HOST_CACHED_BIT
    3. DEVICE_LOCAL_BIT | HOST_VISIBLE_BIT | HOST_COHERENT_BIT | HOST_CACHED_BIT
    4. DEVICE_LOCAL_BIT | LAZILY_ALLOCATED_BIT

    vulkan/Midgard

    1. DEVICE_LOCAL_BIT | HOST_VISIBLE_BIT | HOST_COHERENT_BIT

    2. DEVICE_LOCAL_BIT | HOST_VISIBLE_BIT | HOST_CACHED_BIT

    3. DEVICE_LOCAL_BIT | LAZILY_ALLOCATED_BIT

    cache就是cpu cache了 cpu read 用

    coherent看下来是cup gpu 同步 选了 硬件会保证它们一致 但是会费电。。。。选这个就不用我们手动copy来 copy去了吧

    host就是cpu这边

    device是gpu这边

    coherent肯定就是cpu gpu都可见了

    lazily是 给临时资源的 ontile的资源 不需要开framebuffer

    resources: 

    Uniform Buffer,Dynamic VB  CPU, GPU 都可见, 频繁write  ---这种通常用nbuffe缓存(gl下 避免同步map 会卡住 避免invalidmap会复制 ghost,vulkan用coherent自动处理了)

    Texture, IB,VB,Const Buffer  CPU只写一次 CPU GPU可见----这种资源设置成write only 就不需要cache ,cpu不要读它

    Framebuffer  仅GPU可见

    CPU读的才要cache 这样的GPU资源很少吧。。。

    1. not cached, coherent

       write-only on CPU,为了不污染CPU cache,可以在cpu把小的合到一个大的buffer里给device

    2.cached, incoherent

      需要map出来给cpu read的资源 map出来用vkInvalidateMappedRanges

      cpu 写完给gpu用时要调用 vkFlushMappedRanges

      这两步操作都需要driver 维护cpu cahe 在main memory和cpu cache之间

      这会是不少的开销

    3.cached, coherent

      此种类型仅Bifrost支持,并且需要cpu 和gpu的芯片组支持一致的协议,如果不支持会用2.cache,incoherent替代

      如果不需要cpu read 就用coherent就可以了 不要用cached

    4.lazily

      短暂transient的gpu外不可访问的,仅在tile上的resource

    看资料实在太不方便了 以后再看吧

    用vulkan 做render to texture 的rt的 memory type 是啥

    DEVICE_LOCAL_BIT最合适 但是mali没有可能要落到1

     建议

    不变的资源用1

    cpu只读资源用1

    用1的时候 write update的时候 用memcpy()顺着写

    频繁update的buffer要map出来 比如uniform buffer , dynamic vb,map有cpu开销

    cpu read要用cache

    ====

    staging

    大概是这样一种概念,cpu资源copy一份 gpu用copy的这份

    知道两种用途 一种是dx9那时候 这种staging的资源 可以用于恢复device lost 的资源 再copy一次就可以了 感谢jin先生

    另一种cpu写入一次的texture 资源 copy一份 给gpu bind srv,cpu就不再用这份资源了

    一种类似资源uploading的概念 

    =======

    https://www.khronos.org/assets/uploads/developers/library/2018-vulkan-devday/03-Memory.pdf

    https://gpuopen.com/vulkan-device-memory/

  • 相关阅读:
    教你怎么买虚拟空间(转)
    一个超棒的jQuery通知栏插件 jBar
    GBin1专题之Web热点秀#12
    19套最新的免费图标字体集
    帮助你操作数字和处理数字格式的javascript类库 Numeral.js
    分享两个超棒的帮助你生成占位图片(placeholder image)的在线工具
    分享40个超棒的CSS3按钮教程
    一款非常棒的CSS 3D下拉式菜单实现Makisu
    47款超酷超实用的CSS3技巧教程
    不容错过的精选免费jQuery UI主题大荟萃
  • 原文地址:https://www.cnblogs.com/minggoddess/p/11777132.html
Copyright © 2011-2022 走看看