用于組織命令緩沖區(qū)以供GPU執(zhí)行的隊(duì)列
宣言
protocol MTLCommandQueue
概述
一個(gè)MTLDevice對(duì)象隊(duì)列MTLCommandQueue命令緩沖區(qū)的一個(gè)有序列表來(lái)執(zhí)行卤恳。命令隊(duì)列時(shí)線程安全的户侥,并允許同時(shí)編碼多個(gè)未完成過(guò)的命令緩沖區(qū)。
您沒(méi)有定義完成此協(xié)議的類碱工,要?jiǎng)?chuàng)建名命令隊(duì)列继准,請(qǐng)調(diào)用對(duì)象的makeCommandQueue 或 調(diào)用設(shè)備MTLDevice的makeCommandQueue(maxCommandBufferCount:)方法。 方法返回的隊(duì)列限制了未完成的命令緩沖區(qū)的數(shù)量以躯。通常,您會(huì)在應(yīng)用啟動(dòng)時(shí)創(chuàng)建一個(gè)或多個(gè)命令隊(duì)列啄踊,然后在應(yīng)用的整個(gè)生命周期中完成保留這些隊(duì)列忧设。
要渲染圖像或執(zhí)行計(jì)算操作,請(qǐng)使用命令隊(duì)列創(chuàng)建一個(gè)或多個(gè)命令緩沖區(qū)對(duì)象颠通,然后將命令編碼到這些對(duì)象中并將它們提交到隊(duì)列中址晕,有兩種創(chuàng)建MTLCommandBuffer對(duì)象的方法: makeCommandBuffer 和 makeCommandBufferWithUnretainedRefefences().在大多數(shù) 情況下,您使用該方法顿锰,因?yàn)樵摲椒▌?chuàng)建了一個(gè)命令緩沖區(qū)谨垃,該緩沖區(qū)對(duì)metal完成在命令緩沖區(qū)中編碼的命令所需的所有對(duì)象具有強(qiáng)大的引用。在極少數(shù)情況下硼控,可以使用makeCommandBufferWithUnretainedReferences()方法創(chuàng)建一個(gè)命令緩沖區(qū)刘陶,該緩沖區(qū)不保留對(duì)這項(xiàng)對(duì)象的強(qiáng)引用。在這種情況下牢撼,您有責(zé)任使這些對(duì)象保持活動(dòng)狀態(tài)匙隔,直到命令緩沖區(qū)編碼的命令執(zhí)行完畢。