Metal - 命令设定 - MTLCommand队列

用于组织命令缓冲区以供GPU执行的队列

宣言

protocol MTLCommandQueue

概述

一个MTLDevice对象队列MTLCommandQueue命令缓冲区的一个有序列表来执行。命令队列时线程安全的,并允许同时编码多个未完成过的命令缓冲区。

您没有定义完成此协议的类,要创建名命令队列,请调用对象的makeCommandQueue 或 调用设备MTLDevice的makeCommandQueue(maxCommandBufferCount:)方法。 方法返回的队列限制了未完成的命令缓冲区的数量。通常,您会在应用启动时创建一个或多个命令队列,然后在应用的整个生命周期中完成保留这些队列。

要渲染图像或执行计算操作,请使用命令队列创建一个或多个命令缓冲区对象,然后将命令编码到这些对象中并将它们提交到队列中,有两种创建MTLCommandBuffer对象的方法: makeCommandBuffer 和 makeCommandBufferWithUnretainedRefefences().在大多数 情况下,您使用该方法,因为该方法创建了一个命令缓冲区,该缓冲区对metal完成在命令缓冲区中编码的命令所需的所有对象具有强大的引用。在极少数情况下,可以使用makeCommandBufferWithUnretainedReferences()方法创建一个命令缓冲区,该缓冲区不保留对这项对象的强引用。在这种情况下,您有责任使这些对象保持活动状态,直到命令缓冲区编码的命令执行完毕。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容