Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Металлическая ссылка платформы ссылка на протокол MTLCommandBuffer

Опции
Развертывание Target:

На этой странице
Язык:

MTLCommandBuffer

Наследование


Не применимый

Соответствует


Оператор импорта


Swift

import Metal

Objective C

@import Metal;

Доступность


Доступный в iOS 8.0 и позже.

MTLCommandBuffer протокол определяет интерфейс для переходного процесса, единственное использование возражают, что хранилища закодировали команды, в конечном счете фиксирующиеся для выполнения GPU.

Ваше приложение не определяет классы, реализующие этот протокол. Объекты буфера команд создаются a MTLCommandQueue возразите и может только фиксироваться для выполнения на очереди команды, создавшей его. Все буферы команд, отправленные единственной очереди команды, как гарантируют, выполнятся в порядке, в котором ставились в очередь буферы команд. В большинстве случаев Вы создаете буфер команд путем вызова a MTLCommandQueue объект commandBuffer метод.

После создания буфера команд Вы создаете объект кодера заполнить буфер командами. MTLCommandBuffer протокол имеет методы для создания определенных типов кодеров команды: MTLRenderCommandEncoder, MTLComputeCommandEncoder, MTLBlitCommandEncoder, и MTLParallelRenderCommandEncoder. В любой момент времени только единственный кодер может быть активным для определенного буфера команд. Вы создаете кодер, используете его, чтобы добавить команды к буферу, и затем закончить процесс кодирования. После окончания с кодером можно создать другой кодер и продолжать добавлять команды к тому же буферу. Когда Вы готовы выполнить набор закодированных команд, Вы вызываете буфер команд commit метод для планирования буфера для выполнения.

После того, как буфер команд фиксировался для выполнения, единственные допустимые операции на буфере команд должны ожидать его, чтобы быть запланированными или завершенными (использование синхронных вызовов или блоков обработчика) и проверить состояние выполнения буфера команд. Когда используется, запланированные и завершенные обработчики являются блоками, вызывающимися в порядке выполнения. Эти обработчики должны быть выполнены быстро; если дорогая или блокирующая работа должна быть запланирована, задержите ту работу к другому потоку.

