Version: 2021.1

GraphicsFence

struct in UnityEngine.Rendering

切换到手册

描述

用于管理异步计算队列和图形队列上的任务之间的同步。

并不是所有平台都支持图形栅栏。请参阅 SystemInfo.supportsGraphicsFence

GraphicsFence 表示 GPU 处理过程中的一个点,位于某个特定计算着色器分发或绘制调用完成之后。可用于实现异步计算队列或图形队列上运行的任务之间的同步,方法是让一个或多个队列等待,直到通过给定栅栏。在使用异步计算时,这一点非常重要,因为提高 GPU 性能的关键在于各种任务可在图形队列和异步计算队列上同时运行。

对于两个 GPU 任务分别写入和读取同一资源的情况,不需要使用 GPUFence 进行同步。Unity 会自动处理这些资源依赖关系。

GPUFence 应通过 Graphics.CreateGraphicsFenceCommandBuffer.CreateGraphicsFence 创建。尝试使用尚未通过这些函数之一创建的 GraphicsFence 会导致异常。

使用 GraphicsFences 有可能产生循环依赖,执行时会使 GPU 死锁。Unity 会在编辑器中检测这类循环依赖关系,如果存在,会在调用 Graphics.CreateGraphicsFence、Graphics.WaitOnGraphicsFence、Graphics.ExecuteCommandBufferGraphics.ExecuteCommandBufferAsyncScriptableRenderContext.ExecuteCommandBufferScriptableRenderContext.ExecuteCommandBufferAsync 后引发异常。

另请参阅:SystemInfo.supportsGraphicsFenceGraphics.CreateGraphicsFence、Graphics.WaitOnGraphicsFence、CommandBuffer.CreateGraphicsFenceCommandBuffer.WaitOnAsyncGraphicsFenceGraphics.ExecuteCommandBufferGraphics.ExecuteCommandBufferAsyncScriptableRenderContext.ExecuteCommandBufferScriptableRenderContext.ExecuteCommandBufferAsync

变量

passed确定 GraphicsFence 是否已通过。允许 CPU 确定 GPU 是否已通过其处理过程中由 GraphicsFence 表示的点。
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961