ID3D11DeviceContext2::TiledResourceBarrier 方法 (d3d11_2.h)
指定多个平铺资源之间的数据访问排序约束。 有关此约束的详细信息,请参阅备注。
语法
void TiledResourceBarrier(
[in, optional] ID3D11DeviceChild *pTiledResourceOrViewAccessBeforeBarrier,
[in, optional] ID3D11DeviceChild *pTiledResourceOrViewAccessAfterBarrier
);
参数
[in, optional] pTiledResourceOrViewAccessBeforeBarrier
类型: ID3D11DeviceChild*
指向使用 D3D11_RESOURCE_MISC_TILED 标志创建的资源的 ID3D11Resource 或 ID3D11View 的指针。 必须先完成此对象的访问操作,然后才能对 pTiledResourceOrViewAccessAfterBarrier 指定的对象执行访问操作。
[in, optional] pTiledResourceOrViewAccessAfterBarrier
类型: ID3D11DeviceChild*
指向使用 D3D11_RESOURCE_MISC_TILED 标志创建的资源的 ID3D11Resource 或 ID3D11View 的指针。 此对象的访问操作必须在 pTiledResourceOrViewAccessBeforeBarrier 指定的对象上的访问操作之后开始。
返回值
无
备注
应用可以使用平铺资源重复使用不同资源中的磁贴。 但是,设备和驱动程序可能无法确定刚刚呈现到的磁贴池中的某些内存现在是否用于读取。
例如,应用可以使用一个平铺资源呈现到磁贴池中的某些磁贴,但随后使用不同的平铺资源从同一磁贴中读取。 这些平铺资源操作不同于使用一个资源,然后只是从使用 ID3D11RenderTargetView 写入切换到使用 ID3D11ShaderResourceView 进行读取。 运行时已使用 ID3D11RenderTargetView 和 ID3D11ShaderResourceView 跟踪和处理这一个资源操作。
当应用从使用一个资源访问 (读取或写入) 磁贴池中的某个位置转换到访问同一内存 (通过另一个平铺资源读取或写入) , (映射到同一内存) 时,应用必须在第一次使用资源后调用 TiledResourceBarrier,并在第二个资源之前调用 TiledResourceBarrier 。 参数是 pTiledResourceOrViewAccessBeforeBarrier ,用于在屏障 (之前通过呈现、复制) ,以及 pTiledResourceOrViewAccessAfterBarrier ,用于通过使用相同的磁贴池内存在屏障后进行访问。 如果资源相同,则应用不需要调用 TiledResourceBarrier, 因为此类危险已被跟踪和处理。
屏障调用通知驱动程序,在调用之前向资源发出的操作必须完成,然后才能通过共享同一内存的其他平铺资源在调用后发生的任何访问。
屏障) 之前或之后 (的任一参数或两个参数都可以为 NULL。 屏障前的 NULL 表示屏障之前的所有平铺资源访问都必须完成,然后屏障后指定的资源才能由图形处理单元 (GPU) 引用。 屏障后的 NULL 表示屏障后访问的任何平铺资源只能在屏障完成之前访问平铺资源后由 GPU 执行。 这两个 NULL 都表示所有以前的平铺资源访问都已完成,然后任何后续平铺资源访问才能继续。
应用可以为每个参数传递视图指针、资源或 NULL 。 允许查看不仅为了方便起见,还允许应用将屏障效果的范围限定为资源的相关部分。
有关平铺资源的详细信息,请参阅 平铺资源。
要求
最低受支持的客户端 | Windows 8.1 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 R2 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | d3d11_2.h |
Library | D3D11.lib |