В многопоточном приложении повредите свою полную задачу в подзадачи, которые могут быть закодированы отдельно. Создайте буфер команд для каждого блока работы, затем вызовите enqueue метод на этих буфер команд возражает для установления порядка выполнения. Заполните каждый буферный объект (использование многократных потоков) и фиксируйте их. Очередь команды автоматически планирует и выполняет эти буферы команд, поскольку они становятся доступными.

  • Создает объект кодера, который может закодировать команды рендеринга графики в этот буфер команд. (требуемый)

    Объявление

    Swift

    func renderCommandEncoderWithDescriptor(_ renderPassDescriptor: MTLRenderPassDescriptor) -> MTLRenderCommandEncoder?

    Objective C

    - (id<MTLRenderCommandEncoder>)renderCommandEncoderWithDescriptor:(MTLRenderPassDescriptor *)renderPassDescriptor

    Параметры

    renderPassDescriptor

    Набор присоединений и ассоциированной страны для вывода графических данных команд рендеринга.

    Возвращаемое значение

    Объект кодера команды рендеринга графики.

    Обсуждение

    A MTLRenderCommandEncoder объект обеспечивает методы, чтобы установить и выполнить единственную передачу рендеринга графики.

    После того, как буфер команд создает этот кодер команды рендеринга, никакой другой кодер команды любого типа не может быть создан для этого буфера команд, пока Вы не вызываете endEncoding метод MTLRenderCommandEncoder объект.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Создает объект кодера, который может закодировать параллель данных, вычисляют команды в этот буфер команд. (требуемый)

    Объявление

    Swift

    func computeCommandEncoder() -> MTLComputeCommandEncoder

    Objective C

    - (id<MTLComputeCommandEncoder>)computeCommandEncoder

    Возвращаемое значение

    Вычислить объект кодера команды.

    Обсуждение

    A MTLComputeCommandEncoder объект обеспечивает методы, чтобы установить и запуститься, большое количество потоков общего назначения на устройстве для выполнения параллели данных вычисляют обработку.

    После того, как буфер команд создает, это вычисляет кодер команды, никакой другой кодер команды любого типа не может быть создан для этого буфера команд, пока Вы не вызываете endEncoding метод MTLComputeCommandEncoder объект.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Создает объект кодера, который может закодировать работу памяти (копирование битового массива) команды в этот буфер команд. (требуемый)

    Объявление

    Swift

    func blitCommandEncoder() -> MTLBlitCommandEncoder

    Objective C

    - (id<MTLBlitCommandEncoder>)blitCommandEncoder

    Возвращаемое значение

    Объект кодера команды копирования битового массива.

    Обсуждение

    A MTLBlitCommandEncoder объект обеспечивает методы для копий памяти стандартной функции, копий текстуры, и множественно отобразите генерацию на устройстве.

    После того, как буфер команд создает этот кодер команды копирования битового массива, никакой другой кодер команды любого типа не может быть создан для этого буфера команд, пока Вы не вызываете endEncoding метод MTLBlitCommandEncoder объект.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Создает объект, кодирующий команды в этот буфер команд, разбивающие единственную передачу рендеринга в многократные единицы работы. (требуемый)

    Объявление

    Swift

    func parallelRenderCommandEncoderWithDescriptor(_ renderPassDescriptor: MTLRenderPassDescriptor) -> MTLParallelRenderCommandEncoder?

    Objective C

    - (id<MTLParallelRenderCommandEncoder>)parallelRenderCommandEncoderWithDescriptor:(MTLRenderPassDescriptor *)renderPassDescriptor

    Параметры

    renderPassDescriptor

    Набор присоединений и ассоциированной страны для вывода графических данных команд рендеринга.

    Возвращаемое значение

    Параллельный объект кодера команды рендеринга.

    Обсуждение

    A MTLParallelRenderCommandEncoder может самостоятельно создать многократного независимого политика MTLRenderCommandEncoder объекты, кодирующие команды рендеринга в тот же буфер команд для того же целевого присоединения. Все эти команды рендеринга выполняются как единственная передача рендеринга.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Резервирует место для этого буфера команд на его связанной очереди команды. (требуемый)

    Объявление

    Swift

    func enqueue()

    Objective C

    - (void)enqueue

    Обсуждение

    Постановка в очередь буфер команд резервирует место для буфера команд на очереди команды, не фиксируя буфера команд для выполнения. Когда этот буфер команд позже фиксируется, он выполняется после любых буферов команд, ранее ставивших в очередь на очереди команды. Вы ставите в очередь буферы команд так, чтобы один или несколько буферов команд могли быть созданы с фиксированным порядком выполнения, не требуя, чтобы буферы команд были закодированы последовательно. Работа кодирования команд в буферы команд может быть задержана к другим потокам, которые могут выполниться и завершиться в любом порядке.

    Можно вызвать enqueue метод прежде, во время, или после кодирования команд. Один раз может только ставиться в очередь буфер команд.

    enqueue метод не делает буфер команд имеющим право на выполнение. Представить буфер команд устройству для выполнения, последующего commit вызов метода требуется.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Фиксации этот буфер команд для выполнения как можно скорее. (требуемый)

    Объявление

    Swift

    func commit()

    Objective C

    - (void)commit

    Обсуждение

    После вызова commit метод, буфер команд выполняется GPU. Это выполняется после любых ранее ставивших в очередь буферов команд в той же очереди команды. Если буфер команд ранее не ставился в очередь, он ставится в очередь неявно. Как только буфер команд фиксируется, никакие дальнейшие команды не могут быть закодированы в него.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Регистрирует блок кода, который вызовут после того, как будет запланирован буфер команд. (требуемый)

    Объявление

    Swift

    func addScheduledHandler(_ block: MTLCommandBufferHandler)

    Objective C

    - (void)addScheduledHandler:(MTLCommandBufferHandler)block

    Параметры

    block

    Блок кода, который будет вызван.

    Обсуждение

    Многократные запланированные обработчики могут быть зарегистрированы для буфера команд.

    Когда любые зависимости между работой, представленной другими буферами команд или другим APIs в системе, были удовлетворены, буфер команд считают запланированным. Во время выполнения block, состояние команды MTLCommandBufferStatusScheduled.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Регистрирует блок кода, который сразу вызовут после того, как устройство завершило выполнение буфера команд. (требуемый)

    Объявление

    Swift

    func addCompletedHandler(_ block: MTLCommandBufferHandler)

    Objective C

    - (void)addCompletedHandler:(MTLCommandBufferHandler)block

    Параметры

    block

    Блок кода, который будет вызван.

    Обсуждение

    Многократные завершенные обработчики могут быть зарегистрированы для буфера команд.

    Завершенный обработчик вызывают после того, как буфер заканчивает выполняться. Проверьте status свойство, чтобы определить, было ли выполнение успешно.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Регистрирует блок кода, представляющий drawable объект, когда этот буфер команд планируется для выполнения. (требуемый)

    Объявление

    Swift

    func presentDrawable(_ drawable: MTLDrawable)

    Objective C

    - (void)presentDrawable:(id<MTLDrawable>)drawable

    Параметры

    drawable

    drawable объект.

    Обсуждение

    presentDrawable: метод является вызывающим удобным методом addScheduledHandler: представить один drawable объект. Для поддержки многократного drawable объекта от единственного буфера команд создайте запланированный обработчик, вызывающий present метод на нескольких drawable объектах.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Регистрирует блок кода, представляющий drawable объект в определенное время узла, когда этот буфер команд планируется для выполнения. (требуемый)

    Объявление

    Swift

    func presentDrawable(_ drawable: MTLDrawable, atTime presentationTime: CFTimeInterval)

    Objective C

    - (void)presentDrawable:(id<MTLDrawable>)drawable atTime:(CFTimeInterval)presentationTime

    Параметры

    drawable

    drawable объект.

    presentationTime

    Время, в которое должен быть представлен drawable объект.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

    См. также

    – presentDrawable:

  • Синхронно ожидайте этого буфера команд, который будет запланирован. (требуемый)

    Объявление

    Swift

    func waitUntilScheduled()

    Objective C

    - (void)waitUntilScheduled

    Обсуждение

    Этот метод возвраты после буфера команд был запланирован и все блоки кода, зарегистрированные addScheduledHandler: были вызваны. Буфер команд считают запланированным, как только все его зависимости разрешены, и он отправляется в аппаратные средства для выполнения.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Синхронно ожидайте выполнения этого буфера команд для завершения. (требуемый)

    Объявление

    Swift

    func waitUntilCompleted()

    Objective C

    - (void)waitUntilCompleted

    Обсуждение

    Этот метод возвраты после буфера команд завершается и все блоки кода, зарегистрированные addCompletedHandler: вызываются.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • status Свойство

    Сообщает текущий этап во времени жизни буфера команд, поскольку это продолжается от ставившего в очередь до преданного, запланированного к завершенному. (требуемый) (только для чтения)

    Объявление

    Swift

    var status: MTLCommandBufferStatus { get }

    Objective C

    @property(readonly) MTLCommandBufferStatus status

    Обсуждение

    Во время начального этапа буфера команд, status MTLCommandBufferStatusNotEnqueued. Его изменения значения как буфер команд ставятся в очередь, фиксируются, планируются и завершаются. Если выполнение перестало работать, то status оцените изменения в MTLCommandBufferStatusError.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • error Свойство

    Содержит подробные данные об ошибке, которая, возможно, произошла во время выполнения буфера команд. (требуемый) (только для чтения)

    Объявление

    Swift

    var error: NSError? { get }

    Objective C

    @property(readonly) NSError *error

    Обсуждение

    Это свойство прежде всего для отладки. Если выполнение закончилось успешно, если буфер команд еще не был выполнен, или error nil.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • retainedReferences Свойство

    Булево значение, указывающее, поддерживает ли буфер команд сильные ссылки к связанным объектам ресурса (текстуры, буферы данных, и т.д.) необходимый для завершения выполнения каких-либо закодированных команд. (требуемый) (только для чтения)

    Объявление

    Swift

    var retainedReferences: Bool { get }

    Objective C

    @property(readonly) BOOL retainedReferences

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • device Свойство

    Устройство, из которого создавался этот буфер команд. (требуемый) (только для чтения)

    Объявление

    Swift

    var device: MTLDevice { get }

    Objective C

    @property(readonly) id< MTLDevice > device

    Обсуждение

    Этот буфер команд может только использоваться с этим устройством.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • commandQueue Свойство

    Очередь команды, создавшая буфер команд. (требуемый) (только для чтения)

    Объявление

    Swift

    var commandQueue: MTLCommandQueue { get }

    Objective C

    @property(readonly) id< MTLCommandQueue > commandQueue

    Обсуждение

    Этот буфер команд может быть связан только с этой очередью команды.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • label Требуемое свойство

    Строка, чтобы помочь идентифицировать этот объект. (требуемый)

    Объявление

    Swift

    var label: String? { get set }

    Objective C

    @property(copy, atomic) NSString *label

    Обсуждение

    Когда буфер команд просматривается в отладчике XCode, эта строка видима.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

