whisper-large-v3-mlx
/
lib
/python3.11
/site-packages
/mlx
/include
/metal_cpp
/Metal
/MTLIndirectCommandBuffer.hpp
//------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
// | |
// Metal/MTLIndirectCommandBuffer.hpp | |
// | |
// Copyright 2020-2023 Apple Inc. | |
// | |
// Licensed under the Apache License, Version 2.0 (the "License"); | |
// you may not use this file except in compliance with the License. | |
// You may obtain a copy of the License at | |
// | |
// http://www.apache.org/licenses/LICENSE-2.0 | |
// | |
// Unless required by applicable law or agreed to in writing, software | |
// distributed under the License is distributed on an "AS IS" BASIS, | |
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
// See the License for the specific language governing permissions and | |
// limitations under the License. | |
// | |
//------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
namespace MTL | |
{ | |
_MTL_OPTIONS(NS::UInteger, IndirectCommandType) { | |
IndirectCommandTypeDraw = 1, | |
IndirectCommandTypeDrawIndexed = 2, | |
IndirectCommandTypeDrawPatches = 4, | |
IndirectCommandTypeDrawIndexedPatches = 8, | |
IndirectCommandTypeConcurrentDispatch = 32, | |
IndirectCommandTypeConcurrentDispatchThreads = 64, | |
}; | |
struct IndirectCommandBufferExecutionRange | |
{ | |
uint32_t location; | |
uint32_t length; | |
} _MTL_PACKED; | |
class IndirectCommandBufferDescriptor : public NS::Copying<IndirectCommandBufferDescriptor> | |
{ | |
public: | |
static class IndirectCommandBufferDescriptor* alloc(); | |
class IndirectCommandBufferDescriptor* init(); | |
MTL::IndirectCommandType commandTypes() const; | |
void setCommandTypes(MTL::IndirectCommandType commandTypes); | |
bool inheritPipelineState() const; | |
void setInheritPipelineState(bool inheritPipelineState); | |
bool inheritBuffers() const; | |
void setInheritBuffers(bool inheritBuffers); | |
NS::UInteger maxVertexBufferBindCount() const; | |
void setMaxVertexBufferBindCount(NS::UInteger maxVertexBufferBindCount); | |
NS::UInteger maxFragmentBufferBindCount() const; | |
void setMaxFragmentBufferBindCount(NS::UInteger maxFragmentBufferBindCount); | |
NS::UInteger maxKernelBufferBindCount() const; | |
void setMaxKernelBufferBindCount(NS::UInteger maxKernelBufferBindCount); | |
NS::UInteger maxKernelThreadgroupMemoryBindCount() const; | |
void setMaxKernelThreadgroupMemoryBindCount(NS::UInteger maxKernelThreadgroupMemoryBindCount); | |
bool supportRayTracing() const; | |
void setSupportRayTracing(bool supportRayTracing); | |
bool supportDynamicAttributeStride() const; | |
void setSupportDynamicAttributeStride(bool supportDynamicAttributeStride); | |
}; | |
class IndirectCommandBuffer : public NS::Referencing<IndirectCommandBuffer, Resource> | |
{ | |
public: | |
NS::UInteger size() const; | |
MTL::ResourceID gpuResourceID() const; | |
void reset(NS::Range range); | |
class IndirectRenderCommand* indirectRenderCommand(NS::UInteger commandIndex); | |
class IndirectComputeCommand* indirectComputeCommand(NS::UInteger commandIndex); | |
}; | |
} | |
// static method: alloc | |
_MTL_INLINE MTL::IndirectCommandBufferDescriptor* MTL::IndirectCommandBufferDescriptor::alloc() | |
{ | |
return NS::Object::alloc<MTL::IndirectCommandBufferDescriptor>(_MTL_PRIVATE_CLS(MTLIndirectCommandBufferDescriptor)); | |
} | |
// method: init | |
_MTL_INLINE MTL::IndirectCommandBufferDescriptor* MTL::IndirectCommandBufferDescriptor::init() | |
{ | |
return NS::Object::init<MTL::IndirectCommandBufferDescriptor>(); | |
} | |
// property: commandTypes | |
_MTL_INLINE MTL::IndirectCommandType MTL::IndirectCommandBufferDescriptor::commandTypes() const | |
{ | |
return Object::sendMessage<MTL::IndirectCommandType>(this, _MTL_PRIVATE_SEL(commandTypes)); | |
} | |
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setCommandTypes(MTL::IndirectCommandType commandTypes) | |
{ | |
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCommandTypes_), commandTypes); | |
} | |
// property: inheritPipelineState | |
_MTL_INLINE bool MTL::IndirectCommandBufferDescriptor::inheritPipelineState() const | |
{ | |
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(inheritPipelineState)); | |
} | |
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setInheritPipelineState(bool inheritPipelineState) | |
{ | |
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInheritPipelineState_), inheritPipelineState); | |
} | |
// property: inheritBuffers | |
_MTL_INLINE bool MTL::IndirectCommandBufferDescriptor::inheritBuffers() const | |
{ | |
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(inheritBuffers)); | |
} | |
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setInheritBuffers(bool inheritBuffers) | |
{ | |
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInheritBuffers_), inheritBuffers); | |
} | |
// property: maxVertexBufferBindCount | |
_MTL_INLINE NS::UInteger MTL::IndirectCommandBufferDescriptor::maxVertexBufferBindCount() const | |
{ | |
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxVertexBufferBindCount)); | |
} | |
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setMaxVertexBufferBindCount(NS::UInteger maxVertexBufferBindCount) | |
{ | |
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxVertexBufferBindCount_), maxVertexBufferBindCount); | |
} | |
// property: maxFragmentBufferBindCount | |
_MTL_INLINE NS::UInteger MTL::IndirectCommandBufferDescriptor::maxFragmentBufferBindCount() const | |
{ | |
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxFragmentBufferBindCount)); | |
} | |
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setMaxFragmentBufferBindCount(NS::UInteger maxFragmentBufferBindCount) | |
{ | |
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxFragmentBufferBindCount_), maxFragmentBufferBindCount); | |
} | |
// property: maxKernelBufferBindCount | |
_MTL_INLINE NS::UInteger MTL::IndirectCommandBufferDescriptor::maxKernelBufferBindCount() const | |
{ | |
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxKernelBufferBindCount)); | |
} | |
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setMaxKernelBufferBindCount(NS::UInteger maxKernelBufferBindCount) | |
{ | |
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxKernelBufferBindCount_), maxKernelBufferBindCount); | |
} | |
// property: maxKernelThreadgroupMemoryBindCount | |
_MTL_INLINE NS::UInteger MTL::IndirectCommandBufferDescriptor::maxKernelThreadgroupMemoryBindCount() const | |
{ | |
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxKernelThreadgroupMemoryBindCount)); | |
} | |
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setMaxKernelThreadgroupMemoryBindCount(NS::UInteger maxKernelThreadgroupMemoryBindCount) | |
{ | |
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxKernelThreadgroupMemoryBindCount_), maxKernelThreadgroupMemoryBindCount); | |
} | |
// property: supportRayTracing | |
_MTL_INLINE bool MTL::IndirectCommandBufferDescriptor::supportRayTracing() const | |
{ | |
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportRayTracing)); | |
} | |
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setSupportRayTracing(bool supportRayTracing) | |
{ | |
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportRayTracing_), supportRayTracing); | |
} | |
// property: supportDynamicAttributeStride | |
_MTL_INLINE bool MTL::IndirectCommandBufferDescriptor::supportDynamicAttributeStride() const | |
{ | |
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportDynamicAttributeStride)); | |
} | |
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setSupportDynamicAttributeStride(bool supportDynamicAttributeStride) | |
{ | |
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportDynamicAttributeStride_), supportDynamicAttributeStride); | |
} | |
// property: size | |
_MTL_INLINE NS::UInteger MTL::IndirectCommandBuffer::size() const | |
{ | |
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(size)); | |
} | |
// property: gpuResourceID | |
_MTL_INLINE MTL::ResourceID MTL::IndirectCommandBuffer::gpuResourceID() const | |
{ | |
return Object::sendMessage<MTL::ResourceID>(this, _MTL_PRIVATE_SEL(gpuResourceID)); | |
} | |
// method: resetWithRange: | |
_MTL_INLINE void MTL::IndirectCommandBuffer::reset(NS::Range range) | |
{ | |
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(resetWithRange_), range); | |
} | |
// method: indirectRenderCommandAtIndex: | |
_MTL_INLINE MTL::IndirectRenderCommand* MTL::IndirectCommandBuffer::indirectRenderCommand(NS::UInteger commandIndex) | |
{ | |
return Object::sendMessage<MTL::IndirectRenderCommand*>(this, _MTL_PRIVATE_SEL(indirectRenderCommandAtIndex_), commandIndex); | |
} | |
// method: indirectComputeCommandAtIndex: | |
_MTL_INLINE MTL::IndirectComputeCommand* MTL::IndirectCommandBuffer::indirectComputeCommand(NS::UInteger commandIndex) | |
{ | |
return Object::sendMessage<MTL::IndirectComputeCommand*>(this, _MTL_PRIVATE_SEL(indirectComputeCommandAtIndex_), commandIndex); | |
} | |