zoukankan      html  css  js  c++  java
  • cpu gpu数据同步

    https://developer.apple.com/documentation/metal/advanced_command_setup/cpu_and_gpu_synchronization

    dynamic vertex buffer通常每帧都要cpu更新里面的数据内容同时gpu就拿来画

    1.顶点数据同步

    并行这部分cpu gpu工作的解决方案

    通常是 开多块vb让cpu gpu可以并行工作

    但这个时候  这块资源gpu是否用完 cpu能不能拿来复用 (延迟三帧的情况下 )

    用信号量来同步cpu工作 

    cpu wait until 收到gpu 那边执行完毕的signol  (dx应该是用fence)

    注册

    [commandBuffer addCompletedHandler:^(id<MTLCommandBuffer> buffer) { dispatch_semaphore_signal(block_sema); }];

    wait

    _inFlightSemaphore = dispatch_semaphore_create(MaxBuffersInFlight);

    dispatch_semaphore_wait(_inFlightSemaphore, DISPATCH_TIME_FOREVER);

     ==================================

    2.用nosharedevent 同步一个device (看着还是像dx12 的fence)

    https://developer.apple.com/documentation/metal/advanced_command_setup/synchronizing_events_within_a_single_device?language=objc

    这个还是比较好理解的 在cmd里面加上signal

    wait的那个线程就会一直等到这个signal再开始唤起  可以解决资源依赖 

  • 相关阅读:
    SqlServer 格式化时间
    工作生活两三事
    前端面试题准备 3
    前端面试题准备 2
    MYSQL---自定义函数
    MYSQL---MD5()、PASSWORD()函数
    MYSQL---DATE_ADD()
    MYSQL---%
    MYSQL---多表删除
    MYSQL---CREATE...SELECT
  • 原文地址:https://www.cnblogs.com/minggoddess/p/10308060.html
Copyright © 2011-2022 走看看