Типы данных

  • Когда буфер команд планируется для выполнения или завершил выполнение, блок кода вызвал.

    Объявление

    Swift

    typealias MTLCommandBufferHandler = (MTLCommandBuffer!) -> Void

    Objective C

    typedef void (^MTLCommandBufferHandler)(id <MTLCommandBuffer> buffer);

    Обсуждение

    Обработчик завершения берет следующие параметры:

    buffer

    Буфер команд, запланированный или завершенный.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Текущий этап во времени жизни буфера команд, поскольку это продолжается от ставившего в очередь до преданного, запланированного к завершенному.

    Объявление

    Swift

    enum MTLCommandBufferStatus : UInt { case NotEnqueued case Enqueued case Committed case Scheduled case Completed case Error }

    Objective C

    typedef enum : NSUInteger { MTLCommandBufferStatusNotEnqueued = 0, MTLCommandBufferStatusEnqueued = 1, MTLCommandBufferStatusCommitted = 2, MTLCommandBufferStatusScheduled = 3, MTLCommandBufferStatusCompleted = 4, MTLCommandBufferStatusError = 5 } MTLCommandBufferStatus;

    Константы

    • NotEnqueued

      MTLCommandBufferStatusNotEnqueued

      Буфер команд еще не ставится в очередь. Это - начальное значение status свойство перед enqueue метод вызывают.

      Доступный в iOS 8.0 и позже.

    • Enqueued

      MTLCommandBufferStatusEnqueued

      Буфер команд ставится в очередь.

      Доступный в iOS 8.0 и позже.

    • Committed

      MTLCommandBufferStatusCommitted

      Буфер команд фиксируется для выполнения.

      Доступный в iOS 8.0 и позже.

    • Scheduled

      MTLCommandBufferStatusScheduled

      Буфер команд планируется. Когда любые зависимости между работой, представленной другими буферами команд или другим APIs в системе, удовлетворены, буфер команд считают запланированным.

      Доступный в iOS 8.0 и позже.

    • Completed

      MTLCommandBufferStatusCompleted

      Буфер команд завершил выполнение успешно.

      Доступный в iOS 8.0 и позже.

    • Error

      MTLCommandBufferStatusError

      Выполнение буфера команд было прервано вследствие ошибки во время выполнения. Проверьте errorсвойство для получения дополнительной информации.

      Доступный в iOS 8.0 и позже.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.

  • Коды ошибки, указывающие, почему выполнение буфера команд перестало работать. error свойство содержит код ошибки.

    Объявление

    Swift

    enum MTLCommandBufferError : UInt { case None case Internal case Timeout case PageFault case Blacklisted case NotPermitted case OutOfMemory case InvalidResource }

    Objective C

    typedef enum : NSUInteger { MTLCommandBufferErrorNone = 0, MTLCommandBufferErrorInternal = 1, MTLCommandBufferErrorTimeout = 2, MTLCommandBufferErrorPageFault = 3, MTLCommandBufferErrorBlacklisted = 4, MTLCommandBufferErrorNotPermitted = 7, MTLCommandBufferErrorOutOfMemory = 8, MTLCommandBufferErrorInvalidResource = 9 } MTLCommandBufferError;

    Константы

    • None

      MTLCommandBufferErrorNone

      Никакая ошибка не произошла.

      Доступный в iOS 8.0 и позже.

    • Internal

      MTLCommandBufferErrorInternal

      Внутренняя ошибка, не вписывающаяся в другие категории. Фактический низкоуровневый код ошибки кодируется в локальном описании.

      Доступный в iOS 8.0 и позже.

    • Timeout

      MTLCommandBufferErrorTimeout

      Выполнение этого буфера команд заняло больше времени, чем, чем система позволяет, таким образом, выполнение было прервано и прервано.

      Доступный в iOS 8.0 и позже.

    • PageFault

      MTLCommandBufferErrorPageFault

      Выполнение этого буфера команд генерировало непригодное отсутствие страницы GPU. Эта ошибка может быть вызвана буферным несоответствием атрибута чтения-записи или из граничного доступа.

      Доступный в iOS 8.0 и позже.

    • Blacklisted

      MTLCommandBufferErrorBlacklisted

      Доступ к этому устройству был отклонен, потому что этот клиент был ответственен за слишком много тайм-аутов или зависает.

      Доступный в iOS 8.0 и позже.

    • NotPermitted

      MTLCommandBufferErrorNotPermitted

      Этот процесс не имеет доступа для использования этого устройства.

      Доступный в iOS 8.0 и позже.

    • OutOfMemory

      MTLCommandBufferErrorOutOfMemory

      Недостаточно память была доступна для выполнения этого буфера команд.

      Доступный в iOS 8.0 и позже.

    • InvalidResource

      MTLCommandBufferErrorInvalidResource

      Буфер команд сослался на недопустимый ресурс. Эта ошибка обычно вызывается, когда вызывающая сторона удаляет ресурс прежде, чем выполнить буфер команд, относящийся к нему.

      Доступный в iOS 8.0 и позже.

    Оператор импорта

    Objective C

    @import Metal;

    Swift

    import Metal

    Доступность

    Доступный в iOS 8.0 и позже.