61bbc5823650d91cea505e7f3c8c5fe1eda8c1e0aea2a4aaafeda1ade4b51a6e
Browse files- lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSProcessInfo.hpp +354 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSRange.hpp +83 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSSet.hpp +87 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSSharedPtr.hpp +311 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSString.hpp +255 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSTypes.hpp +51 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSURL.hpp +90 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/LICENSE.txt +202 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLAccelerationStructure.hpp +1826 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLAccelerationStructureCommandEncoder.hpp +290 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLAccelerationStructureTypes.hpp +169 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLArgument.hpp +848 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLArgumentEncoder.hpp +244 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLBinaryArchive.hpp +139 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLBlitCommandEncoder.hpp +246 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLBlitPass.hpp +165 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLBuffer.hpp +109 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLCaptureManager.hpp +220 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLCaptureScope.hpp +92 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLCommandBuffer.hpp +474 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLCommandEncoder.hpp +101 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLCommandQueue.hpp +89 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLComputeCommandEncoder.hpp +362 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLComputePass.hpp +181 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLComputePipeline.hpp +373 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLCounters.hpp +258 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLDefines.hpp +41 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLDepthStencil.hpp +269 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLDevice.hpp +1426 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLDrawable.hpp +99 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLDynamicLibrary.hpp +82 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLEvent.hpp +159 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLFence.hpp +57 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLFunctionConstantValues.hpp +85 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLFunctionDescriptor.hpp +157 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLFunctionHandle.hpp +61 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLFunctionLog.hpp +114 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLFunctionStitching.hpp +307 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLHeaderBridge.hpp +0 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLHeap.hpp +329 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLIOCommandBuffer.hpp +200 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLIOCommandQueue.hpp +225 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLIOCompressor.hpp +94 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLIndirectCommandBuffer.hpp +240 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLIndirectCommandEncoder.hpp +203 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLIntersectionFunctionTable.hpp +181 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLLibrary.hpp +691 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLLinkedFunctions.hpp +115 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLParallelRenderCommandEncoder.hpp +94 -0
- lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLPipeline.hpp +109 -0
lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSProcessInfo.hpp
ADDED
|
@@ -0,0 +1,354 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Foundation/NSProcessInfo.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 24 |
+
|
| 25 |
+
#include "NSDefines.hpp"
|
| 26 |
+
#include "NSNotification.hpp"
|
| 27 |
+
#include "NSObject.hpp"
|
| 28 |
+
#include "NSPrivate.hpp"
|
| 29 |
+
#include "NSTypes.hpp"
|
| 30 |
+
|
| 31 |
+
#include <functional>
|
| 32 |
+
|
| 33 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 34 |
+
|
| 35 |
+
namespace NS
|
| 36 |
+
{
|
| 37 |
+
_NS_CONST(NotificationName, ProcessInfoThermalStateDidChangeNotification);
|
| 38 |
+
_NS_CONST(NotificationName, ProcessInfoPowerStateDidChangeNotification);
|
| 39 |
+
|
| 40 |
+
_NS_ENUM(NS::Integer, ProcessInfoThermalState) {
|
| 41 |
+
ProcessInfoThermalStateNominal = 0,
|
| 42 |
+
ProcessInfoThermalStateFair = 1,
|
| 43 |
+
ProcessInfoThermalStateSerious = 2,
|
| 44 |
+
ProcessInfoThermalStateCritical = 3
|
| 45 |
+
};
|
| 46 |
+
|
| 47 |
+
_NS_OPTIONS(std::uint64_t, ActivityOptions) {
|
| 48 |
+
ActivityIdleDisplaySleepDisabled = (1ULL << 40),
|
| 49 |
+
ActivityIdleSystemSleepDisabled = (1ULL << 20),
|
| 50 |
+
ActivitySuddenTerminationDisabled = (1ULL << 14),
|
| 51 |
+
ActivityAutomaticTerminationDisabled = (1ULL << 15),
|
| 52 |
+
ActivityUserInitiated = (0x00FFFFFFULL | ActivityIdleSystemSleepDisabled),
|
| 53 |
+
ActivityUserInitiatedAllowingIdleSystemSleep = (ActivityUserInitiated & ~ActivityIdleSystemSleepDisabled),
|
| 54 |
+
ActivityBackground = 0x000000FFULL,
|
| 55 |
+
ActivityLatencyCritical = 0xFF00000000ULL,
|
| 56 |
+
};
|
| 57 |
+
|
| 58 |
+
class ProcessInfo : public Referencing<ProcessInfo>
|
| 59 |
+
{
|
| 60 |
+
public:
|
| 61 |
+
static ProcessInfo* processInfo();
|
| 62 |
+
|
| 63 |
+
class Array* arguments() const;
|
| 64 |
+
class Dictionary* environment() const;
|
| 65 |
+
class String* hostName() const;
|
| 66 |
+
class String* processName() const;
|
| 67 |
+
void setProcessName(const String* pString);
|
| 68 |
+
int processIdentifier() const;
|
| 69 |
+
class String* globallyUniqueString() const;
|
| 70 |
+
|
| 71 |
+
class String* userName() const;
|
| 72 |
+
class String* fullUserName() const;
|
| 73 |
+
|
| 74 |
+
UInteger operatingSystem() const;
|
| 75 |
+
OperatingSystemVersion operatingSystemVersion() const;
|
| 76 |
+
class String* operatingSystemVersionString() const;
|
| 77 |
+
bool isOperatingSystemAtLeastVersion(OperatingSystemVersion version) const;
|
| 78 |
+
|
| 79 |
+
UInteger processorCount() const;
|
| 80 |
+
UInteger activeProcessorCount() const;
|
| 81 |
+
unsigned long long physicalMemory() const;
|
| 82 |
+
TimeInterval systemUptime() const;
|
| 83 |
+
|
| 84 |
+
void disableSuddenTermination();
|
| 85 |
+
void enableSuddenTermination();
|
| 86 |
+
|
| 87 |
+
void disableAutomaticTermination(const class String* pReason);
|
| 88 |
+
void enableAutomaticTermination(const class String* pReason);
|
| 89 |
+
bool automaticTerminationSupportEnabled() const;
|
| 90 |
+
void setAutomaticTerminationSupportEnabled(bool enabled);
|
| 91 |
+
|
| 92 |
+
class Object* beginActivity(ActivityOptions options, const class String* pReason);
|
| 93 |
+
void endActivity(class Object* pActivity);
|
| 94 |
+
void performActivity(ActivityOptions options, const class String* pReason, void (^block)(void));
|
| 95 |
+
void performActivity(ActivityOptions options, const class String* pReason, const std::function<void()>& func);
|
| 96 |
+
void performExpiringActivity(const class String* pReason, void (^block)(bool expired));
|
| 97 |
+
void performExpiringActivity(const class String* pReason, const std::function<void(bool expired)>& func);
|
| 98 |
+
|
| 99 |
+
ProcessInfoThermalState thermalState() const;
|
| 100 |
+
bool isLowPowerModeEnabled() const;
|
| 101 |
+
|
| 102 |
+
bool isiOSAppOnMac() const;
|
| 103 |
+
bool isMacCatalystApp() const;
|
| 104 |
+
};
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 108 |
+
|
| 109 |
+
_NS_PRIVATE_DEF_CONST(NS::NotificationName, ProcessInfoThermalStateDidChangeNotification);
|
| 110 |
+
_NS_PRIVATE_DEF_CONST(NS::NotificationName, ProcessInfoPowerStateDidChangeNotification);
|
| 111 |
+
|
| 112 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 113 |
+
|
| 114 |
+
_NS_INLINE NS::ProcessInfo* NS::ProcessInfo::processInfo()
|
| 115 |
+
{
|
| 116 |
+
return Object::sendMessage<ProcessInfo*>(_NS_PRIVATE_CLS(NSProcessInfo), _NS_PRIVATE_SEL(processInfo));
|
| 117 |
+
}
|
| 118 |
+
|
| 119 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 120 |
+
|
| 121 |
+
_NS_INLINE NS::Array* NS::ProcessInfo::arguments() const
|
| 122 |
+
{
|
| 123 |
+
return Object::sendMessage<Array*>(this, _NS_PRIVATE_SEL(arguments));
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 127 |
+
|
| 128 |
+
_NS_INLINE NS::Dictionary* NS::ProcessInfo::environment() const
|
| 129 |
+
{
|
| 130 |
+
return Object::sendMessage<Dictionary*>(this, _NS_PRIVATE_SEL(environment));
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 134 |
+
|
| 135 |
+
_NS_INLINE NS::String* NS::ProcessInfo::hostName() const
|
| 136 |
+
{
|
| 137 |
+
return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(hostName));
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 141 |
+
|
| 142 |
+
_NS_INLINE NS::String* NS::ProcessInfo::processName() const
|
| 143 |
+
{
|
| 144 |
+
return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(processName));
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 148 |
+
|
| 149 |
+
_NS_INLINE void NS::ProcessInfo::setProcessName(const String* pString)
|
| 150 |
+
{
|
| 151 |
+
Object::sendMessage<void>(this, _NS_PRIVATE_SEL(setProcessName_), pString);
|
| 152 |
+
}
|
| 153 |
+
|
| 154 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 155 |
+
|
| 156 |
+
_NS_INLINE int NS::ProcessInfo::processIdentifier() const
|
| 157 |
+
{
|
| 158 |
+
return Object::sendMessage<int>(this, _NS_PRIVATE_SEL(processIdentifier));
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 162 |
+
|
| 163 |
+
_NS_INLINE NS::String* NS::ProcessInfo::globallyUniqueString() const
|
| 164 |
+
{
|
| 165 |
+
return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(globallyUniqueString));
|
| 166 |
+
}
|
| 167 |
+
|
| 168 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 169 |
+
|
| 170 |
+
_NS_INLINE NS::String* NS::ProcessInfo::userName() const
|
| 171 |
+
{
|
| 172 |
+
return Object::sendMessageSafe<String*>(this, _NS_PRIVATE_SEL(userName));
|
| 173 |
+
}
|
| 174 |
+
|
| 175 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 176 |
+
|
| 177 |
+
_NS_INLINE NS::String* NS::ProcessInfo::fullUserName() const
|
| 178 |
+
{
|
| 179 |
+
return Object::sendMessageSafe<String*>(this, _NS_PRIVATE_SEL(fullUserName));
|
| 180 |
+
}
|
| 181 |
+
|
| 182 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 183 |
+
|
| 184 |
+
_NS_INLINE NS::UInteger NS::ProcessInfo::operatingSystem() const
|
| 185 |
+
{
|
| 186 |
+
return Object::sendMessage<UInteger>(this, _NS_PRIVATE_SEL(operatingSystem));
|
| 187 |
+
}
|
| 188 |
+
|
| 189 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 190 |
+
|
| 191 |
+
_NS_INLINE NS::OperatingSystemVersion NS::ProcessInfo::operatingSystemVersion() const
|
| 192 |
+
{
|
| 193 |
+
return Object::sendMessage<OperatingSystemVersion>(this, _NS_PRIVATE_SEL(operatingSystemVersion));
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 197 |
+
|
| 198 |
+
_NS_INLINE NS::String* NS::ProcessInfo::operatingSystemVersionString() const
|
| 199 |
+
{
|
| 200 |
+
return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(operatingSystemVersionString));
|
| 201 |
+
}
|
| 202 |
+
|
| 203 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 204 |
+
|
| 205 |
+
_NS_INLINE bool NS::ProcessInfo::isOperatingSystemAtLeastVersion(OperatingSystemVersion version) const
|
| 206 |
+
{
|
| 207 |
+
return Object::sendMessage<bool>(this, _NS_PRIVATE_SEL(isOperatingSystemAtLeastVersion_), version);
|
| 208 |
+
}
|
| 209 |
+
|
| 210 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 211 |
+
|
| 212 |
+
_NS_INLINE NS::UInteger NS::ProcessInfo::processorCount() const
|
| 213 |
+
{
|
| 214 |
+
return Object::sendMessage<UInteger>(this, _NS_PRIVATE_SEL(processorCount));
|
| 215 |
+
}
|
| 216 |
+
|
| 217 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 218 |
+
|
| 219 |
+
_NS_INLINE NS::UInteger NS::ProcessInfo::activeProcessorCount() const
|
| 220 |
+
{
|
| 221 |
+
return Object::sendMessage<UInteger>(this, _NS_PRIVATE_SEL(activeProcessorCount));
|
| 222 |
+
}
|
| 223 |
+
|
| 224 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 225 |
+
|
| 226 |
+
_NS_INLINE unsigned long long NS::ProcessInfo::physicalMemory() const
|
| 227 |
+
{
|
| 228 |
+
return Object::sendMessage<unsigned long long>(this, _NS_PRIVATE_SEL(physicalMemory));
|
| 229 |
+
}
|
| 230 |
+
|
| 231 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 232 |
+
|
| 233 |
+
_NS_INLINE NS::TimeInterval NS::ProcessInfo::systemUptime() const
|
| 234 |
+
{
|
| 235 |
+
return Object::sendMessage<TimeInterval>(this, _NS_PRIVATE_SEL(systemUptime));
|
| 236 |
+
}
|
| 237 |
+
|
| 238 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 239 |
+
|
| 240 |
+
_NS_INLINE void NS::ProcessInfo::disableSuddenTermination()
|
| 241 |
+
{
|
| 242 |
+
Object::sendMessageSafe<void>(this, _NS_PRIVATE_SEL(disableSuddenTermination));
|
| 243 |
+
}
|
| 244 |
+
|
| 245 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 246 |
+
|
| 247 |
+
_NS_INLINE void NS::ProcessInfo::enableSuddenTermination()
|
| 248 |
+
{
|
| 249 |
+
Object::sendMessageSafe<void>(this, _NS_PRIVATE_SEL(enableSuddenTermination));
|
| 250 |
+
}
|
| 251 |
+
|
| 252 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 253 |
+
|
| 254 |
+
_NS_INLINE void NS::ProcessInfo::disableAutomaticTermination(const String* pReason)
|
| 255 |
+
{
|
| 256 |
+
Object::sendMessageSafe<void>(this, _NS_PRIVATE_SEL(disableAutomaticTermination_), pReason);
|
| 257 |
+
}
|
| 258 |
+
|
| 259 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 260 |
+
|
| 261 |
+
_NS_INLINE void NS::ProcessInfo::enableAutomaticTermination(const String* pReason)
|
| 262 |
+
{
|
| 263 |
+
Object::sendMessageSafe<void>(this, _NS_PRIVATE_SEL(enableAutomaticTermination_), pReason);
|
| 264 |
+
}
|
| 265 |
+
|
| 266 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 267 |
+
|
| 268 |
+
_NS_INLINE bool NS::ProcessInfo::automaticTerminationSupportEnabled() const
|
| 269 |
+
{
|
| 270 |
+
return Object::sendMessageSafe<bool>(this, _NS_PRIVATE_SEL(automaticTerminationSupportEnabled));
|
| 271 |
+
}
|
| 272 |
+
|
| 273 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 274 |
+
|
| 275 |
+
_NS_INLINE void NS::ProcessInfo::setAutomaticTerminationSupportEnabled(bool enabled)
|
| 276 |
+
{
|
| 277 |
+
Object::sendMessageSafe<void>(this, _NS_PRIVATE_SEL(setAutomaticTerminationSupportEnabled_), enabled);
|
| 278 |
+
}
|
| 279 |
+
|
| 280 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 281 |
+
|
| 282 |
+
_NS_INLINE NS::Object* NS::ProcessInfo::beginActivity(ActivityOptions options, const String* pReason)
|
| 283 |
+
{
|
| 284 |
+
return Object::sendMessage<Object*>(this, _NS_PRIVATE_SEL(beginActivityWithOptions_reason_), options, pReason);
|
| 285 |
+
}
|
| 286 |
+
|
| 287 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 288 |
+
|
| 289 |
+
_NS_INLINE void NS::ProcessInfo::endActivity(Object* pActivity)
|
| 290 |
+
{
|
| 291 |
+
Object::sendMessage<void>(this, _NS_PRIVATE_SEL(endActivity_), pActivity);
|
| 292 |
+
}
|
| 293 |
+
|
| 294 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 295 |
+
|
| 296 |
+
_NS_INLINE void NS::ProcessInfo::performActivity(ActivityOptions options, const String* pReason, void (^block)(void))
|
| 297 |
+
{
|
| 298 |
+
Object::sendMessage<void>(this, _NS_PRIVATE_SEL(performActivityWithOptions_reason_usingBlock_), options, pReason, block);
|
| 299 |
+
}
|
| 300 |
+
|
| 301 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 302 |
+
|
| 303 |
+
_NS_INLINE void NS::ProcessInfo::performActivity(ActivityOptions options, const String* pReason, const std::function<void()>& function)
|
| 304 |
+
{
|
| 305 |
+
__block std::function<void()> blockFunction = function;
|
| 306 |
+
|
| 307 |
+
performActivity(options, pReason, ^() { blockFunction(); });
|
| 308 |
+
}
|
| 309 |
+
|
| 310 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 311 |
+
|
| 312 |
+
_NS_INLINE void NS::ProcessInfo::performExpiringActivity(const String* pReason, void (^block)(bool expired))
|
| 313 |
+
{
|
| 314 |
+
Object::sendMessageSafe<void>(this, _NS_PRIVATE_SEL(performExpiringActivityWithReason_usingBlock_), pReason, block);
|
| 315 |
+
}
|
| 316 |
+
|
| 317 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 318 |
+
|
| 319 |
+
_NS_INLINE void NS::ProcessInfo::performExpiringActivity(const String* pReason, const std::function<void(bool expired)>& function)
|
| 320 |
+
{
|
| 321 |
+
__block std::function<void(bool expired)> blockFunction = function;
|
| 322 |
+
|
| 323 |
+
performExpiringActivity(pReason, ^(bool expired) { blockFunction(expired); });
|
| 324 |
+
}
|
| 325 |
+
|
| 326 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 327 |
+
|
| 328 |
+
_NS_INLINE NS::ProcessInfoThermalState NS::ProcessInfo::thermalState() const
|
| 329 |
+
{
|
| 330 |
+
return Object::sendMessage<ProcessInfoThermalState>(this, _NS_PRIVATE_SEL(thermalState));
|
| 331 |
+
}
|
| 332 |
+
|
| 333 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 334 |
+
|
| 335 |
+
_NS_INLINE bool NS::ProcessInfo::isLowPowerModeEnabled() const
|
| 336 |
+
{
|
| 337 |
+
return Object::sendMessageSafe<bool>(this, _NS_PRIVATE_SEL(isLowPowerModeEnabled));
|
| 338 |
+
}
|
| 339 |
+
|
| 340 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 341 |
+
|
| 342 |
+
_NS_INLINE bool NS::ProcessInfo::isiOSAppOnMac() const
|
| 343 |
+
{
|
| 344 |
+
return Object::sendMessageSafe<bool>(this, _NS_PRIVATE_SEL(isiOSAppOnMac));
|
| 345 |
+
}
|
| 346 |
+
|
| 347 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 348 |
+
|
| 349 |
+
_NS_INLINE bool NS::ProcessInfo::isMacCatalystApp() const
|
| 350 |
+
{
|
| 351 |
+
return Object::sendMessageSafe<bool>(this, _NS_PRIVATE_SEL(isMacCatalystApp));
|
| 352 |
+
}
|
| 353 |
+
|
| 354 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSRange.hpp
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Foundation/NSRange.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 24 |
+
|
| 25 |
+
#include "NSDefines.hpp"
|
| 26 |
+
#include "NSTypes.hpp"
|
| 27 |
+
|
| 28 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 29 |
+
|
| 30 |
+
namespace NS
|
| 31 |
+
{
|
| 32 |
+
struct Range
|
| 33 |
+
{
|
| 34 |
+
static Range Make(UInteger loc, UInteger len);
|
| 35 |
+
|
| 36 |
+
Range(UInteger loc, UInteger len);
|
| 37 |
+
|
| 38 |
+
bool Equal(const Range& range) const;
|
| 39 |
+
bool LocationInRange(UInteger loc) const;
|
| 40 |
+
UInteger Max() const;
|
| 41 |
+
|
| 42 |
+
UInteger location;
|
| 43 |
+
UInteger length;
|
| 44 |
+
} _NS_PACKED;
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 48 |
+
|
| 49 |
+
_NS_INLINE NS::Range::Range(UInteger loc, UInteger len)
|
| 50 |
+
: location(loc)
|
| 51 |
+
, length(len)
|
| 52 |
+
{
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 56 |
+
|
| 57 |
+
_NS_INLINE NS::Range NS::Range::Make(UInteger loc, UInteger len)
|
| 58 |
+
{
|
| 59 |
+
return Range(loc, len);
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 63 |
+
|
| 64 |
+
_NS_INLINE bool NS::Range::Equal(const Range& range) const
|
| 65 |
+
{
|
| 66 |
+
return (location == range.location) && (length == range.length);
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 70 |
+
|
| 71 |
+
_NS_INLINE bool NS::Range::LocationInRange(UInteger loc) const
|
| 72 |
+
{
|
| 73 |
+
return (!(loc < location)) && ((loc - location) < length);
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 77 |
+
|
| 78 |
+
_NS_INLINE NS::UInteger NS::Range::Max() const
|
| 79 |
+
{
|
| 80 |
+
return location + length;
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSSet.hpp
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Foundation/NSSet.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 24 |
+
|
| 25 |
+
#include "NSObject.hpp"
|
| 26 |
+
#include "NSEnumerator.hpp"
|
| 27 |
+
|
| 28 |
+
/*****Immutable Set*******/
|
| 29 |
+
|
| 30 |
+
namespace NS
|
| 31 |
+
{
|
| 32 |
+
class Set : public NS::Copying <Set>
|
| 33 |
+
{
|
| 34 |
+
public:
|
| 35 |
+
UInteger count() const;
|
| 36 |
+
Enumerator<Object>* objectEnumerator() const;
|
| 37 |
+
|
| 38 |
+
static Set* alloc();
|
| 39 |
+
|
| 40 |
+
Set* init();
|
| 41 |
+
Set* init(const Object* const* pObjects, UInteger count);
|
| 42 |
+
Set* init(const class Coder* pCoder);
|
| 43 |
+
|
| 44 |
+
};
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 48 |
+
|
| 49 |
+
_NS_INLINE NS::UInteger NS::Set::count() const
|
| 50 |
+
{
|
| 51 |
+
return NS::Object::sendMessage<NS::UInteger>(this, _NS_PRIVATE_SEL(count));
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 55 |
+
|
| 56 |
+
_NS_INLINE NS::Enumerator<NS::Object>* NS::Set::objectEnumerator() const
|
| 57 |
+
{
|
| 58 |
+
return NS::Object::sendMessage<Enumerator<NS::Object>*>(this, _NS_PRIVATE_SEL(objectEnumerator));
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 62 |
+
|
| 63 |
+
_NS_INLINE NS::Set* NS::Set::alloc()
|
| 64 |
+
{
|
| 65 |
+
return NS::Object::alloc<Set>(_NS_PRIVATE_CLS(NSSet));
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 69 |
+
|
| 70 |
+
_NS_INLINE NS::Set* NS::Set::init()
|
| 71 |
+
{
|
| 72 |
+
return NS::Object::init<Set>();
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 76 |
+
|
| 77 |
+
_NS_INLINE NS::Set* NS::Set::init(const Object* const* pObjects, NS::UInteger count)
|
| 78 |
+
{
|
| 79 |
+
return NS::Object::sendMessage<Set*>(this, _NS_PRIVATE_SEL(initWithObjects_count_), pObjects, count);
|
| 80 |
+
}
|
| 81 |
+
|
| 82 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 83 |
+
|
| 84 |
+
_NS_INLINE NS::Set* NS::Set::init(const class Coder* pCoder)
|
| 85 |
+
{
|
| 86 |
+
return Object::sendMessage<Set*>(this, _NS_PRIVATE_SEL(initWithCoder_), pCoder);
|
| 87 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSSharedPtr.hpp
ADDED
|
@@ -0,0 +1,311 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Foundation/NSSharedPtr.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "NSDefines.hpp"
|
| 24 |
+
|
| 25 |
+
namespace NS
|
| 26 |
+
{
|
| 27 |
+
template <class _Class>
|
| 28 |
+
class SharedPtr
|
| 29 |
+
{
|
| 30 |
+
public:
|
| 31 |
+
/**
|
| 32 |
+
* Create a new null pointer.
|
| 33 |
+
*/
|
| 34 |
+
SharedPtr();
|
| 35 |
+
|
| 36 |
+
/**
|
| 37 |
+
* Destroy this SharedPtr, decreasing the reference count.
|
| 38 |
+
*/
|
| 39 |
+
~SharedPtr();
|
| 40 |
+
|
| 41 |
+
/**
|
| 42 |
+
* SharedPtr copy constructor.
|
| 43 |
+
*/
|
| 44 |
+
SharedPtr(const SharedPtr<_Class>& other) noexcept;
|
| 45 |
+
|
| 46 |
+
/**
|
| 47 |
+
* Construction from another pointee type.
|
| 48 |
+
*/
|
| 49 |
+
template <class _OtherClass>
|
| 50 |
+
SharedPtr(const SharedPtr<_OtherClass>& other, typename std::enable_if_t<std::is_convertible_v<_OtherClass *, _Class *>> * = nullptr) noexcept;
|
| 51 |
+
|
| 52 |
+
/**
|
| 53 |
+
* SharedPtr move constructor.
|
| 54 |
+
*/
|
| 55 |
+
SharedPtr(SharedPtr<_Class>&& other) noexcept;
|
| 56 |
+
|
| 57 |
+
/**
|
| 58 |
+
* Move from another pointee type.
|
| 59 |
+
*/
|
| 60 |
+
template <class _OtherClass>
|
| 61 |
+
SharedPtr(SharedPtr<_OtherClass>&& other, typename std::enable_if_t<std::is_convertible_v<_OtherClass *, _Class *>> * = nullptr) noexcept;
|
| 62 |
+
|
| 63 |
+
/**
|
| 64 |
+
* Copy assignment operator.
|
| 65 |
+
* Copying increases reference count. Only releases previous pointee if objects are different.
|
| 66 |
+
*/
|
| 67 |
+
SharedPtr& operator=(const SharedPtr<_Class>& other);
|
| 68 |
+
|
| 69 |
+
/**
|
| 70 |
+
* Copy-assignment from different pointee.
|
| 71 |
+
* Copying increases reference count. Only releases previous pointee if objects are different.
|
| 72 |
+
*/
|
| 73 |
+
template <class _OtherClass>
|
| 74 |
+
typename std::enable_if_t<std::is_convertible_v<_OtherClass *, _Class *>, SharedPtr &>
|
| 75 |
+
operator=(const SharedPtr<_OtherClass>& other);
|
| 76 |
+
|
| 77 |
+
/**
|
| 78 |
+
* Move assignment operator.
|
| 79 |
+
* Move without affecting reference counts, unless pointees are equal. Moved-from object is reset to nullptr.
|
| 80 |
+
*/
|
| 81 |
+
SharedPtr& operator=(SharedPtr<_Class>&& other);
|
| 82 |
+
|
| 83 |
+
/**
|
| 84 |
+
* Move-asignment from different pointee.
|
| 85 |
+
* Move without affecting reference counts, unless pointees are equal. Moved-from object is reset to nullptr.
|
| 86 |
+
*/
|
| 87 |
+
template <class _OtherClass>
|
| 88 |
+
typename std::enable_if_t<std::is_convertible_v<_OtherClass *, _Class *>, SharedPtr &>
|
| 89 |
+
operator=(SharedPtr<_OtherClass>&& other);
|
| 90 |
+
|
| 91 |
+
/**
|
| 92 |
+
* Access raw pointee.
|
| 93 |
+
* @warning Avoid wrapping the returned value again, as it may lead double frees unless this object becomes detached.
|
| 94 |
+
*/
|
| 95 |
+
_Class* get() const;
|
| 96 |
+
|
| 97 |
+
/**
|
| 98 |
+
* Call operations directly on the pointee.
|
| 99 |
+
*/
|
| 100 |
+
_Class* operator->() const;
|
| 101 |
+
|
| 102 |
+
/**
|
| 103 |
+
* Implicit cast to bool.
|
| 104 |
+
*/
|
| 105 |
+
explicit operator bool() const;
|
| 106 |
+
|
| 107 |
+
/**
|
| 108 |
+
* Reset this SharedPtr to null, decreasing the reference count.
|
| 109 |
+
*/
|
| 110 |
+
void reset();
|
| 111 |
+
|
| 112 |
+
/**
|
| 113 |
+
* Detach the SharedPtr from the pointee, without decreasing the reference count.
|
| 114 |
+
*/
|
| 115 |
+
void detach();
|
| 116 |
+
|
| 117 |
+
template <class _OtherClass>
|
| 118 |
+
friend SharedPtr<_OtherClass> RetainPtr(_OtherClass* ptr);
|
| 119 |
+
|
| 120 |
+
template <class _OtherClass>
|
| 121 |
+
friend SharedPtr<_OtherClass> TransferPtr(_OtherClass* ptr);
|
| 122 |
+
|
| 123 |
+
private:
|
| 124 |
+
_Class* m_pObject;
|
| 125 |
+
};
|
| 126 |
+
|
| 127 |
+
/**
|
| 128 |
+
* Create a SharedPtr by retaining an existing raw pointer.
|
| 129 |
+
* Increases the reference count of the passed-in object.
|
| 130 |
+
* If the passed-in object was in an AutoreleasePool, it will be removed from it.
|
| 131 |
+
*/
|
| 132 |
+
template <class _Class>
|
| 133 |
+
_NS_INLINE NS::SharedPtr<_Class> RetainPtr(_Class* pObject)
|
| 134 |
+
{
|
| 135 |
+
NS::SharedPtr<_Class> ret;
|
| 136 |
+
ret.m_pObject = pObject->retain();
|
| 137 |
+
return ret;
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
/*
|
| 141 |
+
* Create a SharedPtr by transfering the ownership of an existing raw pointer to SharedPtr.
|
| 142 |
+
* Does not increase the reference count of the passed-in pointer, it is assumed to be >= 1.
|
| 143 |
+
* This method does not remove objects from an AutoreleasePool.
|
| 144 |
+
*/
|
| 145 |
+
template <class _Class>
|
| 146 |
+
_NS_INLINE NS::SharedPtr<_Class> TransferPtr(_Class* pObject)
|
| 147 |
+
{
|
| 148 |
+
NS::SharedPtr<_Class> ret;
|
| 149 |
+
ret.m_pObject = pObject;
|
| 150 |
+
return ret;
|
| 151 |
+
}
|
| 152 |
+
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
template <class _Class>
|
| 156 |
+
_NS_INLINE NS::SharedPtr<_Class>::SharedPtr()
|
| 157 |
+
: m_pObject(nullptr)
|
| 158 |
+
{
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
template <class _Class>
|
| 162 |
+
_NS_INLINE NS::SharedPtr<_Class>::~SharedPtr()
|
| 163 |
+
{
|
| 164 |
+
if (m_pObject)
|
| 165 |
+
{
|
| 166 |
+
m_pObject->release();
|
| 167 |
+
}
|
| 168 |
+
}
|
| 169 |
+
|
| 170 |
+
template <class _Class>
|
| 171 |
+
_NS_INLINE NS::SharedPtr<_Class>::SharedPtr(const NS::SharedPtr<_Class>& other) noexcept
|
| 172 |
+
: m_pObject(other.m_pObject->retain())
|
| 173 |
+
{
|
| 174 |
+
}
|
| 175 |
+
|
| 176 |
+
template <class _Class>
|
| 177 |
+
template <class _OtherClass>
|
| 178 |
+
_NS_INLINE NS::SharedPtr<_Class>::SharedPtr(const NS::SharedPtr<_OtherClass>& other, typename std::enable_if_t<std::is_convertible_v<_OtherClass *, _Class *>> *) noexcept
|
| 179 |
+
: m_pObject(reinterpret_cast<_Class*>(other.get()->retain()))
|
| 180 |
+
{
|
| 181 |
+
}
|
| 182 |
+
|
| 183 |
+
template <class _Class>
|
| 184 |
+
_NS_INLINE NS::SharedPtr<_Class>::SharedPtr(NS::SharedPtr<_Class>&& other) noexcept
|
| 185 |
+
: m_pObject(other.m_pObject)
|
| 186 |
+
{
|
| 187 |
+
other.m_pObject = nullptr;
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
template <class _Class>
|
| 191 |
+
template <class _OtherClass>
|
| 192 |
+
_NS_INLINE NS::SharedPtr<_Class>::SharedPtr(NS::SharedPtr<_OtherClass>&& other, typename std::enable_if_t<std::is_convertible_v<_OtherClass *, _Class *>> *) noexcept
|
| 193 |
+
: m_pObject(reinterpret_cast<_Class*>(other.get()))
|
| 194 |
+
{
|
| 195 |
+
other.detach();
|
| 196 |
+
}
|
| 197 |
+
|
| 198 |
+
template <class _Class>
|
| 199 |
+
_NS_INLINE _Class* NS::SharedPtr<_Class>::get() const
|
| 200 |
+
{
|
| 201 |
+
return m_pObject;
|
| 202 |
+
}
|
| 203 |
+
|
| 204 |
+
template <class _Class>
|
| 205 |
+
_NS_INLINE _Class* NS::SharedPtr<_Class>::operator->() const
|
| 206 |
+
{
|
| 207 |
+
return m_pObject;
|
| 208 |
+
}
|
| 209 |
+
|
| 210 |
+
template <class _Class>
|
| 211 |
+
_NS_INLINE NS::SharedPtr<_Class>::operator bool() const
|
| 212 |
+
{
|
| 213 |
+
return nullptr != m_pObject;
|
| 214 |
+
}
|
| 215 |
+
|
| 216 |
+
template <class _Class>
|
| 217 |
+
_NS_INLINE void NS::SharedPtr<_Class>::reset()
|
| 218 |
+
{
|
| 219 |
+
m_pObject->release();
|
| 220 |
+
m_pObject = nullptr;
|
| 221 |
+
}
|
| 222 |
+
|
| 223 |
+
template <class _Class>
|
| 224 |
+
_NS_INLINE void NS::SharedPtr<_Class>::detach()
|
| 225 |
+
{
|
| 226 |
+
m_pObject = nullptr;
|
| 227 |
+
}
|
| 228 |
+
|
| 229 |
+
template <class _Class>
|
| 230 |
+
_NS_INLINE NS::SharedPtr<_Class>& NS::SharedPtr<_Class>::operator=(const SharedPtr<_Class>& other)
|
| 231 |
+
{
|
| 232 |
+
if (m_pObject != other.m_pObject)
|
| 233 |
+
{
|
| 234 |
+
if (m_pObject)
|
| 235 |
+
{
|
| 236 |
+
m_pObject->release();
|
| 237 |
+
}
|
| 238 |
+
m_pObject = other.m_pObject->retain();
|
| 239 |
+
}
|
| 240 |
+
return *this;
|
| 241 |
+
}
|
| 242 |
+
|
| 243 |
+
template <class _Class>
|
| 244 |
+
template <class _OtherClass>
|
| 245 |
+
typename std::enable_if_t<std::is_convertible_v<_OtherClass *, _Class *>, NS::SharedPtr<_Class> &>
|
| 246 |
+
_NS_INLINE NS::SharedPtr<_Class>::operator=(const SharedPtr<_OtherClass>& other)
|
| 247 |
+
{
|
| 248 |
+
if (m_pObject != other.get())
|
| 249 |
+
{
|
| 250 |
+
if (m_pObject)
|
| 251 |
+
{
|
| 252 |
+
m_pObject->release();
|
| 253 |
+
}
|
| 254 |
+
m_pObject = reinterpret_cast<_Class*>(other.get()->retain());
|
| 255 |
+
}
|
| 256 |
+
return *this;
|
| 257 |
+
}
|
| 258 |
+
|
| 259 |
+
template <class _Class>
|
| 260 |
+
_NS_INLINE NS::SharedPtr<_Class>& NS::SharedPtr<_Class>::operator=(SharedPtr<_Class>&& other)
|
| 261 |
+
{
|
| 262 |
+
if (m_pObject != other.m_pObject)
|
| 263 |
+
{
|
| 264 |
+
if (m_pObject)
|
| 265 |
+
{
|
| 266 |
+
m_pObject->release();
|
| 267 |
+
}
|
| 268 |
+
m_pObject = other.m_pObject;
|
| 269 |
+
}
|
| 270 |
+
else
|
| 271 |
+
{
|
| 272 |
+
m_pObject = other.m_pObject;
|
| 273 |
+
other.m_pObject->release();
|
| 274 |
+
}
|
| 275 |
+
other.m_pObject = nullptr;
|
| 276 |
+
return *this;
|
| 277 |
+
}
|
| 278 |
+
|
| 279 |
+
template <class _Class>
|
| 280 |
+
template <class _OtherClass>
|
| 281 |
+
typename std::enable_if_t<std::is_convertible_v<_OtherClass *, _Class *>, NS::SharedPtr<_Class> &>
|
| 282 |
+
_NS_INLINE NS::SharedPtr<_Class>::operator=(SharedPtr<_OtherClass>&& other)
|
| 283 |
+
{
|
| 284 |
+
if (m_pObject != other.get())
|
| 285 |
+
{
|
| 286 |
+
if (m_pObject)
|
| 287 |
+
{
|
| 288 |
+
m_pObject->release();
|
| 289 |
+
}
|
| 290 |
+
m_pObject = reinterpret_cast<_Class*>(other.get());
|
| 291 |
+
other.detach();
|
| 292 |
+
}
|
| 293 |
+
else
|
| 294 |
+
{
|
| 295 |
+
m_pObject = other.get();
|
| 296 |
+
other.reset();
|
| 297 |
+
}
|
| 298 |
+
return *this;
|
| 299 |
+
}
|
| 300 |
+
|
| 301 |
+
template <class _ClassLhs, class _ClassRhs>
|
| 302 |
+
_NS_INLINE bool operator==(const NS::SharedPtr<_ClassLhs>& lhs, const NS::SharedPtr<_ClassRhs>& rhs)
|
| 303 |
+
{
|
| 304 |
+
return lhs.get() == rhs.get();
|
| 305 |
+
}
|
| 306 |
+
|
| 307 |
+
template <class _ClassLhs, class _ClassRhs>
|
| 308 |
+
_NS_INLINE bool operator!=(const NS::SharedPtr<_ClassLhs>& lhs, const NS::SharedPtr<_ClassRhs>& rhs)
|
| 309 |
+
{
|
| 310 |
+
return lhs.get() != rhs.get();
|
| 311 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSString.hpp
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Foundation/NSString.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 24 |
+
|
| 25 |
+
#include "NSDefines.hpp"
|
| 26 |
+
#include "NSObjCRuntime.hpp"
|
| 27 |
+
#include "NSObject.hpp"
|
| 28 |
+
#include "NSPrivate.hpp"
|
| 29 |
+
#include "NSRange.hpp"
|
| 30 |
+
#include "NSTypes.hpp"
|
| 31 |
+
|
| 32 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 33 |
+
|
| 34 |
+
namespace NS
|
| 35 |
+
{
|
| 36 |
+
_NS_ENUM(NS::UInteger, StringEncoding) {
|
| 37 |
+
ASCIIStringEncoding = 1,
|
| 38 |
+
NEXTSTEPStringEncoding = 2,
|
| 39 |
+
JapaneseEUCStringEncoding = 3,
|
| 40 |
+
UTF8StringEncoding = 4,
|
| 41 |
+
ISOLatin1StringEncoding = 5,
|
| 42 |
+
SymbolStringEncoding = 6,
|
| 43 |
+
NonLossyASCIIStringEncoding = 7,
|
| 44 |
+
ShiftJISStringEncoding = 8,
|
| 45 |
+
ISOLatin2StringEncoding = 9,
|
| 46 |
+
UnicodeStringEncoding = 10,
|
| 47 |
+
WindowsCP1251StringEncoding = 11,
|
| 48 |
+
WindowsCP1252StringEncoding = 12,
|
| 49 |
+
WindowsCP1253StringEncoding = 13,
|
| 50 |
+
WindowsCP1254StringEncoding = 14,
|
| 51 |
+
WindowsCP1250StringEncoding = 15,
|
| 52 |
+
ISO2022JPStringEncoding = 21,
|
| 53 |
+
MacOSRomanStringEncoding = 30,
|
| 54 |
+
|
| 55 |
+
UTF16StringEncoding = UnicodeStringEncoding,
|
| 56 |
+
|
| 57 |
+
UTF16BigEndianStringEncoding = 0x90000100,
|
| 58 |
+
UTF16LittleEndianStringEncoding = 0x94000100,
|
| 59 |
+
|
| 60 |
+
UTF32StringEncoding = 0x8c000100,
|
| 61 |
+
UTF32BigEndianStringEncoding = 0x98000100,
|
| 62 |
+
UTF32LittleEndianStringEncoding = 0x9c000100
|
| 63 |
+
};
|
| 64 |
+
|
| 65 |
+
_NS_OPTIONS(NS::UInteger, StringCompareOptions) {
|
| 66 |
+
CaseInsensitiveSearch = 1,
|
| 67 |
+
LiteralSearch = 2,
|
| 68 |
+
BackwardsSearch = 4,
|
| 69 |
+
AnchoredSearch = 8,
|
| 70 |
+
NumericSearch = 64,
|
| 71 |
+
DiacriticInsensitiveSearch = 128,
|
| 72 |
+
WidthInsensitiveSearch = 256,
|
| 73 |
+
ForcedOrderingSearch = 512,
|
| 74 |
+
RegularExpressionSearch = 1024
|
| 75 |
+
};
|
| 76 |
+
|
| 77 |
+
using unichar = unsigned short;
|
| 78 |
+
|
| 79 |
+
class String : public Copying<String>
|
| 80 |
+
{
|
| 81 |
+
public:
|
| 82 |
+
static String* string();
|
| 83 |
+
static String* string(const String* pString);
|
| 84 |
+
static String* string(const char* pString, StringEncoding encoding);
|
| 85 |
+
|
| 86 |
+
static String* alloc();
|
| 87 |
+
String* init();
|
| 88 |
+
String* init(const String* pString);
|
| 89 |
+
String* init(const char* pString, StringEncoding encoding);
|
| 90 |
+
String* init(void* pBytes, UInteger len, StringEncoding encoding, bool freeBuffer);
|
| 91 |
+
|
| 92 |
+
unichar character(UInteger index) const;
|
| 93 |
+
UInteger length() const;
|
| 94 |
+
|
| 95 |
+
const char* cString(StringEncoding encoding) const;
|
| 96 |
+
const char* utf8String() const;
|
| 97 |
+
UInteger maximumLengthOfBytes(StringEncoding encoding) const;
|
| 98 |
+
UInteger lengthOfBytes(StringEncoding encoding) const;
|
| 99 |
+
|
| 100 |
+
bool isEqualToString(const String* pString) const;
|
| 101 |
+
Range rangeOfString(const String* pString, StringCompareOptions options) const;
|
| 102 |
+
|
| 103 |
+
const char* fileSystemRepresentation() const;
|
| 104 |
+
|
| 105 |
+
String* stringByAppendingString(const String* pString) const;
|
| 106 |
+
ComparisonResult caseInsensitiveCompare(const String* pString) const;
|
| 107 |
+
};
|
| 108 |
+
|
| 109 |
+
/// Create an NS::String* from a string literal.
|
| 110 |
+
#define MTLSTR(literal) (NS::String*)__builtin___CFStringMakeConstantString("" literal "")
|
| 111 |
+
|
| 112 |
+
template <std::size_t _StringLen>
|
| 113 |
+
[[deprecated("please use MTLSTR(str)")]] constexpr const String* MakeConstantString(const char (&str)[_StringLen])
|
| 114 |
+
{
|
| 115 |
+
return reinterpret_cast<const String*>(__CFStringMakeConstantString(str));
|
| 116 |
+
}
|
| 117 |
+
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 121 |
+
|
| 122 |
+
_NS_INLINE NS::String* NS::String::string()
|
| 123 |
+
{
|
| 124 |
+
return Object::sendMessage<String*>(_NS_PRIVATE_CLS(NSString), _NS_PRIVATE_SEL(string));
|
| 125 |
+
}
|
| 126 |
+
|
| 127 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 128 |
+
|
| 129 |
+
_NS_INLINE NS::String* NS::String::string(const String* pString)
|
| 130 |
+
{
|
| 131 |
+
return Object::sendMessage<String*>(_NS_PRIVATE_CLS(NSString), _NS_PRIVATE_SEL(stringWithString_), pString);
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 135 |
+
|
| 136 |
+
_NS_INLINE NS::String* NS::String::string(const char* pString, StringEncoding encoding)
|
| 137 |
+
{
|
| 138 |
+
return Object::sendMessage<String*>(_NS_PRIVATE_CLS(NSString), _NS_PRIVATE_SEL(stringWithCString_encoding_), pString, encoding);
|
| 139 |
+
}
|
| 140 |
+
|
| 141 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 142 |
+
|
| 143 |
+
_NS_INLINE NS::String* NS::String::alloc()
|
| 144 |
+
{
|
| 145 |
+
return Object::alloc<String>(_NS_PRIVATE_CLS(NSString));
|
| 146 |
+
}
|
| 147 |
+
|
| 148 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 149 |
+
|
| 150 |
+
_NS_INLINE NS::String* NS::String::init()
|
| 151 |
+
{
|
| 152 |
+
return Object::init<String>();
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 156 |
+
|
| 157 |
+
_NS_INLINE NS::String* NS::String::init(const String* pString)
|
| 158 |
+
{
|
| 159 |
+
return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(initWithString_), pString);
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 163 |
+
|
| 164 |
+
_NS_INLINE NS::String* NS::String::init(const char* pString, StringEncoding encoding)
|
| 165 |
+
{
|
| 166 |
+
return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(initWithCString_encoding_), pString, encoding);
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 170 |
+
|
| 171 |
+
_NS_INLINE NS::String* NS::String::init(void* pBytes, UInteger len, StringEncoding encoding, bool freeBuffer)
|
| 172 |
+
{
|
| 173 |
+
return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(initWithBytesNoCopy_length_encoding_freeWhenDone_), pBytes, len, encoding, freeBuffer);
|
| 174 |
+
}
|
| 175 |
+
|
| 176 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 177 |
+
|
| 178 |
+
_NS_INLINE NS::unichar NS::String::character(UInteger index) const
|
| 179 |
+
{
|
| 180 |
+
return Object::sendMessage<unichar>(this, _NS_PRIVATE_SEL(characterAtIndex_), index);
|
| 181 |
+
}
|
| 182 |
+
|
| 183 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 184 |
+
|
| 185 |
+
_NS_INLINE NS::UInteger NS::String::length() const
|
| 186 |
+
{
|
| 187 |
+
return Object::sendMessage<UInteger>(this, _NS_PRIVATE_SEL(length));
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 191 |
+
|
| 192 |
+
_NS_INLINE const char* NS::String::cString(StringEncoding encoding) const
|
| 193 |
+
{
|
| 194 |
+
return Object::sendMessage<const char*>(this, _NS_PRIVATE_SEL(cStringUsingEncoding_), encoding);
|
| 195 |
+
}
|
| 196 |
+
|
| 197 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 198 |
+
|
| 199 |
+
_NS_INLINE const char* NS::String::utf8String() const
|
| 200 |
+
{
|
| 201 |
+
return Object::sendMessage<const char*>(this, _NS_PRIVATE_SEL(UTF8String));
|
| 202 |
+
}
|
| 203 |
+
|
| 204 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 205 |
+
|
| 206 |
+
_NS_INLINE NS::UInteger NS::String::maximumLengthOfBytes(StringEncoding encoding) const
|
| 207 |
+
{
|
| 208 |
+
return Object::sendMessage<UInteger>(this, _NS_PRIVATE_SEL(maximumLengthOfBytesUsingEncoding_), encoding);
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 212 |
+
|
| 213 |
+
_NS_INLINE NS::UInteger NS::String::lengthOfBytes(StringEncoding encoding) const
|
| 214 |
+
{
|
| 215 |
+
return Object::sendMessage<UInteger>(this, _NS_PRIVATE_SEL(lengthOfBytesUsingEncoding_), encoding);
|
| 216 |
+
}
|
| 217 |
+
|
| 218 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 219 |
+
|
| 220 |
+
_NS_INLINE bool NS::String::isEqualToString(const NS::String* pString) const
|
| 221 |
+
{
|
| 222 |
+
return Object::sendMessage<bool>(this, _NS_PRIVATE_SEL(isEqualToString_), pString);
|
| 223 |
+
}
|
| 224 |
+
|
| 225 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 226 |
+
|
| 227 |
+
_NS_INLINE NS::Range NS::String::rangeOfString(const NS::String* pString, NS::StringCompareOptions options) const
|
| 228 |
+
{
|
| 229 |
+
return Object::sendMessage<Range>(this, _NS_PRIVATE_SEL(rangeOfString_options_), pString, options);
|
| 230 |
+
}
|
| 231 |
+
|
| 232 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 233 |
+
|
| 234 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 235 |
+
|
| 236 |
+
_NS_INLINE const char* NS::String::fileSystemRepresentation() const
|
| 237 |
+
{
|
| 238 |
+
return Object::sendMessage<const char*>(this, _NS_PRIVATE_SEL(fileSystemRepresentation));
|
| 239 |
+
}
|
| 240 |
+
|
| 241 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 242 |
+
|
| 243 |
+
_NS_INLINE NS::String* NS::String::stringByAppendingString(const String* pString) const
|
| 244 |
+
{
|
| 245 |
+
return Object::sendMessage<NS::String*>(this, _NS_PRIVATE_SEL(stringByAppendingString_), pString);
|
| 246 |
+
}
|
| 247 |
+
|
| 248 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 249 |
+
|
| 250 |
+
_NS_INLINE NS::ComparisonResult NS::String::caseInsensitiveCompare(const String* pString) const
|
| 251 |
+
{
|
| 252 |
+
return Object::sendMessage<NS::ComparisonResult>(this, _NS_PRIVATE_SEL(caseInsensitiveCompare_), pString);
|
| 253 |
+
}
|
| 254 |
+
|
| 255 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSTypes.hpp
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Foundation/NSTypes.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 24 |
+
|
| 25 |
+
#include "NSDefines.hpp"
|
| 26 |
+
|
| 27 |
+
#include <CoreFoundation/CoreFoundation.h>
|
| 28 |
+
#include <cstdint>
|
| 29 |
+
|
| 30 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 31 |
+
|
| 32 |
+
namespace NS
|
| 33 |
+
{
|
| 34 |
+
using TimeInterval = double;
|
| 35 |
+
|
| 36 |
+
using Integer = std::intptr_t;
|
| 37 |
+
using UInteger = std::uintptr_t;
|
| 38 |
+
|
| 39 |
+
const Integer IntegerMax = INTPTR_MAX;
|
| 40 |
+
const Integer IntegerMin = INTPTR_MIN;
|
| 41 |
+
const UInteger UIntegerMax = UINTPTR_MAX;
|
| 42 |
+
|
| 43 |
+
struct OperatingSystemVersion
|
| 44 |
+
{
|
| 45 |
+
Integer majorVersion;
|
| 46 |
+
Integer minorVersion;
|
| 47 |
+
Integer patchVersion;
|
| 48 |
+
} _NS_PACKED;
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Foundation/NSURL.hpp
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Foundation/NSURL.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 24 |
+
|
| 25 |
+
#include "NSDefines.hpp"
|
| 26 |
+
#include "NSObject.hpp"
|
| 27 |
+
#include "NSPrivate.hpp"
|
| 28 |
+
#include "NSTypes.hpp"
|
| 29 |
+
|
| 30 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 31 |
+
|
| 32 |
+
namespace NS
|
| 33 |
+
{
|
| 34 |
+
class URL : public Copying<URL>
|
| 35 |
+
{
|
| 36 |
+
public:
|
| 37 |
+
static URL* fileURLWithPath(const class String* pPath);
|
| 38 |
+
|
| 39 |
+
static URL* alloc();
|
| 40 |
+
URL* init();
|
| 41 |
+
URL* init(const class String* pString);
|
| 42 |
+
URL* initFileURLWithPath(const class String* pPath);
|
| 43 |
+
|
| 44 |
+
const char* fileSystemRepresentation() const;
|
| 45 |
+
};
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 49 |
+
|
| 50 |
+
_NS_INLINE NS::URL* NS::URL::fileURLWithPath(const String* pPath)
|
| 51 |
+
{
|
| 52 |
+
return Object::sendMessage<URL*>(_NS_PRIVATE_CLS(NSURL), _NS_PRIVATE_SEL(fileURLWithPath_), pPath);
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 56 |
+
|
| 57 |
+
_NS_INLINE NS::URL* NS::URL::alloc()
|
| 58 |
+
{
|
| 59 |
+
return Object::alloc<URL>(_NS_PRIVATE_CLS(NSURL));
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 63 |
+
|
| 64 |
+
_NS_INLINE NS::URL* NS::URL::init()
|
| 65 |
+
{
|
| 66 |
+
return Object::init<URL>();
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 70 |
+
|
| 71 |
+
_NS_INLINE NS::URL* NS::URL::init(const String* pString)
|
| 72 |
+
{
|
| 73 |
+
return Object::sendMessage<URL*>(this, _NS_PRIVATE_SEL(initWithString_), pString);
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 77 |
+
|
| 78 |
+
_NS_INLINE NS::URL* NS::URL::initFileURLWithPath(const String* pPath)
|
| 79 |
+
{
|
| 80 |
+
return Object::sendMessage<URL*>(this, _NS_PRIVATE_SEL(initFileURLWithPath_), pPath);
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 84 |
+
|
| 85 |
+
_NS_INLINE const char* NS::URL::fileSystemRepresentation() const
|
| 86 |
+
{
|
| 87 |
+
return Object::sendMessage<const char*>(this, _NS_PRIVATE_SEL(fileSystemRepresentation));
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
lib/python3.11/site-packages/mlx/include/metal_cpp/LICENSE.txt
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
Apache License
|
| 3 |
+
Version 2.0, January 2004
|
| 4 |
+
http://www.apache.org/licenses/
|
| 5 |
+
|
| 6 |
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
| 7 |
+
|
| 8 |
+
1. Definitions.
|
| 9 |
+
|
| 10 |
+
"License" shall mean the terms and conditions for use, reproduction,
|
| 11 |
+
and distribution as defined by Sections 1 through 9 of this document.
|
| 12 |
+
|
| 13 |
+
"Licensor" shall mean the copyright owner or entity authorized by
|
| 14 |
+
the copyright owner that is granting the License.
|
| 15 |
+
|
| 16 |
+
"Legal Entity" shall mean the union of the acting entity and all
|
| 17 |
+
other entities that control, are controlled by, or are under common
|
| 18 |
+
control with that entity. For the purposes of this definition,
|
| 19 |
+
"control" means (i) the power, direct or indirect, to cause the
|
| 20 |
+
direction or management of such entity, whether by contract or
|
| 21 |
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
| 22 |
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
| 23 |
+
|
| 24 |
+
"You" (or "Your") shall mean an individual or Legal Entity
|
| 25 |
+
exercising permissions granted by this License.
|
| 26 |
+
|
| 27 |
+
"Source" form shall mean the preferred form for making modifications,
|
| 28 |
+
including but not limited to software source code, documentation
|
| 29 |
+
source, and configuration files.
|
| 30 |
+
|
| 31 |
+
"Object" form shall mean any form resulting from mechanical
|
| 32 |
+
transformation or translation of a Source form, including but
|
| 33 |
+
not limited to compiled object code, generated documentation,
|
| 34 |
+
and conversions to other media types.
|
| 35 |
+
|
| 36 |
+
"Work" shall mean the work of authorship, whether in Source or
|
| 37 |
+
Object form, made available under the License, as indicated by a
|
| 38 |
+
copyright notice that is included in or attached to the work
|
| 39 |
+
(an example is provided in the Appendix below).
|
| 40 |
+
|
| 41 |
+
"Derivative Works" shall mean any work, whether in Source or Object
|
| 42 |
+
form, that is based on (or derived from) the Work and for which the
|
| 43 |
+
editorial revisions, annotations, elaborations, or other modifications
|
| 44 |
+
represent, as a whole, an original work of authorship. For the purposes
|
| 45 |
+
of this License, Derivative Works shall not include works that remain
|
| 46 |
+
separable from, or merely link (or bind by name) to the interfaces of,
|
| 47 |
+
the Work and Derivative Works thereof.
|
| 48 |
+
|
| 49 |
+
"Contribution" shall mean any work of authorship, including
|
| 50 |
+
the original version of the Work and any modifications or additions
|
| 51 |
+
to that Work or Derivative Works thereof, that is intentionally
|
| 52 |
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
| 53 |
+
or by an individual or Legal Entity authorized to submit on behalf of
|
| 54 |
+
the copyright owner. For the purposes of this definition, "submitted"
|
| 55 |
+
means any form of electronic, verbal, or written communication sent
|
| 56 |
+
to the Licensor or its representatives, including but not limited to
|
| 57 |
+
communication on electronic mailing lists, source code control systems,
|
| 58 |
+
and issue tracking systems that are managed by, or on behalf of, the
|
| 59 |
+
Licensor for the purpose of discussing and improving the Work, but
|
| 60 |
+
excluding communication that is conspicuously marked or otherwise
|
| 61 |
+
designated in writing by the copyright owner as "Not a Contribution."
|
| 62 |
+
|
| 63 |
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
| 64 |
+
on behalf of whom a Contribution has been received by Licensor and
|
| 65 |
+
subsequently incorporated within the Work.
|
| 66 |
+
|
| 67 |
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
| 68 |
+
this License, each Contributor hereby grants to You a perpetual,
|
| 69 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
| 70 |
+
copyright license to reproduce, prepare Derivative Works of,
|
| 71 |
+
publicly display, publicly perform, sublicense, and distribute the
|
| 72 |
+
Work and such Derivative Works in Source or Object form.
|
| 73 |
+
|
| 74 |
+
3. Grant of Patent License. Subject to the terms and conditions of
|
| 75 |
+
this License, each Contributor hereby grants to You a perpetual,
|
| 76 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
| 77 |
+
(except as stated in this section) patent license to make, have made,
|
| 78 |
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
| 79 |
+
where such license applies only to those patent claims licensable
|
| 80 |
+
by such Contributor that are necessarily infringed by their
|
| 81 |
+
Contribution(s) alone or by combination of their Contribution(s)
|
| 82 |
+
with the Work to which such Contribution(s) was submitted. If You
|
| 83 |
+
institute patent litigation against any entity (including a
|
| 84 |
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
| 85 |
+
or a Contribution incorporated within the Work constitutes direct
|
| 86 |
+
or contributory patent infringement, then any patent licenses
|
| 87 |
+
granted to You under this License for that Work shall terminate
|
| 88 |
+
as of the date such litigation is filed.
|
| 89 |
+
|
| 90 |
+
4. Redistribution. You may reproduce and distribute copies of the
|
| 91 |
+
Work or Derivative Works thereof in any medium, with or without
|
| 92 |
+
modifications, and in Source or Object form, provided that You
|
| 93 |
+
meet the following conditions:
|
| 94 |
+
|
| 95 |
+
(a) You must give any other recipients of the Work or
|
| 96 |
+
Derivative Works a copy of this License; and
|
| 97 |
+
|
| 98 |
+
(b) You must cause any modified files to carry prominent notices
|
| 99 |
+
stating that You changed the files; and
|
| 100 |
+
|
| 101 |
+
(c) You must retain, in the Source form of any Derivative Works
|
| 102 |
+
that You distribute, all copyright, patent, trademark, and
|
| 103 |
+
attribution notices from the Source form of the Work,
|
| 104 |
+
excluding those notices that do not pertain to any part of
|
| 105 |
+
the Derivative Works; and
|
| 106 |
+
|
| 107 |
+
(d) If the Work includes a "NOTICE" text file as part of its
|
| 108 |
+
distribution, then any Derivative Works that You distribute must
|
| 109 |
+
include a readable copy of the attribution notices contained
|
| 110 |
+
within such NOTICE file, excluding those notices that do not
|
| 111 |
+
pertain to any part of the Derivative Works, in at least one
|
| 112 |
+
of the following places: within a NOTICE text file distributed
|
| 113 |
+
as part of the Derivative Works; within the Source form or
|
| 114 |
+
documentation, if provided along with the Derivative Works; or,
|
| 115 |
+
within a display generated by the Derivative Works, if and
|
| 116 |
+
wherever such third-party notices normally appear. The contents
|
| 117 |
+
of the NOTICE file are for informational purposes only and
|
| 118 |
+
do not modify the License. You may add Your own attribution
|
| 119 |
+
notices within Derivative Works that You distribute, alongside
|
| 120 |
+
or as an addendum to the NOTICE text from the Work, provided
|
| 121 |
+
that such additional attribution notices cannot be construed
|
| 122 |
+
as modifying the License.
|
| 123 |
+
|
| 124 |
+
You may add Your own copyright statement to Your modifications and
|
| 125 |
+
may provide additional or different license terms and conditions
|
| 126 |
+
for use, reproduction, or distribution of Your modifications, or
|
| 127 |
+
for any such Derivative Works as a whole, provided Your use,
|
| 128 |
+
reproduction, and distribution of the Work otherwise complies with
|
| 129 |
+
the conditions stated in this License.
|
| 130 |
+
|
| 131 |
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
| 132 |
+
any Contribution intentionally submitted for inclusion in the Work
|
| 133 |
+
by You to the Licensor shall be under the terms and conditions of
|
| 134 |
+
this License, without any additional terms or conditions.
|
| 135 |
+
Notwithstanding the above, nothing herein shall supersede or modify
|
| 136 |
+
the terms of any separate license agreement you may have executed
|
| 137 |
+
with Licensor regarding such Contributions.
|
| 138 |
+
|
| 139 |
+
6. Trademarks. This License does not grant permission to use the trade
|
| 140 |
+
names, trademarks, service marks, or product names of the Licensor,
|
| 141 |
+
except as required for reasonable and customary use in describing the
|
| 142 |
+
origin of the Work and reproducing the content of the NOTICE file.
|
| 143 |
+
|
| 144 |
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
| 145 |
+
agreed to in writing, Licensor provides the Work (and each
|
| 146 |
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
| 147 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
| 148 |
+
implied, including, without limitation, any warranties or conditions
|
| 149 |
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
| 150 |
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
| 151 |
+
appropriateness of using or redistributing the Work and assume any
|
| 152 |
+
risks associated with Your exercise of permissions under this License.
|
| 153 |
+
|
| 154 |
+
8. Limitation of Liability. In no event and under no legal theory,
|
| 155 |
+
whether in tort (including negligence), contract, or otherwise,
|
| 156 |
+
unless required by applicable law (such as deliberate and grossly
|
| 157 |
+
negligent acts) or agreed to in writing, shall any Contributor be
|
| 158 |
+
liable to You for damages, including any direct, indirect, special,
|
| 159 |
+
incidental, or consequential damages of any character arising as a
|
| 160 |
+
result of this License or out of the use or inability to use the
|
| 161 |
+
Work (including but not limited to damages for loss of goodwill,
|
| 162 |
+
work stoppage, computer failure or malfunction, or any and all
|
| 163 |
+
other commercial damages or losses), even if such Contributor
|
| 164 |
+
has been advised of the possibility of such damages.
|
| 165 |
+
|
| 166 |
+
9. Accepting Warranty or Additional Liability. While redistributing
|
| 167 |
+
the Work or Derivative Works thereof, You may choose to offer,
|
| 168 |
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
| 169 |
+
or other liability obligations and/or rights consistent with this
|
| 170 |
+
License. However, in accepting such obligations, You may act only
|
| 171 |
+
on Your own behalf and on Your sole responsibility, not on behalf
|
| 172 |
+
of any other Contributor, and only if You agree to indemnify,
|
| 173 |
+
defend, and hold each Contributor harmless for any liability
|
| 174 |
+
incurred by, or claims asserted against, such Contributor by reason
|
| 175 |
+
of your accepting any such warranty or additional liability.
|
| 176 |
+
|
| 177 |
+
END OF TERMS AND CONDITIONS
|
| 178 |
+
|
| 179 |
+
APPENDIX: How to apply the Apache License to your work.
|
| 180 |
+
|
| 181 |
+
To apply the Apache License to your work, attach the following
|
| 182 |
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
| 183 |
+
replaced with your own identifying information. (Don't include
|
| 184 |
+
the brackets!) The text should be enclosed in the appropriate
|
| 185 |
+
comment syntax for the file format. We also recommend that a
|
| 186 |
+
file or class name and description of purpose be included on the
|
| 187 |
+
same "printed page" as the copyright notice for easier
|
| 188 |
+
identification within third-party archives.
|
| 189 |
+
|
| 190 |
+
Copyright © 2023 Apple Inc.
|
| 191 |
+
|
| 192 |
+
Licensed under the Apache License, Version 2.0 (the "License");
|
| 193 |
+
you may not use this file except in compliance with the License.
|
| 194 |
+
You may obtain a copy of the License at
|
| 195 |
+
|
| 196 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
| 197 |
+
|
| 198 |
+
Unless required by applicable law or agreed to in writing, software
|
| 199 |
+
distributed under the License is distributed on an "AS IS" BASIS,
|
| 200 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 201 |
+
See the License for the specific language governing permissions and
|
| 202 |
+
limitations under the License.
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLAccelerationStructure.hpp
ADDED
|
@@ -0,0 +1,1826 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLAccelerationStructure.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLAccelerationStructure.hpp"
|
| 30 |
+
#include "MTLAccelerationStructureTypes.hpp"
|
| 31 |
+
#include "MTLResource.hpp"
|
| 32 |
+
#include "MTLStageInputOutputDescriptor.hpp"
|
| 33 |
+
#include "MTLTypes.hpp"
|
| 34 |
+
|
| 35 |
+
namespace MTL
|
| 36 |
+
{
|
| 37 |
+
_MTL_OPTIONS(NS::UInteger, AccelerationStructureUsage) {
|
| 38 |
+
AccelerationStructureUsageNone = 0,
|
| 39 |
+
AccelerationStructureUsageRefit = 1,
|
| 40 |
+
AccelerationStructureUsagePreferFastBuild = 2,
|
| 41 |
+
AccelerationStructureUsageExtendedLimits = 4,
|
| 42 |
+
};
|
| 43 |
+
|
| 44 |
+
_MTL_OPTIONS(uint32_t, AccelerationStructureInstanceOptions) {
|
| 45 |
+
AccelerationStructureInstanceOptionNone = 0,
|
| 46 |
+
AccelerationStructureInstanceOptionDisableTriangleCulling = 1,
|
| 47 |
+
AccelerationStructureInstanceOptionTriangleFrontFacingWindingCounterClockwise = 2,
|
| 48 |
+
AccelerationStructureInstanceOptionOpaque = 4,
|
| 49 |
+
AccelerationStructureInstanceOptionNonOpaque = 8,
|
| 50 |
+
};
|
| 51 |
+
|
| 52 |
+
class AccelerationStructureDescriptor : public NS::Copying<AccelerationStructureDescriptor>
|
| 53 |
+
{
|
| 54 |
+
public:
|
| 55 |
+
static class AccelerationStructureDescriptor* alloc();
|
| 56 |
+
|
| 57 |
+
class AccelerationStructureDescriptor* init();
|
| 58 |
+
|
| 59 |
+
MTL::AccelerationStructureUsage usage() const;
|
| 60 |
+
void setUsage(MTL::AccelerationStructureUsage usage);
|
| 61 |
+
};
|
| 62 |
+
|
| 63 |
+
class AccelerationStructureGeometryDescriptor : public NS::Copying<AccelerationStructureGeometryDescriptor>
|
| 64 |
+
{
|
| 65 |
+
public:
|
| 66 |
+
static class AccelerationStructureGeometryDescriptor* alloc();
|
| 67 |
+
|
| 68 |
+
class AccelerationStructureGeometryDescriptor* init();
|
| 69 |
+
|
| 70 |
+
NS::UInteger intersectionFunctionTableOffset() const;
|
| 71 |
+
void setIntersectionFunctionTableOffset(NS::UInteger intersectionFunctionTableOffset);
|
| 72 |
+
|
| 73 |
+
bool opaque() const;
|
| 74 |
+
void setOpaque(bool opaque);
|
| 75 |
+
|
| 76 |
+
bool allowDuplicateIntersectionFunctionInvocation() const;
|
| 77 |
+
void setAllowDuplicateIntersectionFunctionInvocation(bool allowDuplicateIntersectionFunctionInvocation);
|
| 78 |
+
|
| 79 |
+
NS::String* label() const;
|
| 80 |
+
void setLabel(const NS::String* label);
|
| 81 |
+
|
| 82 |
+
class Buffer* primitiveDataBuffer() const;
|
| 83 |
+
void setPrimitiveDataBuffer(const class Buffer* primitiveDataBuffer);
|
| 84 |
+
|
| 85 |
+
NS::UInteger primitiveDataBufferOffset() const;
|
| 86 |
+
void setPrimitiveDataBufferOffset(NS::UInteger primitiveDataBufferOffset);
|
| 87 |
+
|
| 88 |
+
NS::UInteger primitiveDataStride() const;
|
| 89 |
+
void setPrimitiveDataStride(NS::UInteger primitiveDataStride);
|
| 90 |
+
|
| 91 |
+
NS::UInteger primitiveDataElementSize() const;
|
| 92 |
+
void setPrimitiveDataElementSize(NS::UInteger primitiveDataElementSize);
|
| 93 |
+
};
|
| 94 |
+
|
| 95 |
+
_MTL_ENUM(uint32_t, MotionBorderMode) {
|
| 96 |
+
MotionBorderModeClamp = 0,
|
| 97 |
+
MotionBorderModeVanish = 1,
|
| 98 |
+
};
|
| 99 |
+
|
| 100 |
+
class PrimitiveAccelerationStructureDescriptor : public NS::Copying<PrimitiveAccelerationStructureDescriptor, MTL::AccelerationStructureDescriptor>
|
| 101 |
+
{
|
| 102 |
+
public:
|
| 103 |
+
static class PrimitiveAccelerationStructureDescriptor* alloc();
|
| 104 |
+
|
| 105 |
+
class PrimitiveAccelerationStructureDescriptor* init();
|
| 106 |
+
|
| 107 |
+
NS::Array* geometryDescriptors() const;
|
| 108 |
+
void setGeometryDescriptors(const NS::Array* geometryDescriptors);
|
| 109 |
+
|
| 110 |
+
MTL::MotionBorderMode motionStartBorderMode() const;
|
| 111 |
+
void setMotionStartBorderMode(MTL::MotionBorderMode motionStartBorderMode);
|
| 112 |
+
|
| 113 |
+
MTL::MotionBorderMode motionEndBorderMode() const;
|
| 114 |
+
void setMotionEndBorderMode(MTL::MotionBorderMode motionEndBorderMode);
|
| 115 |
+
|
| 116 |
+
float motionStartTime() const;
|
| 117 |
+
void setMotionStartTime(float motionStartTime);
|
| 118 |
+
|
| 119 |
+
float motionEndTime() const;
|
| 120 |
+
void setMotionEndTime(float motionEndTime);
|
| 121 |
+
|
| 122 |
+
NS::UInteger motionKeyframeCount() const;
|
| 123 |
+
void setMotionKeyframeCount(NS::UInteger motionKeyframeCount);
|
| 124 |
+
|
| 125 |
+
static MTL::PrimitiveAccelerationStructureDescriptor* descriptor();
|
| 126 |
+
};
|
| 127 |
+
|
| 128 |
+
class AccelerationStructureTriangleGeometryDescriptor : public NS::Copying<AccelerationStructureTriangleGeometryDescriptor, MTL::AccelerationStructureGeometryDescriptor>
|
| 129 |
+
{
|
| 130 |
+
public:
|
| 131 |
+
static class AccelerationStructureTriangleGeometryDescriptor* alloc();
|
| 132 |
+
|
| 133 |
+
class AccelerationStructureTriangleGeometryDescriptor* init();
|
| 134 |
+
|
| 135 |
+
class Buffer* vertexBuffer() const;
|
| 136 |
+
void setVertexBuffer(const class Buffer* vertexBuffer);
|
| 137 |
+
|
| 138 |
+
NS::UInteger vertexBufferOffset() const;
|
| 139 |
+
void setVertexBufferOffset(NS::UInteger vertexBufferOffset);
|
| 140 |
+
|
| 141 |
+
MTL::AttributeFormat vertexFormat() const;
|
| 142 |
+
void setVertexFormat(MTL::AttributeFormat vertexFormat);
|
| 143 |
+
|
| 144 |
+
NS::UInteger vertexStride() const;
|
| 145 |
+
void setVertexStride(NS::UInteger vertexStride);
|
| 146 |
+
|
| 147 |
+
class Buffer* indexBuffer() const;
|
| 148 |
+
void setIndexBuffer(const class Buffer* indexBuffer);
|
| 149 |
+
|
| 150 |
+
NS::UInteger indexBufferOffset() const;
|
| 151 |
+
void setIndexBufferOffset(NS::UInteger indexBufferOffset);
|
| 152 |
+
|
| 153 |
+
MTL::IndexType indexType() const;
|
| 154 |
+
void setIndexType(MTL::IndexType indexType);
|
| 155 |
+
|
| 156 |
+
NS::UInteger triangleCount() const;
|
| 157 |
+
void setTriangleCount(NS::UInteger triangleCount);
|
| 158 |
+
|
| 159 |
+
class Buffer* transformationMatrixBuffer() const;
|
| 160 |
+
void setTransformationMatrixBuffer(const class Buffer* transformationMatrixBuffer);
|
| 161 |
+
|
| 162 |
+
NS::UInteger transformationMatrixBufferOffset() const;
|
| 163 |
+
void setTransformationMatrixBufferOffset(NS::UInteger transformationMatrixBufferOffset);
|
| 164 |
+
|
| 165 |
+
static MTL::AccelerationStructureTriangleGeometryDescriptor* descriptor();
|
| 166 |
+
};
|
| 167 |
+
|
| 168 |
+
class AccelerationStructureBoundingBoxGeometryDescriptor : public NS::Copying<AccelerationStructureBoundingBoxGeometryDescriptor, MTL::AccelerationStructureGeometryDescriptor>
|
| 169 |
+
{
|
| 170 |
+
public:
|
| 171 |
+
static class AccelerationStructureBoundingBoxGeometryDescriptor* alloc();
|
| 172 |
+
|
| 173 |
+
class AccelerationStructureBoundingBoxGeometryDescriptor* init();
|
| 174 |
+
|
| 175 |
+
class Buffer* boundingBoxBuffer() const;
|
| 176 |
+
void setBoundingBoxBuffer(const class Buffer* boundingBoxBuffer);
|
| 177 |
+
|
| 178 |
+
NS::UInteger boundingBoxBufferOffset() const;
|
| 179 |
+
void setBoundingBoxBufferOffset(NS::UInteger boundingBoxBufferOffset);
|
| 180 |
+
|
| 181 |
+
NS::UInteger boundingBoxStride() const;
|
| 182 |
+
void setBoundingBoxStride(NS::UInteger boundingBoxStride);
|
| 183 |
+
|
| 184 |
+
NS::UInteger boundingBoxCount() const;
|
| 185 |
+
void setBoundingBoxCount(NS::UInteger boundingBoxCount);
|
| 186 |
+
|
| 187 |
+
static MTL::AccelerationStructureBoundingBoxGeometryDescriptor* descriptor();
|
| 188 |
+
};
|
| 189 |
+
|
| 190 |
+
class MotionKeyframeData : public NS::Referencing<MotionKeyframeData>
|
| 191 |
+
{
|
| 192 |
+
public:
|
| 193 |
+
static class MotionKeyframeData* alloc();
|
| 194 |
+
|
| 195 |
+
class MotionKeyframeData* init();
|
| 196 |
+
|
| 197 |
+
class Buffer* buffer() const;
|
| 198 |
+
void setBuffer(const class Buffer* buffer);
|
| 199 |
+
|
| 200 |
+
NS::UInteger offset() const;
|
| 201 |
+
void setOffset(NS::UInteger offset);
|
| 202 |
+
|
| 203 |
+
static MTL::MotionKeyframeData* data();
|
| 204 |
+
};
|
| 205 |
+
|
| 206 |
+
class AccelerationStructureMotionTriangleGeometryDescriptor : public NS::Copying<AccelerationStructureMotionTriangleGeometryDescriptor, MTL::AccelerationStructureGeometryDescriptor>
|
| 207 |
+
{
|
| 208 |
+
public:
|
| 209 |
+
static class AccelerationStructureMotionTriangleGeometryDescriptor* alloc();
|
| 210 |
+
|
| 211 |
+
class AccelerationStructureMotionTriangleGeometryDescriptor* init();
|
| 212 |
+
|
| 213 |
+
NS::Array* vertexBuffers() const;
|
| 214 |
+
void setVertexBuffers(const NS::Array* vertexBuffers);
|
| 215 |
+
|
| 216 |
+
MTL::AttributeFormat vertexFormat() const;
|
| 217 |
+
void setVertexFormat(MTL::AttributeFormat vertexFormat);
|
| 218 |
+
|
| 219 |
+
NS::UInteger vertexStride() const;
|
| 220 |
+
void setVertexStride(NS::UInteger vertexStride);
|
| 221 |
+
|
| 222 |
+
class Buffer* indexBuffer() const;
|
| 223 |
+
void setIndexBuffer(const class Buffer* indexBuffer);
|
| 224 |
+
|
| 225 |
+
NS::UInteger indexBufferOffset() const;
|
| 226 |
+
void setIndexBufferOffset(NS::UInteger indexBufferOffset);
|
| 227 |
+
|
| 228 |
+
MTL::IndexType indexType() const;
|
| 229 |
+
void setIndexType(MTL::IndexType indexType);
|
| 230 |
+
|
| 231 |
+
NS::UInteger triangleCount() const;
|
| 232 |
+
void setTriangleCount(NS::UInteger triangleCount);
|
| 233 |
+
|
| 234 |
+
class Buffer* transformationMatrixBuffer() const;
|
| 235 |
+
void setTransformationMatrixBuffer(const class Buffer* transformationMatrixBuffer);
|
| 236 |
+
|
| 237 |
+
NS::UInteger transformationMatrixBufferOffset() const;
|
| 238 |
+
void setTransformationMatrixBufferOffset(NS::UInteger transformationMatrixBufferOffset);
|
| 239 |
+
|
| 240 |
+
static MTL::AccelerationStructureMotionTriangleGeometryDescriptor* descriptor();
|
| 241 |
+
};
|
| 242 |
+
|
| 243 |
+
class AccelerationStructureMotionBoundingBoxGeometryDescriptor : public NS::Copying<AccelerationStructureMotionBoundingBoxGeometryDescriptor, MTL::AccelerationStructureGeometryDescriptor>
|
| 244 |
+
{
|
| 245 |
+
public:
|
| 246 |
+
static class AccelerationStructureMotionBoundingBoxGeometryDescriptor* alloc();
|
| 247 |
+
|
| 248 |
+
class AccelerationStructureMotionBoundingBoxGeometryDescriptor* init();
|
| 249 |
+
|
| 250 |
+
NS::Array* boundingBoxBuffers() const;
|
| 251 |
+
void setBoundingBoxBuffers(const NS::Array* boundingBoxBuffers);
|
| 252 |
+
|
| 253 |
+
NS::UInteger boundingBoxStride() const;
|
| 254 |
+
void setBoundingBoxStride(NS::UInteger boundingBoxStride);
|
| 255 |
+
|
| 256 |
+
NS::UInteger boundingBoxCount() const;
|
| 257 |
+
void setBoundingBoxCount(NS::UInteger boundingBoxCount);
|
| 258 |
+
|
| 259 |
+
static MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor* descriptor();
|
| 260 |
+
};
|
| 261 |
+
|
| 262 |
+
_MTL_ENUM(NS::Integer, CurveType) {
|
| 263 |
+
CurveTypeRound = 0,
|
| 264 |
+
CurveTypeFlat = 1,
|
| 265 |
+
};
|
| 266 |
+
|
| 267 |
+
_MTL_ENUM(NS::Integer, CurveBasis) {
|
| 268 |
+
CurveBasisBSpline = 0,
|
| 269 |
+
CurveBasisCatmullRom = 1,
|
| 270 |
+
CurveBasisLinear = 2,
|
| 271 |
+
CurveBasisBezier = 3,
|
| 272 |
+
};
|
| 273 |
+
|
| 274 |
+
_MTL_ENUM(NS::Integer, CurveEndCaps) {
|
| 275 |
+
CurveEndCapsNone = 0,
|
| 276 |
+
CurveEndCapsDisk = 1,
|
| 277 |
+
CurveEndCapsSphere = 2,
|
| 278 |
+
};
|
| 279 |
+
|
| 280 |
+
class AccelerationStructureCurveGeometryDescriptor : public NS::Copying<AccelerationStructureCurveGeometryDescriptor, MTL::AccelerationStructureGeometryDescriptor>
|
| 281 |
+
{
|
| 282 |
+
public:
|
| 283 |
+
static class AccelerationStructureCurveGeometryDescriptor* alloc();
|
| 284 |
+
|
| 285 |
+
class AccelerationStructureCurveGeometryDescriptor* init();
|
| 286 |
+
|
| 287 |
+
class Buffer* controlPointBuffer() const;
|
| 288 |
+
void setControlPointBuffer(const class Buffer* controlPointBuffer);
|
| 289 |
+
|
| 290 |
+
NS::UInteger controlPointBufferOffset() const;
|
| 291 |
+
void setControlPointBufferOffset(NS::UInteger controlPointBufferOffset);
|
| 292 |
+
|
| 293 |
+
NS::UInteger controlPointCount() const;
|
| 294 |
+
void setControlPointCount(NS::UInteger controlPointCount);
|
| 295 |
+
|
| 296 |
+
NS::UInteger controlPointStride() const;
|
| 297 |
+
void setControlPointStride(NS::UInteger controlPointStride);
|
| 298 |
+
|
| 299 |
+
MTL::AttributeFormat controlPointFormat() const;
|
| 300 |
+
void setControlPointFormat(MTL::AttributeFormat controlPointFormat);
|
| 301 |
+
|
| 302 |
+
class Buffer* radiusBuffer() const;
|
| 303 |
+
void setRadiusBuffer(const class Buffer* radiusBuffer);
|
| 304 |
+
|
| 305 |
+
NS::UInteger radiusBufferOffset() const;
|
| 306 |
+
void setRadiusBufferOffset(NS::UInteger radiusBufferOffset);
|
| 307 |
+
|
| 308 |
+
MTL::AttributeFormat radiusFormat() const;
|
| 309 |
+
void setRadiusFormat(MTL::AttributeFormat radiusFormat);
|
| 310 |
+
|
| 311 |
+
NS::UInteger radiusStride() const;
|
| 312 |
+
void setRadiusStride(NS::UInteger radiusStride);
|
| 313 |
+
|
| 314 |
+
class Buffer* indexBuffer() const;
|
| 315 |
+
void setIndexBuffer(const class Buffer* indexBuffer);
|
| 316 |
+
|
| 317 |
+
NS::UInteger indexBufferOffset() const;
|
| 318 |
+
void setIndexBufferOffset(NS::UInteger indexBufferOffset);
|
| 319 |
+
|
| 320 |
+
MTL::IndexType indexType() const;
|
| 321 |
+
void setIndexType(MTL::IndexType indexType);
|
| 322 |
+
|
| 323 |
+
NS::UInteger segmentCount() const;
|
| 324 |
+
void setSegmentCount(NS::UInteger segmentCount);
|
| 325 |
+
|
| 326 |
+
NS::UInteger segmentControlPointCount() const;
|
| 327 |
+
void setSegmentControlPointCount(NS::UInteger segmentControlPointCount);
|
| 328 |
+
|
| 329 |
+
MTL::CurveType curveType() const;
|
| 330 |
+
void setCurveType(MTL::CurveType curveType);
|
| 331 |
+
|
| 332 |
+
MTL::CurveBasis curveBasis() const;
|
| 333 |
+
void setCurveBasis(MTL::CurveBasis curveBasis);
|
| 334 |
+
|
| 335 |
+
MTL::CurveEndCaps curveEndCaps() const;
|
| 336 |
+
void setCurveEndCaps(MTL::CurveEndCaps curveEndCaps);
|
| 337 |
+
|
| 338 |
+
static MTL::AccelerationStructureCurveGeometryDescriptor* descriptor();
|
| 339 |
+
};
|
| 340 |
+
|
| 341 |
+
class AccelerationStructureMotionCurveGeometryDescriptor : public NS::Copying<AccelerationStructureMotionCurveGeometryDescriptor, MTL::AccelerationStructureGeometryDescriptor>
|
| 342 |
+
{
|
| 343 |
+
public:
|
| 344 |
+
static class AccelerationStructureMotionCurveGeometryDescriptor* alloc();
|
| 345 |
+
|
| 346 |
+
class AccelerationStructureMotionCurveGeometryDescriptor* init();
|
| 347 |
+
|
| 348 |
+
NS::Array* controlPointBuffers() const;
|
| 349 |
+
void setControlPointBuffers(const NS::Array* controlPointBuffers);
|
| 350 |
+
|
| 351 |
+
NS::UInteger controlPointCount() const;
|
| 352 |
+
void setControlPointCount(NS::UInteger controlPointCount);
|
| 353 |
+
|
| 354 |
+
NS::UInteger controlPointStride() const;
|
| 355 |
+
void setControlPointStride(NS::UInteger controlPointStride);
|
| 356 |
+
|
| 357 |
+
MTL::AttributeFormat controlPointFormat() const;
|
| 358 |
+
void setControlPointFormat(MTL::AttributeFormat controlPointFormat);
|
| 359 |
+
|
| 360 |
+
NS::Array* radiusBuffers() const;
|
| 361 |
+
void setRadiusBuffers(const NS::Array* radiusBuffers);
|
| 362 |
+
|
| 363 |
+
MTL::AttributeFormat radiusFormat() const;
|
| 364 |
+
void setRadiusFormat(MTL::AttributeFormat radiusFormat);
|
| 365 |
+
|
| 366 |
+
NS::UInteger radiusStride() const;
|
| 367 |
+
void setRadiusStride(NS::UInteger radiusStride);
|
| 368 |
+
|
| 369 |
+
class Buffer* indexBuffer() const;
|
| 370 |
+
void setIndexBuffer(const class Buffer* indexBuffer);
|
| 371 |
+
|
| 372 |
+
NS::UInteger indexBufferOffset() const;
|
| 373 |
+
void setIndexBufferOffset(NS::UInteger indexBufferOffset);
|
| 374 |
+
|
| 375 |
+
MTL::IndexType indexType() const;
|
| 376 |
+
void setIndexType(MTL::IndexType indexType);
|
| 377 |
+
|
| 378 |
+
NS::UInteger segmentCount() const;
|
| 379 |
+
void setSegmentCount(NS::UInteger segmentCount);
|
| 380 |
+
|
| 381 |
+
NS::UInteger segmentControlPointCount() const;
|
| 382 |
+
void setSegmentControlPointCount(NS::UInteger segmentControlPointCount);
|
| 383 |
+
|
| 384 |
+
MTL::CurveType curveType() const;
|
| 385 |
+
void setCurveType(MTL::CurveType curveType);
|
| 386 |
+
|
| 387 |
+
MTL::CurveBasis curveBasis() const;
|
| 388 |
+
void setCurveBasis(MTL::CurveBasis curveBasis);
|
| 389 |
+
|
| 390 |
+
MTL::CurveEndCaps curveEndCaps() const;
|
| 391 |
+
void setCurveEndCaps(MTL::CurveEndCaps curveEndCaps);
|
| 392 |
+
|
| 393 |
+
static MTL::AccelerationStructureMotionCurveGeometryDescriptor* descriptor();
|
| 394 |
+
};
|
| 395 |
+
|
| 396 |
+
struct AccelerationStructureInstanceDescriptor
|
| 397 |
+
{
|
| 398 |
+
MTL::PackedFloat4x3 transformationMatrix;
|
| 399 |
+
MTL::AccelerationStructureInstanceOptions options;
|
| 400 |
+
uint32_t mask;
|
| 401 |
+
uint32_t intersectionFunctionTableOffset;
|
| 402 |
+
uint32_t accelerationStructureIndex;
|
| 403 |
+
} _MTL_PACKED;
|
| 404 |
+
|
| 405 |
+
struct AccelerationStructureUserIDInstanceDescriptor
|
| 406 |
+
{
|
| 407 |
+
MTL::PackedFloat4x3 transformationMatrix;
|
| 408 |
+
MTL::AccelerationStructureInstanceOptions options;
|
| 409 |
+
uint32_t mask;
|
| 410 |
+
uint32_t intersectionFunctionTableOffset;
|
| 411 |
+
uint32_t accelerationStructureIndex;
|
| 412 |
+
uint32_t userID;
|
| 413 |
+
} _MTL_PACKED;
|
| 414 |
+
|
| 415 |
+
_MTL_ENUM(NS::UInteger, AccelerationStructureInstanceDescriptorType) {
|
| 416 |
+
AccelerationStructureInstanceDescriptorTypeDefault = 0,
|
| 417 |
+
AccelerationStructureInstanceDescriptorTypeUserID = 1,
|
| 418 |
+
AccelerationStructureInstanceDescriptorTypeMotion = 2,
|
| 419 |
+
AccelerationStructureInstanceDescriptorTypeIndirect = 3,
|
| 420 |
+
AccelerationStructureInstanceDescriptorTypeIndirectMotion = 4,
|
| 421 |
+
};
|
| 422 |
+
|
| 423 |
+
struct AccelerationStructureMotionInstanceDescriptor
|
| 424 |
+
{
|
| 425 |
+
MTL::AccelerationStructureInstanceOptions options;
|
| 426 |
+
uint32_t mask;
|
| 427 |
+
uint32_t intersectionFunctionTableOffset;
|
| 428 |
+
uint32_t accelerationStructureIndex;
|
| 429 |
+
uint32_t userID;
|
| 430 |
+
uint32_t motionTransformsStartIndex;
|
| 431 |
+
uint32_t motionTransformsCount;
|
| 432 |
+
MTL::MotionBorderMode motionStartBorderMode;
|
| 433 |
+
MTL::MotionBorderMode motionEndBorderMode;
|
| 434 |
+
float motionStartTime;
|
| 435 |
+
float motionEndTime;
|
| 436 |
+
} _MTL_PACKED;
|
| 437 |
+
|
| 438 |
+
struct IndirectAccelerationStructureInstanceDescriptor
|
| 439 |
+
{
|
| 440 |
+
MTL::PackedFloat4x3 transformationMatrix;
|
| 441 |
+
MTL::AccelerationStructureInstanceOptions options;
|
| 442 |
+
uint32_t mask;
|
| 443 |
+
uint32_t intersectionFunctionTableOffset;
|
| 444 |
+
uint32_t userID;
|
| 445 |
+
MTL::ResourceID accelerationStructureID;
|
| 446 |
+
} _MTL_PACKED;
|
| 447 |
+
|
| 448 |
+
struct IndirectAccelerationStructureMotionInstanceDescriptor
|
| 449 |
+
{
|
| 450 |
+
MTL::AccelerationStructureInstanceOptions options;
|
| 451 |
+
uint32_t mask;
|
| 452 |
+
uint32_t intersectionFunctionTableOffset;
|
| 453 |
+
uint32_t userID;
|
| 454 |
+
MTL::ResourceID accelerationStructureID;
|
| 455 |
+
uint32_t motionTransformsStartIndex;
|
| 456 |
+
uint32_t motionTransformsCount;
|
| 457 |
+
MTL::MotionBorderMode motionStartBorderMode;
|
| 458 |
+
MTL::MotionBorderMode motionEndBorderMode;
|
| 459 |
+
float motionStartTime;
|
| 460 |
+
float motionEndTime;
|
| 461 |
+
} _MTL_PACKED;
|
| 462 |
+
|
| 463 |
+
class InstanceAccelerationStructureDescriptor : public NS::Copying<InstanceAccelerationStructureDescriptor, MTL::AccelerationStructureDescriptor>
|
| 464 |
+
{
|
| 465 |
+
public:
|
| 466 |
+
static class InstanceAccelerationStructureDescriptor* alloc();
|
| 467 |
+
|
| 468 |
+
class InstanceAccelerationStructureDescriptor* init();
|
| 469 |
+
|
| 470 |
+
class Buffer* instanceDescriptorBuffer() const;
|
| 471 |
+
void setInstanceDescriptorBuffer(const class Buffer* instanceDescriptorBuffer);
|
| 472 |
+
|
| 473 |
+
NS::UInteger instanceDescriptorBufferOffset() const;
|
| 474 |
+
void setInstanceDescriptorBufferOffset(NS::UInteger instanceDescriptorBufferOffset);
|
| 475 |
+
|
| 476 |
+
NS::UInteger instanceDescriptorStride() const;
|
| 477 |
+
void setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride);
|
| 478 |
+
|
| 479 |
+
NS::UInteger instanceCount() const;
|
| 480 |
+
void setInstanceCount(NS::UInteger instanceCount);
|
| 481 |
+
|
| 482 |
+
NS::Array* instancedAccelerationStructures() const;
|
| 483 |
+
void setInstancedAccelerationStructures(const NS::Array* instancedAccelerationStructures);
|
| 484 |
+
|
| 485 |
+
MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType() const;
|
| 486 |
+
void setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType);
|
| 487 |
+
|
| 488 |
+
class Buffer* motionTransformBuffer() const;
|
| 489 |
+
void setMotionTransformBuffer(const class Buffer* motionTransformBuffer);
|
| 490 |
+
|
| 491 |
+
NS::UInteger motionTransformBufferOffset() const;
|
| 492 |
+
void setMotionTransformBufferOffset(NS::UInteger motionTransformBufferOffset);
|
| 493 |
+
|
| 494 |
+
NS::UInteger motionTransformCount() const;
|
| 495 |
+
void setMotionTransformCount(NS::UInteger motionTransformCount);
|
| 496 |
+
|
| 497 |
+
static MTL::InstanceAccelerationStructureDescriptor* descriptor();
|
| 498 |
+
};
|
| 499 |
+
|
| 500 |
+
class IndirectInstanceAccelerationStructureDescriptor : public NS::Copying<IndirectInstanceAccelerationStructureDescriptor, MTL::AccelerationStructureDescriptor>
|
| 501 |
+
{
|
| 502 |
+
public:
|
| 503 |
+
static class IndirectInstanceAccelerationStructureDescriptor* alloc();
|
| 504 |
+
|
| 505 |
+
class IndirectInstanceAccelerationStructureDescriptor* init();
|
| 506 |
+
|
| 507 |
+
class Buffer* instanceDescriptorBuffer() const;
|
| 508 |
+
void setInstanceDescriptorBuffer(const class Buffer* instanceDescriptorBuffer);
|
| 509 |
+
|
| 510 |
+
NS::UInteger instanceDescriptorBufferOffset() const;
|
| 511 |
+
void setInstanceDescriptorBufferOffset(NS::UInteger instanceDescriptorBufferOffset);
|
| 512 |
+
|
| 513 |
+
NS::UInteger instanceDescriptorStride() const;
|
| 514 |
+
void setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride);
|
| 515 |
+
|
| 516 |
+
NS::UInteger maxInstanceCount() const;
|
| 517 |
+
void setMaxInstanceCount(NS::UInteger maxInstanceCount);
|
| 518 |
+
|
| 519 |
+
class Buffer* instanceCountBuffer() const;
|
| 520 |
+
void setInstanceCountBuffer(const class Buffer* instanceCountBuffer);
|
| 521 |
+
|
| 522 |
+
NS::UInteger instanceCountBufferOffset() const;
|
| 523 |
+
void setInstanceCountBufferOffset(NS::UInteger instanceCountBufferOffset);
|
| 524 |
+
|
| 525 |
+
MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType() const;
|
| 526 |
+
void setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType);
|
| 527 |
+
|
| 528 |
+
class Buffer* motionTransformBuffer() const;
|
| 529 |
+
void setMotionTransformBuffer(const class Buffer* motionTransformBuffer);
|
| 530 |
+
|
| 531 |
+
NS::UInteger motionTransformBufferOffset() const;
|
| 532 |
+
void setMotionTransformBufferOffset(NS::UInteger motionTransformBufferOffset);
|
| 533 |
+
|
| 534 |
+
NS::UInteger maxMotionTransformCount() const;
|
| 535 |
+
void setMaxMotionTransformCount(NS::UInteger maxMotionTransformCount);
|
| 536 |
+
|
| 537 |
+
class Buffer* motionTransformCountBuffer() const;
|
| 538 |
+
void setMotionTransformCountBuffer(const class Buffer* motionTransformCountBuffer);
|
| 539 |
+
|
| 540 |
+
NS::UInteger motionTransformCountBufferOffset() const;
|
| 541 |
+
void setMotionTransformCountBufferOffset(NS::UInteger motionTransformCountBufferOffset);
|
| 542 |
+
|
| 543 |
+
static MTL::IndirectInstanceAccelerationStructureDescriptor* descriptor();
|
| 544 |
+
};
|
| 545 |
+
|
| 546 |
+
class AccelerationStructure : public NS::Referencing<AccelerationStructure, Resource>
|
| 547 |
+
{
|
| 548 |
+
public:
|
| 549 |
+
NS::UInteger size() const;
|
| 550 |
+
|
| 551 |
+
MTL::ResourceID gpuResourceID() const;
|
| 552 |
+
};
|
| 553 |
+
|
| 554 |
+
}
|
| 555 |
+
|
| 556 |
+
// static method: alloc
|
| 557 |
+
_MTL_INLINE MTL::AccelerationStructureDescriptor* MTL::AccelerationStructureDescriptor::alloc()
|
| 558 |
+
{
|
| 559 |
+
return NS::Object::alloc<MTL::AccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureDescriptor));
|
| 560 |
+
}
|
| 561 |
+
|
| 562 |
+
// method: init
|
| 563 |
+
_MTL_INLINE MTL::AccelerationStructureDescriptor* MTL::AccelerationStructureDescriptor::init()
|
| 564 |
+
{
|
| 565 |
+
return NS::Object::init<MTL::AccelerationStructureDescriptor>();
|
| 566 |
+
}
|
| 567 |
+
|
| 568 |
+
// property: usage
|
| 569 |
+
_MTL_INLINE MTL::AccelerationStructureUsage MTL::AccelerationStructureDescriptor::usage() const
|
| 570 |
+
{
|
| 571 |
+
return Object::sendMessage<MTL::AccelerationStructureUsage>(this, _MTL_PRIVATE_SEL(usage));
|
| 572 |
+
}
|
| 573 |
+
|
| 574 |
+
_MTL_INLINE void MTL::AccelerationStructureDescriptor::setUsage(MTL::AccelerationStructureUsage usage)
|
| 575 |
+
{
|
| 576 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setUsage_), usage);
|
| 577 |
+
}
|
| 578 |
+
|
| 579 |
+
// static method: alloc
|
| 580 |
+
_MTL_INLINE MTL::AccelerationStructureGeometryDescriptor* MTL::AccelerationStructureGeometryDescriptor::alloc()
|
| 581 |
+
{
|
| 582 |
+
return NS::Object::alloc<MTL::AccelerationStructureGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureGeometryDescriptor));
|
| 583 |
+
}
|
| 584 |
+
|
| 585 |
+
// method: init
|
| 586 |
+
_MTL_INLINE MTL::AccelerationStructureGeometryDescriptor* MTL::AccelerationStructureGeometryDescriptor::init()
|
| 587 |
+
{
|
| 588 |
+
return NS::Object::init<MTL::AccelerationStructureGeometryDescriptor>();
|
| 589 |
+
}
|
| 590 |
+
|
| 591 |
+
// property: intersectionFunctionTableOffset
|
| 592 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureGeometryDescriptor::intersectionFunctionTableOffset() const
|
| 593 |
+
{
|
| 594 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(intersectionFunctionTableOffset));
|
| 595 |
+
}
|
| 596 |
+
|
| 597 |
+
_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setIntersectionFunctionTableOffset(NS::UInteger intersectionFunctionTableOffset)
|
| 598 |
+
{
|
| 599 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIntersectionFunctionTableOffset_), intersectionFunctionTableOffset);
|
| 600 |
+
}
|
| 601 |
+
|
| 602 |
+
// property: opaque
|
| 603 |
+
_MTL_INLINE bool MTL::AccelerationStructureGeometryDescriptor::opaque() const
|
| 604 |
+
{
|
| 605 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(opaque));
|
| 606 |
+
}
|
| 607 |
+
|
| 608 |
+
_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setOpaque(bool opaque)
|
| 609 |
+
{
|
| 610 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOpaque_), opaque);
|
| 611 |
+
}
|
| 612 |
+
|
| 613 |
+
// property: allowDuplicateIntersectionFunctionInvocation
|
| 614 |
+
_MTL_INLINE bool MTL::AccelerationStructureGeometryDescriptor::allowDuplicateIntersectionFunctionInvocation() const
|
| 615 |
+
{
|
| 616 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(allowDuplicateIntersectionFunctionInvocation));
|
| 617 |
+
}
|
| 618 |
+
|
| 619 |
+
_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setAllowDuplicateIntersectionFunctionInvocation(bool allowDuplicateIntersectionFunctionInvocation)
|
| 620 |
+
{
|
| 621 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAllowDuplicateIntersectionFunctionInvocation_), allowDuplicateIntersectionFunctionInvocation);
|
| 622 |
+
}
|
| 623 |
+
|
| 624 |
+
// property: label
|
| 625 |
+
_MTL_INLINE NS::String* MTL::AccelerationStructureGeometryDescriptor::label() const
|
| 626 |
+
{
|
| 627 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 628 |
+
}
|
| 629 |
+
|
| 630 |
+
_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setLabel(const NS::String* label)
|
| 631 |
+
{
|
| 632 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 633 |
+
}
|
| 634 |
+
|
| 635 |
+
// property: primitiveDataBuffer
|
| 636 |
+
_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureGeometryDescriptor::primitiveDataBuffer() const
|
| 637 |
+
{
|
| 638 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(primitiveDataBuffer));
|
| 639 |
+
}
|
| 640 |
+
|
| 641 |
+
_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setPrimitiveDataBuffer(const MTL::Buffer* primitiveDataBuffer)
|
| 642 |
+
{
|
| 643 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrimitiveDataBuffer_), primitiveDataBuffer);
|
| 644 |
+
}
|
| 645 |
+
|
| 646 |
+
// property: primitiveDataBufferOffset
|
| 647 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureGeometryDescriptor::primitiveDataBufferOffset() const
|
| 648 |
+
{
|
| 649 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(primitiveDataBufferOffset));
|
| 650 |
+
}
|
| 651 |
+
|
| 652 |
+
_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setPrimitiveDataBufferOffset(NS::UInteger primitiveDataBufferOffset)
|
| 653 |
+
{
|
| 654 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrimitiveDataBufferOffset_), primitiveDataBufferOffset);
|
| 655 |
+
}
|
| 656 |
+
|
| 657 |
+
// property: primitiveDataStride
|
| 658 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureGeometryDescriptor::primitiveDataStride() const
|
| 659 |
+
{
|
| 660 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(primitiveDataStride));
|
| 661 |
+
}
|
| 662 |
+
|
| 663 |
+
_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setPrimitiveDataStride(NS::UInteger primitiveDataStride)
|
| 664 |
+
{
|
| 665 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrimitiveDataStride_), primitiveDataStride);
|
| 666 |
+
}
|
| 667 |
+
|
| 668 |
+
// property: primitiveDataElementSize
|
| 669 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureGeometryDescriptor::primitiveDataElementSize() const
|
| 670 |
+
{
|
| 671 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(primitiveDataElementSize));
|
| 672 |
+
}
|
| 673 |
+
|
| 674 |
+
_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setPrimitiveDataElementSize(NS::UInteger primitiveDataElementSize)
|
| 675 |
+
{
|
| 676 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrimitiveDataElementSize_), primitiveDataElementSize);
|
| 677 |
+
}
|
| 678 |
+
|
| 679 |
+
// static method: alloc
|
| 680 |
+
_MTL_INLINE MTL::PrimitiveAccelerationStructureDescriptor* MTL::PrimitiveAccelerationStructureDescriptor::alloc()
|
| 681 |
+
{
|
| 682 |
+
return NS::Object::alloc<MTL::PrimitiveAccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTLPrimitiveAccelerationStructureDescriptor));
|
| 683 |
+
}
|
| 684 |
+
|
| 685 |
+
// method: init
|
| 686 |
+
_MTL_INLINE MTL::PrimitiveAccelerationStructureDescriptor* MTL::PrimitiveAccelerationStructureDescriptor::init()
|
| 687 |
+
{
|
| 688 |
+
return NS::Object::init<MTL::PrimitiveAccelerationStructureDescriptor>();
|
| 689 |
+
}
|
| 690 |
+
|
| 691 |
+
// property: geometryDescriptors
|
| 692 |
+
_MTL_INLINE NS::Array* MTL::PrimitiveAccelerationStructureDescriptor::geometryDescriptors() const
|
| 693 |
+
{
|
| 694 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(geometryDescriptors));
|
| 695 |
+
}
|
| 696 |
+
|
| 697 |
+
_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setGeometryDescriptors(const NS::Array* geometryDescriptors)
|
| 698 |
+
{
|
| 699 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setGeometryDescriptors_), geometryDescriptors);
|
| 700 |
+
}
|
| 701 |
+
|
| 702 |
+
// property: motionStartBorderMode
|
| 703 |
+
_MTL_INLINE MTL::MotionBorderMode MTL::PrimitiveAccelerationStructureDescriptor::motionStartBorderMode() const
|
| 704 |
+
{
|
| 705 |
+
return Object::sendMessage<MTL::MotionBorderMode>(this, _MTL_PRIVATE_SEL(motionStartBorderMode));
|
| 706 |
+
}
|
| 707 |
+
|
| 708 |
+
_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionStartBorderMode(MTL::MotionBorderMode motionStartBorderMode)
|
| 709 |
+
{
|
| 710 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionStartBorderMode_), motionStartBorderMode);
|
| 711 |
+
}
|
| 712 |
+
|
| 713 |
+
// property: motionEndBorderMode
|
| 714 |
+
_MTL_INLINE MTL::MotionBorderMode MTL::PrimitiveAccelerationStructureDescriptor::motionEndBorderMode() const
|
| 715 |
+
{
|
| 716 |
+
return Object::sendMessage<MTL::MotionBorderMode>(this, _MTL_PRIVATE_SEL(motionEndBorderMode));
|
| 717 |
+
}
|
| 718 |
+
|
| 719 |
+
_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionEndBorderMode(MTL::MotionBorderMode motionEndBorderMode)
|
| 720 |
+
{
|
| 721 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionEndBorderMode_), motionEndBorderMode);
|
| 722 |
+
}
|
| 723 |
+
|
| 724 |
+
// property: motionStartTime
|
| 725 |
+
_MTL_INLINE float MTL::PrimitiveAccelerationStructureDescriptor::motionStartTime() const
|
| 726 |
+
{
|
| 727 |
+
return Object::sendMessage<float>(this, _MTL_PRIVATE_SEL(motionStartTime));
|
| 728 |
+
}
|
| 729 |
+
|
| 730 |
+
_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionStartTime(float motionStartTime)
|
| 731 |
+
{
|
| 732 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionStartTime_), motionStartTime);
|
| 733 |
+
}
|
| 734 |
+
|
| 735 |
+
// property: motionEndTime
|
| 736 |
+
_MTL_INLINE float MTL::PrimitiveAccelerationStructureDescriptor::motionEndTime() const
|
| 737 |
+
{
|
| 738 |
+
return Object::sendMessage<float>(this, _MTL_PRIVATE_SEL(motionEndTime));
|
| 739 |
+
}
|
| 740 |
+
|
| 741 |
+
_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionEndTime(float motionEndTime)
|
| 742 |
+
{
|
| 743 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionEndTime_), motionEndTime);
|
| 744 |
+
}
|
| 745 |
+
|
| 746 |
+
// property: motionKeyframeCount
|
| 747 |
+
_MTL_INLINE NS::UInteger MTL::PrimitiveAccelerationStructureDescriptor::motionKeyframeCount() const
|
| 748 |
+
{
|
| 749 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionKeyframeCount));
|
| 750 |
+
}
|
| 751 |
+
|
| 752 |
+
_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionKeyframeCount(NS::UInteger motionKeyframeCount)
|
| 753 |
+
{
|
| 754 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionKeyframeCount_), motionKeyframeCount);
|
| 755 |
+
}
|
| 756 |
+
|
| 757 |
+
// static method: descriptor
|
| 758 |
+
_MTL_INLINE MTL::PrimitiveAccelerationStructureDescriptor* MTL::PrimitiveAccelerationStructureDescriptor::descriptor()
|
| 759 |
+
{
|
| 760 |
+
return Object::sendMessage<MTL::PrimitiveAccelerationStructureDescriptor*>(_MTL_PRIVATE_CLS(MTLPrimitiveAccelerationStructureDescriptor), _MTL_PRIVATE_SEL(descriptor));
|
| 761 |
+
}
|
| 762 |
+
|
| 763 |
+
// static method: alloc
|
| 764 |
+
_MTL_INLINE MTL::AccelerationStructureTriangleGeometryDescriptor* MTL::AccelerationStructureTriangleGeometryDescriptor::alloc()
|
| 765 |
+
{
|
| 766 |
+
return NS::Object::alloc<MTL::AccelerationStructureTriangleGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureTriangleGeometryDescriptor));
|
| 767 |
+
}
|
| 768 |
+
|
| 769 |
+
// method: init
|
| 770 |
+
_MTL_INLINE MTL::AccelerationStructureTriangleGeometryDescriptor* MTL::AccelerationStructureTriangleGeometryDescriptor::init()
|
| 771 |
+
{
|
| 772 |
+
return NS::Object::init<MTL::AccelerationStructureTriangleGeometryDescriptor>();
|
| 773 |
+
}
|
| 774 |
+
|
| 775 |
+
// property: vertexBuffer
|
| 776 |
+
_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureTriangleGeometryDescriptor::vertexBuffer() const
|
| 777 |
+
{
|
| 778 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(vertexBuffer));
|
| 779 |
+
}
|
| 780 |
+
|
| 781 |
+
_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setVertexBuffer(const MTL::Buffer* vertexBuffer)
|
| 782 |
+
{
|
| 783 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBuffer_), vertexBuffer);
|
| 784 |
+
}
|
| 785 |
+
|
| 786 |
+
// property: vertexBufferOffset
|
| 787 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::vertexBufferOffset() const
|
| 788 |
+
{
|
| 789 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(vertexBufferOffset));
|
| 790 |
+
}
|
| 791 |
+
|
| 792 |
+
_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setVertexBufferOffset(NS::UInteger vertexBufferOffset)
|
| 793 |
+
{
|
| 794 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBufferOffset_), vertexBufferOffset);
|
| 795 |
+
}
|
| 796 |
+
|
| 797 |
+
// property: vertexFormat
|
| 798 |
+
_MTL_INLINE MTL::AttributeFormat MTL::AccelerationStructureTriangleGeometryDescriptor::vertexFormat() const
|
| 799 |
+
{
|
| 800 |
+
return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(vertexFormat));
|
| 801 |
+
}
|
| 802 |
+
|
| 803 |
+
_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setVertexFormat(MTL::AttributeFormat vertexFormat)
|
| 804 |
+
{
|
| 805 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexFormat_), vertexFormat);
|
| 806 |
+
}
|
| 807 |
+
|
| 808 |
+
// property: vertexStride
|
| 809 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::vertexStride() const
|
| 810 |
+
{
|
| 811 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(vertexStride));
|
| 812 |
+
}
|
| 813 |
+
|
| 814 |
+
_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setVertexStride(NS::UInteger vertexStride)
|
| 815 |
+
{
|
| 816 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexStride_), vertexStride);
|
| 817 |
+
}
|
| 818 |
+
|
| 819 |
+
// property: indexBuffer
|
| 820 |
+
_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureTriangleGeometryDescriptor::indexBuffer() const
|
| 821 |
+
{
|
| 822 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(indexBuffer));
|
| 823 |
+
}
|
| 824 |
+
|
| 825 |
+
_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setIndexBuffer(const MTL::Buffer* indexBuffer)
|
| 826 |
+
{
|
| 827 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);
|
| 828 |
+
}
|
| 829 |
+
|
| 830 |
+
// property: indexBufferOffset
|
| 831 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::indexBufferOffset() const
|
| 832 |
+
{
|
| 833 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(indexBufferOffset));
|
| 834 |
+
}
|
| 835 |
+
|
| 836 |
+
_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setIndexBufferOffset(NS::UInteger indexBufferOffset)
|
| 837 |
+
{
|
| 838 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBufferOffset_), indexBufferOffset);
|
| 839 |
+
}
|
| 840 |
+
|
| 841 |
+
// property: indexType
|
| 842 |
+
_MTL_INLINE MTL::IndexType MTL::AccelerationStructureTriangleGeometryDescriptor::indexType() const
|
| 843 |
+
{
|
| 844 |
+
return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));
|
| 845 |
+
}
|
| 846 |
+
|
| 847 |
+
_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setIndexType(MTL::IndexType indexType)
|
| 848 |
+
{
|
| 849 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);
|
| 850 |
+
}
|
| 851 |
+
|
| 852 |
+
// property: triangleCount
|
| 853 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::triangleCount() const
|
| 854 |
+
{
|
| 855 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(triangleCount));
|
| 856 |
+
}
|
| 857 |
+
|
| 858 |
+
_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setTriangleCount(NS::UInteger triangleCount)
|
| 859 |
+
{
|
| 860 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTriangleCount_), triangleCount);
|
| 861 |
+
}
|
| 862 |
+
|
| 863 |
+
// property: transformationMatrixBuffer
|
| 864 |
+
_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureTriangleGeometryDescriptor::transformationMatrixBuffer() const
|
| 865 |
+
{
|
| 866 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(transformationMatrixBuffer));
|
| 867 |
+
}
|
| 868 |
+
|
| 869 |
+
_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setTransformationMatrixBuffer(const MTL::Buffer* transformationMatrixBuffer)
|
| 870 |
+
{
|
| 871 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixBuffer_), transformationMatrixBuffer);
|
| 872 |
+
}
|
| 873 |
+
|
| 874 |
+
// property: transformationMatrixBufferOffset
|
| 875 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::transformationMatrixBufferOffset() const
|
| 876 |
+
{
|
| 877 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(transformationMatrixBufferOffset));
|
| 878 |
+
}
|
| 879 |
+
|
| 880 |
+
_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setTransformationMatrixBufferOffset(NS::UInteger transformationMatrixBufferOffset)
|
| 881 |
+
{
|
| 882 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixBufferOffset_), transformationMatrixBufferOffset);
|
| 883 |
+
}
|
| 884 |
+
|
| 885 |
+
// static method: descriptor
|
| 886 |
+
_MTL_INLINE MTL::AccelerationStructureTriangleGeometryDescriptor* MTL::AccelerationStructureTriangleGeometryDescriptor::descriptor()
|
| 887 |
+
{
|
| 888 |
+
return Object::sendMessage<MTL::AccelerationStructureTriangleGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureTriangleGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));
|
| 889 |
+
}
|
| 890 |
+
|
| 891 |
+
// static method: alloc
|
| 892 |
+
_MTL_INLINE MTL::AccelerationStructureBoundingBoxGeometryDescriptor* MTL::AccelerationStructureBoundingBoxGeometryDescriptor::alloc()
|
| 893 |
+
{
|
| 894 |
+
return NS::Object::alloc<MTL::AccelerationStructureBoundingBoxGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureBoundingBoxGeometryDescriptor));
|
| 895 |
+
}
|
| 896 |
+
|
| 897 |
+
// method: init
|
| 898 |
+
_MTL_INLINE MTL::AccelerationStructureBoundingBoxGeometryDescriptor* MTL::AccelerationStructureBoundingBoxGeometryDescriptor::init()
|
| 899 |
+
{
|
| 900 |
+
return NS::Object::init<MTL::AccelerationStructureBoundingBoxGeometryDescriptor>();
|
| 901 |
+
}
|
| 902 |
+
|
| 903 |
+
// property: boundingBoxBuffer
|
| 904 |
+
_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxBuffer() const
|
| 905 |
+
{
|
| 906 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(boundingBoxBuffer));
|
| 907 |
+
}
|
| 908 |
+
|
| 909 |
+
_MTL_INLINE void MTL::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxBuffer(const MTL::Buffer* boundingBoxBuffer)
|
| 910 |
+
{
|
| 911 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxBuffer_), boundingBoxBuffer);
|
| 912 |
+
}
|
| 913 |
+
|
| 914 |
+
// property: boundingBoxBufferOffset
|
| 915 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxBufferOffset() const
|
| 916 |
+
{
|
| 917 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxBufferOffset));
|
| 918 |
+
}
|
| 919 |
+
|
| 920 |
+
_MTL_INLINE void MTL::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxBufferOffset(NS::UInteger boundingBoxBufferOffset)
|
| 921 |
+
{
|
| 922 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxBufferOffset_), boundingBoxBufferOffset);
|
| 923 |
+
}
|
| 924 |
+
|
| 925 |
+
// property: boundingBoxStride
|
| 926 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxStride() const
|
| 927 |
+
{
|
| 928 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxStride));
|
| 929 |
+
}
|
| 930 |
+
|
| 931 |
+
_MTL_INLINE void MTL::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxStride(NS::UInteger boundingBoxStride)
|
| 932 |
+
{
|
| 933 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxStride_), boundingBoxStride);
|
| 934 |
+
}
|
| 935 |
+
|
| 936 |
+
// property: boundingBoxCount
|
| 937 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxCount() const
|
| 938 |
+
{
|
| 939 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxCount));
|
| 940 |
+
}
|
| 941 |
+
|
| 942 |
+
_MTL_INLINE void MTL::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxCount(NS::UInteger boundingBoxCount)
|
| 943 |
+
{
|
| 944 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxCount_), boundingBoxCount);
|
| 945 |
+
}
|
| 946 |
+
|
| 947 |
+
// static method: descriptor
|
| 948 |
+
_MTL_INLINE MTL::AccelerationStructureBoundingBoxGeometryDescriptor* MTL::AccelerationStructureBoundingBoxGeometryDescriptor::descriptor()
|
| 949 |
+
{
|
| 950 |
+
return Object::sendMessage<MTL::AccelerationStructureBoundingBoxGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureBoundingBoxGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));
|
| 951 |
+
}
|
| 952 |
+
|
| 953 |
+
// static method: alloc
|
| 954 |
+
_MTL_INLINE MTL::MotionKeyframeData* MTL::MotionKeyframeData::alloc()
|
| 955 |
+
{
|
| 956 |
+
return NS::Object::alloc<MTL::MotionKeyframeData>(_MTL_PRIVATE_CLS(MTLMotionKeyframeData));
|
| 957 |
+
}
|
| 958 |
+
|
| 959 |
+
// method: init
|
| 960 |
+
_MTL_INLINE MTL::MotionKeyframeData* MTL::MotionKeyframeData::init()
|
| 961 |
+
{
|
| 962 |
+
return NS::Object::init<MTL::MotionKeyframeData>();
|
| 963 |
+
}
|
| 964 |
+
|
| 965 |
+
// property: buffer
|
| 966 |
+
_MTL_INLINE MTL::Buffer* MTL::MotionKeyframeData::buffer() const
|
| 967 |
+
{
|
| 968 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(buffer));
|
| 969 |
+
}
|
| 970 |
+
|
| 971 |
+
_MTL_INLINE void MTL::MotionKeyframeData::setBuffer(const MTL::Buffer* buffer)
|
| 972 |
+
{
|
| 973 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBuffer_), buffer);
|
| 974 |
+
}
|
| 975 |
+
|
| 976 |
+
// property: offset
|
| 977 |
+
_MTL_INLINE NS::UInteger MTL::MotionKeyframeData::offset() const
|
| 978 |
+
{
|
| 979 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(offset));
|
| 980 |
+
}
|
| 981 |
+
|
| 982 |
+
_MTL_INLINE void MTL::MotionKeyframeData::setOffset(NS::UInteger offset)
|
| 983 |
+
{
|
| 984 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOffset_), offset);
|
| 985 |
+
}
|
| 986 |
+
|
| 987 |
+
// static method: data
|
| 988 |
+
_MTL_INLINE MTL::MotionKeyframeData* MTL::MotionKeyframeData::data()
|
| 989 |
+
{
|
| 990 |
+
return Object::sendMessage<MTL::MotionKeyframeData*>(_MTL_PRIVATE_CLS(MTLMotionKeyframeData), _MTL_PRIVATE_SEL(data));
|
| 991 |
+
}
|
| 992 |
+
|
| 993 |
+
// static method: alloc
|
| 994 |
+
_MTL_INLINE MTL::AccelerationStructureMotionTriangleGeometryDescriptor* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::alloc()
|
| 995 |
+
{
|
| 996 |
+
return NS::Object::alloc<MTL::AccelerationStructureMotionTriangleGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionTriangleGeometryDescriptor));
|
| 997 |
+
}
|
| 998 |
+
|
| 999 |
+
// method: init
|
| 1000 |
+
_MTL_INLINE MTL::AccelerationStructureMotionTriangleGeometryDescriptor* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::init()
|
| 1001 |
+
{
|
| 1002 |
+
return NS::Object::init<MTL::AccelerationStructureMotionTriangleGeometryDescriptor>();
|
| 1003 |
+
}
|
| 1004 |
+
|
| 1005 |
+
// property: vertexBuffers
|
| 1006 |
+
_MTL_INLINE NS::Array* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::vertexBuffers() const
|
| 1007 |
+
{
|
| 1008 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(vertexBuffers));
|
| 1009 |
+
}
|
| 1010 |
+
|
| 1011 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setVertexBuffers(const NS::Array* vertexBuffers)
|
| 1012 |
+
{
|
| 1013 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBuffers_), vertexBuffers);
|
| 1014 |
+
}
|
| 1015 |
+
|
| 1016 |
+
// property: vertexFormat
|
| 1017 |
+
_MTL_INLINE MTL::AttributeFormat MTL::AccelerationStructureMotionTriangleGeometryDescriptor::vertexFormat() const
|
| 1018 |
+
{
|
| 1019 |
+
return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(vertexFormat));
|
| 1020 |
+
}
|
| 1021 |
+
|
| 1022 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setVertexFormat(MTL::AttributeFormat vertexFormat)
|
| 1023 |
+
{
|
| 1024 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexFormat_), vertexFormat);
|
| 1025 |
+
}
|
| 1026 |
+
|
| 1027 |
+
// property: vertexStride
|
| 1028 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionTriangleGeometryDescriptor::vertexStride() const
|
| 1029 |
+
{
|
| 1030 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(vertexStride));
|
| 1031 |
+
}
|
| 1032 |
+
|
| 1033 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setVertexStride(NS::UInteger vertexStride)
|
| 1034 |
+
{
|
| 1035 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexStride_), vertexStride);
|
| 1036 |
+
}
|
| 1037 |
+
|
| 1038 |
+
// property: indexBuffer
|
| 1039 |
+
_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::indexBuffer() const
|
| 1040 |
+
{
|
| 1041 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(indexBuffer));
|
| 1042 |
+
}
|
| 1043 |
+
|
| 1044 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setIndexBuffer(const MTL::Buffer* indexBuffer)
|
| 1045 |
+
{
|
| 1046 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);
|
| 1047 |
+
}
|
| 1048 |
+
|
| 1049 |
+
// property: indexBufferOffset
|
| 1050 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionTriangleGeometryDescriptor::indexBufferOffset() const
|
| 1051 |
+
{
|
| 1052 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(indexBufferOffset));
|
| 1053 |
+
}
|
| 1054 |
+
|
| 1055 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setIndexBufferOffset(NS::UInteger indexBufferOffset)
|
| 1056 |
+
{
|
| 1057 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBufferOffset_), indexBufferOffset);
|
| 1058 |
+
}
|
| 1059 |
+
|
| 1060 |
+
// property: indexType
|
| 1061 |
+
_MTL_INLINE MTL::IndexType MTL::AccelerationStructureMotionTriangleGeometryDescriptor::indexType() const
|
| 1062 |
+
{
|
| 1063 |
+
return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));
|
| 1064 |
+
}
|
| 1065 |
+
|
| 1066 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setIndexType(MTL::IndexType indexType)
|
| 1067 |
+
{
|
| 1068 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);
|
| 1069 |
+
}
|
| 1070 |
+
|
| 1071 |
+
// property: triangleCount
|
| 1072 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionTriangleGeometryDescriptor::triangleCount() const
|
| 1073 |
+
{
|
| 1074 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(triangleCount));
|
| 1075 |
+
}
|
| 1076 |
+
|
| 1077 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setTriangleCount(NS::UInteger triangleCount)
|
| 1078 |
+
{
|
| 1079 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTriangleCount_), triangleCount);
|
| 1080 |
+
}
|
| 1081 |
+
|
| 1082 |
+
// property: transformationMatrixBuffer
|
| 1083 |
+
_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::transformationMatrixBuffer() const
|
| 1084 |
+
{
|
| 1085 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(transformationMatrixBuffer));
|
| 1086 |
+
}
|
| 1087 |
+
|
| 1088 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setTransformationMatrixBuffer(const MTL::Buffer* transformationMatrixBuffer)
|
| 1089 |
+
{
|
| 1090 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixBuffer_), transformationMatrixBuffer);
|
| 1091 |
+
}
|
| 1092 |
+
|
| 1093 |
+
// property: transformationMatrixBufferOffset
|
| 1094 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionTriangleGeometryDescriptor::transformationMatrixBufferOffset() const
|
| 1095 |
+
{
|
| 1096 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(transformationMatrixBufferOffset));
|
| 1097 |
+
}
|
| 1098 |
+
|
| 1099 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setTransformationMatrixBufferOffset(NS::UInteger transformationMatrixBufferOffset)
|
| 1100 |
+
{
|
| 1101 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixBufferOffset_), transformationMatrixBufferOffset);
|
| 1102 |
+
}
|
| 1103 |
+
|
| 1104 |
+
// static method: descriptor
|
| 1105 |
+
_MTL_INLINE MTL::AccelerationStructureMotionTriangleGeometryDescriptor* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::descriptor()
|
| 1106 |
+
{
|
| 1107 |
+
return Object::sendMessage<MTL::AccelerationStructureMotionTriangleGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionTriangleGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));
|
| 1108 |
+
}
|
| 1109 |
+
|
| 1110 |
+
// static method: alloc
|
| 1111 |
+
_MTL_INLINE MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor* MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::alloc()
|
| 1112 |
+
{
|
| 1113 |
+
return NS::Object::alloc<MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor));
|
| 1114 |
+
}
|
| 1115 |
+
|
| 1116 |
+
// method: init
|
| 1117 |
+
_MTL_INLINE MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor* MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::init()
|
| 1118 |
+
{
|
| 1119 |
+
return NS::Object::init<MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor>();
|
| 1120 |
+
}
|
| 1121 |
+
|
| 1122 |
+
// property: boundingBoxBuffers
|
| 1123 |
+
_MTL_INLINE NS::Array* MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::boundingBoxBuffers() const
|
| 1124 |
+
{
|
| 1125 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(boundingBoxBuffers));
|
| 1126 |
+
}
|
| 1127 |
+
|
| 1128 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::setBoundingBoxBuffers(const NS::Array* boundingBoxBuffers)
|
| 1129 |
+
{
|
| 1130 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxBuffers_), boundingBoxBuffers);
|
| 1131 |
+
}
|
| 1132 |
+
|
| 1133 |
+
// property: boundingBoxStride
|
| 1134 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::boundingBoxStride() const
|
| 1135 |
+
{
|
| 1136 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxStride));
|
| 1137 |
+
}
|
| 1138 |
+
|
| 1139 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::setBoundingBoxStride(NS::UInteger boundingBoxStride)
|
| 1140 |
+
{
|
| 1141 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxStride_), boundingBoxStride);
|
| 1142 |
+
}
|
| 1143 |
+
|
| 1144 |
+
// property: boundingBoxCount
|
| 1145 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::boundingBoxCount() const
|
| 1146 |
+
{
|
| 1147 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxCount));
|
| 1148 |
+
}
|
| 1149 |
+
|
| 1150 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::setBoundingBoxCount(NS::UInteger boundingBoxCount)
|
| 1151 |
+
{
|
| 1152 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxCount_), boundingBoxCount);
|
| 1153 |
+
}
|
| 1154 |
+
|
| 1155 |
+
// static method: descriptor
|
| 1156 |
+
_MTL_INLINE MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor* MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::descriptor()
|
| 1157 |
+
{
|
| 1158 |
+
return Object::sendMessage<MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));
|
| 1159 |
+
}
|
| 1160 |
+
|
| 1161 |
+
// static method: alloc
|
| 1162 |
+
_MTL_INLINE MTL::AccelerationStructureCurveGeometryDescriptor* MTL::AccelerationStructureCurveGeometryDescriptor::alloc()
|
| 1163 |
+
{
|
| 1164 |
+
return NS::Object::alloc<MTL::AccelerationStructureCurveGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureCurveGeometryDescriptor));
|
| 1165 |
+
}
|
| 1166 |
+
|
| 1167 |
+
// method: init
|
| 1168 |
+
_MTL_INLINE MTL::AccelerationStructureCurveGeometryDescriptor* MTL::AccelerationStructureCurveGeometryDescriptor::init()
|
| 1169 |
+
{
|
| 1170 |
+
return NS::Object::init<MTL::AccelerationStructureCurveGeometryDescriptor>();
|
| 1171 |
+
}
|
| 1172 |
+
|
| 1173 |
+
// property: controlPointBuffer
|
| 1174 |
+
_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureCurveGeometryDescriptor::controlPointBuffer() const
|
| 1175 |
+
{
|
| 1176 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(controlPointBuffer));
|
| 1177 |
+
}
|
| 1178 |
+
|
| 1179 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setControlPointBuffer(const MTL::Buffer* controlPointBuffer)
|
| 1180 |
+
{
|
| 1181 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointBuffer_), controlPointBuffer);
|
| 1182 |
+
}
|
| 1183 |
+
|
| 1184 |
+
// property: controlPointBufferOffset
|
| 1185 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::controlPointBufferOffset() const
|
| 1186 |
+
{
|
| 1187 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointBufferOffset));
|
| 1188 |
+
}
|
| 1189 |
+
|
| 1190 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setControlPointBufferOffset(NS::UInteger controlPointBufferOffset)
|
| 1191 |
+
{
|
| 1192 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointBufferOffset_), controlPointBufferOffset);
|
| 1193 |
+
}
|
| 1194 |
+
|
| 1195 |
+
// property: controlPointCount
|
| 1196 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::controlPointCount() const
|
| 1197 |
+
{
|
| 1198 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointCount));
|
| 1199 |
+
}
|
| 1200 |
+
|
| 1201 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setControlPointCount(NS::UInteger controlPointCount)
|
| 1202 |
+
{
|
| 1203 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointCount_), controlPointCount);
|
| 1204 |
+
}
|
| 1205 |
+
|
| 1206 |
+
// property: controlPointStride
|
| 1207 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::controlPointStride() const
|
| 1208 |
+
{
|
| 1209 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointStride));
|
| 1210 |
+
}
|
| 1211 |
+
|
| 1212 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setControlPointStride(NS::UInteger controlPointStride)
|
| 1213 |
+
{
|
| 1214 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointStride_), controlPointStride);
|
| 1215 |
+
}
|
| 1216 |
+
|
| 1217 |
+
// property: controlPointFormat
|
| 1218 |
+
_MTL_INLINE MTL::AttributeFormat MTL::AccelerationStructureCurveGeometryDescriptor::controlPointFormat() const
|
| 1219 |
+
{
|
| 1220 |
+
return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(controlPointFormat));
|
| 1221 |
+
}
|
| 1222 |
+
|
| 1223 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setControlPointFormat(MTL::AttributeFormat controlPointFormat)
|
| 1224 |
+
{
|
| 1225 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointFormat_), controlPointFormat);
|
| 1226 |
+
}
|
| 1227 |
+
|
| 1228 |
+
// property: radiusBuffer
|
| 1229 |
+
_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureCurveGeometryDescriptor::radiusBuffer() const
|
| 1230 |
+
{
|
| 1231 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(radiusBuffer));
|
| 1232 |
+
}
|
| 1233 |
+
|
| 1234 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setRadiusBuffer(const MTL::Buffer* radiusBuffer)
|
| 1235 |
+
{
|
| 1236 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusBuffer_), radiusBuffer);
|
| 1237 |
+
}
|
| 1238 |
+
|
| 1239 |
+
// property: radiusBufferOffset
|
| 1240 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::radiusBufferOffset() const
|
| 1241 |
+
{
|
| 1242 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(radiusBufferOffset));
|
| 1243 |
+
}
|
| 1244 |
+
|
| 1245 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setRadiusBufferOffset(NS::UInteger radiusBufferOffset)
|
| 1246 |
+
{
|
| 1247 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusBufferOffset_), radiusBufferOffset);
|
| 1248 |
+
}
|
| 1249 |
+
|
| 1250 |
+
// property: radiusFormat
|
| 1251 |
+
_MTL_INLINE MTL::AttributeFormat MTL::AccelerationStructureCurveGeometryDescriptor::radiusFormat() const
|
| 1252 |
+
{
|
| 1253 |
+
return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(radiusFormat));
|
| 1254 |
+
}
|
| 1255 |
+
|
| 1256 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setRadiusFormat(MTL::AttributeFormat radiusFormat)
|
| 1257 |
+
{
|
| 1258 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusFormat_), radiusFormat);
|
| 1259 |
+
}
|
| 1260 |
+
|
| 1261 |
+
// property: radiusStride
|
| 1262 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::radiusStride() const
|
| 1263 |
+
{
|
| 1264 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(radiusStride));
|
| 1265 |
+
}
|
| 1266 |
+
|
| 1267 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setRadiusStride(NS::UInteger radiusStride)
|
| 1268 |
+
{
|
| 1269 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusStride_), radiusStride);
|
| 1270 |
+
}
|
| 1271 |
+
|
| 1272 |
+
// property: indexBuffer
|
| 1273 |
+
_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureCurveGeometryDescriptor::indexBuffer() const
|
| 1274 |
+
{
|
| 1275 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(indexBuffer));
|
| 1276 |
+
}
|
| 1277 |
+
|
| 1278 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setIndexBuffer(const MTL::Buffer* indexBuffer)
|
| 1279 |
+
{
|
| 1280 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);
|
| 1281 |
+
}
|
| 1282 |
+
|
| 1283 |
+
// property: indexBufferOffset
|
| 1284 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::indexBufferOffset() const
|
| 1285 |
+
{
|
| 1286 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(indexBufferOffset));
|
| 1287 |
+
}
|
| 1288 |
+
|
| 1289 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setIndexBufferOffset(NS::UInteger indexBufferOffset)
|
| 1290 |
+
{
|
| 1291 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBufferOffset_), indexBufferOffset);
|
| 1292 |
+
}
|
| 1293 |
+
|
| 1294 |
+
// property: indexType
|
| 1295 |
+
_MTL_INLINE MTL::IndexType MTL::AccelerationStructureCurveGeometryDescriptor::indexType() const
|
| 1296 |
+
{
|
| 1297 |
+
return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));
|
| 1298 |
+
}
|
| 1299 |
+
|
| 1300 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setIndexType(MTL::IndexType indexType)
|
| 1301 |
+
{
|
| 1302 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);
|
| 1303 |
+
}
|
| 1304 |
+
|
| 1305 |
+
// property: segmentCount
|
| 1306 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::segmentCount() const
|
| 1307 |
+
{
|
| 1308 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(segmentCount));
|
| 1309 |
+
}
|
| 1310 |
+
|
| 1311 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setSegmentCount(NS::UInteger segmentCount)
|
| 1312 |
+
{
|
| 1313 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSegmentCount_), segmentCount);
|
| 1314 |
+
}
|
| 1315 |
+
|
| 1316 |
+
// property: segmentControlPointCount
|
| 1317 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::segmentControlPointCount() const
|
| 1318 |
+
{
|
| 1319 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(segmentControlPointCount));
|
| 1320 |
+
}
|
| 1321 |
+
|
| 1322 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setSegmentControlPointCount(NS::UInteger segmentControlPointCount)
|
| 1323 |
+
{
|
| 1324 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSegmentControlPointCount_), segmentControlPointCount);
|
| 1325 |
+
}
|
| 1326 |
+
|
| 1327 |
+
// property: curveType
|
| 1328 |
+
_MTL_INLINE MTL::CurveType MTL::AccelerationStructureCurveGeometryDescriptor::curveType() const
|
| 1329 |
+
{
|
| 1330 |
+
return Object::sendMessage<MTL::CurveType>(this, _MTL_PRIVATE_SEL(curveType));
|
| 1331 |
+
}
|
| 1332 |
+
|
| 1333 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setCurveType(MTL::CurveType curveType)
|
| 1334 |
+
{
|
| 1335 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveType_), curveType);
|
| 1336 |
+
}
|
| 1337 |
+
|
| 1338 |
+
// property: curveBasis
|
| 1339 |
+
_MTL_INLINE MTL::CurveBasis MTL::AccelerationStructureCurveGeometryDescriptor::curveBasis() const
|
| 1340 |
+
{
|
| 1341 |
+
return Object::sendMessage<MTL::CurveBasis>(this, _MTL_PRIVATE_SEL(curveBasis));
|
| 1342 |
+
}
|
| 1343 |
+
|
| 1344 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setCurveBasis(MTL::CurveBasis curveBasis)
|
| 1345 |
+
{
|
| 1346 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveBasis_), curveBasis);
|
| 1347 |
+
}
|
| 1348 |
+
|
| 1349 |
+
// property: curveEndCaps
|
| 1350 |
+
_MTL_INLINE MTL::CurveEndCaps MTL::AccelerationStructureCurveGeometryDescriptor::curveEndCaps() const
|
| 1351 |
+
{
|
| 1352 |
+
return Object::sendMessage<MTL::CurveEndCaps>(this, _MTL_PRIVATE_SEL(curveEndCaps));
|
| 1353 |
+
}
|
| 1354 |
+
|
| 1355 |
+
_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setCurveEndCaps(MTL::CurveEndCaps curveEndCaps)
|
| 1356 |
+
{
|
| 1357 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveEndCaps_), curveEndCaps);
|
| 1358 |
+
}
|
| 1359 |
+
|
| 1360 |
+
// static method: descriptor
|
| 1361 |
+
_MTL_INLINE MTL::AccelerationStructureCurveGeometryDescriptor* MTL::AccelerationStructureCurveGeometryDescriptor::descriptor()
|
| 1362 |
+
{
|
| 1363 |
+
return Object::sendMessage<MTL::AccelerationStructureCurveGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureCurveGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));
|
| 1364 |
+
}
|
| 1365 |
+
|
| 1366 |
+
// static method: alloc
|
| 1367 |
+
_MTL_INLINE MTL::AccelerationStructureMotionCurveGeometryDescriptor* MTL::AccelerationStructureMotionCurveGeometryDescriptor::alloc()
|
| 1368 |
+
{
|
| 1369 |
+
return NS::Object::alloc<MTL::AccelerationStructureMotionCurveGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionCurveGeometryDescriptor));
|
| 1370 |
+
}
|
| 1371 |
+
|
| 1372 |
+
// method: init
|
| 1373 |
+
_MTL_INLINE MTL::AccelerationStructureMotionCurveGeometryDescriptor* MTL::AccelerationStructureMotionCurveGeometryDescriptor::init()
|
| 1374 |
+
{
|
| 1375 |
+
return NS::Object::init<MTL::AccelerationStructureMotionCurveGeometryDescriptor>();
|
| 1376 |
+
}
|
| 1377 |
+
|
| 1378 |
+
// property: controlPointBuffers
|
| 1379 |
+
_MTL_INLINE NS::Array* MTL::AccelerationStructureMotionCurveGeometryDescriptor::controlPointBuffers() const
|
| 1380 |
+
{
|
| 1381 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(controlPointBuffers));
|
| 1382 |
+
}
|
| 1383 |
+
|
| 1384 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setControlPointBuffers(const NS::Array* controlPointBuffers)
|
| 1385 |
+
{
|
| 1386 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointBuffers_), controlPointBuffers);
|
| 1387 |
+
}
|
| 1388 |
+
|
| 1389 |
+
// property: controlPointCount
|
| 1390 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionCurveGeometryDescriptor::controlPointCount() const
|
| 1391 |
+
{
|
| 1392 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointCount));
|
| 1393 |
+
}
|
| 1394 |
+
|
| 1395 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setControlPointCount(NS::UInteger controlPointCount)
|
| 1396 |
+
{
|
| 1397 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointCount_), controlPointCount);
|
| 1398 |
+
}
|
| 1399 |
+
|
| 1400 |
+
// property: controlPointStride
|
| 1401 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionCurveGeometryDescriptor::controlPointStride() const
|
| 1402 |
+
{
|
| 1403 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointStride));
|
| 1404 |
+
}
|
| 1405 |
+
|
| 1406 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setControlPointStride(NS::UInteger controlPointStride)
|
| 1407 |
+
{
|
| 1408 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointStride_), controlPointStride);
|
| 1409 |
+
}
|
| 1410 |
+
|
| 1411 |
+
// property: controlPointFormat
|
| 1412 |
+
_MTL_INLINE MTL::AttributeFormat MTL::AccelerationStructureMotionCurveGeometryDescriptor::controlPointFormat() const
|
| 1413 |
+
{
|
| 1414 |
+
return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(controlPointFormat));
|
| 1415 |
+
}
|
| 1416 |
+
|
| 1417 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setControlPointFormat(MTL::AttributeFormat controlPointFormat)
|
| 1418 |
+
{
|
| 1419 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointFormat_), controlPointFormat);
|
| 1420 |
+
}
|
| 1421 |
+
|
| 1422 |
+
// property: radiusBuffers
|
| 1423 |
+
_MTL_INLINE NS::Array* MTL::AccelerationStructureMotionCurveGeometryDescriptor::radiusBuffers() const
|
| 1424 |
+
{
|
| 1425 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(radiusBuffers));
|
| 1426 |
+
}
|
| 1427 |
+
|
| 1428 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setRadiusBuffers(const NS::Array* radiusBuffers)
|
| 1429 |
+
{
|
| 1430 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusBuffers_), radiusBuffers);
|
| 1431 |
+
}
|
| 1432 |
+
|
| 1433 |
+
// property: radiusFormat
|
| 1434 |
+
_MTL_INLINE MTL::AttributeFormat MTL::AccelerationStructureMotionCurveGeometryDescriptor::radiusFormat() const
|
| 1435 |
+
{
|
| 1436 |
+
return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(radiusFormat));
|
| 1437 |
+
}
|
| 1438 |
+
|
| 1439 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setRadiusFormat(MTL::AttributeFormat radiusFormat)
|
| 1440 |
+
{
|
| 1441 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusFormat_), radiusFormat);
|
| 1442 |
+
}
|
| 1443 |
+
|
| 1444 |
+
// property: radiusStride
|
| 1445 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionCurveGeometryDescriptor::radiusStride() const
|
| 1446 |
+
{
|
| 1447 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(radiusStride));
|
| 1448 |
+
}
|
| 1449 |
+
|
| 1450 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setRadiusStride(NS::UInteger radiusStride)
|
| 1451 |
+
{
|
| 1452 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusStride_), radiusStride);
|
| 1453 |
+
}
|
| 1454 |
+
|
| 1455 |
+
// property: indexBuffer
|
| 1456 |
+
_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureMotionCurveGeometryDescriptor::indexBuffer() const
|
| 1457 |
+
{
|
| 1458 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(indexBuffer));
|
| 1459 |
+
}
|
| 1460 |
+
|
| 1461 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setIndexBuffer(const MTL::Buffer* indexBuffer)
|
| 1462 |
+
{
|
| 1463 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);
|
| 1464 |
+
}
|
| 1465 |
+
|
| 1466 |
+
// property: indexBufferOffset
|
| 1467 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionCurveGeometryDescriptor::indexBufferOffset() const
|
| 1468 |
+
{
|
| 1469 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(indexBufferOffset));
|
| 1470 |
+
}
|
| 1471 |
+
|
| 1472 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setIndexBufferOffset(NS::UInteger indexBufferOffset)
|
| 1473 |
+
{
|
| 1474 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBufferOffset_), indexBufferOffset);
|
| 1475 |
+
}
|
| 1476 |
+
|
| 1477 |
+
// property: indexType
|
| 1478 |
+
_MTL_INLINE MTL::IndexType MTL::AccelerationStructureMotionCurveGeometryDescriptor::indexType() const
|
| 1479 |
+
{
|
| 1480 |
+
return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));
|
| 1481 |
+
}
|
| 1482 |
+
|
| 1483 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setIndexType(MTL::IndexType indexType)
|
| 1484 |
+
{
|
| 1485 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);
|
| 1486 |
+
}
|
| 1487 |
+
|
| 1488 |
+
// property: segmentCount
|
| 1489 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionCurveGeometryDescriptor::segmentCount() const
|
| 1490 |
+
{
|
| 1491 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(segmentCount));
|
| 1492 |
+
}
|
| 1493 |
+
|
| 1494 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setSegmentCount(NS::UInteger segmentCount)
|
| 1495 |
+
{
|
| 1496 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSegmentCount_), segmentCount);
|
| 1497 |
+
}
|
| 1498 |
+
|
| 1499 |
+
// property: segmentControlPointCount
|
| 1500 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionCurveGeometryDescriptor::segmentControlPointCount() const
|
| 1501 |
+
{
|
| 1502 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(segmentControlPointCount));
|
| 1503 |
+
}
|
| 1504 |
+
|
| 1505 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setSegmentControlPointCount(NS::UInteger segmentControlPointCount)
|
| 1506 |
+
{
|
| 1507 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSegmentControlPointCount_), segmentControlPointCount);
|
| 1508 |
+
}
|
| 1509 |
+
|
| 1510 |
+
// property: curveType
|
| 1511 |
+
_MTL_INLINE MTL::CurveType MTL::AccelerationStructureMotionCurveGeometryDescriptor::curveType() const
|
| 1512 |
+
{
|
| 1513 |
+
return Object::sendMessage<MTL::CurveType>(this, _MTL_PRIVATE_SEL(curveType));
|
| 1514 |
+
}
|
| 1515 |
+
|
| 1516 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setCurveType(MTL::CurveType curveType)
|
| 1517 |
+
{
|
| 1518 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveType_), curveType);
|
| 1519 |
+
}
|
| 1520 |
+
|
| 1521 |
+
// property: curveBasis
|
| 1522 |
+
_MTL_INLINE MTL::CurveBasis MTL::AccelerationStructureMotionCurveGeometryDescriptor::curveBasis() const
|
| 1523 |
+
{
|
| 1524 |
+
return Object::sendMessage<MTL::CurveBasis>(this, _MTL_PRIVATE_SEL(curveBasis));
|
| 1525 |
+
}
|
| 1526 |
+
|
| 1527 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setCurveBasis(MTL::CurveBasis curveBasis)
|
| 1528 |
+
{
|
| 1529 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveBasis_), curveBasis);
|
| 1530 |
+
}
|
| 1531 |
+
|
| 1532 |
+
// property: curveEndCaps
|
| 1533 |
+
_MTL_INLINE MTL::CurveEndCaps MTL::AccelerationStructureMotionCurveGeometryDescriptor::curveEndCaps() const
|
| 1534 |
+
{
|
| 1535 |
+
return Object::sendMessage<MTL::CurveEndCaps>(this, _MTL_PRIVATE_SEL(curveEndCaps));
|
| 1536 |
+
}
|
| 1537 |
+
|
| 1538 |
+
_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setCurveEndCaps(MTL::CurveEndCaps curveEndCaps)
|
| 1539 |
+
{
|
| 1540 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveEndCaps_), curveEndCaps);
|
| 1541 |
+
}
|
| 1542 |
+
|
| 1543 |
+
// static method: descriptor
|
| 1544 |
+
_MTL_INLINE MTL::AccelerationStructureMotionCurveGeometryDescriptor* MTL::AccelerationStructureMotionCurveGeometryDescriptor::descriptor()
|
| 1545 |
+
{
|
| 1546 |
+
return Object::sendMessage<MTL::AccelerationStructureMotionCurveGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionCurveGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));
|
| 1547 |
+
}
|
| 1548 |
+
|
| 1549 |
+
// static method: alloc
|
| 1550 |
+
_MTL_INLINE MTL::InstanceAccelerationStructureDescriptor* MTL::InstanceAccelerationStructureDescriptor::alloc()
|
| 1551 |
+
{
|
| 1552 |
+
return NS::Object::alloc<MTL::InstanceAccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTLInstanceAccelerationStructureDescriptor));
|
| 1553 |
+
}
|
| 1554 |
+
|
| 1555 |
+
// method: init
|
| 1556 |
+
_MTL_INLINE MTL::InstanceAccelerationStructureDescriptor* MTL::InstanceAccelerationStructureDescriptor::init()
|
| 1557 |
+
{
|
| 1558 |
+
return NS::Object::init<MTL::InstanceAccelerationStructureDescriptor>();
|
| 1559 |
+
}
|
| 1560 |
+
|
| 1561 |
+
// property: instanceDescriptorBuffer
|
| 1562 |
+
_MTL_INLINE MTL::Buffer* MTL::InstanceAccelerationStructureDescriptor::instanceDescriptorBuffer() const
|
| 1563 |
+
{
|
| 1564 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(instanceDescriptorBuffer));
|
| 1565 |
+
}
|
| 1566 |
+
|
| 1567 |
+
_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceDescriptorBuffer(const MTL::Buffer* instanceDescriptorBuffer)
|
| 1568 |
+
{
|
| 1569 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorBuffer_), instanceDescriptorBuffer);
|
| 1570 |
+
}
|
| 1571 |
+
|
| 1572 |
+
// property: instanceDescriptorBufferOffset
|
| 1573 |
+
_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::instanceDescriptorBufferOffset() const
|
| 1574 |
+
{
|
| 1575 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceDescriptorBufferOffset));
|
| 1576 |
+
}
|
| 1577 |
+
|
| 1578 |
+
_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceDescriptorBufferOffset(NS::UInteger instanceDescriptorBufferOffset)
|
| 1579 |
+
{
|
| 1580 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorBufferOffset_), instanceDescriptorBufferOffset);
|
| 1581 |
+
}
|
| 1582 |
+
|
| 1583 |
+
// property: instanceDescriptorStride
|
| 1584 |
+
_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::instanceDescriptorStride() const
|
| 1585 |
+
{
|
| 1586 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceDescriptorStride));
|
| 1587 |
+
}
|
| 1588 |
+
|
| 1589 |
+
_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride)
|
| 1590 |
+
{
|
| 1591 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorStride_), instanceDescriptorStride);
|
| 1592 |
+
}
|
| 1593 |
+
|
| 1594 |
+
// property: instanceCount
|
| 1595 |
+
_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::instanceCount() const
|
| 1596 |
+
{
|
| 1597 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceCount));
|
| 1598 |
+
}
|
| 1599 |
+
|
| 1600 |
+
_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceCount(NS::UInteger instanceCount)
|
| 1601 |
+
{
|
| 1602 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceCount_), instanceCount);
|
| 1603 |
+
}
|
| 1604 |
+
|
| 1605 |
+
// property: instancedAccelerationStructures
|
| 1606 |
+
_MTL_INLINE NS::Array* MTL::InstanceAccelerationStructureDescriptor::instancedAccelerationStructures() const
|
| 1607 |
+
{
|
| 1608 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(instancedAccelerationStructures));
|
| 1609 |
+
}
|
| 1610 |
+
|
| 1611 |
+
_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstancedAccelerationStructures(const NS::Array* instancedAccelerationStructures)
|
| 1612 |
+
{
|
| 1613 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstancedAccelerationStructures_), instancedAccelerationStructures);
|
| 1614 |
+
}
|
| 1615 |
+
|
| 1616 |
+
// property: instanceDescriptorType
|
| 1617 |
+
_MTL_INLINE MTL::AccelerationStructureInstanceDescriptorType MTL::InstanceAccelerationStructureDescriptor::instanceDescriptorType() const
|
| 1618 |
+
{
|
| 1619 |
+
return Object::sendMessage<MTL::AccelerationStructureInstanceDescriptorType>(this, _MTL_PRIVATE_SEL(instanceDescriptorType));
|
| 1620 |
+
}
|
| 1621 |
+
|
| 1622 |
+
_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType)
|
| 1623 |
+
{
|
| 1624 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorType_), instanceDescriptorType);
|
| 1625 |
+
}
|
| 1626 |
+
|
| 1627 |
+
// property: motionTransformBuffer
|
| 1628 |
+
_MTL_INLINE MTL::Buffer* MTL::InstanceAccelerationStructureDescriptor::motionTransformBuffer() const
|
| 1629 |
+
{
|
| 1630 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(motionTransformBuffer));
|
| 1631 |
+
}
|
| 1632 |
+
|
| 1633 |
+
_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setMotionTransformBuffer(const MTL::Buffer* motionTransformBuffer)
|
| 1634 |
+
{
|
| 1635 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformBuffer_), motionTransformBuffer);
|
| 1636 |
+
}
|
| 1637 |
+
|
| 1638 |
+
// property: motionTransformBufferOffset
|
| 1639 |
+
_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::motionTransformBufferOffset() const
|
| 1640 |
+
{
|
| 1641 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformBufferOffset));
|
| 1642 |
+
}
|
| 1643 |
+
|
| 1644 |
+
_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setMotionTransformBufferOffset(NS::UInteger motionTransformBufferOffset)
|
| 1645 |
+
{
|
| 1646 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformBufferOffset_), motionTransformBufferOffset);
|
| 1647 |
+
}
|
| 1648 |
+
|
| 1649 |
+
// property: motionTransformCount
|
| 1650 |
+
_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::motionTransformCount() const
|
| 1651 |
+
{
|
| 1652 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformCount));
|
| 1653 |
+
}
|
| 1654 |
+
|
| 1655 |
+
_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setMotionTransformCount(NS::UInteger motionTransformCount)
|
| 1656 |
+
{
|
| 1657 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformCount_), motionTransformCount);
|
| 1658 |
+
}
|
| 1659 |
+
|
| 1660 |
+
// static method: descriptor
|
| 1661 |
+
_MTL_INLINE MTL::InstanceAccelerationStructureDescriptor* MTL::InstanceAccelerationStructureDescriptor::descriptor()
|
| 1662 |
+
{
|
| 1663 |
+
return Object::sendMessage<MTL::InstanceAccelerationStructureDescriptor*>(_MTL_PRIVATE_CLS(MTLInstanceAccelerationStructureDescriptor), _MTL_PRIVATE_SEL(descriptor));
|
| 1664 |
+
}
|
| 1665 |
+
|
| 1666 |
+
// static method: alloc
|
| 1667 |
+
_MTL_INLINE MTL::IndirectInstanceAccelerationStructureDescriptor* MTL::IndirectInstanceAccelerationStructureDescriptor::alloc()
|
| 1668 |
+
{
|
| 1669 |
+
return NS::Object::alloc<MTL::IndirectInstanceAccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTLIndirectInstanceAccelerationStructureDescriptor));
|
| 1670 |
+
}
|
| 1671 |
+
|
| 1672 |
+
// method: init
|
| 1673 |
+
_MTL_INLINE MTL::IndirectInstanceAccelerationStructureDescriptor* MTL::IndirectInstanceAccelerationStructureDescriptor::init()
|
| 1674 |
+
{
|
| 1675 |
+
return NS::Object::init<MTL::IndirectInstanceAccelerationStructureDescriptor>();
|
| 1676 |
+
}
|
| 1677 |
+
|
| 1678 |
+
// property: instanceDescriptorBuffer
|
| 1679 |
+
_MTL_INLINE MTL::Buffer* MTL::IndirectInstanceAccelerationStructureDescriptor::instanceDescriptorBuffer() const
|
| 1680 |
+
{
|
| 1681 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(instanceDescriptorBuffer));
|
| 1682 |
+
}
|
| 1683 |
+
|
| 1684 |
+
_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceDescriptorBuffer(const MTL::Buffer* instanceDescriptorBuffer)
|
| 1685 |
+
{
|
| 1686 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorBuffer_), instanceDescriptorBuffer);
|
| 1687 |
+
}
|
| 1688 |
+
|
| 1689 |
+
// property: instanceDescriptorBufferOffset
|
| 1690 |
+
_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::instanceDescriptorBufferOffset() const
|
| 1691 |
+
{
|
| 1692 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceDescriptorBufferOffset));
|
| 1693 |
+
}
|
| 1694 |
+
|
| 1695 |
+
_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceDescriptorBufferOffset(NS::UInteger instanceDescriptorBufferOffset)
|
| 1696 |
+
{
|
| 1697 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorBufferOffset_), instanceDescriptorBufferOffset);
|
| 1698 |
+
}
|
| 1699 |
+
|
| 1700 |
+
// property: instanceDescriptorStride
|
| 1701 |
+
_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::instanceDescriptorStride() const
|
| 1702 |
+
{
|
| 1703 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceDescriptorStride));
|
| 1704 |
+
}
|
| 1705 |
+
|
| 1706 |
+
_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride)
|
| 1707 |
+
{
|
| 1708 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorStride_), instanceDescriptorStride);
|
| 1709 |
+
}
|
| 1710 |
+
|
| 1711 |
+
// property: maxInstanceCount
|
| 1712 |
+
_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::maxInstanceCount() const
|
| 1713 |
+
{
|
| 1714 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxInstanceCount));
|
| 1715 |
+
}
|
| 1716 |
+
|
| 1717 |
+
_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMaxInstanceCount(NS::UInteger maxInstanceCount)
|
| 1718 |
+
{
|
| 1719 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxInstanceCount_), maxInstanceCount);
|
| 1720 |
+
}
|
| 1721 |
+
|
| 1722 |
+
// property: instanceCountBuffer
|
| 1723 |
+
_MTL_INLINE MTL::Buffer* MTL::IndirectInstanceAccelerationStructureDescriptor::instanceCountBuffer() const
|
| 1724 |
+
{
|
| 1725 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(instanceCountBuffer));
|
| 1726 |
+
}
|
| 1727 |
+
|
| 1728 |
+
_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceCountBuffer(const MTL::Buffer* instanceCountBuffer)
|
| 1729 |
+
{
|
| 1730 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceCountBuffer_), instanceCountBuffer);
|
| 1731 |
+
}
|
| 1732 |
+
|
| 1733 |
+
// property: instanceCountBufferOffset
|
| 1734 |
+
_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::instanceCountBufferOffset() const
|
| 1735 |
+
{
|
| 1736 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceCountBufferOffset));
|
| 1737 |
+
}
|
| 1738 |
+
|
| 1739 |
+
_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceCountBufferOffset(NS::UInteger instanceCountBufferOffset)
|
| 1740 |
+
{
|
| 1741 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceCountBufferOffset_), instanceCountBufferOffset);
|
| 1742 |
+
}
|
| 1743 |
+
|
| 1744 |
+
// property: instanceDescriptorType
|
| 1745 |
+
_MTL_INLINE MTL::AccelerationStructureInstanceDescriptorType MTL::IndirectInstanceAccelerationStructureDescriptor::instanceDescriptorType() const
|
| 1746 |
+
{
|
| 1747 |
+
return Object::sendMessage<MTL::AccelerationStructureInstanceDescriptorType>(this, _MTL_PRIVATE_SEL(instanceDescriptorType));
|
| 1748 |
+
}
|
| 1749 |
+
|
| 1750 |
+
_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType)
|
| 1751 |
+
{
|
| 1752 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorType_), instanceDescriptorType);
|
| 1753 |
+
}
|
| 1754 |
+
|
| 1755 |
+
// property: motionTransformBuffer
|
| 1756 |
+
_MTL_INLINE MTL::Buffer* MTL::IndirectInstanceAccelerationStructureDescriptor::motionTransformBuffer() const
|
| 1757 |
+
{
|
| 1758 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(motionTransformBuffer));
|
| 1759 |
+
}
|
| 1760 |
+
|
| 1761 |
+
_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformBuffer(const MTL::Buffer* motionTransformBuffer)
|
| 1762 |
+
{
|
| 1763 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformBuffer_), motionTransformBuffer);
|
| 1764 |
+
}
|
| 1765 |
+
|
| 1766 |
+
// property: motionTransformBufferOffset
|
| 1767 |
+
_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::motionTransformBufferOffset() const
|
| 1768 |
+
{
|
| 1769 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformBufferOffset));
|
| 1770 |
+
}
|
| 1771 |
+
|
| 1772 |
+
_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformBufferOffset(NS::UInteger motionTransformBufferOffset)
|
| 1773 |
+
{
|
| 1774 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformBufferOffset_), motionTransformBufferOffset);
|
| 1775 |
+
}
|
| 1776 |
+
|
| 1777 |
+
// property: maxMotionTransformCount
|
| 1778 |
+
_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::maxMotionTransformCount() const
|
| 1779 |
+
{
|
| 1780 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxMotionTransformCount));
|
| 1781 |
+
}
|
| 1782 |
+
|
| 1783 |
+
_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMaxMotionTransformCount(NS::UInteger maxMotionTransformCount)
|
| 1784 |
+
{
|
| 1785 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxMotionTransformCount_), maxMotionTransformCount);
|
| 1786 |
+
}
|
| 1787 |
+
|
| 1788 |
+
// property: motionTransformCountBuffer
|
| 1789 |
+
_MTL_INLINE MTL::Buffer* MTL::IndirectInstanceAccelerationStructureDescriptor::motionTransformCountBuffer() const
|
| 1790 |
+
{
|
| 1791 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(motionTransformCountBuffer));
|
| 1792 |
+
}
|
| 1793 |
+
|
| 1794 |
+
_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformCountBuffer(const MTL::Buffer* motionTransformCountBuffer)
|
| 1795 |
+
{
|
| 1796 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformCountBuffer_), motionTransformCountBuffer);
|
| 1797 |
+
}
|
| 1798 |
+
|
| 1799 |
+
// property: motionTransformCountBufferOffset
|
| 1800 |
+
_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::motionTransformCountBufferOffset() const
|
| 1801 |
+
{
|
| 1802 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformCountBufferOffset));
|
| 1803 |
+
}
|
| 1804 |
+
|
| 1805 |
+
_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformCountBufferOffset(NS::UInteger motionTransformCountBufferOffset)
|
| 1806 |
+
{
|
| 1807 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformCountBufferOffset_), motionTransformCountBufferOffset);
|
| 1808 |
+
}
|
| 1809 |
+
|
| 1810 |
+
// static method: descriptor
|
| 1811 |
+
_MTL_INLINE MTL::IndirectInstanceAccelerationStructureDescriptor* MTL::IndirectInstanceAccelerationStructureDescriptor::descriptor()
|
| 1812 |
+
{
|
| 1813 |
+
return Object::sendMessage<MTL::IndirectInstanceAccelerationStructureDescriptor*>(_MTL_PRIVATE_CLS(MTLIndirectInstanceAccelerationStructureDescriptor), _MTL_PRIVATE_SEL(descriptor));
|
| 1814 |
+
}
|
| 1815 |
+
|
| 1816 |
+
// property: size
|
| 1817 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructure::size() const
|
| 1818 |
+
{
|
| 1819 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(size));
|
| 1820 |
+
}
|
| 1821 |
+
|
| 1822 |
+
// property: gpuResourceID
|
| 1823 |
+
_MTL_INLINE MTL::ResourceID MTL::AccelerationStructure::gpuResourceID() const
|
| 1824 |
+
{
|
| 1825 |
+
return Object::sendMessage<MTL::ResourceID>(this, _MTL_PRIVATE_SEL(gpuResourceID));
|
| 1826 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLAccelerationStructureCommandEncoder.hpp
ADDED
|
@@ -0,0 +1,290 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLAccelerationStructureCommandEncoder.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLAccelerationStructureCommandEncoder.hpp"
|
| 30 |
+
#include "MTLArgument.hpp"
|
| 31 |
+
#include "MTLCommandEncoder.hpp"
|
| 32 |
+
|
| 33 |
+
namespace MTL
|
| 34 |
+
{
|
| 35 |
+
_MTL_OPTIONS(NS::UInteger, AccelerationStructureRefitOptions) {
|
| 36 |
+
AccelerationStructureRefitOptionVertexData = 1,
|
| 37 |
+
AccelerationStructureRefitOptionPerPrimitiveData = 2,
|
| 38 |
+
};
|
| 39 |
+
|
| 40 |
+
class AccelerationStructureCommandEncoder : public NS::Referencing<AccelerationStructureCommandEncoder, CommandEncoder>
|
| 41 |
+
{
|
| 42 |
+
public:
|
| 43 |
+
void buildAccelerationStructure(const class AccelerationStructure* accelerationStructure, const class AccelerationStructureDescriptor* descriptor, const class Buffer* scratchBuffer, NS::UInteger scratchBufferOffset);
|
| 44 |
+
|
| 45 |
+
void refitAccelerationStructure(const class AccelerationStructure* sourceAccelerationStructure, const class AccelerationStructureDescriptor* descriptor, const class AccelerationStructure* destinationAccelerationStructure, const class Buffer* scratchBuffer, NS::UInteger scratchBufferOffset);
|
| 46 |
+
|
| 47 |
+
void refitAccelerationStructure(const class AccelerationStructure* sourceAccelerationStructure, const class AccelerationStructureDescriptor* descriptor, const class AccelerationStructure* destinationAccelerationStructure, const class Buffer* scratchBuffer, NS::UInteger scratchBufferOffset, MTL::AccelerationStructureRefitOptions options);
|
| 48 |
+
|
| 49 |
+
void copyAccelerationStructure(const class AccelerationStructure* sourceAccelerationStructure, const class AccelerationStructure* destinationAccelerationStructure);
|
| 50 |
+
|
| 51 |
+
void writeCompactedAccelerationStructureSize(const class AccelerationStructure* accelerationStructure, const class Buffer* buffer, NS::UInteger offset);
|
| 52 |
+
|
| 53 |
+
void writeCompactedAccelerationStructureSize(const class AccelerationStructure* accelerationStructure, const class Buffer* buffer, NS::UInteger offset, MTL::DataType sizeDataType);
|
| 54 |
+
|
| 55 |
+
void copyAndCompactAccelerationStructure(const class AccelerationStructure* sourceAccelerationStructure, const class AccelerationStructure* destinationAccelerationStructure);
|
| 56 |
+
|
| 57 |
+
void updateFence(const class Fence* fence);
|
| 58 |
+
|
| 59 |
+
void waitForFence(const class Fence* fence);
|
| 60 |
+
|
| 61 |
+
void useResource(const class Resource* resource, MTL::ResourceUsage usage);
|
| 62 |
+
|
| 63 |
+
void useResources(const class Resource* const resources[], NS::UInteger count, MTL::ResourceUsage usage);
|
| 64 |
+
|
| 65 |
+
void useHeap(const class Heap* heap);
|
| 66 |
+
|
| 67 |
+
void useHeaps(const class Heap* const heaps[], NS::UInteger count);
|
| 68 |
+
|
| 69 |
+
void sampleCountersInBuffer(const class CounterSampleBuffer* sampleBuffer, NS::UInteger sampleIndex, bool barrier);
|
| 70 |
+
};
|
| 71 |
+
|
| 72 |
+
class AccelerationStructurePassSampleBufferAttachmentDescriptor : public NS::Copying<AccelerationStructurePassSampleBufferAttachmentDescriptor>
|
| 73 |
+
{
|
| 74 |
+
public:
|
| 75 |
+
static class AccelerationStructurePassSampleBufferAttachmentDescriptor* alloc();
|
| 76 |
+
|
| 77 |
+
class AccelerationStructurePassSampleBufferAttachmentDescriptor* init();
|
| 78 |
+
|
| 79 |
+
class CounterSampleBuffer* sampleBuffer() const;
|
| 80 |
+
void setSampleBuffer(const class CounterSampleBuffer* sampleBuffer);
|
| 81 |
+
|
| 82 |
+
NS::UInteger startOfEncoderSampleIndex() const;
|
| 83 |
+
void setStartOfEncoderSampleIndex(NS::UInteger startOfEncoderSampleIndex);
|
| 84 |
+
|
| 85 |
+
NS::UInteger endOfEncoderSampleIndex() const;
|
| 86 |
+
void setEndOfEncoderSampleIndex(NS::UInteger endOfEncoderSampleIndex);
|
| 87 |
+
};
|
| 88 |
+
|
| 89 |
+
class AccelerationStructurePassSampleBufferAttachmentDescriptorArray : public NS::Referencing<AccelerationStructurePassSampleBufferAttachmentDescriptorArray>
|
| 90 |
+
{
|
| 91 |
+
public:
|
| 92 |
+
static class AccelerationStructurePassSampleBufferAttachmentDescriptorArray* alloc();
|
| 93 |
+
|
| 94 |
+
class AccelerationStructurePassSampleBufferAttachmentDescriptorArray* init();
|
| 95 |
+
|
| 96 |
+
class AccelerationStructurePassSampleBufferAttachmentDescriptor* object(NS::UInteger attachmentIndex);
|
| 97 |
+
|
| 98 |
+
void setObject(const class AccelerationStructurePassSampleBufferAttachmentDescriptor* attachment, NS::UInteger attachmentIndex);
|
| 99 |
+
};
|
| 100 |
+
|
| 101 |
+
class AccelerationStructurePassDescriptor : public NS::Copying<AccelerationStructurePassDescriptor>
|
| 102 |
+
{
|
| 103 |
+
public:
|
| 104 |
+
static class AccelerationStructurePassDescriptor* alloc();
|
| 105 |
+
|
| 106 |
+
class AccelerationStructurePassDescriptor* init();
|
| 107 |
+
|
| 108 |
+
static class AccelerationStructurePassDescriptor* accelerationStructurePassDescriptor();
|
| 109 |
+
|
| 110 |
+
class AccelerationStructurePassSampleBufferAttachmentDescriptorArray* sampleBufferAttachments() const;
|
| 111 |
+
};
|
| 112 |
+
|
| 113 |
+
}
|
| 114 |
+
|
| 115 |
+
// method: buildAccelerationStructure:descriptor:scratchBuffer:scratchBufferOffset:
|
| 116 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::buildAccelerationStructure(const MTL::AccelerationStructure* accelerationStructure, const MTL::AccelerationStructureDescriptor* descriptor, const MTL::Buffer* scratchBuffer, NS::UInteger scratchBufferOffset)
|
| 117 |
+
{
|
| 118 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(buildAccelerationStructure_descriptor_scratchBuffer_scratchBufferOffset_), accelerationStructure, descriptor, scratchBuffer, scratchBufferOffset);
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
// method: refitAccelerationStructure:descriptor:destination:scratchBuffer:scratchBufferOffset:
|
| 122 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::refitAccelerationStructure(const MTL::AccelerationStructure* sourceAccelerationStructure, const MTL::AccelerationStructureDescriptor* descriptor, const MTL::AccelerationStructure* destinationAccelerationStructure, const MTL::Buffer* scratchBuffer, NS::UInteger scratchBufferOffset)
|
| 123 |
+
{
|
| 124 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(refitAccelerationStructure_descriptor_destination_scratchBuffer_scratchBufferOffset_), sourceAccelerationStructure, descriptor, destinationAccelerationStructure, scratchBuffer, scratchBufferOffset);
|
| 125 |
+
}
|
| 126 |
+
|
| 127 |
+
// method: refitAccelerationStructure:descriptor:destination:scratchBuffer:scratchBufferOffset:options:
|
| 128 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::refitAccelerationStructure(const MTL::AccelerationStructure* sourceAccelerationStructure, const MTL::AccelerationStructureDescriptor* descriptor, const MTL::AccelerationStructure* destinationAccelerationStructure, const MTL::Buffer* scratchBuffer, NS::UInteger scratchBufferOffset, MTL::AccelerationStructureRefitOptions options)
|
| 129 |
+
{
|
| 130 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(refitAccelerationStructure_descriptor_destination_scratchBuffer_scratchBufferOffset_options_), sourceAccelerationStructure, descriptor, destinationAccelerationStructure, scratchBuffer, scratchBufferOffset, options);
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
// method: copyAccelerationStructure:toAccelerationStructure:
|
| 134 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::copyAccelerationStructure(const MTL::AccelerationStructure* sourceAccelerationStructure, const MTL::AccelerationStructure* destinationAccelerationStructure)
|
| 135 |
+
{
|
| 136 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(copyAccelerationStructure_toAccelerationStructure_), sourceAccelerationStructure, destinationAccelerationStructure);
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
// method: writeCompactedAccelerationStructureSize:toBuffer:offset:
|
| 140 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::writeCompactedAccelerationStructureSize(const MTL::AccelerationStructure* accelerationStructure, const MTL::Buffer* buffer, NS::UInteger offset)
|
| 141 |
+
{
|
| 142 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(writeCompactedAccelerationStructureSize_toBuffer_offset_), accelerationStructure, buffer, offset);
|
| 143 |
+
}
|
| 144 |
+
|
| 145 |
+
// method: writeCompactedAccelerationStructureSize:toBuffer:offset:sizeDataType:
|
| 146 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::writeCompactedAccelerationStructureSize(const MTL::AccelerationStructure* accelerationStructure, const MTL::Buffer* buffer, NS::UInteger offset, MTL::DataType sizeDataType)
|
| 147 |
+
{
|
| 148 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(writeCompactedAccelerationStructureSize_toBuffer_offset_sizeDataType_), accelerationStructure, buffer, offset, sizeDataType);
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
// method: copyAndCompactAccelerationStructure:toAccelerationStructure:
|
| 152 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::copyAndCompactAccelerationStructure(const MTL::AccelerationStructure* sourceAccelerationStructure, const MTL::AccelerationStructure* destinationAccelerationStructure)
|
| 153 |
+
{
|
| 154 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(copyAndCompactAccelerationStructure_toAccelerationStructure_), sourceAccelerationStructure, destinationAccelerationStructure);
|
| 155 |
+
}
|
| 156 |
+
|
| 157 |
+
// method: updateFence:
|
| 158 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::updateFence(const MTL::Fence* fence)
|
| 159 |
+
{
|
| 160 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(updateFence_), fence);
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
+
// method: waitForFence:
|
| 164 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::waitForFence(const MTL::Fence* fence)
|
| 165 |
+
{
|
| 166 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(waitForFence_), fence);
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
// method: useResource:usage:
|
| 170 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::useResource(const MTL::Resource* resource, MTL::ResourceUsage usage)
|
| 171 |
+
{
|
| 172 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(useResource_usage_), resource, usage);
|
| 173 |
+
}
|
| 174 |
+
|
| 175 |
+
// method: useResources:count:usage:
|
| 176 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::useResources(const MTL::Resource* const resources[], NS::UInteger count, MTL::ResourceUsage usage)
|
| 177 |
+
{
|
| 178 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(useResources_count_usage_), resources, count, usage);
|
| 179 |
+
}
|
| 180 |
+
|
| 181 |
+
// method: useHeap:
|
| 182 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::useHeap(const MTL::Heap* heap)
|
| 183 |
+
{
|
| 184 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(useHeap_), heap);
|
| 185 |
+
}
|
| 186 |
+
|
| 187 |
+
// method: useHeaps:count:
|
| 188 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::useHeaps(const MTL::Heap* const heaps[], NS::UInteger count)
|
| 189 |
+
{
|
| 190 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(useHeaps_count_), heaps, count);
|
| 191 |
+
}
|
| 192 |
+
|
| 193 |
+
// method: sampleCountersInBuffer:atSampleIndex:withBarrier:
|
| 194 |
+
_MTL_INLINE void MTL::AccelerationStructureCommandEncoder::sampleCountersInBuffer(const MTL::CounterSampleBuffer* sampleBuffer, NS::UInteger sampleIndex, bool barrier)
|
| 195 |
+
{
|
| 196 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(sampleCountersInBuffer_atSampleIndex_withBarrier_), sampleBuffer, sampleIndex, barrier);
|
| 197 |
+
}
|
| 198 |
+
|
| 199 |
+
// static method: alloc
|
| 200 |
+
_MTL_INLINE MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor* MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor::alloc()
|
| 201 |
+
{
|
| 202 |
+
return NS::Object::alloc<MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructurePassSampleBufferAttachmentDescriptor));
|
| 203 |
+
}
|
| 204 |
+
|
| 205 |
+
// method: init
|
| 206 |
+
_MTL_INLINE MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor* MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor::init()
|
| 207 |
+
{
|
| 208 |
+
return NS::Object::init<MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor>();
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
// property: sampleBuffer
|
| 212 |
+
_MTL_INLINE MTL::CounterSampleBuffer* MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor::sampleBuffer() const
|
| 213 |
+
{
|
| 214 |
+
return Object::sendMessage<MTL::CounterSampleBuffer*>(this, _MTL_PRIVATE_SEL(sampleBuffer));
|
| 215 |
+
}
|
| 216 |
+
|
| 217 |
+
_MTL_INLINE void MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor::setSampleBuffer(const MTL::CounterSampleBuffer* sampleBuffer)
|
| 218 |
+
{
|
| 219 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSampleBuffer_), sampleBuffer);
|
| 220 |
+
}
|
| 221 |
+
|
| 222 |
+
// property: startOfEncoderSampleIndex
|
| 223 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor::startOfEncoderSampleIndex() const
|
| 224 |
+
{
|
| 225 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(startOfEncoderSampleIndex));
|
| 226 |
+
}
|
| 227 |
+
|
| 228 |
+
_MTL_INLINE void MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor::setStartOfEncoderSampleIndex(NS::UInteger startOfEncoderSampleIndex)
|
| 229 |
+
{
|
| 230 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStartOfEncoderSampleIndex_), startOfEncoderSampleIndex);
|
| 231 |
+
}
|
| 232 |
+
|
| 233 |
+
// property: endOfEncoderSampleIndex
|
| 234 |
+
_MTL_INLINE NS::UInteger MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor::endOfEncoderSampleIndex() const
|
| 235 |
+
{
|
| 236 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(endOfEncoderSampleIndex));
|
| 237 |
+
}
|
| 238 |
+
|
| 239 |
+
_MTL_INLINE void MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor::setEndOfEncoderSampleIndex(NS::UInteger endOfEncoderSampleIndex)
|
| 240 |
+
{
|
| 241 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setEndOfEncoderSampleIndex_), endOfEncoderSampleIndex);
|
| 242 |
+
}
|
| 243 |
+
|
| 244 |
+
// static method: alloc
|
| 245 |
+
_MTL_INLINE MTL::AccelerationStructurePassSampleBufferAttachmentDescriptorArray* MTL::AccelerationStructurePassSampleBufferAttachmentDescriptorArray::alloc()
|
| 246 |
+
{
|
| 247 |
+
return NS::Object::alloc<MTL::AccelerationStructurePassSampleBufferAttachmentDescriptorArray>(_MTL_PRIVATE_CLS(MTLAccelerationStructurePassSampleBufferAttachmentDescriptorArray));
|
| 248 |
+
}
|
| 249 |
+
|
| 250 |
+
// method: init
|
| 251 |
+
_MTL_INLINE MTL::AccelerationStructurePassSampleBufferAttachmentDescriptorArray* MTL::AccelerationStructurePassSampleBufferAttachmentDescriptorArray::init()
|
| 252 |
+
{
|
| 253 |
+
return NS::Object::init<MTL::AccelerationStructurePassSampleBufferAttachmentDescriptorArray>();
|
| 254 |
+
}
|
| 255 |
+
|
| 256 |
+
// method: objectAtIndexedSubscript:
|
| 257 |
+
_MTL_INLINE MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor* MTL::AccelerationStructurePassSampleBufferAttachmentDescriptorArray::object(NS::UInteger attachmentIndex)
|
| 258 |
+
{
|
| 259 |
+
return Object::sendMessage<MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(objectAtIndexedSubscript_), attachmentIndex);
|
| 260 |
+
}
|
| 261 |
+
|
| 262 |
+
// method: setObject:atIndexedSubscript:
|
| 263 |
+
_MTL_INLINE void MTL::AccelerationStructurePassSampleBufferAttachmentDescriptorArray::setObject(const MTL::AccelerationStructurePassSampleBufferAttachmentDescriptor* attachment, NS::UInteger attachmentIndex)
|
| 264 |
+
{
|
| 265 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObject_atIndexedSubscript_), attachment, attachmentIndex);
|
| 266 |
+
}
|
| 267 |
+
|
| 268 |
+
// static method: alloc
|
| 269 |
+
_MTL_INLINE MTL::AccelerationStructurePassDescriptor* MTL::AccelerationStructurePassDescriptor::alloc()
|
| 270 |
+
{
|
| 271 |
+
return NS::Object::alloc<MTL::AccelerationStructurePassDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructurePassDescriptor));
|
| 272 |
+
}
|
| 273 |
+
|
| 274 |
+
// method: init
|
| 275 |
+
_MTL_INLINE MTL::AccelerationStructurePassDescriptor* MTL::AccelerationStructurePassDescriptor::init()
|
| 276 |
+
{
|
| 277 |
+
return NS::Object::init<MTL::AccelerationStructurePassDescriptor>();
|
| 278 |
+
}
|
| 279 |
+
|
| 280 |
+
// static method: accelerationStructurePassDescriptor
|
| 281 |
+
_MTL_INLINE MTL::AccelerationStructurePassDescriptor* MTL::AccelerationStructurePassDescriptor::accelerationStructurePassDescriptor()
|
| 282 |
+
{
|
| 283 |
+
return Object::sendMessage<MTL::AccelerationStructurePassDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructurePassDescriptor), _MTL_PRIVATE_SEL(accelerationStructurePassDescriptor));
|
| 284 |
+
}
|
| 285 |
+
|
| 286 |
+
// property: sampleBufferAttachments
|
| 287 |
+
_MTL_INLINE MTL::AccelerationStructurePassSampleBufferAttachmentDescriptorArray* MTL::AccelerationStructurePassDescriptor::sampleBufferAttachments() const
|
| 288 |
+
{
|
| 289 |
+
return Object::sendMessage<MTL::AccelerationStructurePassSampleBufferAttachmentDescriptorArray*>(this, _MTL_PRIVATE_SEL(sampleBufferAttachments));
|
| 290 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLAccelerationStructureTypes.hpp
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLAccelerationStructureTypes.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 24 |
+
|
| 25 |
+
#include "MTLDefines.hpp"
|
| 26 |
+
#include "MTLPrivate.hpp"
|
| 27 |
+
#include "MTLResource.hpp"
|
| 28 |
+
#include "MTLStageInputOutputDescriptor.hpp"
|
| 29 |
+
|
| 30 |
+
#include "../Foundation/NSRange.hpp"
|
| 31 |
+
|
| 32 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 33 |
+
|
| 34 |
+
namespace MTL
|
| 35 |
+
{
|
| 36 |
+
struct PackedFloat3
|
| 37 |
+
{
|
| 38 |
+
PackedFloat3();
|
| 39 |
+
PackedFloat3(float x, float y, float z);
|
| 40 |
+
|
| 41 |
+
float& operator[](int idx);
|
| 42 |
+
float operator[](int idx) const;
|
| 43 |
+
|
| 44 |
+
union
|
| 45 |
+
{
|
| 46 |
+
struct
|
| 47 |
+
{
|
| 48 |
+
float x;
|
| 49 |
+
float y;
|
| 50 |
+
float z;
|
| 51 |
+
};
|
| 52 |
+
|
| 53 |
+
float elements[3];
|
| 54 |
+
};
|
| 55 |
+
} _MTL_PACKED;
|
| 56 |
+
|
| 57 |
+
struct PackedFloat4x3
|
| 58 |
+
{
|
| 59 |
+
PackedFloat4x3();
|
| 60 |
+
PackedFloat4x3(const PackedFloat3& col0, const PackedFloat3& col1, const PackedFloat3& col2, const PackedFloat3& col3);
|
| 61 |
+
|
| 62 |
+
PackedFloat3& operator[](int idx);
|
| 63 |
+
const PackedFloat3& operator[](int idx) const;
|
| 64 |
+
|
| 65 |
+
PackedFloat3 columns[4];
|
| 66 |
+
} _MTL_PACKED;
|
| 67 |
+
|
| 68 |
+
struct AxisAlignedBoundingBox
|
| 69 |
+
{
|
| 70 |
+
AxisAlignedBoundingBox();
|
| 71 |
+
AxisAlignedBoundingBox(PackedFloat3 p);
|
| 72 |
+
AxisAlignedBoundingBox(PackedFloat3 min, PackedFloat3 max);
|
| 73 |
+
|
| 74 |
+
PackedFloat3 min;
|
| 75 |
+
PackedFloat3 max;
|
| 76 |
+
} _MTL_PACKED;
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 80 |
+
|
| 81 |
+
_MTL_INLINE MTL::PackedFloat3::PackedFloat3()
|
| 82 |
+
: x(0.0f)
|
| 83 |
+
, y(0.0f)
|
| 84 |
+
, z(0.0f)
|
| 85 |
+
{
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 89 |
+
|
| 90 |
+
_MTL_INLINE MTL::PackedFloat3::PackedFloat3(float _x, float _y, float _z)
|
| 91 |
+
: x(_x)
|
| 92 |
+
, y(_y)
|
| 93 |
+
, z(_z)
|
| 94 |
+
{
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 98 |
+
|
| 99 |
+
_MTL_INLINE float& MTL::PackedFloat3::operator[](int idx)
|
| 100 |
+
{
|
| 101 |
+
return elements[idx];
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 105 |
+
|
| 106 |
+
_MTL_INLINE float MTL::PackedFloat3::operator[](int idx) const
|
| 107 |
+
{
|
| 108 |
+
return elements[idx];
|
| 109 |
+
}
|
| 110 |
+
|
| 111 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 112 |
+
|
| 113 |
+
_MTL_INLINE MTL::PackedFloat4x3::PackedFloat4x3()
|
| 114 |
+
{
|
| 115 |
+
columns[0] = PackedFloat3(0.0f, 0.0f, 0.0f);
|
| 116 |
+
columns[1] = PackedFloat3(0.0f, 0.0f, 0.0f);
|
| 117 |
+
columns[2] = PackedFloat3(0.0f, 0.0f, 0.0f);
|
| 118 |
+
columns[3] = PackedFloat3(0.0f, 0.0f, 0.0f);
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 122 |
+
|
| 123 |
+
_MTL_INLINE MTL::PackedFloat4x3::PackedFloat4x3(const PackedFloat3& col0, const PackedFloat3& col1, const PackedFloat3& col2, const PackedFloat3& col3)
|
| 124 |
+
{
|
| 125 |
+
columns[0] = col0;
|
| 126 |
+
columns[1] = col1;
|
| 127 |
+
columns[2] = col2;
|
| 128 |
+
columns[3] = col3;
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 132 |
+
|
| 133 |
+
_MTL_INLINE MTL::PackedFloat3& MTL::PackedFloat4x3::operator[](int idx)
|
| 134 |
+
{
|
| 135 |
+
return columns[idx];
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 139 |
+
|
| 140 |
+
_MTL_INLINE const MTL::PackedFloat3& MTL::PackedFloat4x3::operator[](int idx) const
|
| 141 |
+
{
|
| 142 |
+
return columns[idx];
|
| 143 |
+
}
|
| 144 |
+
|
| 145 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 146 |
+
|
| 147 |
+
_MTL_INLINE MTL::AxisAlignedBoundingBox::AxisAlignedBoundingBox()
|
| 148 |
+
: min(INFINITY, INFINITY, INFINITY)
|
| 149 |
+
, max(-INFINITY, -INFINITY, -INFINITY)
|
| 150 |
+
{
|
| 151 |
+
}
|
| 152 |
+
|
| 153 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 154 |
+
|
| 155 |
+
_MTL_INLINE MTL::AxisAlignedBoundingBox::AxisAlignedBoundingBox(PackedFloat3 p)
|
| 156 |
+
: min(p)
|
| 157 |
+
, max(p)
|
| 158 |
+
{
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 162 |
+
|
| 163 |
+
_MTL_INLINE MTL::AxisAlignedBoundingBox::AxisAlignedBoundingBox(PackedFloat3 _min, PackedFloat3 _max)
|
| 164 |
+
: min(_min)
|
| 165 |
+
, max(_max)
|
| 166 |
+
{
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLArgument.hpp
ADDED
|
@@ -0,0 +1,848 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLArgument.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLArgument.hpp"
|
| 30 |
+
#include "MTLTexture.hpp"
|
| 31 |
+
|
| 32 |
+
namespace MTL
|
| 33 |
+
{
|
| 34 |
+
_MTL_ENUM(NS::UInteger, DataType) {
|
| 35 |
+
DataTypeNone = 0,
|
| 36 |
+
DataTypeStruct = 1,
|
| 37 |
+
DataTypeArray = 2,
|
| 38 |
+
DataTypeFloat = 3,
|
| 39 |
+
DataTypeFloat2 = 4,
|
| 40 |
+
DataTypeFloat3 = 5,
|
| 41 |
+
DataTypeFloat4 = 6,
|
| 42 |
+
DataTypeFloat2x2 = 7,
|
| 43 |
+
DataTypeFloat2x3 = 8,
|
| 44 |
+
DataTypeFloat2x4 = 9,
|
| 45 |
+
DataTypeFloat3x2 = 10,
|
| 46 |
+
DataTypeFloat3x3 = 11,
|
| 47 |
+
DataTypeFloat3x4 = 12,
|
| 48 |
+
DataTypeFloat4x2 = 13,
|
| 49 |
+
DataTypeFloat4x3 = 14,
|
| 50 |
+
DataTypeFloat4x4 = 15,
|
| 51 |
+
DataTypeHalf = 16,
|
| 52 |
+
DataTypeHalf2 = 17,
|
| 53 |
+
DataTypeHalf3 = 18,
|
| 54 |
+
DataTypeHalf4 = 19,
|
| 55 |
+
DataTypeHalf2x2 = 20,
|
| 56 |
+
DataTypeHalf2x3 = 21,
|
| 57 |
+
DataTypeHalf2x4 = 22,
|
| 58 |
+
DataTypeHalf3x2 = 23,
|
| 59 |
+
DataTypeHalf3x3 = 24,
|
| 60 |
+
DataTypeHalf3x4 = 25,
|
| 61 |
+
DataTypeHalf4x2 = 26,
|
| 62 |
+
DataTypeHalf4x3 = 27,
|
| 63 |
+
DataTypeHalf4x4 = 28,
|
| 64 |
+
DataTypeInt = 29,
|
| 65 |
+
DataTypeInt2 = 30,
|
| 66 |
+
DataTypeInt3 = 31,
|
| 67 |
+
DataTypeInt4 = 32,
|
| 68 |
+
DataTypeUInt = 33,
|
| 69 |
+
DataTypeUInt2 = 34,
|
| 70 |
+
DataTypeUInt3 = 35,
|
| 71 |
+
DataTypeUInt4 = 36,
|
| 72 |
+
DataTypeShort = 37,
|
| 73 |
+
DataTypeShort2 = 38,
|
| 74 |
+
DataTypeShort3 = 39,
|
| 75 |
+
DataTypeShort4 = 40,
|
| 76 |
+
DataTypeUShort = 41,
|
| 77 |
+
DataTypeUShort2 = 42,
|
| 78 |
+
DataTypeUShort3 = 43,
|
| 79 |
+
DataTypeUShort4 = 44,
|
| 80 |
+
DataTypeChar = 45,
|
| 81 |
+
DataTypeChar2 = 46,
|
| 82 |
+
DataTypeChar3 = 47,
|
| 83 |
+
DataTypeChar4 = 48,
|
| 84 |
+
DataTypeUChar = 49,
|
| 85 |
+
DataTypeUChar2 = 50,
|
| 86 |
+
DataTypeUChar3 = 51,
|
| 87 |
+
DataTypeUChar4 = 52,
|
| 88 |
+
DataTypeBool = 53,
|
| 89 |
+
DataTypeBool2 = 54,
|
| 90 |
+
DataTypeBool3 = 55,
|
| 91 |
+
DataTypeBool4 = 56,
|
| 92 |
+
DataTypeTexture = 58,
|
| 93 |
+
DataTypeSampler = 59,
|
| 94 |
+
DataTypePointer = 60,
|
| 95 |
+
DataTypeR8Unorm = 62,
|
| 96 |
+
DataTypeR8Snorm = 63,
|
| 97 |
+
DataTypeR16Unorm = 64,
|
| 98 |
+
DataTypeR16Snorm = 65,
|
| 99 |
+
DataTypeRG8Unorm = 66,
|
| 100 |
+
DataTypeRG8Snorm = 67,
|
| 101 |
+
DataTypeRG16Unorm = 68,
|
| 102 |
+
DataTypeRG16Snorm = 69,
|
| 103 |
+
DataTypeRGBA8Unorm = 70,
|
| 104 |
+
DataTypeRGBA8Unorm_sRGB = 71,
|
| 105 |
+
DataTypeRGBA8Snorm = 72,
|
| 106 |
+
DataTypeRGBA16Unorm = 73,
|
| 107 |
+
DataTypeRGBA16Snorm = 74,
|
| 108 |
+
DataTypeRGB10A2Unorm = 75,
|
| 109 |
+
DataTypeRG11B10Float = 76,
|
| 110 |
+
DataTypeRGB9E5Float = 77,
|
| 111 |
+
DataTypeRenderPipeline = 78,
|
| 112 |
+
DataTypeComputePipeline = 79,
|
| 113 |
+
DataTypeIndirectCommandBuffer = 80,
|
| 114 |
+
DataTypeLong = 81,
|
| 115 |
+
DataTypeLong2 = 82,
|
| 116 |
+
DataTypeLong3 = 83,
|
| 117 |
+
DataTypeLong4 = 84,
|
| 118 |
+
DataTypeULong = 85,
|
| 119 |
+
DataTypeULong2 = 86,
|
| 120 |
+
DataTypeULong3 = 87,
|
| 121 |
+
DataTypeULong4 = 88,
|
| 122 |
+
DataTypeVisibleFunctionTable = 115,
|
| 123 |
+
DataTypeIntersectionFunctionTable = 116,
|
| 124 |
+
DataTypePrimitiveAccelerationStructure = 117,
|
| 125 |
+
DataTypeInstanceAccelerationStructure = 118,
|
| 126 |
+
DataTypeBFloat = 121,
|
| 127 |
+
DataTypeBFloat2 = 122,
|
| 128 |
+
DataTypeBFloat3 = 123,
|
| 129 |
+
DataTypeBFloat4 = 124,
|
| 130 |
+
};
|
| 131 |
+
|
| 132 |
+
_MTL_ENUM(NS::Integer, BindingType) {
|
| 133 |
+
BindingTypeBuffer = 0,
|
| 134 |
+
BindingTypeThreadgroupMemory = 1,
|
| 135 |
+
BindingTypeTexture = 2,
|
| 136 |
+
BindingTypeSampler = 3,
|
| 137 |
+
BindingTypeImageblockData = 16,
|
| 138 |
+
BindingTypeImageblock = 17,
|
| 139 |
+
BindingTypeVisibleFunctionTable = 24,
|
| 140 |
+
BindingTypePrimitiveAccelerationStructure = 25,
|
| 141 |
+
BindingTypeInstanceAccelerationStructure = 26,
|
| 142 |
+
BindingTypeIntersectionFunctionTable = 27,
|
| 143 |
+
BindingTypeObjectPayload = 34,
|
| 144 |
+
};
|
| 145 |
+
|
| 146 |
+
_MTL_ENUM(NS::UInteger, ArgumentType) {
|
| 147 |
+
ArgumentTypeBuffer = 0,
|
| 148 |
+
ArgumentTypeThreadgroupMemory = 1,
|
| 149 |
+
ArgumentTypeTexture = 2,
|
| 150 |
+
ArgumentTypeSampler = 3,
|
| 151 |
+
ArgumentTypeImageblockData = 16,
|
| 152 |
+
ArgumentTypeImageblock = 17,
|
| 153 |
+
ArgumentTypeVisibleFunctionTable = 24,
|
| 154 |
+
ArgumentTypePrimitiveAccelerationStructure = 25,
|
| 155 |
+
ArgumentTypeInstanceAccelerationStructure = 26,
|
| 156 |
+
ArgumentTypeIntersectionFunctionTable = 27,
|
| 157 |
+
};
|
| 158 |
+
|
| 159 |
+
_MTL_ENUM(NS::UInteger, BindingAccess) {
|
| 160 |
+
ArgumentAccessReadOnly = 0,
|
| 161 |
+
BindingAccessReadOnly = 0,
|
| 162 |
+
ArgumentAccessReadWrite = 1,
|
| 163 |
+
BindingAccessReadWrite = 1,
|
| 164 |
+
BindingAccessWriteOnly = 2,
|
| 165 |
+
ArgumentAccessWriteOnly = 2,
|
| 166 |
+
};
|
| 167 |
+
|
| 168 |
+
class Type : public NS::Referencing<Type>
|
| 169 |
+
{
|
| 170 |
+
public:
|
| 171 |
+
static class Type* alloc();
|
| 172 |
+
|
| 173 |
+
class Type* init();
|
| 174 |
+
|
| 175 |
+
MTL::DataType dataType() const;
|
| 176 |
+
};
|
| 177 |
+
|
| 178 |
+
class StructMember : public NS::Referencing<StructMember>
|
| 179 |
+
{
|
| 180 |
+
public:
|
| 181 |
+
static class StructMember* alloc();
|
| 182 |
+
|
| 183 |
+
class StructMember* init();
|
| 184 |
+
|
| 185 |
+
NS::String* name() const;
|
| 186 |
+
|
| 187 |
+
NS::UInteger offset() const;
|
| 188 |
+
|
| 189 |
+
MTL::DataType dataType() const;
|
| 190 |
+
|
| 191 |
+
class StructType* structType();
|
| 192 |
+
|
| 193 |
+
class ArrayType* arrayType();
|
| 194 |
+
|
| 195 |
+
class TextureReferenceType* textureReferenceType();
|
| 196 |
+
|
| 197 |
+
class PointerType* pointerType();
|
| 198 |
+
|
| 199 |
+
NS::UInteger argumentIndex() const;
|
| 200 |
+
};
|
| 201 |
+
|
| 202 |
+
class StructType : public NS::Referencing<StructType, Type>
|
| 203 |
+
{
|
| 204 |
+
public:
|
| 205 |
+
static class StructType* alloc();
|
| 206 |
+
|
| 207 |
+
class StructType* init();
|
| 208 |
+
|
| 209 |
+
NS::Array* members() const;
|
| 210 |
+
|
| 211 |
+
class StructMember* memberByName(const NS::String* name);
|
| 212 |
+
};
|
| 213 |
+
|
| 214 |
+
class ArrayType : public NS::Referencing<ArrayType, Type>
|
| 215 |
+
{
|
| 216 |
+
public:
|
| 217 |
+
static class ArrayType* alloc();
|
| 218 |
+
|
| 219 |
+
class ArrayType* init();
|
| 220 |
+
|
| 221 |
+
MTL::DataType elementType() const;
|
| 222 |
+
|
| 223 |
+
NS::UInteger arrayLength() const;
|
| 224 |
+
|
| 225 |
+
NS::UInteger stride() const;
|
| 226 |
+
|
| 227 |
+
NS::UInteger argumentIndexStride() const;
|
| 228 |
+
|
| 229 |
+
class StructType* elementStructType();
|
| 230 |
+
|
| 231 |
+
class ArrayType* elementArrayType();
|
| 232 |
+
|
| 233 |
+
class TextureReferenceType* elementTextureReferenceType();
|
| 234 |
+
|
| 235 |
+
class PointerType* elementPointerType();
|
| 236 |
+
};
|
| 237 |
+
|
| 238 |
+
class PointerType : public NS::Referencing<PointerType, Type>
|
| 239 |
+
{
|
| 240 |
+
public:
|
| 241 |
+
static class PointerType* alloc();
|
| 242 |
+
|
| 243 |
+
class PointerType* init();
|
| 244 |
+
|
| 245 |
+
MTL::DataType elementType() const;
|
| 246 |
+
|
| 247 |
+
MTL::BindingAccess access() const;
|
| 248 |
+
|
| 249 |
+
NS::UInteger alignment() const;
|
| 250 |
+
|
| 251 |
+
NS::UInteger dataSize() const;
|
| 252 |
+
|
| 253 |
+
bool elementIsArgumentBuffer() const;
|
| 254 |
+
|
| 255 |
+
class StructType* elementStructType();
|
| 256 |
+
|
| 257 |
+
class ArrayType* elementArrayType();
|
| 258 |
+
};
|
| 259 |
+
|
| 260 |
+
class TextureReferenceType : public NS::Referencing<TextureReferenceType, Type>
|
| 261 |
+
{
|
| 262 |
+
public:
|
| 263 |
+
static class TextureReferenceType* alloc();
|
| 264 |
+
|
| 265 |
+
class TextureReferenceType* init();
|
| 266 |
+
|
| 267 |
+
MTL::DataType textureDataType() const;
|
| 268 |
+
|
| 269 |
+
MTL::TextureType textureType() const;
|
| 270 |
+
|
| 271 |
+
MTL::BindingAccess access() const;
|
| 272 |
+
|
| 273 |
+
bool isDepthTexture() const;
|
| 274 |
+
};
|
| 275 |
+
|
| 276 |
+
class Argument : public NS::Referencing<Argument>
|
| 277 |
+
{
|
| 278 |
+
public:
|
| 279 |
+
static class Argument* alloc();
|
| 280 |
+
|
| 281 |
+
class Argument* init();
|
| 282 |
+
|
| 283 |
+
NS::String* name() const;
|
| 284 |
+
|
| 285 |
+
MTL::ArgumentType type() const;
|
| 286 |
+
|
| 287 |
+
MTL::BindingAccess access() const;
|
| 288 |
+
|
| 289 |
+
NS::UInteger index() const;
|
| 290 |
+
|
| 291 |
+
bool active() const;
|
| 292 |
+
|
| 293 |
+
NS::UInteger bufferAlignment() const;
|
| 294 |
+
|
| 295 |
+
NS::UInteger bufferDataSize() const;
|
| 296 |
+
|
| 297 |
+
MTL::DataType bufferDataType() const;
|
| 298 |
+
|
| 299 |
+
class StructType* bufferStructType() const;
|
| 300 |
+
|
| 301 |
+
class PointerType* bufferPointerType() const;
|
| 302 |
+
|
| 303 |
+
NS::UInteger threadgroupMemoryAlignment() const;
|
| 304 |
+
|
| 305 |
+
NS::UInteger threadgroupMemoryDataSize() const;
|
| 306 |
+
|
| 307 |
+
MTL::TextureType textureType() const;
|
| 308 |
+
|
| 309 |
+
MTL::DataType textureDataType() const;
|
| 310 |
+
|
| 311 |
+
bool isDepthTexture() const;
|
| 312 |
+
|
| 313 |
+
NS::UInteger arrayLength() const;
|
| 314 |
+
};
|
| 315 |
+
|
| 316 |
+
class Binding : public NS::Referencing<Binding>
|
| 317 |
+
{
|
| 318 |
+
public:
|
| 319 |
+
NS::String* name() const;
|
| 320 |
+
|
| 321 |
+
MTL::BindingType type() const;
|
| 322 |
+
|
| 323 |
+
MTL::BindingAccess access() const;
|
| 324 |
+
|
| 325 |
+
NS::UInteger index() const;
|
| 326 |
+
|
| 327 |
+
bool used() const;
|
| 328 |
+
|
| 329 |
+
bool argument() const;
|
| 330 |
+
};
|
| 331 |
+
|
| 332 |
+
class BufferBinding : public NS::Referencing<BufferBinding, Binding>
|
| 333 |
+
{
|
| 334 |
+
public:
|
| 335 |
+
NS::UInteger bufferAlignment() const;
|
| 336 |
+
|
| 337 |
+
NS::UInteger bufferDataSize() const;
|
| 338 |
+
|
| 339 |
+
MTL::DataType bufferDataType() const;
|
| 340 |
+
|
| 341 |
+
class StructType* bufferStructType() const;
|
| 342 |
+
|
| 343 |
+
class PointerType* bufferPointerType() const;
|
| 344 |
+
};
|
| 345 |
+
|
| 346 |
+
class ThreadgroupBinding : public NS::Referencing<ThreadgroupBinding, Binding>
|
| 347 |
+
{
|
| 348 |
+
public:
|
| 349 |
+
NS::UInteger threadgroupMemoryAlignment() const;
|
| 350 |
+
|
| 351 |
+
NS::UInteger threadgroupMemoryDataSize() const;
|
| 352 |
+
};
|
| 353 |
+
|
| 354 |
+
class TextureBinding : public NS::Referencing<TextureBinding, Binding>
|
| 355 |
+
{
|
| 356 |
+
public:
|
| 357 |
+
MTL::TextureType textureType() const;
|
| 358 |
+
|
| 359 |
+
MTL::DataType textureDataType() const;
|
| 360 |
+
|
| 361 |
+
bool depthTexture() const;
|
| 362 |
+
|
| 363 |
+
NS::UInteger arrayLength() const;
|
| 364 |
+
};
|
| 365 |
+
|
| 366 |
+
class ObjectPayloadBinding : public NS::Referencing<ObjectPayloadBinding, Binding>
|
| 367 |
+
{
|
| 368 |
+
public:
|
| 369 |
+
NS::UInteger objectPayloadAlignment() const;
|
| 370 |
+
|
| 371 |
+
NS::UInteger objectPayloadDataSize() const;
|
| 372 |
+
};
|
| 373 |
+
|
| 374 |
+
}
|
| 375 |
+
|
| 376 |
+
// static method: alloc
|
| 377 |
+
_MTL_INLINE MTL::Type* MTL::Type::alloc()
|
| 378 |
+
{
|
| 379 |
+
return NS::Object::alloc<MTL::Type>(_MTL_PRIVATE_CLS(MTLType));
|
| 380 |
+
}
|
| 381 |
+
|
| 382 |
+
// method: init
|
| 383 |
+
_MTL_INLINE MTL::Type* MTL::Type::init()
|
| 384 |
+
{
|
| 385 |
+
return NS::Object::init<MTL::Type>();
|
| 386 |
+
}
|
| 387 |
+
|
| 388 |
+
// property: dataType
|
| 389 |
+
_MTL_INLINE MTL::DataType MTL::Type::dataType() const
|
| 390 |
+
{
|
| 391 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(dataType));
|
| 392 |
+
}
|
| 393 |
+
|
| 394 |
+
// static method: alloc
|
| 395 |
+
_MTL_INLINE MTL::StructMember* MTL::StructMember::alloc()
|
| 396 |
+
{
|
| 397 |
+
return NS::Object::alloc<MTL::StructMember>(_MTL_PRIVATE_CLS(MTLStructMember));
|
| 398 |
+
}
|
| 399 |
+
|
| 400 |
+
// method: init
|
| 401 |
+
_MTL_INLINE MTL::StructMember* MTL::StructMember::init()
|
| 402 |
+
{
|
| 403 |
+
return NS::Object::init<MTL::StructMember>();
|
| 404 |
+
}
|
| 405 |
+
|
| 406 |
+
// property: name
|
| 407 |
+
_MTL_INLINE NS::String* MTL::StructMember::name() const
|
| 408 |
+
{
|
| 409 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 410 |
+
}
|
| 411 |
+
|
| 412 |
+
// property: offset
|
| 413 |
+
_MTL_INLINE NS::UInteger MTL::StructMember::offset() const
|
| 414 |
+
{
|
| 415 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(offset));
|
| 416 |
+
}
|
| 417 |
+
|
| 418 |
+
// property: dataType
|
| 419 |
+
_MTL_INLINE MTL::DataType MTL::StructMember::dataType() const
|
| 420 |
+
{
|
| 421 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(dataType));
|
| 422 |
+
}
|
| 423 |
+
|
| 424 |
+
// method: structType
|
| 425 |
+
_MTL_INLINE MTL::StructType* MTL::StructMember::structType()
|
| 426 |
+
{
|
| 427 |
+
return Object::sendMessage<MTL::StructType*>(this, _MTL_PRIVATE_SEL(structType));
|
| 428 |
+
}
|
| 429 |
+
|
| 430 |
+
// method: arrayType
|
| 431 |
+
_MTL_INLINE MTL::ArrayType* MTL::StructMember::arrayType()
|
| 432 |
+
{
|
| 433 |
+
return Object::sendMessage<MTL::ArrayType*>(this, _MTL_PRIVATE_SEL(arrayType));
|
| 434 |
+
}
|
| 435 |
+
|
| 436 |
+
// method: textureReferenceType
|
| 437 |
+
_MTL_INLINE MTL::TextureReferenceType* MTL::StructMember::textureReferenceType()
|
| 438 |
+
{
|
| 439 |
+
return Object::sendMessage<MTL::TextureReferenceType*>(this, _MTL_PRIVATE_SEL(textureReferenceType));
|
| 440 |
+
}
|
| 441 |
+
|
| 442 |
+
// method: pointerType
|
| 443 |
+
_MTL_INLINE MTL::PointerType* MTL::StructMember::pointerType()
|
| 444 |
+
{
|
| 445 |
+
return Object::sendMessage<MTL::PointerType*>(this, _MTL_PRIVATE_SEL(pointerType));
|
| 446 |
+
}
|
| 447 |
+
|
| 448 |
+
// property: argumentIndex
|
| 449 |
+
_MTL_INLINE NS::UInteger MTL::StructMember::argumentIndex() const
|
| 450 |
+
{
|
| 451 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(argumentIndex));
|
| 452 |
+
}
|
| 453 |
+
|
| 454 |
+
// static method: alloc
|
| 455 |
+
_MTL_INLINE MTL::StructType* MTL::StructType::alloc()
|
| 456 |
+
{
|
| 457 |
+
return NS::Object::alloc<MTL::StructType>(_MTL_PRIVATE_CLS(MTLStructType));
|
| 458 |
+
}
|
| 459 |
+
|
| 460 |
+
// method: init
|
| 461 |
+
_MTL_INLINE MTL::StructType* MTL::StructType::init()
|
| 462 |
+
{
|
| 463 |
+
return NS::Object::init<MTL::StructType>();
|
| 464 |
+
}
|
| 465 |
+
|
| 466 |
+
// property: members
|
| 467 |
+
_MTL_INLINE NS::Array* MTL::StructType::members() const
|
| 468 |
+
{
|
| 469 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(members));
|
| 470 |
+
}
|
| 471 |
+
|
| 472 |
+
// method: memberByName:
|
| 473 |
+
_MTL_INLINE MTL::StructMember* MTL::StructType::memberByName(const NS::String* name)
|
| 474 |
+
{
|
| 475 |
+
return Object::sendMessage<MTL::StructMember*>(this, _MTL_PRIVATE_SEL(memberByName_), name);
|
| 476 |
+
}
|
| 477 |
+
|
| 478 |
+
// static method: alloc
|
| 479 |
+
_MTL_INLINE MTL::ArrayType* MTL::ArrayType::alloc()
|
| 480 |
+
{
|
| 481 |
+
return NS::Object::alloc<MTL::ArrayType>(_MTL_PRIVATE_CLS(MTLArrayType));
|
| 482 |
+
}
|
| 483 |
+
|
| 484 |
+
// method: init
|
| 485 |
+
_MTL_INLINE MTL::ArrayType* MTL::ArrayType::init()
|
| 486 |
+
{
|
| 487 |
+
return NS::Object::init<MTL::ArrayType>();
|
| 488 |
+
}
|
| 489 |
+
|
| 490 |
+
// property: elementType
|
| 491 |
+
_MTL_INLINE MTL::DataType MTL::ArrayType::elementType() const
|
| 492 |
+
{
|
| 493 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(elementType));
|
| 494 |
+
}
|
| 495 |
+
|
| 496 |
+
// property: arrayLength
|
| 497 |
+
_MTL_INLINE NS::UInteger MTL::ArrayType::arrayLength() const
|
| 498 |
+
{
|
| 499 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(arrayLength));
|
| 500 |
+
}
|
| 501 |
+
|
| 502 |
+
// property: stride
|
| 503 |
+
_MTL_INLINE NS::UInteger MTL::ArrayType::stride() const
|
| 504 |
+
{
|
| 505 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(stride));
|
| 506 |
+
}
|
| 507 |
+
|
| 508 |
+
// property: argumentIndexStride
|
| 509 |
+
_MTL_INLINE NS::UInteger MTL::ArrayType::argumentIndexStride() const
|
| 510 |
+
{
|
| 511 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(argumentIndexStride));
|
| 512 |
+
}
|
| 513 |
+
|
| 514 |
+
// method: elementStructType
|
| 515 |
+
_MTL_INLINE MTL::StructType* MTL::ArrayType::elementStructType()
|
| 516 |
+
{
|
| 517 |
+
return Object::sendMessage<MTL::StructType*>(this, _MTL_PRIVATE_SEL(elementStructType));
|
| 518 |
+
}
|
| 519 |
+
|
| 520 |
+
// method: elementArrayType
|
| 521 |
+
_MTL_INLINE MTL::ArrayType* MTL::ArrayType::elementArrayType()
|
| 522 |
+
{
|
| 523 |
+
return Object::sendMessage<MTL::ArrayType*>(this, _MTL_PRIVATE_SEL(elementArrayType));
|
| 524 |
+
}
|
| 525 |
+
|
| 526 |
+
// method: elementTextureReferenceType
|
| 527 |
+
_MTL_INLINE MTL::TextureReferenceType* MTL::ArrayType::elementTextureReferenceType()
|
| 528 |
+
{
|
| 529 |
+
return Object::sendMessage<MTL::TextureReferenceType*>(this, _MTL_PRIVATE_SEL(elementTextureReferenceType));
|
| 530 |
+
}
|
| 531 |
+
|
| 532 |
+
// method: elementPointerType
|
| 533 |
+
_MTL_INLINE MTL::PointerType* MTL::ArrayType::elementPointerType()
|
| 534 |
+
{
|
| 535 |
+
return Object::sendMessage<MTL::PointerType*>(this, _MTL_PRIVATE_SEL(elementPointerType));
|
| 536 |
+
}
|
| 537 |
+
|
| 538 |
+
// static method: alloc
|
| 539 |
+
_MTL_INLINE MTL::PointerType* MTL::PointerType::alloc()
|
| 540 |
+
{
|
| 541 |
+
return NS::Object::alloc<MTL::PointerType>(_MTL_PRIVATE_CLS(MTLPointerType));
|
| 542 |
+
}
|
| 543 |
+
|
| 544 |
+
// method: init
|
| 545 |
+
_MTL_INLINE MTL::PointerType* MTL::PointerType::init()
|
| 546 |
+
{
|
| 547 |
+
return NS::Object::init<MTL::PointerType>();
|
| 548 |
+
}
|
| 549 |
+
|
| 550 |
+
// property: elementType
|
| 551 |
+
_MTL_INLINE MTL::DataType MTL::PointerType::elementType() const
|
| 552 |
+
{
|
| 553 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(elementType));
|
| 554 |
+
}
|
| 555 |
+
|
| 556 |
+
// property: access
|
| 557 |
+
_MTL_INLINE MTL::BindingAccess MTL::PointerType::access() const
|
| 558 |
+
{
|
| 559 |
+
return Object::sendMessage<MTL::BindingAccess>(this, _MTL_PRIVATE_SEL(access));
|
| 560 |
+
}
|
| 561 |
+
|
| 562 |
+
// property: alignment
|
| 563 |
+
_MTL_INLINE NS::UInteger MTL::PointerType::alignment() const
|
| 564 |
+
{
|
| 565 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(alignment));
|
| 566 |
+
}
|
| 567 |
+
|
| 568 |
+
// property: dataSize
|
| 569 |
+
_MTL_INLINE NS::UInteger MTL::PointerType::dataSize() const
|
| 570 |
+
{
|
| 571 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(dataSize));
|
| 572 |
+
}
|
| 573 |
+
|
| 574 |
+
// property: elementIsArgumentBuffer
|
| 575 |
+
_MTL_INLINE bool MTL::PointerType::elementIsArgumentBuffer() const
|
| 576 |
+
{
|
| 577 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(elementIsArgumentBuffer));
|
| 578 |
+
}
|
| 579 |
+
|
| 580 |
+
// method: elementStructType
|
| 581 |
+
_MTL_INLINE MTL::StructType* MTL::PointerType::elementStructType()
|
| 582 |
+
{
|
| 583 |
+
return Object::sendMessage<MTL::StructType*>(this, _MTL_PRIVATE_SEL(elementStructType));
|
| 584 |
+
}
|
| 585 |
+
|
| 586 |
+
// method: elementArrayType
|
| 587 |
+
_MTL_INLINE MTL::ArrayType* MTL::PointerType::elementArrayType()
|
| 588 |
+
{
|
| 589 |
+
return Object::sendMessage<MTL::ArrayType*>(this, _MTL_PRIVATE_SEL(elementArrayType));
|
| 590 |
+
}
|
| 591 |
+
|
| 592 |
+
// static method: alloc
|
| 593 |
+
_MTL_INLINE MTL::TextureReferenceType* MTL::TextureReferenceType::alloc()
|
| 594 |
+
{
|
| 595 |
+
return NS::Object::alloc<MTL::TextureReferenceType>(_MTL_PRIVATE_CLS(MTLTextureReferenceType));
|
| 596 |
+
}
|
| 597 |
+
|
| 598 |
+
// method: init
|
| 599 |
+
_MTL_INLINE MTL::TextureReferenceType* MTL::TextureReferenceType::init()
|
| 600 |
+
{
|
| 601 |
+
return NS::Object::init<MTL::TextureReferenceType>();
|
| 602 |
+
}
|
| 603 |
+
|
| 604 |
+
// property: textureDataType
|
| 605 |
+
_MTL_INLINE MTL::DataType MTL::TextureReferenceType::textureDataType() const
|
| 606 |
+
{
|
| 607 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(textureDataType));
|
| 608 |
+
}
|
| 609 |
+
|
| 610 |
+
// property: textureType
|
| 611 |
+
_MTL_INLINE MTL::TextureType MTL::TextureReferenceType::textureType() const
|
| 612 |
+
{
|
| 613 |
+
return Object::sendMessage<MTL::TextureType>(this, _MTL_PRIVATE_SEL(textureType));
|
| 614 |
+
}
|
| 615 |
+
|
| 616 |
+
// property: access
|
| 617 |
+
_MTL_INLINE MTL::BindingAccess MTL::TextureReferenceType::access() const
|
| 618 |
+
{
|
| 619 |
+
return Object::sendMessage<MTL::BindingAccess>(this, _MTL_PRIVATE_SEL(access));
|
| 620 |
+
}
|
| 621 |
+
|
| 622 |
+
// property: isDepthTexture
|
| 623 |
+
_MTL_INLINE bool MTL::TextureReferenceType::isDepthTexture() const
|
| 624 |
+
{
|
| 625 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isDepthTexture));
|
| 626 |
+
}
|
| 627 |
+
|
| 628 |
+
// static method: alloc
|
| 629 |
+
_MTL_INLINE MTL::Argument* MTL::Argument::alloc()
|
| 630 |
+
{
|
| 631 |
+
return NS::Object::alloc<MTL::Argument>(_MTL_PRIVATE_CLS(MTLArgument));
|
| 632 |
+
}
|
| 633 |
+
|
| 634 |
+
// method: init
|
| 635 |
+
_MTL_INLINE MTL::Argument* MTL::Argument::init()
|
| 636 |
+
{
|
| 637 |
+
return NS::Object::init<MTL::Argument>();
|
| 638 |
+
}
|
| 639 |
+
|
| 640 |
+
// property: name
|
| 641 |
+
_MTL_INLINE NS::String* MTL::Argument::name() const
|
| 642 |
+
{
|
| 643 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 644 |
+
}
|
| 645 |
+
|
| 646 |
+
// property: type
|
| 647 |
+
_MTL_INLINE MTL::ArgumentType MTL::Argument::type() const
|
| 648 |
+
{
|
| 649 |
+
return Object::sendMessage<MTL::ArgumentType>(this, _MTL_PRIVATE_SEL(type));
|
| 650 |
+
}
|
| 651 |
+
|
| 652 |
+
// property: access
|
| 653 |
+
_MTL_INLINE MTL::BindingAccess MTL::Argument::access() const
|
| 654 |
+
{
|
| 655 |
+
return Object::sendMessage<MTL::BindingAccess>(this, _MTL_PRIVATE_SEL(access));
|
| 656 |
+
}
|
| 657 |
+
|
| 658 |
+
// property: index
|
| 659 |
+
_MTL_INLINE NS::UInteger MTL::Argument::index() const
|
| 660 |
+
{
|
| 661 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(index));
|
| 662 |
+
}
|
| 663 |
+
|
| 664 |
+
// property: active
|
| 665 |
+
_MTL_INLINE bool MTL::Argument::active() const
|
| 666 |
+
{
|
| 667 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isActive));
|
| 668 |
+
}
|
| 669 |
+
|
| 670 |
+
// property: bufferAlignment
|
| 671 |
+
_MTL_INLINE NS::UInteger MTL::Argument::bufferAlignment() const
|
| 672 |
+
{
|
| 673 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(bufferAlignment));
|
| 674 |
+
}
|
| 675 |
+
|
| 676 |
+
// property: bufferDataSize
|
| 677 |
+
_MTL_INLINE NS::UInteger MTL::Argument::bufferDataSize() const
|
| 678 |
+
{
|
| 679 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(bufferDataSize));
|
| 680 |
+
}
|
| 681 |
+
|
| 682 |
+
// property: bufferDataType
|
| 683 |
+
_MTL_INLINE MTL::DataType MTL::Argument::bufferDataType() const
|
| 684 |
+
{
|
| 685 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(bufferDataType));
|
| 686 |
+
}
|
| 687 |
+
|
| 688 |
+
// property: bufferStructType
|
| 689 |
+
_MTL_INLINE MTL::StructType* MTL::Argument::bufferStructType() const
|
| 690 |
+
{
|
| 691 |
+
return Object::sendMessage<MTL::StructType*>(this, _MTL_PRIVATE_SEL(bufferStructType));
|
| 692 |
+
}
|
| 693 |
+
|
| 694 |
+
// property: bufferPointerType
|
| 695 |
+
_MTL_INLINE MTL::PointerType* MTL::Argument::bufferPointerType() const
|
| 696 |
+
{
|
| 697 |
+
return Object::sendMessage<MTL::PointerType*>(this, _MTL_PRIVATE_SEL(bufferPointerType));
|
| 698 |
+
}
|
| 699 |
+
|
| 700 |
+
// property: threadgroupMemoryAlignment
|
| 701 |
+
_MTL_INLINE NS::UInteger MTL::Argument::threadgroupMemoryAlignment() const
|
| 702 |
+
{
|
| 703 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(threadgroupMemoryAlignment));
|
| 704 |
+
}
|
| 705 |
+
|
| 706 |
+
// property: threadgroupMemoryDataSize
|
| 707 |
+
_MTL_INLINE NS::UInteger MTL::Argument::threadgroupMemoryDataSize() const
|
| 708 |
+
{
|
| 709 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(threadgroupMemoryDataSize));
|
| 710 |
+
}
|
| 711 |
+
|
| 712 |
+
// property: textureType
|
| 713 |
+
_MTL_INLINE MTL::TextureType MTL::Argument::textureType() const
|
| 714 |
+
{
|
| 715 |
+
return Object::sendMessage<MTL::TextureType>(this, _MTL_PRIVATE_SEL(textureType));
|
| 716 |
+
}
|
| 717 |
+
|
| 718 |
+
// property: textureDataType
|
| 719 |
+
_MTL_INLINE MTL::DataType MTL::Argument::textureDataType() const
|
| 720 |
+
{
|
| 721 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(textureDataType));
|
| 722 |
+
}
|
| 723 |
+
|
| 724 |
+
// property: isDepthTexture
|
| 725 |
+
_MTL_INLINE bool MTL::Argument::isDepthTexture() const
|
| 726 |
+
{
|
| 727 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isDepthTexture));
|
| 728 |
+
}
|
| 729 |
+
|
| 730 |
+
// property: arrayLength
|
| 731 |
+
_MTL_INLINE NS::UInteger MTL::Argument::arrayLength() const
|
| 732 |
+
{
|
| 733 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(arrayLength));
|
| 734 |
+
}
|
| 735 |
+
|
| 736 |
+
// property: name
|
| 737 |
+
_MTL_INLINE NS::String* MTL::Binding::name() const
|
| 738 |
+
{
|
| 739 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 740 |
+
}
|
| 741 |
+
|
| 742 |
+
// property: type
|
| 743 |
+
_MTL_INLINE MTL::BindingType MTL::Binding::type() const
|
| 744 |
+
{
|
| 745 |
+
return Object::sendMessage<MTL::BindingType>(this, _MTL_PRIVATE_SEL(type));
|
| 746 |
+
}
|
| 747 |
+
|
| 748 |
+
// property: access
|
| 749 |
+
_MTL_INLINE MTL::BindingAccess MTL::Binding::access() const
|
| 750 |
+
{
|
| 751 |
+
return Object::sendMessage<MTL::BindingAccess>(this, _MTL_PRIVATE_SEL(access));
|
| 752 |
+
}
|
| 753 |
+
|
| 754 |
+
// property: index
|
| 755 |
+
_MTL_INLINE NS::UInteger MTL::Binding::index() const
|
| 756 |
+
{
|
| 757 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(index));
|
| 758 |
+
}
|
| 759 |
+
|
| 760 |
+
// property: used
|
| 761 |
+
_MTL_INLINE bool MTL::Binding::used() const
|
| 762 |
+
{
|
| 763 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isUsed));
|
| 764 |
+
}
|
| 765 |
+
|
| 766 |
+
// property: argument
|
| 767 |
+
_MTL_INLINE bool MTL::Binding::argument() const
|
| 768 |
+
{
|
| 769 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isArgument));
|
| 770 |
+
}
|
| 771 |
+
|
| 772 |
+
// property: bufferAlignment
|
| 773 |
+
_MTL_INLINE NS::UInteger MTL::BufferBinding::bufferAlignment() const
|
| 774 |
+
{
|
| 775 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(bufferAlignment));
|
| 776 |
+
}
|
| 777 |
+
|
| 778 |
+
// property: bufferDataSize
|
| 779 |
+
_MTL_INLINE NS::UInteger MTL::BufferBinding::bufferDataSize() const
|
| 780 |
+
{
|
| 781 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(bufferDataSize));
|
| 782 |
+
}
|
| 783 |
+
|
| 784 |
+
// property: bufferDataType
|
| 785 |
+
_MTL_INLINE MTL::DataType MTL::BufferBinding::bufferDataType() const
|
| 786 |
+
{
|
| 787 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(bufferDataType));
|
| 788 |
+
}
|
| 789 |
+
|
| 790 |
+
// property: bufferStructType
|
| 791 |
+
_MTL_INLINE MTL::StructType* MTL::BufferBinding::bufferStructType() const
|
| 792 |
+
{
|
| 793 |
+
return Object::sendMessage<MTL::StructType*>(this, _MTL_PRIVATE_SEL(bufferStructType));
|
| 794 |
+
}
|
| 795 |
+
|
| 796 |
+
// property: bufferPointerType
|
| 797 |
+
_MTL_INLINE MTL::PointerType* MTL::BufferBinding::bufferPointerType() const
|
| 798 |
+
{
|
| 799 |
+
return Object::sendMessage<MTL::PointerType*>(this, _MTL_PRIVATE_SEL(bufferPointerType));
|
| 800 |
+
}
|
| 801 |
+
|
| 802 |
+
// property: threadgroupMemoryAlignment
|
| 803 |
+
_MTL_INLINE NS::UInteger MTL::ThreadgroupBinding::threadgroupMemoryAlignment() const
|
| 804 |
+
{
|
| 805 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(threadgroupMemoryAlignment));
|
| 806 |
+
}
|
| 807 |
+
|
| 808 |
+
// property: threadgroupMemoryDataSize
|
| 809 |
+
_MTL_INLINE NS::UInteger MTL::ThreadgroupBinding::threadgroupMemoryDataSize() const
|
| 810 |
+
{
|
| 811 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(threadgroupMemoryDataSize));
|
| 812 |
+
}
|
| 813 |
+
|
| 814 |
+
// property: textureType
|
| 815 |
+
_MTL_INLINE MTL::TextureType MTL::TextureBinding::textureType() const
|
| 816 |
+
{
|
| 817 |
+
return Object::sendMessage<MTL::TextureType>(this, _MTL_PRIVATE_SEL(textureType));
|
| 818 |
+
}
|
| 819 |
+
|
| 820 |
+
// property: textureDataType
|
| 821 |
+
_MTL_INLINE MTL::DataType MTL::TextureBinding::textureDataType() const
|
| 822 |
+
{
|
| 823 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(textureDataType));
|
| 824 |
+
}
|
| 825 |
+
|
| 826 |
+
// property: depthTexture
|
| 827 |
+
_MTL_INLINE bool MTL::TextureBinding::depthTexture() const
|
| 828 |
+
{
|
| 829 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isDepthTexture));
|
| 830 |
+
}
|
| 831 |
+
|
| 832 |
+
// property: arrayLength
|
| 833 |
+
_MTL_INLINE NS::UInteger MTL::TextureBinding::arrayLength() const
|
| 834 |
+
{
|
| 835 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(arrayLength));
|
| 836 |
+
}
|
| 837 |
+
|
| 838 |
+
// property: objectPayloadAlignment
|
| 839 |
+
_MTL_INLINE NS::UInteger MTL::ObjectPayloadBinding::objectPayloadAlignment() const
|
| 840 |
+
{
|
| 841 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(objectPayloadAlignment));
|
| 842 |
+
}
|
| 843 |
+
|
| 844 |
+
// property: objectPayloadDataSize
|
| 845 |
+
_MTL_INLINE NS::UInteger MTL::ObjectPayloadBinding::objectPayloadDataSize() const
|
| 846 |
+
{
|
| 847 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(objectPayloadDataSize));
|
| 848 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLArgumentEncoder.hpp
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLArgumentEncoder.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
namespace MTL
|
| 30 |
+
{
|
| 31 |
+
|
| 32 |
+
static const NS::UInteger AttributeStrideStatic = NS::UIntegerMax;
|
| 33 |
+
|
| 34 |
+
class ArgumentEncoder : public NS::Referencing<ArgumentEncoder>
|
| 35 |
+
{
|
| 36 |
+
public:
|
| 37 |
+
class Device* device() const;
|
| 38 |
+
|
| 39 |
+
NS::String* label() const;
|
| 40 |
+
void setLabel(const NS::String* label);
|
| 41 |
+
|
| 42 |
+
NS::UInteger encodedLength() const;
|
| 43 |
+
|
| 44 |
+
NS::UInteger alignment() const;
|
| 45 |
+
|
| 46 |
+
void setArgumentBuffer(const class Buffer* argumentBuffer, NS::UInteger offset);
|
| 47 |
+
|
| 48 |
+
void setArgumentBuffer(const class Buffer* argumentBuffer, NS::UInteger startOffset, NS::UInteger arrayElement);
|
| 49 |
+
|
| 50 |
+
void setBuffer(const class Buffer* buffer, NS::UInteger offset, NS::UInteger index);
|
| 51 |
+
|
| 52 |
+
void setBuffers(const class Buffer* const buffers[], const NS::UInteger offsets[], NS::Range range);
|
| 53 |
+
|
| 54 |
+
void setTexture(const class Texture* texture, NS::UInteger index);
|
| 55 |
+
|
| 56 |
+
void setTextures(const class Texture* const textures[], NS::Range range);
|
| 57 |
+
|
| 58 |
+
void setSamplerState(const class SamplerState* sampler, NS::UInteger index);
|
| 59 |
+
|
| 60 |
+
void setSamplerStates(const class SamplerState* const samplers[], NS::Range range);
|
| 61 |
+
|
| 62 |
+
void* constantData(NS::UInteger index);
|
| 63 |
+
|
| 64 |
+
void setRenderPipelineState(const class RenderPipelineState* pipeline, NS::UInteger index);
|
| 65 |
+
|
| 66 |
+
void setRenderPipelineStates(const class RenderPipelineState* const pipelines[], NS::Range range);
|
| 67 |
+
|
| 68 |
+
void setComputePipelineState(const class ComputePipelineState* pipeline, NS::UInteger index);
|
| 69 |
+
|
| 70 |
+
void setComputePipelineStates(const class ComputePipelineState* const pipelines[], NS::Range range);
|
| 71 |
+
|
| 72 |
+
void setIndirectCommandBuffer(const class IndirectCommandBuffer* indirectCommandBuffer, NS::UInteger index);
|
| 73 |
+
|
| 74 |
+
void setIndirectCommandBuffers(const class IndirectCommandBuffer* const buffers[], NS::Range range);
|
| 75 |
+
|
| 76 |
+
void setAccelerationStructure(const class AccelerationStructure* accelerationStructure, NS::UInteger index);
|
| 77 |
+
|
| 78 |
+
class ArgumentEncoder* newArgumentEncoder(NS::UInteger index);
|
| 79 |
+
|
| 80 |
+
void setVisibleFunctionTable(const class VisibleFunctionTable* visibleFunctionTable, NS::UInteger index);
|
| 81 |
+
|
| 82 |
+
void setVisibleFunctionTables(const class VisibleFunctionTable* const visibleFunctionTables[], NS::Range range);
|
| 83 |
+
|
| 84 |
+
void setIntersectionFunctionTable(const class IntersectionFunctionTable* intersectionFunctionTable, NS::UInteger index);
|
| 85 |
+
|
| 86 |
+
void setIntersectionFunctionTables(const class IntersectionFunctionTable* const intersectionFunctionTables[], NS::Range range);
|
| 87 |
+
};
|
| 88 |
+
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
// property: device
|
| 92 |
+
_MTL_INLINE MTL::Device* MTL::ArgumentEncoder::device() const
|
| 93 |
+
{
|
| 94 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
// property: label
|
| 98 |
+
_MTL_INLINE NS::String* MTL::ArgumentEncoder::label() const
|
| 99 |
+
{
|
| 100 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 101 |
+
}
|
| 102 |
+
|
| 103 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setLabel(const NS::String* label)
|
| 104 |
+
{
|
| 105 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
// property: encodedLength
|
| 109 |
+
_MTL_INLINE NS::UInteger MTL::ArgumentEncoder::encodedLength() const
|
| 110 |
+
{
|
| 111 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(encodedLength));
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
// property: alignment
|
| 115 |
+
_MTL_INLINE NS::UInteger MTL::ArgumentEncoder::alignment() const
|
| 116 |
+
{
|
| 117 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(alignment));
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
// method: setArgumentBuffer:offset:
|
| 121 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setArgumentBuffer(const MTL::Buffer* argumentBuffer, NS::UInteger offset)
|
| 122 |
+
{
|
| 123 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setArgumentBuffer_offset_), argumentBuffer, offset);
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
// method: setArgumentBuffer:startOffset:arrayElement:
|
| 127 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setArgumentBuffer(const MTL::Buffer* argumentBuffer, NS::UInteger startOffset, NS::UInteger arrayElement)
|
| 128 |
+
{
|
| 129 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setArgumentBuffer_startOffset_arrayElement_), argumentBuffer, startOffset, arrayElement);
|
| 130 |
+
}
|
| 131 |
+
|
| 132 |
+
// method: setBuffer:offset:atIndex:
|
| 133 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setBuffer(const MTL::Buffer* buffer, NS::UInteger offset, NS::UInteger index)
|
| 134 |
+
{
|
| 135 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBuffer_offset_atIndex_), buffer, offset, index);
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
// method: setBuffers:offsets:withRange:
|
| 139 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setBuffers(const MTL::Buffer* const buffers[], const NS::UInteger offsets[], NS::Range range)
|
| 140 |
+
{
|
| 141 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBuffers_offsets_withRange_), buffers, offsets, range);
|
| 142 |
+
}
|
| 143 |
+
|
| 144 |
+
// method: setTexture:atIndex:
|
| 145 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setTexture(const MTL::Texture* texture, NS::UInteger index)
|
| 146 |
+
{
|
| 147 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTexture_atIndex_), texture, index);
|
| 148 |
+
}
|
| 149 |
+
|
| 150 |
+
// method: setTextures:withRange:
|
| 151 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setTextures(const MTL::Texture* const textures[], NS::Range range)
|
| 152 |
+
{
|
| 153 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTextures_withRange_), textures, range);
|
| 154 |
+
}
|
| 155 |
+
|
| 156 |
+
// method: setSamplerState:atIndex:
|
| 157 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setSamplerState(const MTL::SamplerState* sampler, NS::UInteger index)
|
| 158 |
+
{
|
| 159 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSamplerState_atIndex_), sampler, index);
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
// method: setSamplerStates:withRange:
|
| 163 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setSamplerStates(const MTL::SamplerState* const samplers[], NS::Range range)
|
| 164 |
+
{
|
| 165 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSamplerStates_withRange_), samplers, range);
|
| 166 |
+
}
|
| 167 |
+
|
| 168 |
+
// method: constantDataAtIndex:
|
| 169 |
+
_MTL_INLINE void* MTL::ArgumentEncoder::constantData(NS::UInteger index)
|
| 170 |
+
{
|
| 171 |
+
return Object::sendMessage<void*>(this, _MTL_PRIVATE_SEL(constantDataAtIndex_), index);
|
| 172 |
+
}
|
| 173 |
+
|
| 174 |
+
// method: setRenderPipelineState:atIndex:
|
| 175 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setRenderPipelineState(const MTL::RenderPipelineState* pipeline, NS::UInteger index)
|
| 176 |
+
{
|
| 177 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRenderPipelineState_atIndex_), pipeline, index);
|
| 178 |
+
}
|
| 179 |
+
|
| 180 |
+
// method: setRenderPipelineStates:withRange:
|
| 181 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setRenderPipelineStates(const MTL::RenderPipelineState* const pipelines[], NS::Range range)
|
| 182 |
+
{
|
| 183 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRenderPipelineStates_withRange_), pipelines, range);
|
| 184 |
+
}
|
| 185 |
+
|
| 186 |
+
// method: setComputePipelineState:atIndex:
|
| 187 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setComputePipelineState(const MTL::ComputePipelineState* pipeline, NS::UInteger index)
|
| 188 |
+
{
|
| 189 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setComputePipelineState_atIndex_), pipeline, index);
|
| 190 |
+
}
|
| 191 |
+
|
| 192 |
+
// method: setComputePipelineStates:withRange:
|
| 193 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setComputePipelineStates(const MTL::ComputePipelineState* const pipelines[], NS::Range range)
|
| 194 |
+
{
|
| 195 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setComputePipelineStates_withRange_), pipelines, range);
|
| 196 |
+
}
|
| 197 |
+
|
| 198 |
+
// method: setIndirectCommandBuffer:atIndex:
|
| 199 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setIndirectCommandBuffer(const MTL::IndirectCommandBuffer* indirectCommandBuffer, NS::UInteger index)
|
| 200 |
+
{
|
| 201 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndirectCommandBuffer_atIndex_), indirectCommandBuffer, index);
|
| 202 |
+
}
|
| 203 |
+
|
| 204 |
+
// method: setIndirectCommandBuffers:withRange:
|
| 205 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setIndirectCommandBuffers(const MTL::IndirectCommandBuffer* const buffers[], NS::Range range)
|
| 206 |
+
{
|
| 207 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndirectCommandBuffers_withRange_), buffers, range);
|
| 208 |
+
}
|
| 209 |
+
|
| 210 |
+
// method: setAccelerationStructure:atIndex:
|
| 211 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setAccelerationStructure(const MTL::AccelerationStructure* accelerationStructure, NS::UInteger index)
|
| 212 |
+
{
|
| 213 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAccelerationStructure_atIndex_), accelerationStructure, index);
|
| 214 |
+
}
|
| 215 |
+
|
| 216 |
+
// method: newArgumentEncoderForBufferAtIndex:
|
| 217 |
+
_MTL_INLINE MTL::ArgumentEncoder* MTL::ArgumentEncoder::newArgumentEncoder(NS::UInteger index)
|
| 218 |
+
{
|
| 219 |
+
return Object::sendMessage<MTL::ArgumentEncoder*>(this, _MTL_PRIVATE_SEL(newArgumentEncoderForBufferAtIndex_), index);
|
| 220 |
+
}
|
| 221 |
+
|
| 222 |
+
// method: setVisibleFunctionTable:atIndex:
|
| 223 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setVisibleFunctionTable(const MTL::VisibleFunctionTable* visibleFunctionTable, NS::UInteger index)
|
| 224 |
+
{
|
| 225 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVisibleFunctionTable_atIndex_), visibleFunctionTable, index);
|
| 226 |
+
}
|
| 227 |
+
|
| 228 |
+
// method: setVisibleFunctionTables:withRange:
|
| 229 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setVisibleFunctionTables(const MTL::VisibleFunctionTable* const visibleFunctionTables[], NS::Range range)
|
| 230 |
+
{
|
| 231 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVisibleFunctionTables_withRange_), visibleFunctionTables, range);
|
| 232 |
+
}
|
| 233 |
+
|
| 234 |
+
// method: setIntersectionFunctionTable:atIndex:
|
| 235 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setIntersectionFunctionTable(const MTL::IntersectionFunctionTable* intersectionFunctionTable, NS::UInteger index)
|
| 236 |
+
{
|
| 237 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIntersectionFunctionTable_atIndex_), intersectionFunctionTable, index);
|
| 238 |
+
}
|
| 239 |
+
|
| 240 |
+
// method: setIntersectionFunctionTables:withRange:
|
| 241 |
+
_MTL_INLINE void MTL::ArgumentEncoder::setIntersectionFunctionTables(const MTL::IntersectionFunctionTable* const intersectionFunctionTables[], NS::Range range)
|
| 242 |
+
{
|
| 243 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIntersectionFunctionTables_withRange_), intersectionFunctionTables, range);
|
| 244 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLBinaryArchive.hpp
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLBinaryArchive.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
namespace MTL
|
| 30 |
+
{
|
| 31 |
+
_MTL_ENUM(NS::UInteger, BinaryArchiveError) {
|
| 32 |
+
BinaryArchiveErrorNone = 0,
|
| 33 |
+
BinaryArchiveErrorInvalidFile = 1,
|
| 34 |
+
BinaryArchiveErrorUnexpectedElement = 2,
|
| 35 |
+
BinaryArchiveErrorCompilationFailure = 3,
|
| 36 |
+
BinaryArchiveErrorInternalError = 4,
|
| 37 |
+
};
|
| 38 |
+
|
| 39 |
+
class BinaryArchiveDescriptor : public NS::Copying<BinaryArchiveDescriptor>
|
| 40 |
+
{
|
| 41 |
+
public:
|
| 42 |
+
static class BinaryArchiveDescriptor* alloc();
|
| 43 |
+
|
| 44 |
+
class BinaryArchiveDescriptor* init();
|
| 45 |
+
|
| 46 |
+
NS::URL* url() const;
|
| 47 |
+
void setUrl(const NS::URL* url);
|
| 48 |
+
};
|
| 49 |
+
|
| 50 |
+
class BinaryArchive : public NS::Referencing<BinaryArchive>
|
| 51 |
+
{
|
| 52 |
+
public:
|
| 53 |
+
NS::String* label() const;
|
| 54 |
+
void setLabel(const NS::String* label);
|
| 55 |
+
|
| 56 |
+
class Device* device() const;
|
| 57 |
+
|
| 58 |
+
bool addComputePipelineFunctions(const class ComputePipelineDescriptor* descriptor, NS::Error** error);
|
| 59 |
+
|
| 60 |
+
bool addRenderPipelineFunctions(const class RenderPipelineDescriptor* descriptor, NS::Error** error);
|
| 61 |
+
|
| 62 |
+
bool addTileRenderPipelineFunctions(const class TileRenderPipelineDescriptor* descriptor, NS::Error** error);
|
| 63 |
+
|
| 64 |
+
bool serializeToURL(const NS::URL* url, NS::Error** error);
|
| 65 |
+
|
| 66 |
+
bool addFunction(const class FunctionDescriptor* descriptor, const class Library* library, NS::Error** error);
|
| 67 |
+
};
|
| 68 |
+
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
// static method: alloc
|
| 72 |
+
_MTL_INLINE MTL::BinaryArchiveDescriptor* MTL::BinaryArchiveDescriptor::alloc()
|
| 73 |
+
{
|
| 74 |
+
return NS::Object::alloc<MTL::BinaryArchiveDescriptor>(_MTL_PRIVATE_CLS(MTLBinaryArchiveDescriptor));
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
// method: init
|
| 78 |
+
_MTL_INLINE MTL::BinaryArchiveDescriptor* MTL::BinaryArchiveDescriptor::init()
|
| 79 |
+
{
|
| 80 |
+
return NS::Object::init<MTL::BinaryArchiveDescriptor>();
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
// property: url
|
| 84 |
+
_MTL_INLINE NS::URL* MTL::BinaryArchiveDescriptor::url() const
|
| 85 |
+
{
|
| 86 |
+
return Object::sendMessage<NS::URL*>(this, _MTL_PRIVATE_SEL(url));
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
_MTL_INLINE void MTL::BinaryArchiveDescriptor::setUrl(const NS::URL* url)
|
| 90 |
+
{
|
| 91 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setUrl_), url);
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
// property: label
|
| 95 |
+
_MTL_INLINE NS::String* MTL::BinaryArchive::label() const
|
| 96 |
+
{
|
| 97 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
_MTL_INLINE void MTL::BinaryArchive::setLabel(const NS::String* label)
|
| 101 |
+
{
|
| 102 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 103 |
+
}
|
| 104 |
+
|
| 105 |
+
// property: device
|
| 106 |
+
_MTL_INLINE MTL::Device* MTL::BinaryArchive::device() const
|
| 107 |
+
{
|
| 108 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 109 |
+
}
|
| 110 |
+
|
| 111 |
+
// method: addComputePipelineFunctionsWithDescriptor:error:
|
| 112 |
+
_MTL_INLINE bool MTL::BinaryArchive::addComputePipelineFunctions(const MTL::ComputePipelineDescriptor* descriptor, NS::Error** error)
|
| 113 |
+
{
|
| 114 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(addComputePipelineFunctionsWithDescriptor_error_), descriptor, error);
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
+
// method: addRenderPipelineFunctionsWithDescriptor:error:
|
| 118 |
+
_MTL_INLINE bool MTL::BinaryArchive::addRenderPipelineFunctions(const MTL::RenderPipelineDescriptor* descriptor, NS::Error** error)
|
| 119 |
+
{
|
| 120 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(addRenderPipelineFunctionsWithDescriptor_error_), descriptor, error);
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
// method: addTileRenderPipelineFunctionsWithDescriptor:error:
|
| 124 |
+
_MTL_INLINE bool MTL::BinaryArchive::addTileRenderPipelineFunctions(const MTL::TileRenderPipelineDescriptor* descriptor, NS::Error** error)
|
| 125 |
+
{
|
| 126 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(addTileRenderPipelineFunctionsWithDescriptor_error_), descriptor, error);
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
// method: serializeToURL:error:
|
| 130 |
+
_MTL_INLINE bool MTL::BinaryArchive::serializeToURL(const NS::URL* url, NS::Error** error)
|
| 131 |
+
{
|
| 132 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(serializeToURL_error_), url, error);
|
| 133 |
+
}
|
| 134 |
+
|
| 135 |
+
// method: addFunctionWithDescriptor:library:error:
|
| 136 |
+
_MTL_INLINE bool MTL::BinaryArchive::addFunction(const MTL::FunctionDescriptor* descriptor, const MTL::Library* library, NS::Error** error)
|
| 137 |
+
{
|
| 138 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(addFunctionWithDescriptor_library_error_), descriptor, library, error);
|
| 139 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLBlitCommandEncoder.hpp
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLBlitCommandEncoder.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLBlitCommandEncoder.hpp"
|
| 30 |
+
#include "MTLCommandEncoder.hpp"
|
| 31 |
+
#include "MTLTypes.hpp"
|
| 32 |
+
|
| 33 |
+
namespace MTL
|
| 34 |
+
{
|
| 35 |
+
_MTL_OPTIONS(NS::UInteger, BlitOption) {
|
| 36 |
+
BlitOptionNone = 0,
|
| 37 |
+
BlitOptionDepthFromDepthStencil = 1,
|
| 38 |
+
BlitOptionStencilFromDepthStencil = 2,
|
| 39 |
+
BlitOptionRowLinearPVRTC = 4,
|
| 40 |
+
};
|
| 41 |
+
|
| 42 |
+
class BlitCommandEncoder : public NS::Referencing<BlitCommandEncoder, CommandEncoder>
|
| 43 |
+
{
|
| 44 |
+
public:
|
| 45 |
+
void synchronizeResource(const class Resource* resource);
|
| 46 |
+
|
| 47 |
+
void synchronizeTexture(const class Texture* texture, NS::UInteger slice, NS::UInteger level);
|
| 48 |
+
|
| 49 |
+
void copyFromTexture(const class Texture* sourceTexture, NS::UInteger sourceSlice, NS::UInteger sourceLevel, MTL::Origin sourceOrigin, MTL::Size sourceSize, const class Texture* destinationTexture, NS::UInteger destinationSlice, NS::UInteger destinationLevel, MTL::Origin destinationOrigin);
|
| 50 |
+
|
| 51 |
+
void copyFromBuffer(const class Buffer* sourceBuffer, NS::UInteger sourceOffset, NS::UInteger sourceBytesPerRow, NS::UInteger sourceBytesPerImage, MTL::Size sourceSize, const class Texture* destinationTexture, NS::UInteger destinationSlice, NS::UInteger destinationLevel, MTL::Origin destinationOrigin);
|
| 52 |
+
|
| 53 |
+
void copyFromBuffer(const class Buffer* sourceBuffer, NS::UInteger sourceOffset, NS::UInteger sourceBytesPerRow, NS::UInteger sourceBytesPerImage, MTL::Size sourceSize, const class Texture* destinationTexture, NS::UInteger destinationSlice, NS::UInteger destinationLevel, MTL::Origin destinationOrigin, MTL::BlitOption options);
|
| 54 |
+
|
| 55 |
+
void copyFromTexture(const class Texture* sourceTexture, NS::UInteger sourceSlice, NS::UInteger sourceLevel, MTL::Origin sourceOrigin, MTL::Size sourceSize, const class Buffer* destinationBuffer, NS::UInteger destinationOffset, NS::UInteger destinationBytesPerRow, NS::UInteger destinationBytesPerImage);
|
| 56 |
+
|
| 57 |
+
void copyFromTexture(const class Texture* sourceTexture, NS::UInteger sourceSlice, NS::UInteger sourceLevel, MTL::Origin sourceOrigin, MTL::Size sourceSize, const class Buffer* destinationBuffer, NS::UInteger destinationOffset, NS::UInteger destinationBytesPerRow, NS::UInteger destinationBytesPerImage, MTL::BlitOption options);
|
| 58 |
+
|
| 59 |
+
void generateMipmaps(const class Texture* texture);
|
| 60 |
+
|
| 61 |
+
void fillBuffer(const class Buffer* buffer, NS::Range range, uint8_t value);
|
| 62 |
+
|
| 63 |
+
void copyFromTexture(const class Texture* sourceTexture, NS::UInteger sourceSlice, NS::UInteger sourceLevel, const class Texture* destinationTexture, NS::UInteger destinationSlice, NS::UInteger destinationLevel, NS::UInteger sliceCount, NS::UInteger levelCount);
|
| 64 |
+
|
| 65 |
+
void copyFromTexture(const class Texture* sourceTexture, const class Texture* destinationTexture);
|
| 66 |
+
|
| 67 |
+
void copyFromBuffer(const class Buffer* sourceBuffer, NS::UInteger sourceOffset, const class Buffer* destinationBuffer, NS::UInteger destinationOffset, NS::UInteger size);
|
| 68 |
+
|
| 69 |
+
void updateFence(const class Fence* fence);
|
| 70 |
+
|
| 71 |
+
void waitForFence(const class Fence* fence);
|
| 72 |
+
|
| 73 |
+
void getTextureAccessCounters(const class Texture* texture, MTL::Region region, NS::UInteger mipLevel, NS::UInteger slice, bool resetCounters, const class Buffer* countersBuffer, NS::UInteger countersBufferOffset);
|
| 74 |
+
|
| 75 |
+
void resetTextureAccessCounters(const class Texture* texture, MTL::Region region, NS::UInteger mipLevel, NS::UInteger slice);
|
| 76 |
+
|
| 77 |
+
void optimizeContentsForGPUAccess(const class Texture* texture);
|
| 78 |
+
|
| 79 |
+
void optimizeContentsForGPUAccess(const class Texture* texture, NS::UInteger slice, NS::UInteger level);
|
| 80 |
+
|
| 81 |
+
void optimizeContentsForCPUAccess(const class Texture* texture);
|
| 82 |
+
|
| 83 |
+
void optimizeContentsForCPUAccess(const class Texture* texture, NS::UInteger slice, NS::UInteger level);
|
| 84 |
+
|
| 85 |
+
void resetCommandsInBuffer(const class IndirectCommandBuffer* buffer, NS::Range range);
|
| 86 |
+
|
| 87 |
+
void copyIndirectCommandBuffer(const class IndirectCommandBuffer* source, NS::Range sourceRange, const class IndirectCommandBuffer* destination, NS::UInteger destinationIndex);
|
| 88 |
+
|
| 89 |
+
void optimizeIndirectCommandBuffer(const class IndirectCommandBuffer* indirectCommandBuffer, NS::Range range);
|
| 90 |
+
|
| 91 |
+
void sampleCountersInBuffer(const class CounterSampleBuffer* sampleBuffer, NS::UInteger sampleIndex, bool barrier);
|
| 92 |
+
|
| 93 |
+
void resolveCounters(const class CounterSampleBuffer* sampleBuffer, NS::Range range, const class Buffer* destinationBuffer, NS::UInteger destinationOffset);
|
| 94 |
+
};
|
| 95 |
+
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
// method: synchronizeResource:
|
| 99 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::synchronizeResource(const MTL::Resource* resource)
|
| 100 |
+
{
|
| 101 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(synchronizeResource_), resource);
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
// method: synchronizeTexture:slice:level:
|
| 105 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::synchronizeTexture(const MTL::Texture* texture, NS::UInteger slice, NS::UInteger level)
|
| 106 |
+
{
|
| 107 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(synchronizeTexture_slice_level_), texture, slice, level);
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
// method: copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:
|
| 111 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::copyFromTexture(const MTL::Texture* sourceTexture, NS::UInteger sourceSlice, NS::UInteger sourceLevel, MTL::Origin sourceOrigin, MTL::Size sourceSize, const MTL::Texture* destinationTexture, NS::UInteger destinationSlice, NS::UInteger destinationLevel, MTL::Origin destinationOrigin)
|
| 112 |
+
{
|
| 113 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_), sourceTexture, sourceSlice, sourceLevel, sourceOrigin, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin);
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
// method: copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:
|
| 117 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::copyFromBuffer(const MTL::Buffer* sourceBuffer, NS::UInteger sourceOffset, NS::UInteger sourceBytesPerRow, NS::UInteger sourceBytesPerImage, MTL::Size sourceSize, const MTL::Texture* destinationTexture, NS::UInteger destinationSlice, NS::UInteger destinationLevel, MTL::Origin destinationOrigin)
|
| 118 |
+
{
|
| 119 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_), sourceBuffer, sourceOffset, sourceBytesPerRow, sourceBytesPerImage, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin);
|
| 120 |
+
}
|
| 121 |
+
|
| 122 |
+
// method: copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:options:
|
| 123 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::copyFromBuffer(const MTL::Buffer* sourceBuffer, NS::UInteger sourceOffset, NS::UInteger sourceBytesPerRow, NS::UInteger sourceBytesPerImage, MTL::Size sourceSize, const MTL::Texture* destinationTexture, NS::UInteger destinationSlice, NS::UInteger destinationLevel, MTL::Origin destinationOrigin, MTL::BlitOption options)
|
| 124 |
+
{
|
| 125 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(copyFromBuffer_sourceOffset_sourceBytesPerRow_sourceBytesPerImage_sourceSize_toTexture_destinationSlice_destinationLevel_destinationOrigin_options_), sourceBuffer, sourceOffset, sourceBytesPerRow, sourceBytesPerImage, sourceSize, destinationTexture, destinationSlice, destinationLevel, destinationOrigin, options);
|
| 126 |
+
}
|
| 127 |
+
|
| 128 |
+
// method: copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:
|
| 129 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::copyFromTexture(const MTL::Texture* sourceTexture, NS::UInteger sourceSlice, NS::UInteger sourceLevel, MTL::Origin sourceOrigin, MTL::Size sourceSize, const MTL::Buffer* destinationBuffer, NS::UInteger destinationOffset, NS::UInteger destinationBytesPerRow, NS::UInteger destinationBytesPerImage)
|
| 130 |
+
{
|
| 131 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_), sourceTexture, sourceSlice, sourceLevel, sourceOrigin, sourceSize, destinationBuffer, destinationOffset, destinationBytesPerRow, destinationBytesPerImage);
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
+
// method: copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:options:
|
| 135 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::copyFromTexture(const MTL::Texture* sourceTexture, NS::UInteger sourceSlice, NS::UInteger sourceLevel, MTL::Origin sourceOrigin, MTL::Size sourceSize, const MTL::Buffer* destinationBuffer, NS::UInteger destinationOffset, NS::UInteger destinationBytesPerRow, NS::UInteger destinationBytesPerImage, MTL::BlitOption options)
|
| 136 |
+
{
|
| 137 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(copyFromTexture_sourceSlice_sourceLevel_sourceOrigin_sourceSize_toBuffer_destinationOffset_destinationBytesPerRow_destinationBytesPerImage_options_), sourceTexture, sourceSlice, sourceLevel, sourceOrigin, sourceSize, destinationBuffer, destinationOffset, destinationBytesPerRow, destinationBytesPerImage, options);
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
// method: generateMipmapsForTexture:
|
| 141 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::generateMipmaps(const MTL::Texture* texture)
|
| 142 |
+
{
|
| 143 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(generateMipmapsForTexture_), texture);
|
| 144 |
+
}
|
| 145 |
+
|
| 146 |
+
// method: fillBuffer:range:value:
|
| 147 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::fillBuffer(const MTL::Buffer* buffer, NS::Range range, uint8_t value)
|
| 148 |
+
{
|
| 149 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(fillBuffer_range_value_), buffer, range, value);
|
| 150 |
+
}
|
| 151 |
+
|
| 152 |
+
// method: copyFromTexture:sourceSlice:sourceLevel:toTexture:destinationSlice:destinationLevel:sliceCount:levelCount:
|
| 153 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::copyFromTexture(const MTL::Texture* sourceTexture, NS::UInteger sourceSlice, NS::UInteger sourceLevel, const MTL::Texture* destinationTexture, NS::UInteger destinationSlice, NS::UInteger destinationLevel, NS::UInteger sliceCount, NS::UInteger levelCount)
|
| 154 |
+
{
|
| 155 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(copyFromTexture_sourceSlice_sourceLevel_toTexture_destinationSlice_destinationLevel_sliceCount_levelCount_), sourceTexture, sourceSlice, sourceLevel, destinationTexture, destinationSlice, destinationLevel, sliceCount, levelCount);
|
| 156 |
+
}
|
| 157 |
+
|
| 158 |
+
// method: copyFromTexture:toTexture:
|
| 159 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::copyFromTexture(const MTL::Texture* sourceTexture, const MTL::Texture* destinationTexture)
|
| 160 |
+
{
|
| 161 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(copyFromTexture_toTexture_), sourceTexture, destinationTexture);
|
| 162 |
+
}
|
| 163 |
+
|
| 164 |
+
// method: copyFromBuffer:sourceOffset:toBuffer:destinationOffset:size:
|
| 165 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::copyFromBuffer(const MTL::Buffer* sourceBuffer, NS::UInteger sourceOffset, const MTL::Buffer* destinationBuffer, NS::UInteger destinationOffset, NS::UInteger size)
|
| 166 |
+
{
|
| 167 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(copyFromBuffer_sourceOffset_toBuffer_destinationOffset_size_), sourceBuffer, sourceOffset, destinationBuffer, destinationOffset, size);
|
| 168 |
+
}
|
| 169 |
+
|
| 170 |
+
// method: updateFence:
|
| 171 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::updateFence(const MTL::Fence* fence)
|
| 172 |
+
{
|
| 173 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(updateFence_), fence);
|
| 174 |
+
}
|
| 175 |
+
|
| 176 |
+
// method: waitForFence:
|
| 177 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::waitForFence(const MTL::Fence* fence)
|
| 178 |
+
{
|
| 179 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(waitForFence_), fence);
|
| 180 |
+
}
|
| 181 |
+
|
| 182 |
+
// method: getTextureAccessCounters:region:mipLevel:slice:resetCounters:countersBuffer:countersBufferOffset:
|
| 183 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::getTextureAccessCounters(const MTL::Texture* texture, MTL::Region region, NS::UInteger mipLevel, NS::UInteger slice, bool resetCounters, const MTL::Buffer* countersBuffer, NS::UInteger countersBufferOffset)
|
| 184 |
+
{
|
| 185 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(getTextureAccessCounters_region_mipLevel_slice_resetCounters_countersBuffer_countersBufferOffset_), texture, region, mipLevel, slice, resetCounters, countersBuffer, countersBufferOffset);
|
| 186 |
+
}
|
| 187 |
+
|
| 188 |
+
// method: resetTextureAccessCounters:region:mipLevel:slice:
|
| 189 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::resetTextureAccessCounters(const MTL::Texture* texture, MTL::Region region, NS::UInteger mipLevel, NS::UInteger slice)
|
| 190 |
+
{
|
| 191 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(resetTextureAccessCounters_region_mipLevel_slice_), texture, region, mipLevel, slice);
|
| 192 |
+
}
|
| 193 |
+
|
| 194 |
+
// method: optimizeContentsForGPUAccess:
|
| 195 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::optimizeContentsForGPUAccess(const MTL::Texture* texture)
|
| 196 |
+
{
|
| 197 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(optimizeContentsForGPUAccess_), texture);
|
| 198 |
+
}
|
| 199 |
+
|
| 200 |
+
// method: optimizeContentsForGPUAccess:slice:level:
|
| 201 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::optimizeContentsForGPUAccess(const MTL::Texture* texture, NS::UInteger slice, NS::UInteger level)
|
| 202 |
+
{
|
| 203 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(optimizeContentsForGPUAccess_slice_level_), texture, slice, level);
|
| 204 |
+
}
|
| 205 |
+
|
| 206 |
+
// method: optimizeContentsForCPUAccess:
|
| 207 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::optimizeContentsForCPUAccess(const MTL::Texture* texture)
|
| 208 |
+
{
|
| 209 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(optimizeContentsForCPUAccess_), texture);
|
| 210 |
+
}
|
| 211 |
+
|
| 212 |
+
// method: optimizeContentsForCPUAccess:slice:level:
|
| 213 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::optimizeContentsForCPUAccess(const MTL::Texture* texture, NS::UInteger slice, NS::UInteger level)
|
| 214 |
+
{
|
| 215 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(optimizeContentsForCPUAccess_slice_level_), texture, slice, level);
|
| 216 |
+
}
|
| 217 |
+
|
| 218 |
+
// method: resetCommandsInBuffer:withRange:
|
| 219 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::resetCommandsInBuffer(const MTL::IndirectCommandBuffer* buffer, NS::Range range)
|
| 220 |
+
{
|
| 221 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(resetCommandsInBuffer_withRange_), buffer, range);
|
| 222 |
+
}
|
| 223 |
+
|
| 224 |
+
// method: copyIndirectCommandBuffer:sourceRange:destination:destinationIndex:
|
| 225 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::copyIndirectCommandBuffer(const MTL::IndirectCommandBuffer* source, NS::Range sourceRange, const MTL::IndirectCommandBuffer* destination, NS::UInteger destinationIndex)
|
| 226 |
+
{
|
| 227 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(copyIndirectCommandBuffer_sourceRange_destination_destinationIndex_), source, sourceRange, destination, destinationIndex);
|
| 228 |
+
}
|
| 229 |
+
|
| 230 |
+
// method: optimizeIndirectCommandBuffer:withRange:
|
| 231 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::optimizeIndirectCommandBuffer(const MTL::IndirectCommandBuffer* indirectCommandBuffer, NS::Range range)
|
| 232 |
+
{
|
| 233 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(optimizeIndirectCommandBuffer_withRange_), indirectCommandBuffer, range);
|
| 234 |
+
}
|
| 235 |
+
|
| 236 |
+
// method: sampleCountersInBuffer:atSampleIndex:withBarrier:
|
| 237 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::sampleCountersInBuffer(const MTL::CounterSampleBuffer* sampleBuffer, NS::UInteger sampleIndex, bool barrier)
|
| 238 |
+
{
|
| 239 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(sampleCountersInBuffer_atSampleIndex_withBarrier_), sampleBuffer, sampleIndex, barrier);
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
// method: resolveCounters:inRange:destinationBuffer:destinationOffset:
|
| 243 |
+
_MTL_INLINE void MTL::BlitCommandEncoder::resolveCounters(const MTL::CounterSampleBuffer* sampleBuffer, NS::Range range, const MTL::Buffer* destinationBuffer, NS::UInteger destinationOffset)
|
| 244 |
+
{
|
| 245 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(resolveCounters_inRange_destinationBuffer_destinationOffset_), sampleBuffer, range, destinationBuffer, destinationOffset);
|
| 246 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLBlitPass.hpp
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLBlitPass.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
namespace MTL
|
| 30 |
+
{
|
| 31 |
+
class BlitPassSampleBufferAttachmentDescriptor : public NS::Copying<BlitPassSampleBufferAttachmentDescriptor>
|
| 32 |
+
{
|
| 33 |
+
public:
|
| 34 |
+
static class BlitPassSampleBufferAttachmentDescriptor* alloc();
|
| 35 |
+
|
| 36 |
+
class BlitPassSampleBufferAttachmentDescriptor* init();
|
| 37 |
+
|
| 38 |
+
class CounterSampleBuffer* sampleBuffer() const;
|
| 39 |
+
void setSampleBuffer(const class CounterSampleBuffer* sampleBuffer);
|
| 40 |
+
|
| 41 |
+
NS::UInteger startOfEncoderSampleIndex() const;
|
| 42 |
+
void setStartOfEncoderSampleIndex(NS::UInteger startOfEncoderSampleIndex);
|
| 43 |
+
|
| 44 |
+
NS::UInteger endOfEncoderSampleIndex() const;
|
| 45 |
+
void setEndOfEncoderSampleIndex(NS::UInteger endOfEncoderSampleIndex);
|
| 46 |
+
};
|
| 47 |
+
|
| 48 |
+
class BlitPassSampleBufferAttachmentDescriptorArray : public NS::Referencing<BlitPassSampleBufferAttachmentDescriptorArray>
|
| 49 |
+
{
|
| 50 |
+
public:
|
| 51 |
+
static class BlitPassSampleBufferAttachmentDescriptorArray* alloc();
|
| 52 |
+
|
| 53 |
+
class BlitPassSampleBufferAttachmentDescriptorArray* init();
|
| 54 |
+
|
| 55 |
+
class BlitPassSampleBufferAttachmentDescriptor* object(NS::UInteger attachmentIndex);
|
| 56 |
+
|
| 57 |
+
void setObject(const class BlitPassSampleBufferAttachmentDescriptor* attachment, NS::UInteger attachmentIndex);
|
| 58 |
+
};
|
| 59 |
+
|
| 60 |
+
class BlitPassDescriptor : public NS::Copying<BlitPassDescriptor>
|
| 61 |
+
{
|
| 62 |
+
public:
|
| 63 |
+
static class BlitPassDescriptor* alloc();
|
| 64 |
+
|
| 65 |
+
class BlitPassDescriptor* init();
|
| 66 |
+
|
| 67 |
+
static class BlitPassDescriptor* blitPassDescriptor();
|
| 68 |
+
|
| 69 |
+
class BlitPassSampleBufferAttachmentDescriptorArray* sampleBufferAttachments() const;
|
| 70 |
+
};
|
| 71 |
+
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
// static method: alloc
|
| 75 |
+
_MTL_INLINE MTL::BlitPassSampleBufferAttachmentDescriptor* MTL::BlitPassSampleBufferAttachmentDescriptor::alloc()
|
| 76 |
+
{
|
| 77 |
+
return NS::Object::alloc<MTL::BlitPassSampleBufferAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLBlitPassSampleBufferAttachmentDescriptor));
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
// method: init
|
| 81 |
+
_MTL_INLINE MTL::BlitPassSampleBufferAttachmentDescriptor* MTL::BlitPassSampleBufferAttachmentDescriptor::init()
|
| 82 |
+
{
|
| 83 |
+
return NS::Object::init<MTL::BlitPassSampleBufferAttachmentDescriptor>();
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
// property: sampleBuffer
|
| 87 |
+
_MTL_INLINE MTL::CounterSampleBuffer* MTL::BlitPassSampleBufferAttachmentDescriptor::sampleBuffer() const
|
| 88 |
+
{
|
| 89 |
+
return Object::sendMessage<MTL::CounterSampleBuffer*>(this, _MTL_PRIVATE_SEL(sampleBuffer));
|
| 90 |
+
}
|
| 91 |
+
|
| 92 |
+
_MTL_INLINE void MTL::BlitPassSampleBufferAttachmentDescriptor::setSampleBuffer(const MTL::CounterSampleBuffer* sampleBuffer)
|
| 93 |
+
{
|
| 94 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSampleBuffer_), sampleBuffer);
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
// property: startOfEncoderSampleIndex
|
| 98 |
+
_MTL_INLINE NS::UInteger MTL::BlitPassSampleBufferAttachmentDescriptor::startOfEncoderSampleIndex() const
|
| 99 |
+
{
|
| 100 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(startOfEncoderSampleIndex));
|
| 101 |
+
}
|
| 102 |
+
|
| 103 |
+
_MTL_INLINE void MTL::BlitPassSampleBufferAttachmentDescriptor::setStartOfEncoderSampleIndex(NS::UInteger startOfEncoderSampleIndex)
|
| 104 |
+
{
|
| 105 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStartOfEncoderSampleIndex_), startOfEncoderSampleIndex);
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
// property: endOfEncoderSampleIndex
|
| 109 |
+
_MTL_INLINE NS::UInteger MTL::BlitPassSampleBufferAttachmentDescriptor::endOfEncoderSampleIndex() const
|
| 110 |
+
{
|
| 111 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(endOfEncoderSampleIndex));
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
_MTL_INLINE void MTL::BlitPassSampleBufferAttachmentDescriptor::setEndOfEncoderSampleIndex(NS::UInteger endOfEncoderSampleIndex)
|
| 115 |
+
{
|
| 116 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setEndOfEncoderSampleIndex_), endOfEncoderSampleIndex);
|
| 117 |
+
}
|
| 118 |
+
|
| 119 |
+
// static method: alloc
|
| 120 |
+
_MTL_INLINE MTL::BlitPassSampleBufferAttachmentDescriptorArray* MTL::BlitPassSampleBufferAttachmentDescriptorArray::alloc()
|
| 121 |
+
{
|
| 122 |
+
return NS::Object::alloc<MTL::BlitPassSampleBufferAttachmentDescriptorArray>(_MTL_PRIVATE_CLS(MTLBlitPassSampleBufferAttachmentDescriptorArray));
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
// method: init
|
| 126 |
+
_MTL_INLINE MTL::BlitPassSampleBufferAttachmentDescriptorArray* MTL::BlitPassSampleBufferAttachmentDescriptorArray::init()
|
| 127 |
+
{
|
| 128 |
+
return NS::Object::init<MTL::BlitPassSampleBufferAttachmentDescriptorArray>();
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
// method: objectAtIndexedSubscript:
|
| 132 |
+
_MTL_INLINE MTL::BlitPassSampleBufferAttachmentDescriptor* MTL::BlitPassSampleBufferAttachmentDescriptorArray::object(NS::UInteger attachmentIndex)
|
| 133 |
+
{
|
| 134 |
+
return Object::sendMessage<MTL::BlitPassSampleBufferAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(objectAtIndexedSubscript_), attachmentIndex);
|
| 135 |
+
}
|
| 136 |
+
|
| 137 |
+
// method: setObject:atIndexedSubscript:
|
| 138 |
+
_MTL_INLINE void MTL::BlitPassSampleBufferAttachmentDescriptorArray::setObject(const MTL::BlitPassSampleBufferAttachmentDescriptor* attachment, NS::UInteger attachmentIndex)
|
| 139 |
+
{
|
| 140 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObject_atIndexedSubscript_), attachment, attachmentIndex);
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
// static method: alloc
|
| 144 |
+
_MTL_INLINE MTL::BlitPassDescriptor* MTL::BlitPassDescriptor::alloc()
|
| 145 |
+
{
|
| 146 |
+
return NS::Object::alloc<MTL::BlitPassDescriptor>(_MTL_PRIVATE_CLS(MTLBlitPassDescriptor));
|
| 147 |
+
}
|
| 148 |
+
|
| 149 |
+
// method: init
|
| 150 |
+
_MTL_INLINE MTL::BlitPassDescriptor* MTL::BlitPassDescriptor::init()
|
| 151 |
+
{
|
| 152 |
+
return NS::Object::init<MTL::BlitPassDescriptor>();
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
// static method: blitPassDescriptor
|
| 156 |
+
_MTL_INLINE MTL::BlitPassDescriptor* MTL::BlitPassDescriptor::blitPassDescriptor()
|
| 157 |
+
{
|
| 158 |
+
return Object::sendMessage<MTL::BlitPassDescriptor*>(_MTL_PRIVATE_CLS(MTLBlitPassDescriptor), _MTL_PRIVATE_SEL(blitPassDescriptor));
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
// property: sampleBufferAttachments
|
| 162 |
+
_MTL_INLINE MTL::BlitPassSampleBufferAttachmentDescriptorArray* MTL::BlitPassDescriptor::sampleBufferAttachments() const
|
| 163 |
+
{
|
| 164 |
+
return Object::sendMessage<MTL::BlitPassSampleBufferAttachmentDescriptorArray*>(this, _MTL_PRIVATE_SEL(sampleBufferAttachments));
|
| 165 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLBuffer.hpp
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLBuffer.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLResource.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
class Buffer : public NS::Referencing<Buffer, Resource>
|
| 34 |
+
{
|
| 35 |
+
public:
|
| 36 |
+
NS::UInteger length() const;
|
| 37 |
+
|
| 38 |
+
void* contents();
|
| 39 |
+
|
| 40 |
+
void didModifyRange(NS::Range range);
|
| 41 |
+
|
| 42 |
+
class Texture* newTexture(const class TextureDescriptor* descriptor, NS::UInteger offset, NS::UInteger bytesPerRow);
|
| 43 |
+
|
| 44 |
+
void addDebugMarker(const NS::String* marker, NS::Range range);
|
| 45 |
+
|
| 46 |
+
void removeAllDebugMarkers();
|
| 47 |
+
|
| 48 |
+
class Buffer* remoteStorageBuffer() const;
|
| 49 |
+
|
| 50 |
+
class Buffer* newRemoteBufferViewForDevice(const class Device* device);
|
| 51 |
+
|
| 52 |
+
uint64_t gpuAddress() const;
|
| 53 |
+
};
|
| 54 |
+
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
// property: length
|
| 58 |
+
_MTL_INLINE NS::UInteger MTL::Buffer::length() const
|
| 59 |
+
{
|
| 60 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(length));
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
// method: contents
|
| 64 |
+
_MTL_INLINE void* MTL::Buffer::contents()
|
| 65 |
+
{
|
| 66 |
+
return Object::sendMessage<void*>(this, _MTL_PRIVATE_SEL(contents));
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
// method: didModifyRange:
|
| 70 |
+
_MTL_INLINE void MTL::Buffer::didModifyRange(NS::Range range)
|
| 71 |
+
{
|
| 72 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(didModifyRange_), range);
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
// method: newTextureWithDescriptor:offset:bytesPerRow:
|
| 76 |
+
_MTL_INLINE MTL::Texture* MTL::Buffer::newTexture(const MTL::TextureDescriptor* descriptor, NS::UInteger offset, NS::UInteger bytesPerRow)
|
| 77 |
+
{
|
| 78 |
+
return Object::sendMessage<MTL::Texture*>(this, _MTL_PRIVATE_SEL(newTextureWithDescriptor_offset_bytesPerRow_), descriptor, offset, bytesPerRow);
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
+
// method: addDebugMarker:range:
|
| 82 |
+
_MTL_INLINE void MTL::Buffer::addDebugMarker(const NS::String* marker, NS::Range range)
|
| 83 |
+
{
|
| 84 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(addDebugMarker_range_), marker, range);
|
| 85 |
+
}
|
| 86 |
+
|
| 87 |
+
// method: removeAllDebugMarkers
|
| 88 |
+
_MTL_INLINE void MTL::Buffer::removeAllDebugMarkers()
|
| 89 |
+
{
|
| 90 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(removeAllDebugMarkers));
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
// property: remoteStorageBuffer
|
| 94 |
+
_MTL_INLINE MTL::Buffer* MTL::Buffer::remoteStorageBuffer() const
|
| 95 |
+
{
|
| 96 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(remoteStorageBuffer));
|
| 97 |
+
}
|
| 98 |
+
|
| 99 |
+
// method: newRemoteBufferViewForDevice:
|
| 100 |
+
_MTL_INLINE MTL::Buffer* MTL::Buffer::newRemoteBufferViewForDevice(const MTL::Device* device)
|
| 101 |
+
{
|
| 102 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(newRemoteBufferViewForDevice_), device);
|
| 103 |
+
}
|
| 104 |
+
|
| 105 |
+
// property: gpuAddress
|
| 106 |
+
_MTL_INLINE uint64_t MTL::Buffer::gpuAddress() const
|
| 107 |
+
{
|
| 108 |
+
return Object::sendMessage<uint64_t>(this, _MTL_PRIVATE_SEL(gpuAddress));
|
| 109 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLCaptureManager.hpp
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLCaptureManager.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLCaptureManager.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
_MTL_ENUM(NS::Integer, CaptureError) {
|
| 34 |
+
CaptureErrorNotSupported = 1,
|
| 35 |
+
CaptureErrorAlreadyCapturing = 2,
|
| 36 |
+
CaptureErrorInvalidDescriptor = 3,
|
| 37 |
+
};
|
| 38 |
+
|
| 39 |
+
_MTL_ENUM(NS::Integer, CaptureDestination) {
|
| 40 |
+
CaptureDestinationDeveloperTools = 1,
|
| 41 |
+
CaptureDestinationGPUTraceDocument = 2,
|
| 42 |
+
};
|
| 43 |
+
|
| 44 |
+
class CaptureDescriptor : public NS::Copying<CaptureDescriptor>
|
| 45 |
+
{
|
| 46 |
+
public:
|
| 47 |
+
static class CaptureDescriptor* alloc();
|
| 48 |
+
|
| 49 |
+
class CaptureDescriptor* init();
|
| 50 |
+
|
| 51 |
+
id captureObject() const;
|
| 52 |
+
void setCaptureObject(id captureObject);
|
| 53 |
+
|
| 54 |
+
MTL::CaptureDestination destination() const;
|
| 55 |
+
void setDestination(MTL::CaptureDestination destination);
|
| 56 |
+
|
| 57 |
+
NS::URL* outputURL() const;
|
| 58 |
+
void setOutputURL(const NS::URL* outputURL);
|
| 59 |
+
};
|
| 60 |
+
|
| 61 |
+
class CaptureManager : public NS::Referencing<CaptureManager>
|
| 62 |
+
{
|
| 63 |
+
public:
|
| 64 |
+
static class CaptureManager* alloc();
|
| 65 |
+
|
| 66 |
+
static class CaptureManager* sharedCaptureManager();
|
| 67 |
+
|
| 68 |
+
MTL::CaptureManager* init();
|
| 69 |
+
|
| 70 |
+
class CaptureScope* newCaptureScope(const class Device* device);
|
| 71 |
+
|
| 72 |
+
class CaptureScope* newCaptureScope(const class CommandQueue* commandQueue);
|
| 73 |
+
|
| 74 |
+
bool supportsDestination(MTL::CaptureDestination destination);
|
| 75 |
+
|
| 76 |
+
bool startCapture(const class CaptureDescriptor* descriptor, NS::Error** error);
|
| 77 |
+
|
| 78 |
+
void startCapture(const class Device* device);
|
| 79 |
+
|
| 80 |
+
void startCapture(const class CommandQueue* commandQueue);
|
| 81 |
+
|
| 82 |
+
void startCapture(const class CaptureScope* captureScope);
|
| 83 |
+
|
| 84 |
+
void stopCapture();
|
| 85 |
+
|
| 86 |
+
class CaptureScope* defaultCaptureScope() const;
|
| 87 |
+
void setDefaultCaptureScope(const class CaptureScope* defaultCaptureScope);
|
| 88 |
+
|
| 89 |
+
bool isCapturing() const;
|
| 90 |
+
};
|
| 91 |
+
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
// static method: alloc
|
| 95 |
+
_MTL_INLINE MTL::CaptureDescriptor* MTL::CaptureDescriptor::alloc()
|
| 96 |
+
{
|
| 97 |
+
return NS::Object::alloc<MTL::CaptureDescriptor>(_MTL_PRIVATE_CLS(MTLCaptureDescriptor));
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
// method: init
|
| 101 |
+
_MTL_INLINE MTL::CaptureDescriptor* MTL::CaptureDescriptor::init()
|
| 102 |
+
{
|
| 103 |
+
return NS::Object::init<MTL::CaptureDescriptor>();
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
// property: captureObject
|
| 107 |
+
_MTL_INLINE id MTL::CaptureDescriptor::captureObject() const
|
| 108 |
+
{
|
| 109 |
+
return Object::sendMessage<id>(this, _MTL_PRIVATE_SEL(captureObject));
|
| 110 |
+
}
|
| 111 |
+
|
| 112 |
+
_MTL_INLINE void MTL::CaptureDescriptor::setCaptureObject(id captureObject)
|
| 113 |
+
{
|
| 114 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCaptureObject_), captureObject);
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
+
// property: destination
|
| 118 |
+
_MTL_INLINE MTL::CaptureDestination MTL::CaptureDescriptor::destination() const
|
| 119 |
+
{
|
| 120 |
+
return Object::sendMessage<MTL::CaptureDestination>(this, _MTL_PRIVATE_SEL(destination));
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
_MTL_INLINE void MTL::CaptureDescriptor::setDestination(MTL::CaptureDestination destination)
|
| 124 |
+
{
|
| 125 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDestination_), destination);
|
| 126 |
+
}
|
| 127 |
+
|
| 128 |
+
// property: outputURL
|
| 129 |
+
_MTL_INLINE NS::URL* MTL::CaptureDescriptor::outputURL() const
|
| 130 |
+
{
|
| 131 |
+
return Object::sendMessage<NS::URL*>(this, _MTL_PRIVATE_SEL(outputURL));
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
+
_MTL_INLINE void MTL::CaptureDescriptor::setOutputURL(const NS::URL* outputURL)
|
| 135 |
+
{
|
| 136 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOutputURL_), outputURL);
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
// static method: alloc
|
| 140 |
+
_MTL_INLINE MTL::CaptureManager* MTL::CaptureManager::alloc()
|
| 141 |
+
{
|
| 142 |
+
return NS::Object::alloc<MTL::CaptureManager>(_MTL_PRIVATE_CLS(MTLCaptureManager));
|
| 143 |
+
}
|
| 144 |
+
|
| 145 |
+
// static method: sharedCaptureManager
|
| 146 |
+
_MTL_INLINE MTL::CaptureManager* MTL::CaptureManager::sharedCaptureManager()
|
| 147 |
+
{
|
| 148 |
+
return Object::sendMessage<MTL::CaptureManager*>(_MTL_PRIVATE_CLS(MTLCaptureManager), _MTL_PRIVATE_SEL(sharedCaptureManager));
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
// method: init
|
| 152 |
+
_MTL_INLINE MTL::CaptureManager* MTL::CaptureManager::init()
|
| 153 |
+
{
|
| 154 |
+
return NS::Object::init<MTL::CaptureManager>();
|
| 155 |
+
}
|
| 156 |
+
|
| 157 |
+
// method: newCaptureScopeWithDevice:
|
| 158 |
+
_MTL_INLINE MTL::CaptureScope* MTL::CaptureManager::newCaptureScope(const MTL::Device* device)
|
| 159 |
+
{
|
| 160 |
+
return Object::sendMessage<MTL::CaptureScope*>(this, _MTL_PRIVATE_SEL(newCaptureScopeWithDevice_), device);
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
+
// method: newCaptureScopeWithCommandQueue:
|
| 164 |
+
_MTL_INLINE MTL::CaptureScope* MTL::CaptureManager::newCaptureScope(const MTL::CommandQueue* commandQueue)
|
| 165 |
+
{
|
| 166 |
+
return Object::sendMessage<MTL::CaptureScope*>(this, _MTL_PRIVATE_SEL(newCaptureScopeWithCommandQueue_), commandQueue);
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
// method: supportsDestination:
|
| 170 |
+
_MTL_INLINE bool MTL::CaptureManager::supportsDestination(MTL::CaptureDestination destination)
|
| 171 |
+
{
|
| 172 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsDestination_), destination);
|
| 173 |
+
}
|
| 174 |
+
|
| 175 |
+
// method: startCaptureWithDescriptor:error:
|
| 176 |
+
_MTL_INLINE bool MTL::CaptureManager::startCapture(const MTL::CaptureDescriptor* descriptor, NS::Error** error)
|
| 177 |
+
{
|
| 178 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(startCaptureWithDescriptor_error_), descriptor, error);
|
| 179 |
+
}
|
| 180 |
+
|
| 181 |
+
// method: startCaptureWithDevice:
|
| 182 |
+
_MTL_INLINE void MTL::CaptureManager::startCapture(const MTL::Device* device)
|
| 183 |
+
{
|
| 184 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(startCaptureWithDevice_), device);
|
| 185 |
+
}
|
| 186 |
+
|
| 187 |
+
// method: startCaptureWithCommandQueue:
|
| 188 |
+
_MTL_INLINE void MTL::CaptureManager::startCapture(const MTL::CommandQueue* commandQueue)
|
| 189 |
+
{
|
| 190 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(startCaptureWithCommandQueue_), commandQueue);
|
| 191 |
+
}
|
| 192 |
+
|
| 193 |
+
// method: startCaptureWithScope:
|
| 194 |
+
_MTL_INLINE void MTL::CaptureManager::startCapture(const MTL::CaptureScope* captureScope)
|
| 195 |
+
{
|
| 196 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(startCaptureWithScope_), captureScope);
|
| 197 |
+
}
|
| 198 |
+
|
| 199 |
+
// method: stopCapture
|
| 200 |
+
_MTL_INLINE void MTL::CaptureManager::stopCapture()
|
| 201 |
+
{
|
| 202 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(stopCapture));
|
| 203 |
+
}
|
| 204 |
+
|
| 205 |
+
// property: defaultCaptureScope
|
| 206 |
+
_MTL_INLINE MTL::CaptureScope* MTL::CaptureManager::defaultCaptureScope() const
|
| 207 |
+
{
|
| 208 |
+
return Object::sendMessage<MTL::CaptureScope*>(this, _MTL_PRIVATE_SEL(defaultCaptureScope));
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
_MTL_INLINE void MTL::CaptureManager::setDefaultCaptureScope(const MTL::CaptureScope* defaultCaptureScope)
|
| 212 |
+
{
|
| 213 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDefaultCaptureScope_), defaultCaptureScope);
|
| 214 |
+
}
|
| 215 |
+
|
| 216 |
+
// property: isCapturing
|
| 217 |
+
_MTL_INLINE bool MTL::CaptureManager::isCapturing() const
|
| 218 |
+
{
|
| 219 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isCapturing));
|
| 220 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLCaptureScope.hpp
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLCaptureScope.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 24 |
+
|
| 25 |
+
#include "MTLDefines.hpp"
|
| 26 |
+
#include "MTLPrivate.hpp"
|
| 27 |
+
|
| 28 |
+
#include "../Foundation/NSObject.hpp"
|
| 29 |
+
#include "../Foundation/NSString.hpp"
|
| 30 |
+
|
| 31 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 32 |
+
|
| 33 |
+
namespace MTL
|
| 34 |
+
{
|
| 35 |
+
class CaptureScope : public NS::Referencing<CaptureScope>
|
| 36 |
+
{
|
| 37 |
+
public:
|
| 38 |
+
class Device* device() const;
|
| 39 |
+
|
| 40 |
+
NS::String* label() const;
|
| 41 |
+
void setLabel(const NS::String* pLabel);
|
| 42 |
+
|
| 43 |
+
class CommandQueue* commandQueue() const;
|
| 44 |
+
|
| 45 |
+
void beginScope();
|
| 46 |
+
void endScope();
|
| 47 |
+
};
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 51 |
+
|
| 52 |
+
_MTL_INLINE MTL::Device* MTL::CaptureScope::device() const
|
| 53 |
+
{
|
| 54 |
+
return Object::sendMessage<Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 58 |
+
|
| 59 |
+
_MTL_INLINE NS::String* MTL::CaptureScope::label() const
|
| 60 |
+
{
|
| 61 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 65 |
+
|
| 66 |
+
_MTL_INLINE void MTL::CaptureScope::setLabel(const NS::String* pLabel)
|
| 67 |
+
{
|
| 68 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), pLabel);
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 72 |
+
|
| 73 |
+
_MTL_INLINE MTL::CommandQueue* MTL::CaptureScope::commandQueue() const
|
| 74 |
+
{
|
| 75 |
+
return Object::sendMessage<CommandQueue*>(this, _MTL_PRIVATE_SEL(commandQueue));
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 79 |
+
|
| 80 |
+
_MTL_INLINE void MTL::CaptureScope::beginScope()
|
| 81 |
+
{
|
| 82 |
+
return Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(beginScope));
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 86 |
+
|
| 87 |
+
_MTL_INLINE void MTL::CaptureScope::endScope()
|
| 88 |
+
{
|
| 89 |
+
return Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(endScope));
|
| 90 |
+
}
|
| 91 |
+
|
| 92 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLCommandBuffer.hpp
ADDED
|
@@ -0,0 +1,474 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLCommandBuffer.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLCommandBuffer.hpp"
|
| 30 |
+
#include <functional>
|
| 31 |
+
|
| 32 |
+
namespace MTL
|
| 33 |
+
{
|
| 34 |
+
_MTL_ENUM(NS::UInteger, CommandBufferStatus) {
|
| 35 |
+
CommandBufferStatusNotEnqueued = 0,
|
| 36 |
+
CommandBufferStatusEnqueued = 1,
|
| 37 |
+
CommandBufferStatusCommitted = 2,
|
| 38 |
+
CommandBufferStatusScheduled = 3,
|
| 39 |
+
CommandBufferStatusCompleted = 4,
|
| 40 |
+
CommandBufferStatusError = 5,
|
| 41 |
+
};
|
| 42 |
+
|
| 43 |
+
_MTL_ENUM(NS::UInteger, CommandBufferError) {
|
| 44 |
+
CommandBufferErrorNone = 0,
|
| 45 |
+
CommandBufferErrorInternal = 1,
|
| 46 |
+
CommandBufferErrorTimeout = 2,
|
| 47 |
+
CommandBufferErrorPageFault = 3,
|
| 48 |
+
CommandBufferErrorAccessRevoked = 4,
|
| 49 |
+
CommandBufferErrorBlacklisted = 4,
|
| 50 |
+
CommandBufferErrorNotPermitted = 7,
|
| 51 |
+
CommandBufferErrorOutOfMemory = 8,
|
| 52 |
+
CommandBufferErrorInvalidResource = 9,
|
| 53 |
+
CommandBufferErrorMemoryless = 10,
|
| 54 |
+
CommandBufferErrorDeviceRemoved = 11,
|
| 55 |
+
CommandBufferErrorStackOverflow = 12,
|
| 56 |
+
};
|
| 57 |
+
|
| 58 |
+
_MTL_OPTIONS(NS::UInteger, CommandBufferErrorOption) {
|
| 59 |
+
CommandBufferErrorOptionNone = 0,
|
| 60 |
+
CommandBufferErrorOptionEncoderExecutionStatus = 1,
|
| 61 |
+
};
|
| 62 |
+
|
| 63 |
+
_MTL_ENUM(NS::Integer, CommandEncoderErrorState) {
|
| 64 |
+
CommandEncoderErrorStateUnknown = 0,
|
| 65 |
+
CommandEncoderErrorStateCompleted = 1,
|
| 66 |
+
CommandEncoderErrorStateAffected = 2,
|
| 67 |
+
CommandEncoderErrorStatePending = 3,
|
| 68 |
+
CommandEncoderErrorStateFaulted = 4,
|
| 69 |
+
};
|
| 70 |
+
|
| 71 |
+
class CommandBufferDescriptor : public NS::Copying<CommandBufferDescriptor>
|
| 72 |
+
{
|
| 73 |
+
public:
|
| 74 |
+
static class CommandBufferDescriptor* alloc();
|
| 75 |
+
|
| 76 |
+
class CommandBufferDescriptor* init();
|
| 77 |
+
|
| 78 |
+
bool retainedReferences() const;
|
| 79 |
+
void setRetainedReferences(bool retainedReferences);
|
| 80 |
+
|
| 81 |
+
MTL::CommandBufferErrorOption errorOptions() const;
|
| 82 |
+
void setErrorOptions(MTL::CommandBufferErrorOption errorOptions);
|
| 83 |
+
};
|
| 84 |
+
|
| 85 |
+
class CommandBufferEncoderInfo : public NS::Referencing<CommandBufferEncoderInfo>
|
| 86 |
+
{
|
| 87 |
+
public:
|
| 88 |
+
NS::String* label() const;
|
| 89 |
+
|
| 90 |
+
NS::Array* debugSignposts() const;
|
| 91 |
+
|
| 92 |
+
MTL::CommandEncoderErrorState errorState() const;
|
| 93 |
+
};
|
| 94 |
+
|
| 95 |
+
_MTL_ENUM(NS::UInteger, DispatchType) {
|
| 96 |
+
DispatchTypeSerial = 0,
|
| 97 |
+
DispatchTypeConcurrent = 1,
|
| 98 |
+
};
|
| 99 |
+
|
| 100 |
+
class CommandBuffer;
|
| 101 |
+
|
| 102 |
+
using CommandBufferHandler = void (^)(CommandBuffer*);
|
| 103 |
+
|
| 104 |
+
using HandlerFunction = std::function<void(CommandBuffer*)>;
|
| 105 |
+
|
| 106 |
+
class CommandBuffer : public NS::Referencing<CommandBuffer>
|
| 107 |
+
{
|
| 108 |
+
public:
|
| 109 |
+
void addScheduledHandler(const HandlerFunction& function);
|
| 110 |
+
|
| 111 |
+
void addCompletedHandler(const HandlerFunction& function);
|
| 112 |
+
|
| 113 |
+
class Device* device() const;
|
| 114 |
+
|
| 115 |
+
class CommandQueue* commandQueue() const;
|
| 116 |
+
|
| 117 |
+
bool retainedReferences() const;
|
| 118 |
+
|
| 119 |
+
MTL::CommandBufferErrorOption errorOptions() const;
|
| 120 |
+
|
| 121 |
+
NS::String* label() const;
|
| 122 |
+
void setLabel(const NS::String* label);
|
| 123 |
+
|
| 124 |
+
CFTimeInterval kernelStartTime() const;
|
| 125 |
+
|
| 126 |
+
CFTimeInterval kernelEndTime() const;
|
| 127 |
+
|
| 128 |
+
class LogContainer* logs() const;
|
| 129 |
+
|
| 130 |
+
CFTimeInterval GPUStartTime() const;
|
| 131 |
+
|
| 132 |
+
CFTimeInterval GPUEndTime() const;
|
| 133 |
+
|
| 134 |
+
void enqueue();
|
| 135 |
+
|
| 136 |
+
void commit();
|
| 137 |
+
|
| 138 |
+
void addScheduledHandler(const MTL::CommandBufferHandler block);
|
| 139 |
+
|
| 140 |
+
void presentDrawable(const class Drawable* drawable);
|
| 141 |
+
|
| 142 |
+
void presentDrawableAtTime(const class Drawable* drawable, CFTimeInterval presentationTime);
|
| 143 |
+
|
| 144 |
+
void presentDrawableAfterMinimumDuration(const class Drawable* drawable, CFTimeInterval duration);
|
| 145 |
+
|
| 146 |
+
void waitUntilScheduled();
|
| 147 |
+
|
| 148 |
+
void addCompletedHandler(const MTL::CommandBufferHandler block);
|
| 149 |
+
|
| 150 |
+
void waitUntilCompleted();
|
| 151 |
+
|
| 152 |
+
MTL::CommandBufferStatus status() const;
|
| 153 |
+
|
| 154 |
+
NS::Error* error() const;
|
| 155 |
+
|
| 156 |
+
class BlitCommandEncoder* blitCommandEncoder();
|
| 157 |
+
|
| 158 |
+
class RenderCommandEncoder* renderCommandEncoder(const class RenderPassDescriptor* renderPassDescriptor);
|
| 159 |
+
|
| 160 |
+
class ComputeCommandEncoder* computeCommandEncoder(const class ComputePassDescriptor* computePassDescriptor);
|
| 161 |
+
|
| 162 |
+
class BlitCommandEncoder* blitCommandEncoder(const class BlitPassDescriptor* blitPassDescriptor);
|
| 163 |
+
|
| 164 |
+
class ComputeCommandEncoder* computeCommandEncoder();
|
| 165 |
+
|
| 166 |
+
class ComputeCommandEncoder* computeCommandEncoder(MTL::DispatchType dispatchType);
|
| 167 |
+
|
| 168 |
+
void encodeWait(const class Event* event, uint64_t value);
|
| 169 |
+
|
| 170 |
+
void encodeSignalEvent(const class Event* event, uint64_t value);
|
| 171 |
+
|
| 172 |
+
class ParallelRenderCommandEncoder* parallelRenderCommandEncoder(const class RenderPassDescriptor* renderPassDescriptor);
|
| 173 |
+
|
| 174 |
+
class ResourceStateCommandEncoder* resourceStateCommandEncoder();
|
| 175 |
+
|
| 176 |
+
class ResourceStateCommandEncoder* resourceStateCommandEncoder(const class ResourceStatePassDescriptor* resourceStatePassDescriptor);
|
| 177 |
+
|
| 178 |
+
class AccelerationStructureCommandEncoder* accelerationStructureCommandEncoder();
|
| 179 |
+
|
| 180 |
+
class AccelerationStructureCommandEncoder* accelerationStructureCommandEncoder(const class AccelerationStructurePassDescriptor* descriptor);
|
| 181 |
+
|
| 182 |
+
void pushDebugGroup(const NS::String* string);
|
| 183 |
+
|
| 184 |
+
void popDebugGroup();
|
| 185 |
+
};
|
| 186 |
+
|
| 187 |
+
}
|
| 188 |
+
|
| 189 |
+
// static method: alloc
|
| 190 |
+
_MTL_INLINE MTL::CommandBufferDescriptor* MTL::CommandBufferDescriptor::alloc()
|
| 191 |
+
{
|
| 192 |
+
return NS::Object::alloc<MTL::CommandBufferDescriptor>(_MTL_PRIVATE_CLS(MTLCommandBufferDescriptor));
|
| 193 |
+
}
|
| 194 |
+
|
| 195 |
+
// method: init
|
| 196 |
+
_MTL_INLINE MTL::CommandBufferDescriptor* MTL::CommandBufferDescriptor::init()
|
| 197 |
+
{
|
| 198 |
+
return NS::Object::init<MTL::CommandBufferDescriptor>();
|
| 199 |
+
}
|
| 200 |
+
|
| 201 |
+
// property: retainedReferences
|
| 202 |
+
_MTL_INLINE bool MTL::CommandBufferDescriptor::retainedReferences() const
|
| 203 |
+
{
|
| 204 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(retainedReferences));
|
| 205 |
+
}
|
| 206 |
+
|
| 207 |
+
_MTL_INLINE void MTL::CommandBufferDescriptor::setRetainedReferences(bool retainedReferences)
|
| 208 |
+
{
|
| 209 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRetainedReferences_), retainedReferences);
|
| 210 |
+
}
|
| 211 |
+
|
| 212 |
+
// property: errorOptions
|
| 213 |
+
_MTL_INLINE MTL::CommandBufferErrorOption MTL::CommandBufferDescriptor::errorOptions() const
|
| 214 |
+
{
|
| 215 |
+
return Object::sendMessage<MTL::CommandBufferErrorOption>(this, _MTL_PRIVATE_SEL(errorOptions));
|
| 216 |
+
}
|
| 217 |
+
|
| 218 |
+
_MTL_INLINE void MTL::CommandBufferDescriptor::setErrorOptions(MTL::CommandBufferErrorOption errorOptions)
|
| 219 |
+
{
|
| 220 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setErrorOptions_), errorOptions);
|
| 221 |
+
}
|
| 222 |
+
|
| 223 |
+
// property: label
|
| 224 |
+
_MTL_INLINE NS::String* MTL::CommandBufferEncoderInfo::label() const
|
| 225 |
+
{
|
| 226 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 227 |
+
}
|
| 228 |
+
|
| 229 |
+
// property: debugSignposts
|
| 230 |
+
_MTL_INLINE NS::Array* MTL::CommandBufferEncoderInfo::debugSignposts() const
|
| 231 |
+
{
|
| 232 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(debugSignposts));
|
| 233 |
+
}
|
| 234 |
+
|
| 235 |
+
// property: errorState
|
| 236 |
+
_MTL_INLINE MTL::CommandEncoderErrorState MTL::CommandBufferEncoderInfo::errorState() const
|
| 237 |
+
{
|
| 238 |
+
return Object::sendMessage<MTL::CommandEncoderErrorState>(this, _MTL_PRIVATE_SEL(errorState));
|
| 239 |
+
}
|
| 240 |
+
|
| 241 |
+
_MTL_INLINE void MTL::CommandBuffer::addScheduledHandler(const HandlerFunction& function)
|
| 242 |
+
{
|
| 243 |
+
__block HandlerFunction blockFunction = function;
|
| 244 |
+
|
| 245 |
+
addScheduledHandler(^(MTL::CommandBuffer* pCommandBuffer) { blockFunction(pCommandBuffer); });
|
| 246 |
+
}
|
| 247 |
+
|
| 248 |
+
_MTL_INLINE void MTL::CommandBuffer::addCompletedHandler(const HandlerFunction& function)
|
| 249 |
+
{
|
| 250 |
+
__block HandlerFunction blockFunction = function;
|
| 251 |
+
|
| 252 |
+
addCompletedHandler(^(MTL::CommandBuffer* pCommandBuffer) { blockFunction(pCommandBuffer); });
|
| 253 |
+
}
|
| 254 |
+
|
| 255 |
+
// property: device
|
| 256 |
+
_MTL_INLINE MTL::Device* MTL::CommandBuffer::device() const
|
| 257 |
+
{
|
| 258 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 259 |
+
}
|
| 260 |
+
|
| 261 |
+
// property: commandQueue
|
| 262 |
+
_MTL_INLINE MTL::CommandQueue* MTL::CommandBuffer::commandQueue() const
|
| 263 |
+
{
|
| 264 |
+
return Object::sendMessage<MTL::CommandQueue*>(this, _MTL_PRIVATE_SEL(commandQueue));
|
| 265 |
+
}
|
| 266 |
+
|
| 267 |
+
// property: retainedReferences
|
| 268 |
+
_MTL_INLINE bool MTL::CommandBuffer::retainedReferences() const
|
| 269 |
+
{
|
| 270 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(retainedReferences));
|
| 271 |
+
}
|
| 272 |
+
|
| 273 |
+
// property: errorOptions
|
| 274 |
+
_MTL_INLINE MTL::CommandBufferErrorOption MTL::CommandBuffer::errorOptions() const
|
| 275 |
+
{
|
| 276 |
+
return Object::sendMessage<MTL::CommandBufferErrorOption>(this, _MTL_PRIVATE_SEL(errorOptions));
|
| 277 |
+
}
|
| 278 |
+
|
| 279 |
+
// property: label
|
| 280 |
+
_MTL_INLINE NS::String* MTL::CommandBuffer::label() const
|
| 281 |
+
{
|
| 282 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 283 |
+
}
|
| 284 |
+
|
| 285 |
+
_MTL_INLINE void MTL::CommandBuffer::setLabel(const NS::String* label)
|
| 286 |
+
{
|
| 287 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 288 |
+
}
|
| 289 |
+
|
| 290 |
+
// property: kernelStartTime
|
| 291 |
+
_MTL_INLINE CFTimeInterval MTL::CommandBuffer::kernelStartTime() const
|
| 292 |
+
{
|
| 293 |
+
return Object::sendMessage<CFTimeInterval>(this, _MTL_PRIVATE_SEL(kernelStartTime));
|
| 294 |
+
}
|
| 295 |
+
|
| 296 |
+
// property: kernelEndTime
|
| 297 |
+
_MTL_INLINE CFTimeInterval MTL::CommandBuffer::kernelEndTime() const
|
| 298 |
+
{
|
| 299 |
+
return Object::sendMessage<CFTimeInterval>(this, _MTL_PRIVATE_SEL(kernelEndTime));
|
| 300 |
+
}
|
| 301 |
+
|
| 302 |
+
// property: logs
|
| 303 |
+
_MTL_INLINE MTL::LogContainer* MTL::CommandBuffer::logs() const
|
| 304 |
+
{
|
| 305 |
+
return Object::sendMessage<MTL::LogContainer*>(this, _MTL_PRIVATE_SEL(logs));
|
| 306 |
+
}
|
| 307 |
+
|
| 308 |
+
// property: GPUStartTime
|
| 309 |
+
_MTL_INLINE CFTimeInterval MTL::CommandBuffer::GPUStartTime() const
|
| 310 |
+
{
|
| 311 |
+
return Object::sendMessage<CFTimeInterval>(this, _MTL_PRIVATE_SEL(GPUStartTime));
|
| 312 |
+
}
|
| 313 |
+
|
| 314 |
+
// property: GPUEndTime
|
| 315 |
+
_MTL_INLINE CFTimeInterval MTL::CommandBuffer::GPUEndTime() const
|
| 316 |
+
{
|
| 317 |
+
return Object::sendMessage<CFTimeInterval>(this, _MTL_PRIVATE_SEL(GPUEndTime));
|
| 318 |
+
}
|
| 319 |
+
|
| 320 |
+
// method: enqueue
|
| 321 |
+
_MTL_INLINE void MTL::CommandBuffer::enqueue()
|
| 322 |
+
{
|
| 323 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(enqueue));
|
| 324 |
+
}
|
| 325 |
+
|
| 326 |
+
// method: commit
|
| 327 |
+
_MTL_INLINE void MTL::CommandBuffer::commit()
|
| 328 |
+
{
|
| 329 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(commit));
|
| 330 |
+
}
|
| 331 |
+
|
| 332 |
+
// method: addScheduledHandler:
|
| 333 |
+
_MTL_INLINE void MTL::CommandBuffer::addScheduledHandler(const MTL::CommandBufferHandler block)
|
| 334 |
+
{
|
| 335 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(addScheduledHandler_), block);
|
| 336 |
+
}
|
| 337 |
+
|
| 338 |
+
// method: presentDrawable:
|
| 339 |
+
_MTL_INLINE void MTL::CommandBuffer::presentDrawable(const MTL::Drawable* drawable)
|
| 340 |
+
{
|
| 341 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(presentDrawable_), drawable);
|
| 342 |
+
}
|
| 343 |
+
|
| 344 |
+
// method: presentDrawable:atTime:
|
| 345 |
+
_MTL_INLINE void MTL::CommandBuffer::presentDrawableAtTime(const MTL::Drawable* drawable, CFTimeInterval presentationTime)
|
| 346 |
+
{
|
| 347 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(presentDrawable_atTime_), drawable, presentationTime);
|
| 348 |
+
}
|
| 349 |
+
|
| 350 |
+
// method: presentDrawable:afterMinimumDuration:
|
| 351 |
+
_MTL_INLINE void MTL::CommandBuffer::presentDrawableAfterMinimumDuration(const MTL::Drawable* drawable, CFTimeInterval duration)
|
| 352 |
+
{
|
| 353 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(presentDrawable_afterMinimumDuration_), drawable, duration);
|
| 354 |
+
}
|
| 355 |
+
|
| 356 |
+
// method: waitUntilScheduled
|
| 357 |
+
_MTL_INLINE void MTL::CommandBuffer::waitUntilScheduled()
|
| 358 |
+
{
|
| 359 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(waitUntilScheduled));
|
| 360 |
+
}
|
| 361 |
+
|
| 362 |
+
// method: addCompletedHandler:
|
| 363 |
+
_MTL_INLINE void MTL::CommandBuffer::addCompletedHandler(const MTL::CommandBufferHandler block)
|
| 364 |
+
{
|
| 365 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(addCompletedHandler_), block);
|
| 366 |
+
}
|
| 367 |
+
|
| 368 |
+
// method: waitUntilCompleted
|
| 369 |
+
_MTL_INLINE void MTL::CommandBuffer::waitUntilCompleted()
|
| 370 |
+
{
|
| 371 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(waitUntilCompleted));
|
| 372 |
+
}
|
| 373 |
+
|
| 374 |
+
// property: status
|
| 375 |
+
_MTL_INLINE MTL::CommandBufferStatus MTL::CommandBuffer::status() const
|
| 376 |
+
{
|
| 377 |
+
return Object::sendMessage<MTL::CommandBufferStatus>(this, _MTL_PRIVATE_SEL(status));
|
| 378 |
+
}
|
| 379 |
+
|
| 380 |
+
// property: error
|
| 381 |
+
_MTL_INLINE NS::Error* MTL::CommandBuffer::error() const
|
| 382 |
+
{
|
| 383 |
+
return Object::sendMessage<NS::Error*>(this, _MTL_PRIVATE_SEL(error));
|
| 384 |
+
}
|
| 385 |
+
|
| 386 |
+
// method: blitCommandEncoder
|
| 387 |
+
_MTL_INLINE MTL::BlitCommandEncoder* MTL::CommandBuffer::blitCommandEncoder()
|
| 388 |
+
{
|
| 389 |
+
return Object::sendMessage<MTL::BlitCommandEncoder*>(this, _MTL_PRIVATE_SEL(blitCommandEncoder));
|
| 390 |
+
}
|
| 391 |
+
|
| 392 |
+
// method: renderCommandEncoderWithDescriptor:
|
| 393 |
+
_MTL_INLINE MTL::RenderCommandEncoder* MTL::CommandBuffer::renderCommandEncoder(const MTL::RenderPassDescriptor* renderPassDescriptor)
|
| 394 |
+
{
|
| 395 |
+
return Object::sendMessage<MTL::RenderCommandEncoder*>(this, _MTL_PRIVATE_SEL(renderCommandEncoderWithDescriptor_), renderPassDescriptor);
|
| 396 |
+
}
|
| 397 |
+
|
| 398 |
+
// method: computeCommandEncoderWithDescriptor:
|
| 399 |
+
_MTL_INLINE MTL::ComputeCommandEncoder* MTL::CommandBuffer::computeCommandEncoder(const MTL::ComputePassDescriptor* computePassDescriptor)
|
| 400 |
+
{
|
| 401 |
+
return Object::sendMessage<MTL::ComputeCommandEncoder*>(this, _MTL_PRIVATE_SEL(computeCommandEncoderWithDescriptor_), computePassDescriptor);
|
| 402 |
+
}
|
| 403 |
+
|
| 404 |
+
// method: blitCommandEncoderWithDescriptor:
|
| 405 |
+
_MTL_INLINE MTL::BlitCommandEncoder* MTL::CommandBuffer::blitCommandEncoder(const MTL::BlitPassDescriptor* blitPassDescriptor)
|
| 406 |
+
{
|
| 407 |
+
return Object::sendMessage<MTL::BlitCommandEncoder*>(this, _MTL_PRIVATE_SEL(blitCommandEncoderWithDescriptor_), blitPassDescriptor);
|
| 408 |
+
}
|
| 409 |
+
|
| 410 |
+
// method: computeCommandEncoder
|
| 411 |
+
_MTL_INLINE MTL::ComputeCommandEncoder* MTL::CommandBuffer::computeCommandEncoder()
|
| 412 |
+
{
|
| 413 |
+
return Object::sendMessage<MTL::ComputeCommandEncoder*>(this, _MTL_PRIVATE_SEL(computeCommandEncoder));
|
| 414 |
+
}
|
| 415 |
+
|
| 416 |
+
// method: computeCommandEncoderWithDispatchType:
|
| 417 |
+
_MTL_INLINE MTL::ComputeCommandEncoder* MTL::CommandBuffer::computeCommandEncoder(MTL::DispatchType dispatchType)
|
| 418 |
+
{
|
| 419 |
+
return Object::sendMessage<MTL::ComputeCommandEncoder*>(this, _MTL_PRIVATE_SEL(computeCommandEncoderWithDispatchType_), dispatchType);
|
| 420 |
+
}
|
| 421 |
+
|
| 422 |
+
// method: encodeWaitForEvent:value:
|
| 423 |
+
_MTL_INLINE void MTL::CommandBuffer::encodeWait(const MTL::Event* event, uint64_t value)
|
| 424 |
+
{
|
| 425 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(encodeWaitForEvent_value_), event, value);
|
| 426 |
+
}
|
| 427 |
+
|
| 428 |
+
// method: encodeSignalEvent:value:
|
| 429 |
+
_MTL_INLINE void MTL::CommandBuffer::encodeSignalEvent(const MTL::Event* event, uint64_t value)
|
| 430 |
+
{
|
| 431 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(encodeSignalEvent_value_), event, value);
|
| 432 |
+
}
|
| 433 |
+
|
| 434 |
+
// method: parallelRenderCommandEncoderWithDescriptor:
|
| 435 |
+
_MTL_INLINE MTL::ParallelRenderCommandEncoder* MTL::CommandBuffer::parallelRenderCommandEncoder(const MTL::RenderPassDescriptor* renderPassDescriptor)
|
| 436 |
+
{
|
| 437 |
+
return Object::sendMessage<MTL::ParallelRenderCommandEncoder*>(this, _MTL_PRIVATE_SEL(parallelRenderCommandEncoderWithDescriptor_), renderPassDescriptor);
|
| 438 |
+
}
|
| 439 |
+
|
| 440 |
+
// method: resourceStateCommandEncoder
|
| 441 |
+
_MTL_INLINE MTL::ResourceStateCommandEncoder* MTL::CommandBuffer::resourceStateCommandEncoder()
|
| 442 |
+
{
|
| 443 |
+
return Object::sendMessage<MTL::ResourceStateCommandEncoder*>(this, _MTL_PRIVATE_SEL(resourceStateCommandEncoder));
|
| 444 |
+
}
|
| 445 |
+
|
| 446 |
+
// method: resourceStateCommandEncoderWithDescriptor:
|
| 447 |
+
_MTL_INLINE MTL::ResourceStateCommandEncoder* MTL::CommandBuffer::resourceStateCommandEncoder(const MTL::ResourceStatePassDescriptor* resourceStatePassDescriptor)
|
| 448 |
+
{
|
| 449 |
+
return Object::sendMessage<MTL::ResourceStateCommandEncoder*>(this, _MTL_PRIVATE_SEL(resourceStateCommandEncoderWithDescriptor_), resourceStatePassDescriptor);
|
| 450 |
+
}
|
| 451 |
+
|
| 452 |
+
// method: accelerationStructureCommandEncoder
|
| 453 |
+
_MTL_INLINE MTL::AccelerationStructureCommandEncoder* MTL::CommandBuffer::accelerationStructureCommandEncoder()
|
| 454 |
+
{
|
| 455 |
+
return Object::sendMessage<MTL::AccelerationStructureCommandEncoder*>(this, _MTL_PRIVATE_SEL(accelerationStructureCommandEncoder));
|
| 456 |
+
}
|
| 457 |
+
|
| 458 |
+
// method: accelerationStructureCommandEncoderWithDescriptor:
|
| 459 |
+
_MTL_INLINE MTL::AccelerationStructureCommandEncoder* MTL::CommandBuffer::accelerationStructureCommandEncoder(const MTL::AccelerationStructurePassDescriptor* descriptor)
|
| 460 |
+
{
|
| 461 |
+
return Object::sendMessage<MTL::AccelerationStructureCommandEncoder*>(this, _MTL_PRIVATE_SEL(accelerationStructureCommandEncoderWithDescriptor_), descriptor);
|
| 462 |
+
}
|
| 463 |
+
|
| 464 |
+
// method: pushDebugGroup:
|
| 465 |
+
_MTL_INLINE void MTL::CommandBuffer::pushDebugGroup(const NS::String* string)
|
| 466 |
+
{
|
| 467 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(pushDebugGroup_), string);
|
| 468 |
+
}
|
| 469 |
+
|
| 470 |
+
// method: popDebugGroup
|
| 471 |
+
_MTL_INLINE void MTL::CommandBuffer::popDebugGroup()
|
| 472 |
+
{
|
| 473 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(popDebugGroup));
|
| 474 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLCommandEncoder.hpp
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLCommandEncoder.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
namespace MTL
|
| 30 |
+
{
|
| 31 |
+
_MTL_OPTIONS(NS::UInteger, ResourceUsage) {
|
| 32 |
+
ResourceUsageRead = 1,
|
| 33 |
+
ResourceUsageWrite = 2,
|
| 34 |
+
ResourceUsageSample = 4,
|
| 35 |
+
};
|
| 36 |
+
|
| 37 |
+
_MTL_OPTIONS(NS::UInteger, BarrierScope) {
|
| 38 |
+
BarrierScopeBuffers = 1,
|
| 39 |
+
BarrierScopeTextures = 2,
|
| 40 |
+
BarrierScopeRenderTargets = 4,
|
| 41 |
+
};
|
| 42 |
+
|
| 43 |
+
class CommandEncoder : public NS::Referencing<CommandEncoder>
|
| 44 |
+
{
|
| 45 |
+
public:
|
| 46 |
+
class Device* device() const;
|
| 47 |
+
|
| 48 |
+
NS::String* label() const;
|
| 49 |
+
void setLabel(const NS::String* label);
|
| 50 |
+
|
| 51 |
+
void endEncoding();
|
| 52 |
+
|
| 53 |
+
void insertDebugSignpost(const NS::String* string);
|
| 54 |
+
|
| 55 |
+
void pushDebugGroup(const NS::String* string);
|
| 56 |
+
|
| 57 |
+
void popDebugGroup();
|
| 58 |
+
};
|
| 59 |
+
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
// property: device
|
| 63 |
+
_MTL_INLINE MTL::Device* MTL::CommandEncoder::device() const
|
| 64 |
+
{
|
| 65 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
// property: label
|
| 69 |
+
_MTL_INLINE NS::String* MTL::CommandEncoder::label() const
|
| 70 |
+
{
|
| 71 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
_MTL_INLINE void MTL::CommandEncoder::setLabel(const NS::String* label)
|
| 75 |
+
{
|
| 76 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
// method: endEncoding
|
| 80 |
+
_MTL_INLINE void MTL::CommandEncoder::endEncoding()
|
| 81 |
+
{
|
| 82 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(endEncoding));
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
// method: insertDebugSignpost:
|
| 86 |
+
_MTL_INLINE void MTL::CommandEncoder::insertDebugSignpost(const NS::String* string)
|
| 87 |
+
{
|
| 88 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(insertDebugSignpost_), string);
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
// method: pushDebugGroup:
|
| 92 |
+
_MTL_INLINE void MTL::CommandEncoder::pushDebugGroup(const NS::String* string)
|
| 93 |
+
{
|
| 94 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(pushDebugGroup_), string);
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
// method: popDebugGroup
|
| 98 |
+
_MTL_INLINE void MTL::CommandEncoder::popDebugGroup()
|
| 99 |
+
{
|
| 100 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(popDebugGroup));
|
| 101 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLCommandQueue.hpp
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLCommandQueue.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
namespace MTL
|
| 30 |
+
{
|
| 31 |
+
class CommandQueue : public NS::Referencing<CommandQueue>
|
| 32 |
+
{
|
| 33 |
+
public:
|
| 34 |
+
NS::String* label() const;
|
| 35 |
+
void setLabel(const NS::String* label);
|
| 36 |
+
|
| 37 |
+
class Device* device() const;
|
| 38 |
+
|
| 39 |
+
class CommandBuffer* commandBuffer();
|
| 40 |
+
|
| 41 |
+
class CommandBuffer* commandBuffer(const class CommandBufferDescriptor* descriptor);
|
| 42 |
+
|
| 43 |
+
class CommandBuffer* commandBufferWithUnretainedReferences();
|
| 44 |
+
|
| 45 |
+
void insertDebugCaptureBoundary();
|
| 46 |
+
};
|
| 47 |
+
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
// property: label
|
| 51 |
+
_MTL_INLINE NS::String* MTL::CommandQueue::label() const
|
| 52 |
+
{
|
| 53 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
_MTL_INLINE void MTL::CommandQueue::setLabel(const NS::String* label)
|
| 57 |
+
{
|
| 58 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
// property: device
|
| 62 |
+
_MTL_INLINE MTL::Device* MTL::CommandQueue::device() const
|
| 63 |
+
{
|
| 64 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
// method: commandBuffer
|
| 68 |
+
_MTL_INLINE MTL::CommandBuffer* MTL::CommandQueue::commandBuffer()
|
| 69 |
+
{
|
| 70 |
+
return Object::sendMessage<MTL::CommandBuffer*>(this, _MTL_PRIVATE_SEL(commandBuffer));
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
// method: commandBufferWithDescriptor:
|
| 74 |
+
_MTL_INLINE MTL::CommandBuffer* MTL::CommandQueue::commandBuffer(const MTL::CommandBufferDescriptor* descriptor)
|
| 75 |
+
{
|
| 76 |
+
return Object::sendMessage<MTL::CommandBuffer*>(this, _MTL_PRIVATE_SEL(commandBufferWithDescriptor_), descriptor);
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
// method: commandBufferWithUnretainedReferences
|
| 80 |
+
_MTL_INLINE MTL::CommandBuffer* MTL::CommandQueue::commandBufferWithUnretainedReferences()
|
| 81 |
+
{
|
| 82 |
+
return Object::sendMessage<MTL::CommandBuffer*>(this, _MTL_PRIVATE_SEL(commandBufferWithUnretainedReferences));
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
// method: insertDebugCaptureBoundary
|
| 86 |
+
_MTL_INLINE void MTL::CommandQueue::insertDebugCaptureBoundary()
|
| 87 |
+
{
|
| 88 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(insertDebugCaptureBoundary));
|
| 89 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLComputeCommandEncoder.hpp
ADDED
|
@@ -0,0 +1,362 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLComputeCommandEncoder.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLCommandBuffer.hpp"
|
| 30 |
+
#include "MTLCommandEncoder.hpp"
|
| 31 |
+
#include "MTLTypes.hpp"
|
| 32 |
+
|
| 33 |
+
namespace MTL
|
| 34 |
+
{
|
| 35 |
+
struct DispatchThreadgroupsIndirectArguments
|
| 36 |
+
{
|
| 37 |
+
uint32_t threadgroupsPerGrid[3];
|
| 38 |
+
} _MTL_PACKED;
|
| 39 |
+
|
| 40 |
+
struct StageInRegionIndirectArguments
|
| 41 |
+
{
|
| 42 |
+
uint32_t stageInOrigin[3];
|
| 43 |
+
uint32_t stageInSize[3];
|
| 44 |
+
} _MTL_PACKED;
|
| 45 |
+
|
| 46 |
+
class ComputeCommandEncoder : public NS::Referencing<ComputeCommandEncoder, CommandEncoder>
|
| 47 |
+
{
|
| 48 |
+
public:
|
| 49 |
+
MTL::DispatchType dispatchType() const;
|
| 50 |
+
|
| 51 |
+
void setComputePipelineState(const class ComputePipelineState* state);
|
| 52 |
+
|
| 53 |
+
void setBytes(const void* bytes, NS::UInteger length, NS::UInteger index);
|
| 54 |
+
|
| 55 |
+
void setBuffer(const class Buffer* buffer, NS::UInteger offset, NS::UInteger index);
|
| 56 |
+
|
| 57 |
+
void setBufferOffset(NS::UInteger offset, NS::UInteger index);
|
| 58 |
+
|
| 59 |
+
void setBuffers(const class Buffer* const buffers[], const NS::UInteger offsets[], NS::Range range);
|
| 60 |
+
|
| 61 |
+
void setBuffer(const class Buffer* buffer, NS::UInteger offset, NS::UInteger stride, NS::UInteger index);
|
| 62 |
+
|
| 63 |
+
void setBuffers(const class Buffer* const buffers[], const NS::UInteger* offsets, const NS::UInteger* strides, NS::Range range);
|
| 64 |
+
|
| 65 |
+
void setBufferOffset(NS::UInteger offset, NS::UInteger stride, NS::UInteger index);
|
| 66 |
+
|
| 67 |
+
void setBytes(const void* bytes, NS::UInteger length, NS::UInteger stride, NS::UInteger index);
|
| 68 |
+
|
| 69 |
+
void setVisibleFunctionTable(const class VisibleFunctionTable* visibleFunctionTable, NS::UInteger bufferIndex);
|
| 70 |
+
|
| 71 |
+
void setVisibleFunctionTables(const class VisibleFunctionTable* const visibleFunctionTables[], NS::Range range);
|
| 72 |
+
|
| 73 |
+
void setIntersectionFunctionTable(const class IntersectionFunctionTable* intersectionFunctionTable, NS::UInteger bufferIndex);
|
| 74 |
+
|
| 75 |
+
void setIntersectionFunctionTables(const class IntersectionFunctionTable* const intersectionFunctionTables[], NS::Range range);
|
| 76 |
+
|
| 77 |
+
void setAccelerationStructure(const class AccelerationStructure* accelerationStructure, NS::UInteger bufferIndex);
|
| 78 |
+
|
| 79 |
+
void setTexture(const class Texture* texture, NS::UInteger index);
|
| 80 |
+
|
| 81 |
+
void setTextures(const class Texture* const textures[], NS::Range range);
|
| 82 |
+
|
| 83 |
+
void setSamplerState(const class SamplerState* sampler, NS::UInteger index);
|
| 84 |
+
|
| 85 |
+
void setSamplerStates(const class SamplerState* const samplers[], NS::Range range);
|
| 86 |
+
|
| 87 |
+
void setSamplerState(const class SamplerState* sampler, float lodMinClamp, float lodMaxClamp, NS::UInteger index);
|
| 88 |
+
|
| 89 |
+
void setSamplerStates(const class SamplerState* const samplers[], const float lodMinClamps[], const float lodMaxClamps[], NS::Range range);
|
| 90 |
+
|
| 91 |
+
void setThreadgroupMemoryLength(NS::UInteger length, NS::UInteger index);
|
| 92 |
+
|
| 93 |
+
void setImageblockWidth(NS::UInteger width, NS::UInteger height);
|
| 94 |
+
|
| 95 |
+
void setStageInRegion(MTL::Region region);
|
| 96 |
+
|
| 97 |
+
void setStageInRegion(const class Buffer* indirectBuffer, NS::UInteger indirectBufferOffset);
|
| 98 |
+
|
| 99 |
+
void dispatchThreadgroups(MTL::Size threadgroupsPerGrid, MTL::Size threadsPerThreadgroup);
|
| 100 |
+
|
| 101 |
+
void dispatchThreadgroups(const class Buffer* indirectBuffer, NS::UInteger indirectBufferOffset, MTL::Size threadsPerThreadgroup);
|
| 102 |
+
|
| 103 |
+
void dispatchThreads(MTL::Size threadsPerGrid, MTL::Size threadsPerThreadgroup);
|
| 104 |
+
|
| 105 |
+
void updateFence(const class Fence* fence);
|
| 106 |
+
|
| 107 |
+
void waitForFence(const class Fence* fence);
|
| 108 |
+
|
| 109 |
+
void useResource(const class Resource* resource, MTL::ResourceUsage usage);
|
| 110 |
+
|
| 111 |
+
void useResources(const class Resource* const resources[], NS::UInteger count, MTL::ResourceUsage usage);
|
| 112 |
+
|
| 113 |
+
void useHeap(const class Heap* heap);
|
| 114 |
+
|
| 115 |
+
void useHeaps(const class Heap* const heaps[], NS::UInteger count);
|
| 116 |
+
|
| 117 |
+
void executeCommandsInBuffer(const class IndirectCommandBuffer* indirectCommandBuffer, NS::Range executionRange);
|
| 118 |
+
|
| 119 |
+
void executeCommandsInBuffer(const class IndirectCommandBuffer* indirectCommandbuffer, const class Buffer* indirectRangeBuffer, NS::UInteger indirectBufferOffset);
|
| 120 |
+
|
| 121 |
+
void memoryBarrier(MTL::BarrierScope scope);
|
| 122 |
+
|
| 123 |
+
void memoryBarrier(const class Resource* const resources[], NS::UInteger count);
|
| 124 |
+
|
| 125 |
+
void sampleCountersInBuffer(const class CounterSampleBuffer* sampleBuffer, NS::UInteger sampleIndex, bool barrier);
|
| 126 |
+
};
|
| 127 |
+
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
// property: dispatchType
|
| 131 |
+
_MTL_INLINE MTL::DispatchType MTL::ComputeCommandEncoder::dispatchType() const
|
| 132 |
+
{
|
| 133 |
+
return Object::sendMessage<MTL::DispatchType>(this, _MTL_PRIVATE_SEL(dispatchType));
|
| 134 |
+
}
|
| 135 |
+
|
| 136 |
+
// method: setComputePipelineState:
|
| 137 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setComputePipelineState(const MTL::ComputePipelineState* state)
|
| 138 |
+
{
|
| 139 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setComputePipelineState_), state);
|
| 140 |
+
}
|
| 141 |
+
|
| 142 |
+
// method: setBytes:length:atIndex:
|
| 143 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setBytes(const void* bytes, NS::UInteger length, NS::UInteger index)
|
| 144 |
+
{
|
| 145 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBytes_length_atIndex_), bytes, length, index);
|
| 146 |
+
}
|
| 147 |
+
|
| 148 |
+
// method: setBuffer:offset:atIndex:
|
| 149 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setBuffer(const MTL::Buffer* buffer, NS::UInteger offset, NS::UInteger index)
|
| 150 |
+
{
|
| 151 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBuffer_offset_atIndex_), buffer, offset, index);
|
| 152 |
+
}
|
| 153 |
+
|
| 154 |
+
// method: setBufferOffset:atIndex:
|
| 155 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setBufferOffset(NS::UInteger offset, NS::UInteger index)
|
| 156 |
+
{
|
| 157 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBufferOffset_atIndex_), offset, index);
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
// method: setBuffers:offsets:withRange:
|
| 161 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setBuffers(const MTL::Buffer* const buffers[], const NS::UInteger offsets[], NS::Range range)
|
| 162 |
+
{
|
| 163 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBuffers_offsets_withRange_), buffers, offsets, range);
|
| 164 |
+
}
|
| 165 |
+
|
| 166 |
+
// method: setBuffer:offset:attributeStride:atIndex:
|
| 167 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setBuffer(const MTL::Buffer* buffer, NS::UInteger offset, NS::UInteger stride, NS::UInteger index)
|
| 168 |
+
{
|
| 169 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBuffer_offset_attributeStride_atIndex_), buffer, offset, stride, index);
|
| 170 |
+
}
|
| 171 |
+
|
| 172 |
+
// method: setBuffers:offsets:attributeStrides:withRange:
|
| 173 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setBuffers(const MTL::Buffer* const buffers[], const NS::UInteger* offsets, const NS::UInteger* strides, NS::Range range)
|
| 174 |
+
{
|
| 175 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBuffers_offsets_attributeStrides_withRange_), buffers, offsets, strides, range);
|
| 176 |
+
}
|
| 177 |
+
|
| 178 |
+
// method: setBufferOffset:attributeStride:atIndex:
|
| 179 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setBufferOffset(NS::UInteger offset, NS::UInteger stride, NS::UInteger index)
|
| 180 |
+
{
|
| 181 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBufferOffset_attributeStride_atIndex_), offset, stride, index);
|
| 182 |
+
}
|
| 183 |
+
|
| 184 |
+
// method: setBytes:length:attributeStride:atIndex:
|
| 185 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setBytes(const void* bytes, NS::UInteger length, NS::UInteger stride, NS::UInteger index)
|
| 186 |
+
{
|
| 187 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBytes_length_attributeStride_atIndex_), bytes, length, stride, index);
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
// method: setVisibleFunctionTable:atBufferIndex:
|
| 191 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setVisibleFunctionTable(const MTL::VisibleFunctionTable* visibleFunctionTable, NS::UInteger bufferIndex)
|
| 192 |
+
{
|
| 193 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVisibleFunctionTable_atBufferIndex_), visibleFunctionTable, bufferIndex);
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
// method: setVisibleFunctionTables:withBufferRange:
|
| 197 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setVisibleFunctionTables(const MTL::VisibleFunctionTable* const visibleFunctionTables[], NS::Range range)
|
| 198 |
+
{
|
| 199 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVisibleFunctionTables_withBufferRange_), visibleFunctionTables, range);
|
| 200 |
+
}
|
| 201 |
+
|
| 202 |
+
// method: setIntersectionFunctionTable:atBufferIndex:
|
| 203 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setIntersectionFunctionTable(const MTL::IntersectionFunctionTable* intersectionFunctionTable, NS::UInteger bufferIndex)
|
| 204 |
+
{
|
| 205 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIntersectionFunctionTable_atBufferIndex_), intersectionFunctionTable, bufferIndex);
|
| 206 |
+
}
|
| 207 |
+
|
| 208 |
+
// method: setIntersectionFunctionTables:withBufferRange:
|
| 209 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setIntersectionFunctionTables(const MTL::IntersectionFunctionTable* const intersectionFunctionTables[], NS::Range range)
|
| 210 |
+
{
|
| 211 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIntersectionFunctionTables_withBufferRange_), intersectionFunctionTables, range);
|
| 212 |
+
}
|
| 213 |
+
|
| 214 |
+
// method: setAccelerationStructure:atBufferIndex:
|
| 215 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setAccelerationStructure(const MTL::AccelerationStructure* accelerationStructure, NS::UInteger bufferIndex)
|
| 216 |
+
{
|
| 217 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAccelerationStructure_atBufferIndex_), accelerationStructure, bufferIndex);
|
| 218 |
+
}
|
| 219 |
+
|
| 220 |
+
// method: setTexture:atIndex:
|
| 221 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setTexture(const MTL::Texture* texture, NS::UInteger index)
|
| 222 |
+
{
|
| 223 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTexture_atIndex_), texture, index);
|
| 224 |
+
}
|
| 225 |
+
|
| 226 |
+
// method: setTextures:withRange:
|
| 227 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setTextures(const MTL::Texture* const textures[], NS::Range range)
|
| 228 |
+
{
|
| 229 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTextures_withRange_), textures, range);
|
| 230 |
+
}
|
| 231 |
+
|
| 232 |
+
// method: setSamplerState:atIndex:
|
| 233 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setSamplerState(const MTL::SamplerState* sampler, NS::UInteger index)
|
| 234 |
+
{
|
| 235 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSamplerState_atIndex_), sampler, index);
|
| 236 |
+
}
|
| 237 |
+
|
| 238 |
+
// method: setSamplerStates:withRange:
|
| 239 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setSamplerStates(const MTL::SamplerState* const samplers[], NS::Range range)
|
| 240 |
+
{
|
| 241 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSamplerStates_withRange_), samplers, range);
|
| 242 |
+
}
|
| 243 |
+
|
| 244 |
+
// method: setSamplerState:lodMinClamp:lodMaxClamp:atIndex:
|
| 245 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setSamplerState(const MTL::SamplerState* sampler, float lodMinClamp, float lodMaxClamp, NS::UInteger index)
|
| 246 |
+
{
|
| 247 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSamplerState_lodMinClamp_lodMaxClamp_atIndex_), sampler, lodMinClamp, lodMaxClamp, index);
|
| 248 |
+
}
|
| 249 |
+
|
| 250 |
+
// method: setSamplerStates:lodMinClamps:lodMaxClamps:withRange:
|
| 251 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setSamplerStates(const MTL::SamplerState* const samplers[], const float lodMinClamps[], const float lodMaxClamps[], NS::Range range)
|
| 252 |
+
{
|
| 253 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSamplerStates_lodMinClamps_lodMaxClamps_withRange_), samplers, lodMinClamps, lodMaxClamps, range);
|
| 254 |
+
}
|
| 255 |
+
|
| 256 |
+
// method: setThreadgroupMemoryLength:atIndex:
|
| 257 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setThreadgroupMemoryLength(NS::UInteger length, NS::UInteger index)
|
| 258 |
+
{
|
| 259 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setThreadgroupMemoryLength_atIndex_), length, index);
|
| 260 |
+
}
|
| 261 |
+
|
| 262 |
+
// method: setImageblockWidth:height:
|
| 263 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setImageblockWidth(NS::UInteger width, NS::UInteger height)
|
| 264 |
+
{
|
| 265 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setImageblockWidth_height_), width, height);
|
| 266 |
+
}
|
| 267 |
+
|
| 268 |
+
// method: setStageInRegion:
|
| 269 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setStageInRegion(MTL::Region region)
|
| 270 |
+
{
|
| 271 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStageInRegion_), region);
|
| 272 |
+
}
|
| 273 |
+
|
| 274 |
+
// method: setStageInRegionWithIndirectBuffer:indirectBufferOffset:
|
| 275 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::setStageInRegion(const MTL::Buffer* indirectBuffer, NS::UInteger indirectBufferOffset)
|
| 276 |
+
{
|
| 277 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStageInRegionWithIndirectBuffer_indirectBufferOffset_), indirectBuffer, indirectBufferOffset);
|
| 278 |
+
}
|
| 279 |
+
|
| 280 |
+
// method: dispatchThreadgroups:threadsPerThreadgroup:
|
| 281 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::dispatchThreadgroups(MTL::Size threadgroupsPerGrid, MTL::Size threadsPerThreadgroup)
|
| 282 |
+
{
|
| 283 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(dispatchThreadgroups_threadsPerThreadgroup_), threadgroupsPerGrid, threadsPerThreadgroup);
|
| 284 |
+
}
|
| 285 |
+
|
| 286 |
+
// method: dispatchThreadgroupsWithIndirectBuffer:indirectBufferOffset:threadsPerThreadgroup:
|
| 287 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::dispatchThreadgroups(const MTL::Buffer* indirectBuffer, NS::UInteger indirectBufferOffset, MTL::Size threadsPerThreadgroup)
|
| 288 |
+
{
|
| 289 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(dispatchThreadgroupsWithIndirectBuffer_indirectBufferOffset_threadsPerThreadgroup_), indirectBuffer, indirectBufferOffset, threadsPerThreadgroup);
|
| 290 |
+
}
|
| 291 |
+
|
| 292 |
+
// method: dispatchThreads:threadsPerThreadgroup:
|
| 293 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::dispatchThreads(MTL::Size threadsPerGrid, MTL::Size threadsPerThreadgroup)
|
| 294 |
+
{
|
| 295 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(dispatchThreads_threadsPerThreadgroup_), threadsPerGrid, threadsPerThreadgroup);
|
| 296 |
+
}
|
| 297 |
+
|
| 298 |
+
// method: updateFence:
|
| 299 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::updateFence(const MTL::Fence* fence)
|
| 300 |
+
{
|
| 301 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(updateFence_), fence);
|
| 302 |
+
}
|
| 303 |
+
|
| 304 |
+
// method: waitForFence:
|
| 305 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::waitForFence(const MTL::Fence* fence)
|
| 306 |
+
{
|
| 307 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(waitForFence_), fence);
|
| 308 |
+
}
|
| 309 |
+
|
| 310 |
+
// method: useResource:usage:
|
| 311 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::useResource(const MTL::Resource* resource, MTL::ResourceUsage usage)
|
| 312 |
+
{
|
| 313 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(useResource_usage_), resource, usage);
|
| 314 |
+
}
|
| 315 |
+
|
| 316 |
+
// method: useResources:count:usage:
|
| 317 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::useResources(const MTL::Resource* const resources[], NS::UInteger count, MTL::ResourceUsage usage)
|
| 318 |
+
{
|
| 319 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(useResources_count_usage_), resources, count, usage);
|
| 320 |
+
}
|
| 321 |
+
|
| 322 |
+
// method: useHeap:
|
| 323 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::useHeap(const MTL::Heap* heap)
|
| 324 |
+
{
|
| 325 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(useHeap_), heap);
|
| 326 |
+
}
|
| 327 |
+
|
| 328 |
+
// method: useHeaps:count:
|
| 329 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::useHeaps(const MTL::Heap* const heaps[], NS::UInteger count)
|
| 330 |
+
{
|
| 331 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(useHeaps_count_), heaps, count);
|
| 332 |
+
}
|
| 333 |
+
|
| 334 |
+
// method: executeCommandsInBuffer:withRange:
|
| 335 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::executeCommandsInBuffer(const MTL::IndirectCommandBuffer* indirectCommandBuffer, NS::Range executionRange)
|
| 336 |
+
{
|
| 337 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(executeCommandsInBuffer_withRange_), indirectCommandBuffer, executionRange);
|
| 338 |
+
}
|
| 339 |
+
|
| 340 |
+
// method: executeCommandsInBuffer:indirectBuffer:indirectBufferOffset:
|
| 341 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::executeCommandsInBuffer(const MTL::IndirectCommandBuffer* indirectCommandbuffer, const MTL::Buffer* indirectRangeBuffer, NS::UInteger indirectBufferOffset)
|
| 342 |
+
{
|
| 343 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(executeCommandsInBuffer_indirectBuffer_indirectBufferOffset_), indirectCommandbuffer, indirectRangeBuffer, indirectBufferOffset);
|
| 344 |
+
}
|
| 345 |
+
|
| 346 |
+
// method: memoryBarrierWithScope:
|
| 347 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::memoryBarrier(MTL::BarrierScope scope)
|
| 348 |
+
{
|
| 349 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(memoryBarrierWithScope_), scope);
|
| 350 |
+
}
|
| 351 |
+
|
| 352 |
+
// method: memoryBarrierWithResources:count:
|
| 353 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::memoryBarrier(const MTL::Resource* const resources[], NS::UInteger count)
|
| 354 |
+
{
|
| 355 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(memoryBarrierWithResources_count_), resources, count);
|
| 356 |
+
}
|
| 357 |
+
|
| 358 |
+
// method: sampleCountersInBuffer:atSampleIndex:withBarrier:
|
| 359 |
+
_MTL_INLINE void MTL::ComputeCommandEncoder::sampleCountersInBuffer(const MTL::CounterSampleBuffer* sampleBuffer, NS::UInteger sampleIndex, bool barrier)
|
| 360 |
+
{
|
| 361 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(sampleCountersInBuffer_atSampleIndex_withBarrier_), sampleBuffer, sampleIndex, barrier);
|
| 362 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLComputePass.hpp
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLComputePass.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLCommandBuffer.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
class ComputePassSampleBufferAttachmentDescriptor : public NS::Copying<ComputePassSampleBufferAttachmentDescriptor>
|
| 34 |
+
{
|
| 35 |
+
public:
|
| 36 |
+
static class ComputePassSampleBufferAttachmentDescriptor* alloc();
|
| 37 |
+
|
| 38 |
+
class ComputePassSampleBufferAttachmentDescriptor* init();
|
| 39 |
+
|
| 40 |
+
class CounterSampleBuffer* sampleBuffer() const;
|
| 41 |
+
void setSampleBuffer(const class CounterSampleBuffer* sampleBuffer);
|
| 42 |
+
|
| 43 |
+
NS::UInteger startOfEncoderSampleIndex() const;
|
| 44 |
+
void setStartOfEncoderSampleIndex(NS::UInteger startOfEncoderSampleIndex);
|
| 45 |
+
|
| 46 |
+
NS::UInteger endOfEncoderSampleIndex() const;
|
| 47 |
+
void setEndOfEncoderSampleIndex(NS::UInteger endOfEncoderSampleIndex);
|
| 48 |
+
};
|
| 49 |
+
|
| 50 |
+
class ComputePassSampleBufferAttachmentDescriptorArray : public NS::Referencing<ComputePassSampleBufferAttachmentDescriptorArray>
|
| 51 |
+
{
|
| 52 |
+
public:
|
| 53 |
+
static class ComputePassSampleBufferAttachmentDescriptorArray* alloc();
|
| 54 |
+
|
| 55 |
+
class ComputePassSampleBufferAttachmentDescriptorArray* init();
|
| 56 |
+
|
| 57 |
+
class ComputePassSampleBufferAttachmentDescriptor* object(NS::UInteger attachmentIndex);
|
| 58 |
+
|
| 59 |
+
void setObject(const class ComputePassSampleBufferAttachmentDescriptor* attachment, NS::UInteger attachmentIndex);
|
| 60 |
+
};
|
| 61 |
+
|
| 62 |
+
class ComputePassDescriptor : public NS::Copying<ComputePassDescriptor>
|
| 63 |
+
{
|
| 64 |
+
public:
|
| 65 |
+
static class ComputePassDescriptor* alloc();
|
| 66 |
+
|
| 67 |
+
class ComputePassDescriptor* init();
|
| 68 |
+
|
| 69 |
+
static class ComputePassDescriptor* computePassDescriptor();
|
| 70 |
+
|
| 71 |
+
MTL::DispatchType dispatchType() const;
|
| 72 |
+
void setDispatchType(MTL::DispatchType dispatchType);
|
| 73 |
+
|
| 74 |
+
class ComputePassSampleBufferAttachmentDescriptorArray* sampleBufferAttachments() const;
|
| 75 |
+
};
|
| 76 |
+
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
// static method: alloc
|
| 80 |
+
_MTL_INLINE MTL::ComputePassSampleBufferAttachmentDescriptor* MTL::ComputePassSampleBufferAttachmentDescriptor::alloc()
|
| 81 |
+
{
|
| 82 |
+
return NS::Object::alloc<MTL::ComputePassSampleBufferAttachmentDescriptor>(_MTL_PRIVATE_CLS(MTLComputePassSampleBufferAttachmentDescriptor));
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
// method: init
|
| 86 |
+
_MTL_INLINE MTL::ComputePassSampleBufferAttachmentDescriptor* MTL::ComputePassSampleBufferAttachmentDescriptor::init()
|
| 87 |
+
{
|
| 88 |
+
return NS::Object::init<MTL::ComputePassSampleBufferAttachmentDescriptor>();
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
// property: sampleBuffer
|
| 92 |
+
_MTL_INLINE MTL::CounterSampleBuffer* MTL::ComputePassSampleBufferAttachmentDescriptor::sampleBuffer() const
|
| 93 |
+
{
|
| 94 |
+
return Object::sendMessage<MTL::CounterSampleBuffer*>(this, _MTL_PRIVATE_SEL(sampleBuffer));
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
_MTL_INLINE void MTL::ComputePassSampleBufferAttachmentDescriptor::setSampleBuffer(const MTL::CounterSampleBuffer* sampleBuffer)
|
| 98 |
+
{
|
| 99 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSampleBuffer_), sampleBuffer);
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
// property: startOfEncoderSampleIndex
|
| 103 |
+
_MTL_INLINE NS::UInteger MTL::ComputePassSampleBufferAttachmentDescriptor::startOfEncoderSampleIndex() const
|
| 104 |
+
{
|
| 105 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(startOfEncoderSampleIndex));
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
_MTL_INLINE void MTL::ComputePassSampleBufferAttachmentDescriptor::setStartOfEncoderSampleIndex(NS::UInteger startOfEncoderSampleIndex)
|
| 109 |
+
{
|
| 110 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStartOfEncoderSampleIndex_), startOfEncoderSampleIndex);
|
| 111 |
+
}
|
| 112 |
+
|
| 113 |
+
// property: endOfEncoderSampleIndex
|
| 114 |
+
_MTL_INLINE NS::UInteger MTL::ComputePassSampleBufferAttachmentDescriptor::endOfEncoderSampleIndex() const
|
| 115 |
+
{
|
| 116 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(endOfEncoderSampleIndex));
|
| 117 |
+
}
|
| 118 |
+
|
| 119 |
+
_MTL_INLINE void MTL::ComputePassSampleBufferAttachmentDescriptor::setEndOfEncoderSampleIndex(NS::UInteger endOfEncoderSampleIndex)
|
| 120 |
+
{
|
| 121 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setEndOfEncoderSampleIndex_), endOfEncoderSampleIndex);
|
| 122 |
+
}
|
| 123 |
+
|
| 124 |
+
// static method: alloc
|
| 125 |
+
_MTL_INLINE MTL::ComputePassSampleBufferAttachmentDescriptorArray* MTL::ComputePassSampleBufferAttachmentDescriptorArray::alloc()
|
| 126 |
+
{
|
| 127 |
+
return NS::Object::alloc<MTL::ComputePassSampleBufferAttachmentDescriptorArray>(_MTL_PRIVATE_CLS(MTLComputePassSampleBufferAttachmentDescriptorArray));
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
// method: init
|
| 131 |
+
_MTL_INLINE MTL::ComputePassSampleBufferAttachmentDescriptorArray* MTL::ComputePassSampleBufferAttachmentDescriptorArray::init()
|
| 132 |
+
{
|
| 133 |
+
return NS::Object::init<MTL::ComputePassSampleBufferAttachmentDescriptorArray>();
|
| 134 |
+
}
|
| 135 |
+
|
| 136 |
+
// method: objectAtIndexedSubscript:
|
| 137 |
+
_MTL_INLINE MTL::ComputePassSampleBufferAttachmentDescriptor* MTL::ComputePassSampleBufferAttachmentDescriptorArray::object(NS::UInteger attachmentIndex)
|
| 138 |
+
{
|
| 139 |
+
return Object::sendMessage<MTL::ComputePassSampleBufferAttachmentDescriptor*>(this, _MTL_PRIVATE_SEL(objectAtIndexedSubscript_), attachmentIndex);
|
| 140 |
+
}
|
| 141 |
+
|
| 142 |
+
// method: setObject:atIndexedSubscript:
|
| 143 |
+
_MTL_INLINE void MTL::ComputePassSampleBufferAttachmentDescriptorArray::setObject(const MTL::ComputePassSampleBufferAttachmentDescriptor* attachment, NS::UInteger attachmentIndex)
|
| 144 |
+
{
|
| 145 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObject_atIndexedSubscript_), attachment, attachmentIndex);
|
| 146 |
+
}
|
| 147 |
+
|
| 148 |
+
// static method: alloc
|
| 149 |
+
_MTL_INLINE MTL::ComputePassDescriptor* MTL::ComputePassDescriptor::alloc()
|
| 150 |
+
{
|
| 151 |
+
return NS::Object::alloc<MTL::ComputePassDescriptor>(_MTL_PRIVATE_CLS(MTLComputePassDescriptor));
|
| 152 |
+
}
|
| 153 |
+
|
| 154 |
+
// method: init
|
| 155 |
+
_MTL_INLINE MTL::ComputePassDescriptor* MTL::ComputePassDescriptor::init()
|
| 156 |
+
{
|
| 157 |
+
return NS::Object::init<MTL::ComputePassDescriptor>();
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
// static method: computePassDescriptor
|
| 161 |
+
_MTL_INLINE MTL::ComputePassDescriptor* MTL::ComputePassDescriptor::computePassDescriptor()
|
| 162 |
+
{
|
| 163 |
+
return Object::sendMessage<MTL::ComputePassDescriptor*>(_MTL_PRIVATE_CLS(MTLComputePassDescriptor), _MTL_PRIVATE_SEL(computePassDescriptor));
|
| 164 |
+
}
|
| 165 |
+
|
| 166 |
+
// property: dispatchType
|
| 167 |
+
_MTL_INLINE MTL::DispatchType MTL::ComputePassDescriptor::dispatchType() const
|
| 168 |
+
{
|
| 169 |
+
return Object::sendMessage<MTL::DispatchType>(this, _MTL_PRIVATE_SEL(dispatchType));
|
| 170 |
+
}
|
| 171 |
+
|
| 172 |
+
_MTL_INLINE void MTL::ComputePassDescriptor::setDispatchType(MTL::DispatchType dispatchType)
|
| 173 |
+
{
|
| 174 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDispatchType_), dispatchType);
|
| 175 |
+
}
|
| 176 |
+
|
| 177 |
+
// property: sampleBufferAttachments
|
| 178 |
+
_MTL_INLINE MTL::ComputePassSampleBufferAttachmentDescriptorArray* MTL::ComputePassDescriptor::sampleBufferAttachments() const
|
| 179 |
+
{
|
| 180 |
+
return Object::sendMessage<MTL::ComputePassSampleBufferAttachmentDescriptorArray*>(this, _MTL_PRIVATE_SEL(sampleBufferAttachments));
|
| 181 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLComputePipeline.hpp
ADDED
|
@@ -0,0 +1,373 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLComputePipeline.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLTypes.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
class ComputePipelineReflection : public NS::Referencing<ComputePipelineReflection>
|
| 34 |
+
{
|
| 35 |
+
public:
|
| 36 |
+
static class ComputePipelineReflection* alloc();
|
| 37 |
+
|
| 38 |
+
class ComputePipelineReflection* init();
|
| 39 |
+
|
| 40 |
+
NS::Array* bindings() const;
|
| 41 |
+
|
| 42 |
+
NS::Array* arguments() const;
|
| 43 |
+
};
|
| 44 |
+
|
| 45 |
+
class ComputePipelineDescriptor : public NS::Copying<ComputePipelineDescriptor>
|
| 46 |
+
{
|
| 47 |
+
public:
|
| 48 |
+
static class ComputePipelineDescriptor* alloc();
|
| 49 |
+
|
| 50 |
+
class ComputePipelineDescriptor* init();
|
| 51 |
+
|
| 52 |
+
NS::String* label() const;
|
| 53 |
+
void setLabel(const NS::String* label);
|
| 54 |
+
|
| 55 |
+
class Function* computeFunction() const;
|
| 56 |
+
void setComputeFunction(const class Function* computeFunction);
|
| 57 |
+
|
| 58 |
+
bool threadGroupSizeIsMultipleOfThreadExecutionWidth() const;
|
| 59 |
+
void setThreadGroupSizeIsMultipleOfThreadExecutionWidth(bool threadGroupSizeIsMultipleOfThreadExecutionWidth);
|
| 60 |
+
|
| 61 |
+
NS::UInteger maxTotalThreadsPerThreadgroup() const;
|
| 62 |
+
void setMaxTotalThreadsPerThreadgroup(NS::UInteger maxTotalThreadsPerThreadgroup);
|
| 63 |
+
|
| 64 |
+
class StageInputOutputDescriptor* stageInputDescriptor() const;
|
| 65 |
+
void setStageInputDescriptor(const class StageInputOutputDescriptor* stageInputDescriptor);
|
| 66 |
+
|
| 67 |
+
class PipelineBufferDescriptorArray* buffers() const;
|
| 68 |
+
|
| 69 |
+
bool supportIndirectCommandBuffers() const;
|
| 70 |
+
void setSupportIndirectCommandBuffers(bool supportIndirectCommandBuffers);
|
| 71 |
+
|
| 72 |
+
NS::Array* insertLibraries() const;
|
| 73 |
+
void setInsertLibraries(const NS::Array* insertLibraries);
|
| 74 |
+
|
| 75 |
+
NS::Array* preloadedLibraries() const;
|
| 76 |
+
void setPreloadedLibraries(const NS::Array* preloadedLibraries);
|
| 77 |
+
|
| 78 |
+
NS::Array* binaryArchives() const;
|
| 79 |
+
void setBinaryArchives(const NS::Array* binaryArchives);
|
| 80 |
+
|
| 81 |
+
void reset();
|
| 82 |
+
|
| 83 |
+
class LinkedFunctions* linkedFunctions() const;
|
| 84 |
+
void setLinkedFunctions(const class LinkedFunctions* linkedFunctions);
|
| 85 |
+
|
| 86 |
+
bool supportAddingBinaryFunctions() const;
|
| 87 |
+
void setSupportAddingBinaryFunctions(bool supportAddingBinaryFunctions);
|
| 88 |
+
|
| 89 |
+
NS::UInteger maxCallStackDepth() const;
|
| 90 |
+
void setMaxCallStackDepth(NS::UInteger maxCallStackDepth);
|
| 91 |
+
};
|
| 92 |
+
|
| 93 |
+
class ComputePipelineState : public NS::Referencing<ComputePipelineState>
|
| 94 |
+
{
|
| 95 |
+
public:
|
| 96 |
+
NS::String* label() const;
|
| 97 |
+
|
| 98 |
+
class Device* device() const;
|
| 99 |
+
|
| 100 |
+
NS::UInteger maxTotalThreadsPerThreadgroup() const;
|
| 101 |
+
|
| 102 |
+
NS::UInteger threadExecutionWidth() const;
|
| 103 |
+
|
| 104 |
+
NS::UInteger staticThreadgroupMemoryLength() const;
|
| 105 |
+
|
| 106 |
+
NS::UInteger imageblockMemoryLength(MTL::Size imageblockDimensions);
|
| 107 |
+
|
| 108 |
+
bool supportIndirectCommandBuffers() const;
|
| 109 |
+
|
| 110 |
+
MTL::ResourceID gpuResourceID() const;
|
| 111 |
+
|
| 112 |
+
class FunctionHandle* functionHandle(const class Function* function);
|
| 113 |
+
|
| 114 |
+
class ComputePipelineState* newComputePipelineState(const NS::Array* functions, NS::Error** error);
|
| 115 |
+
|
| 116 |
+
class VisibleFunctionTable* newVisibleFunctionTable(const class VisibleFunctionTableDescriptor* descriptor);
|
| 117 |
+
|
| 118 |
+
class IntersectionFunctionTable* newIntersectionFunctionTable(const class IntersectionFunctionTableDescriptor* descriptor);
|
| 119 |
+
};
|
| 120 |
+
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
// static method: alloc
|
| 124 |
+
_MTL_INLINE MTL::ComputePipelineReflection* MTL::ComputePipelineReflection::alloc()
|
| 125 |
+
{
|
| 126 |
+
return NS::Object::alloc<MTL::ComputePipelineReflection>(_MTL_PRIVATE_CLS(MTLComputePipelineReflection));
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
// method: init
|
| 130 |
+
_MTL_INLINE MTL::ComputePipelineReflection* MTL::ComputePipelineReflection::init()
|
| 131 |
+
{
|
| 132 |
+
return NS::Object::init<MTL::ComputePipelineReflection>();
|
| 133 |
+
}
|
| 134 |
+
|
| 135 |
+
// property: bindings
|
| 136 |
+
_MTL_INLINE NS::Array* MTL::ComputePipelineReflection::bindings() const
|
| 137 |
+
{
|
| 138 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(bindings));
|
| 139 |
+
}
|
| 140 |
+
|
| 141 |
+
// property: arguments
|
| 142 |
+
_MTL_INLINE NS::Array* MTL::ComputePipelineReflection::arguments() const
|
| 143 |
+
{
|
| 144 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(arguments));
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
// static method: alloc
|
| 148 |
+
_MTL_INLINE MTL::ComputePipelineDescriptor* MTL::ComputePipelineDescriptor::alloc()
|
| 149 |
+
{
|
| 150 |
+
return NS::Object::alloc<MTL::ComputePipelineDescriptor>(_MTL_PRIVATE_CLS(MTLComputePipelineDescriptor));
|
| 151 |
+
}
|
| 152 |
+
|
| 153 |
+
// method: init
|
| 154 |
+
_MTL_INLINE MTL::ComputePipelineDescriptor* MTL::ComputePipelineDescriptor::init()
|
| 155 |
+
{
|
| 156 |
+
return NS::Object::init<MTL::ComputePipelineDescriptor>();
|
| 157 |
+
}
|
| 158 |
+
|
| 159 |
+
// property: label
|
| 160 |
+
_MTL_INLINE NS::String* MTL::ComputePipelineDescriptor::label() const
|
| 161 |
+
{
|
| 162 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 163 |
+
}
|
| 164 |
+
|
| 165 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::setLabel(const NS::String* label)
|
| 166 |
+
{
|
| 167 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 168 |
+
}
|
| 169 |
+
|
| 170 |
+
// property: computeFunction
|
| 171 |
+
_MTL_INLINE MTL::Function* MTL::ComputePipelineDescriptor::computeFunction() const
|
| 172 |
+
{
|
| 173 |
+
return Object::sendMessage<MTL::Function*>(this, _MTL_PRIVATE_SEL(computeFunction));
|
| 174 |
+
}
|
| 175 |
+
|
| 176 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::setComputeFunction(const MTL::Function* computeFunction)
|
| 177 |
+
{
|
| 178 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setComputeFunction_), computeFunction);
|
| 179 |
+
}
|
| 180 |
+
|
| 181 |
+
// property: threadGroupSizeIsMultipleOfThreadExecutionWidth
|
| 182 |
+
_MTL_INLINE bool MTL::ComputePipelineDescriptor::threadGroupSizeIsMultipleOfThreadExecutionWidth() const
|
| 183 |
+
{
|
| 184 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(threadGroupSizeIsMultipleOfThreadExecutionWidth));
|
| 185 |
+
}
|
| 186 |
+
|
| 187 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::setThreadGroupSizeIsMultipleOfThreadExecutionWidth(bool threadGroupSizeIsMultipleOfThreadExecutionWidth)
|
| 188 |
+
{
|
| 189 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setThreadGroupSizeIsMultipleOfThreadExecutionWidth_), threadGroupSizeIsMultipleOfThreadExecutionWidth);
|
| 190 |
+
}
|
| 191 |
+
|
| 192 |
+
// property: maxTotalThreadsPerThreadgroup
|
| 193 |
+
_MTL_INLINE NS::UInteger MTL::ComputePipelineDescriptor::maxTotalThreadsPerThreadgroup() const
|
| 194 |
+
{
|
| 195 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxTotalThreadsPerThreadgroup));
|
| 196 |
+
}
|
| 197 |
+
|
| 198 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::setMaxTotalThreadsPerThreadgroup(NS::UInteger maxTotalThreadsPerThreadgroup)
|
| 199 |
+
{
|
| 200 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxTotalThreadsPerThreadgroup_), maxTotalThreadsPerThreadgroup);
|
| 201 |
+
}
|
| 202 |
+
|
| 203 |
+
// property: stageInputDescriptor
|
| 204 |
+
_MTL_INLINE MTL::StageInputOutputDescriptor* MTL::ComputePipelineDescriptor::stageInputDescriptor() const
|
| 205 |
+
{
|
| 206 |
+
return Object::sendMessage<MTL::StageInputOutputDescriptor*>(this, _MTL_PRIVATE_SEL(stageInputDescriptor));
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::setStageInputDescriptor(const MTL::StageInputOutputDescriptor* stageInputDescriptor)
|
| 210 |
+
{
|
| 211 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStageInputDescriptor_), stageInputDescriptor);
|
| 212 |
+
}
|
| 213 |
+
|
| 214 |
+
// property: buffers
|
| 215 |
+
_MTL_INLINE MTL::PipelineBufferDescriptorArray* MTL::ComputePipelineDescriptor::buffers() const
|
| 216 |
+
{
|
| 217 |
+
return Object::sendMessage<MTL::PipelineBufferDescriptorArray*>(this, _MTL_PRIVATE_SEL(buffers));
|
| 218 |
+
}
|
| 219 |
+
|
| 220 |
+
// property: supportIndirectCommandBuffers
|
| 221 |
+
_MTL_INLINE bool MTL::ComputePipelineDescriptor::supportIndirectCommandBuffers() const
|
| 222 |
+
{
|
| 223 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportIndirectCommandBuffers));
|
| 224 |
+
}
|
| 225 |
+
|
| 226 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::setSupportIndirectCommandBuffers(bool supportIndirectCommandBuffers)
|
| 227 |
+
{
|
| 228 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportIndirectCommandBuffers_), supportIndirectCommandBuffers);
|
| 229 |
+
}
|
| 230 |
+
|
| 231 |
+
// property: insertLibraries
|
| 232 |
+
_MTL_INLINE NS::Array* MTL::ComputePipelineDescriptor::insertLibraries() const
|
| 233 |
+
{
|
| 234 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(insertLibraries));
|
| 235 |
+
}
|
| 236 |
+
|
| 237 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::setInsertLibraries(const NS::Array* insertLibraries)
|
| 238 |
+
{
|
| 239 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInsertLibraries_), insertLibraries);
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
// property: preloadedLibraries
|
| 243 |
+
_MTL_INLINE NS::Array* MTL::ComputePipelineDescriptor::preloadedLibraries() const
|
| 244 |
+
{
|
| 245 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(preloadedLibraries));
|
| 246 |
+
}
|
| 247 |
+
|
| 248 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::setPreloadedLibraries(const NS::Array* preloadedLibraries)
|
| 249 |
+
{
|
| 250 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPreloadedLibraries_), preloadedLibraries);
|
| 251 |
+
}
|
| 252 |
+
|
| 253 |
+
// property: binaryArchives
|
| 254 |
+
_MTL_INLINE NS::Array* MTL::ComputePipelineDescriptor::binaryArchives() const
|
| 255 |
+
{
|
| 256 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(binaryArchives));
|
| 257 |
+
}
|
| 258 |
+
|
| 259 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::setBinaryArchives(const NS::Array* binaryArchives)
|
| 260 |
+
{
|
| 261 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBinaryArchives_), binaryArchives);
|
| 262 |
+
}
|
| 263 |
+
|
| 264 |
+
// method: reset
|
| 265 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::reset()
|
| 266 |
+
{
|
| 267 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(reset));
|
| 268 |
+
}
|
| 269 |
+
|
| 270 |
+
// property: linkedFunctions
|
| 271 |
+
_MTL_INLINE MTL::LinkedFunctions* MTL::ComputePipelineDescriptor::linkedFunctions() const
|
| 272 |
+
{
|
| 273 |
+
return Object::sendMessage<MTL::LinkedFunctions*>(this, _MTL_PRIVATE_SEL(linkedFunctions));
|
| 274 |
+
}
|
| 275 |
+
|
| 276 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::setLinkedFunctions(const MTL::LinkedFunctions* linkedFunctions)
|
| 277 |
+
{
|
| 278 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLinkedFunctions_), linkedFunctions);
|
| 279 |
+
}
|
| 280 |
+
|
| 281 |
+
// property: supportAddingBinaryFunctions
|
| 282 |
+
_MTL_INLINE bool MTL::ComputePipelineDescriptor::supportAddingBinaryFunctions() const
|
| 283 |
+
{
|
| 284 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportAddingBinaryFunctions));
|
| 285 |
+
}
|
| 286 |
+
|
| 287 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::setSupportAddingBinaryFunctions(bool supportAddingBinaryFunctions)
|
| 288 |
+
{
|
| 289 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportAddingBinaryFunctions_), supportAddingBinaryFunctions);
|
| 290 |
+
}
|
| 291 |
+
|
| 292 |
+
// property: maxCallStackDepth
|
| 293 |
+
_MTL_INLINE NS::UInteger MTL::ComputePipelineDescriptor::maxCallStackDepth() const
|
| 294 |
+
{
|
| 295 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxCallStackDepth));
|
| 296 |
+
}
|
| 297 |
+
|
| 298 |
+
_MTL_INLINE void MTL::ComputePipelineDescriptor::setMaxCallStackDepth(NS::UInteger maxCallStackDepth)
|
| 299 |
+
{
|
| 300 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxCallStackDepth_), maxCallStackDepth);
|
| 301 |
+
}
|
| 302 |
+
|
| 303 |
+
// property: label
|
| 304 |
+
_MTL_INLINE NS::String* MTL::ComputePipelineState::label() const
|
| 305 |
+
{
|
| 306 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 307 |
+
}
|
| 308 |
+
|
| 309 |
+
// property: device
|
| 310 |
+
_MTL_INLINE MTL::Device* MTL::ComputePipelineState::device() const
|
| 311 |
+
{
|
| 312 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 313 |
+
}
|
| 314 |
+
|
| 315 |
+
// property: maxTotalThreadsPerThreadgroup
|
| 316 |
+
_MTL_INLINE NS::UInteger MTL::ComputePipelineState::maxTotalThreadsPerThreadgroup() const
|
| 317 |
+
{
|
| 318 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxTotalThreadsPerThreadgroup));
|
| 319 |
+
}
|
| 320 |
+
|
| 321 |
+
// property: threadExecutionWidth
|
| 322 |
+
_MTL_INLINE NS::UInteger MTL::ComputePipelineState::threadExecutionWidth() const
|
| 323 |
+
{
|
| 324 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(threadExecutionWidth));
|
| 325 |
+
}
|
| 326 |
+
|
| 327 |
+
// property: staticThreadgroupMemoryLength
|
| 328 |
+
_MTL_INLINE NS::UInteger MTL::ComputePipelineState::staticThreadgroupMemoryLength() const
|
| 329 |
+
{
|
| 330 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(staticThreadgroupMemoryLength));
|
| 331 |
+
}
|
| 332 |
+
|
| 333 |
+
// method: imageblockMemoryLengthForDimensions:
|
| 334 |
+
_MTL_INLINE NS::UInteger MTL::ComputePipelineState::imageblockMemoryLength(MTL::Size imageblockDimensions)
|
| 335 |
+
{
|
| 336 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(imageblockMemoryLengthForDimensions_), imageblockDimensions);
|
| 337 |
+
}
|
| 338 |
+
|
| 339 |
+
// property: supportIndirectCommandBuffers
|
| 340 |
+
_MTL_INLINE bool MTL::ComputePipelineState::supportIndirectCommandBuffers() const
|
| 341 |
+
{
|
| 342 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportIndirectCommandBuffers));
|
| 343 |
+
}
|
| 344 |
+
|
| 345 |
+
// property: gpuResourceID
|
| 346 |
+
_MTL_INLINE MTL::ResourceID MTL::ComputePipelineState::gpuResourceID() const
|
| 347 |
+
{
|
| 348 |
+
return Object::sendMessage<MTL::ResourceID>(this, _MTL_PRIVATE_SEL(gpuResourceID));
|
| 349 |
+
}
|
| 350 |
+
|
| 351 |
+
// method: functionHandleWithFunction:
|
| 352 |
+
_MTL_INLINE MTL::FunctionHandle* MTL::ComputePipelineState::functionHandle(const MTL::Function* function)
|
| 353 |
+
{
|
| 354 |
+
return Object::sendMessage<MTL::FunctionHandle*>(this, _MTL_PRIVATE_SEL(functionHandleWithFunction_), function);
|
| 355 |
+
}
|
| 356 |
+
|
| 357 |
+
// method: newComputePipelineStateWithAdditionalBinaryFunctions:error:
|
| 358 |
+
_MTL_INLINE MTL::ComputePipelineState* MTL::ComputePipelineState::newComputePipelineState(const NS::Array* functions, NS::Error** error)
|
| 359 |
+
{
|
| 360 |
+
return Object::sendMessage<MTL::ComputePipelineState*>(this, _MTL_PRIVATE_SEL(newComputePipelineStateWithAdditionalBinaryFunctions_error_), functions, error);
|
| 361 |
+
}
|
| 362 |
+
|
| 363 |
+
// method: newVisibleFunctionTableWithDescriptor:
|
| 364 |
+
_MTL_INLINE MTL::VisibleFunctionTable* MTL::ComputePipelineState::newVisibleFunctionTable(const MTL::VisibleFunctionTableDescriptor* descriptor)
|
| 365 |
+
{
|
| 366 |
+
return Object::sendMessage<MTL::VisibleFunctionTable*>(this, _MTL_PRIVATE_SEL(newVisibleFunctionTableWithDescriptor_), descriptor);
|
| 367 |
+
}
|
| 368 |
+
|
| 369 |
+
// method: newIntersectionFunctionTableWithDescriptor:
|
| 370 |
+
_MTL_INLINE MTL::IntersectionFunctionTable* MTL::ComputePipelineState::newIntersectionFunctionTable(const MTL::IntersectionFunctionTableDescriptor* descriptor)
|
| 371 |
+
{
|
| 372 |
+
return Object::sendMessage<MTL::IntersectionFunctionTable*>(this, _MTL_PRIVATE_SEL(newIntersectionFunctionTableWithDescriptor_), descriptor);
|
| 373 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLCounters.hpp
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLCounters.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLResource.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
struct CounterResultTimestamp
|
| 34 |
+
{
|
| 35 |
+
uint64_t timestamp;
|
| 36 |
+
} _MTL_PACKED;
|
| 37 |
+
|
| 38 |
+
struct CounterResultStageUtilization
|
| 39 |
+
{
|
| 40 |
+
uint64_t totalCycles;
|
| 41 |
+
uint64_t vertexCycles;
|
| 42 |
+
uint64_t tessellationCycles;
|
| 43 |
+
uint64_t postTessellationVertexCycles;
|
| 44 |
+
uint64_t fragmentCycles;
|
| 45 |
+
uint64_t renderTargetCycles;
|
| 46 |
+
} _MTL_PACKED;
|
| 47 |
+
|
| 48 |
+
struct CounterResultStatistic
|
| 49 |
+
{
|
| 50 |
+
uint64_t tessellationInputPatches;
|
| 51 |
+
uint64_t vertexInvocations;
|
| 52 |
+
uint64_t postTessellationVertexInvocations;
|
| 53 |
+
uint64_t clipperInvocations;
|
| 54 |
+
uint64_t clipperPrimitivesOut;
|
| 55 |
+
uint64_t fragmentInvocations;
|
| 56 |
+
uint64_t fragmentsPassed;
|
| 57 |
+
uint64_t computeKernelInvocations;
|
| 58 |
+
} _MTL_PACKED;
|
| 59 |
+
|
| 60 |
+
_MTL_CONST(NS::ErrorDomain, CounterErrorDomain);
|
| 61 |
+
|
| 62 |
+
using CommonCounter = NS::String*;
|
| 63 |
+
|
| 64 |
+
_MTL_CONST(CommonCounter, CommonCounterTimestamp);
|
| 65 |
+
_MTL_CONST(CommonCounter, CommonCounterTessellationInputPatches);
|
| 66 |
+
_MTL_CONST(CommonCounter, CommonCounterVertexInvocations);
|
| 67 |
+
_MTL_CONST(CommonCounter, CommonCounterPostTessellationVertexInvocations);
|
| 68 |
+
_MTL_CONST(CommonCounter, CommonCounterClipperInvocations);
|
| 69 |
+
_MTL_CONST(CommonCounter, CommonCounterClipperPrimitivesOut);
|
| 70 |
+
_MTL_CONST(CommonCounter, CommonCounterFragmentInvocations);
|
| 71 |
+
_MTL_CONST(CommonCounter, CommonCounterFragmentsPassed);
|
| 72 |
+
_MTL_CONST(CommonCounter, CommonCounterComputeKernelInvocations);
|
| 73 |
+
_MTL_CONST(CommonCounter, CommonCounterTotalCycles);
|
| 74 |
+
_MTL_CONST(CommonCounter, CommonCounterVertexCycles);
|
| 75 |
+
_MTL_CONST(CommonCounter, CommonCounterTessellationCycles);
|
| 76 |
+
_MTL_CONST(CommonCounter, CommonCounterPostTessellationVertexCycles);
|
| 77 |
+
_MTL_CONST(CommonCounter, CommonCounterFragmentCycles);
|
| 78 |
+
_MTL_CONST(CommonCounter, CommonCounterRenderTargetWriteCycles);
|
| 79 |
+
|
| 80 |
+
using CommonCounterSet = NS::String*;
|
| 81 |
+
|
| 82 |
+
_MTL_CONST(CommonCounterSet, CommonCounterSetTimestamp);
|
| 83 |
+
_MTL_CONST(CommonCounterSet, CommonCounterSetStageUtilization);
|
| 84 |
+
_MTL_CONST(CommonCounterSet, CommonCounterSetStatistic);
|
| 85 |
+
|
| 86 |
+
class Counter : public NS::Referencing<Counter>
|
| 87 |
+
{
|
| 88 |
+
public:
|
| 89 |
+
NS::String* name() const;
|
| 90 |
+
};
|
| 91 |
+
|
| 92 |
+
class CounterSet : public NS::Referencing<CounterSet>
|
| 93 |
+
{
|
| 94 |
+
public:
|
| 95 |
+
NS::String* name() const;
|
| 96 |
+
|
| 97 |
+
NS::Array* counters() const;
|
| 98 |
+
};
|
| 99 |
+
|
| 100 |
+
class CounterSampleBufferDescriptor : public NS::Copying<CounterSampleBufferDescriptor>
|
| 101 |
+
{
|
| 102 |
+
public:
|
| 103 |
+
static class CounterSampleBufferDescriptor* alloc();
|
| 104 |
+
|
| 105 |
+
class CounterSampleBufferDescriptor* init();
|
| 106 |
+
|
| 107 |
+
class CounterSet* counterSet() const;
|
| 108 |
+
void setCounterSet(const class CounterSet* counterSet);
|
| 109 |
+
|
| 110 |
+
NS::String* label() const;
|
| 111 |
+
void setLabel(const NS::String* label);
|
| 112 |
+
|
| 113 |
+
MTL::StorageMode storageMode() const;
|
| 114 |
+
void setStorageMode(MTL::StorageMode storageMode);
|
| 115 |
+
|
| 116 |
+
NS::UInteger sampleCount() const;
|
| 117 |
+
void setSampleCount(NS::UInteger sampleCount);
|
| 118 |
+
};
|
| 119 |
+
|
| 120 |
+
class CounterSampleBuffer : public NS::Referencing<CounterSampleBuffer>
|
| 121 |
+
{
|
| 122 |
+
public:
|
| 123 |
+
class Device* device() const;
|
| 124 |
+
|
| 125 |
+
NS::String* label() const;
|
| 126 |
+
|
| 127 |
+
NS::UInteger sampleCount() const;
|
| 128 |
+
|
| 129 |
+
NS::Data* resolveCounterRange(NS::Range range);
|
| 130 |
+
};
|
| 131 |
+
|
| 132 |
+
_MTL_ENUM(NS::Integer, CounterSampleBufferError) {
|
| 133 |
+
CounterSampleBufferErrorOutOfMemory = 0,
|
| 134 |
+
CounterSampleBufferErrorInvalid = 1,
|
| 135 |
+
CounterSampleBufferErrorInternal = 2,
|
| 136 |
+
};
|
| 137 |
+
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
_MTL_PRIVATE_DEF_STR(NS::ErrorDomain, CounterErrorDomain);
|
| 141 |
+
|
| 142 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterTimestamp);
|
| 143 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterTessellationInputPatches);
|
| 144 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterVertexInvocations);
|
| 145 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterPostTessellationVertexInvocations);
|
| 146 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterClipperInvocations);
|
| 147 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterClipperPrimitivesOut);
|
| 148 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterFragmentInvocations);
|
| 149 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterFragmentsPassed);
|
| 150 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterComputeKernelInvocations);
|
| 151 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterTotalCycles);
|
| 152 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterVertexCycles);
|
| 153 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterTessellationCycles);
|
| 154 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterPostTessellationVertexCycles);
|
| 155 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterFragmentCycles);
|
| 156 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounter, CommonCounterRenderTargetWriteCycles);
|
| 157 |
+
|
| 158 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounterSet, CommonCounterSetTimestamp);
|
| 159 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounterSet, CommonCounterSetStageUtilization);
|
| 160 |
+
_MTL_PRIVATE_DEF_STR(MTL::CommonCounterSet, CommonCounterSetStatistic);
|
| 161 |
+
|
| 162 |
+
// property: name
|
| 163 |
+
_MTL_INLINE NS::String* MTL::Counter::name() const
|
| 164 |
+
{
|
| 165 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 166 |
+
}
|
| 167 |
+
|
| 168 |
+
// property: name
|
| 169 |
+
_MTL_INLINE NS::String* MTL::CounterSet::name() const
|
| 170 |
+
{
|
| 171 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 172 |
+
}
|
| 173 |
+
|
| 174 |
+
// property: counters
|
| 175 |
+
_MTL_INLINE NS::Array* MTL::CounterSet::counters() const
|
| 176 |
+
{
|
| 177 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(counters));
|
| 178 |
+
}
|
| 179 |
+
|
| 180 |
+
// static method: alloc
|
| 181 |
+
_MTL_INLINE MTL::CounterSampleBufferDescriptor* MTL::CounterSampleBufferDescriptor::alloc()
|
| 182 |
+
{
|
| 183 |
+
return NS::Object::alloc<MTL::CounterSampleBufferDescriptor>(_MTL_PRIVATE_CLS(MTLCounterSampleBufferDescriptor));
|
| 184 |
+
}
|
| 185 |
+
|
| 186 |
+
// method: init
|
| 187 |
+
_MTL_INLINE MTL::CounterSampleBufferDescriptor* MTL::CounterSampleBufferDescriptor::init()
|
| 188 |
+
{
|
| 189 |
+
return NS::Object::init<MTL::CounterSampleBufferDescriptor>();
|
| 190 |
+
}
|
| 191 |
+
|
| 192 |
+
// property: counterSet
|
| 193 |
+
_MTL_INLINE MTL::CounterSet* MTL::CounterSampleBufferDescriptor::counterSet() const
|
| 194 |
+
{
|
| 195 |
+
return Object::sendMessage<MTL::CounterSet*>(this, _MTL_PRIVATE_SEL(counterSet));
|
| 196 |
+
}
|
| 197 |
+
|
| 198 |
+
_MTL_INLINE void MTL::CounterSampleBufferDescriptor::setCounterSet(const MTL::CounterSet* counterSet)
|
| 199 |
+
{
|
| 200 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCounterSet_), counterSet);
|
| 201 |
+
}
|
| 202 |
+
|
| 203 |
+
// property: label
|
| 204 |
+
_MTL_INLINE NS::String* MTL::CounterSampleBufferDescriptor::label() const
|
| 205 |
+
{
|
| 206 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
+
_MTL_INLINE void MTL::CounterSampleBufferDescriptor::setLabel(const NS::String* label)
|
| 210 |
+
{
|
| 211 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 212 |
+
}
|
| 213 |
+
|
| 214 |
+
// property: storageMode
|
| 215 |
+
_MTL_INLINE MTL::StorageMode MTL::CounterSampleBufferDescriptor::storageMode() const
|
| 216 |
+
{
|
| 217 |
+
return Object::sendMessage<MTL::StorageMode>(this, _MTL_PRIVATE_SEL(storageMode));
|
| 218 |
+
}
|
| 219 |
+
|
| 220 |
+
_MTL_INLINE void MTL::CounterSampleBufferDescriptor::setStorageMode(MTL::StorageMode storageMode)
|
| 221 |
+
{
|
| 222 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStorageMode_), storageMode);
|
| 223 |
+
}
|
| 224 |
+
|
| 225 |
+
// property: sampleCount
|
| 226 |
+
_MTL_INLINE NS::UInteger MTL::CounterSampleBufferDescriptor::sampleCount() const
|
| 227 |
+
{
|
| 228 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(sampleCount));
|
| 229 |
+
}
|
| 230 |
+
|
| 231 |
+
_MTL_INLINE void MTL::CounterSampleBufferDescriptor::setSampleCount(NS::UInteger sampleCount)
|
| 232 |
+
{
|
| 233 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSampleCount_), sampleCount);
|
| 234 |
+
}
|
| 235 |
+
|
| 236 |
+
// property: device
|
| 237 |
+
_MTL_INLINE MTL::Device* MTL::CounterSampleBuffer::device() const
|
| 238 |
+
{
|
| 239 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
// property: label
|
| 243 |
+
_MTL_INLINE NS::String* MTL::CounterSampleBuffer::label() const
|
| 244 |
+
{
|
| 245 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 246 |
+
}
|
| 247 |
+
|
| 248 |
+
// property: sampleCount
|
| 249 |
+
_MTL_INLINE NS::UInteger MTL::CounterSampleBuffer::sampleCount() const
|
| 250 |
+
{
|
| 251 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(sampleCount));
|
| 252 |
+
}
|
| 253 |
+
|
| 254 |
+
// method: resolveCounterRange:
|
| 255 |
+
_MTL_INLINE NS::Data* MTL::CounterSampleBuffer::resolveCounterRange(NS::Range range)
|
| 256 |
+
{
|
| 257 |
+
return Object::sendMessage<NS::Data*>(this, _MTL_PRIVATE_SEL(resolveCounterRange_), range);
|
| 258 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLDefines.hpp
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLDefines.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 24 |
+
|
| 25 |
+
#include "../Foundation/NSDefines.hpp"
|
| 26 |
+
|
| 27 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 28 |
+
|
| 29 |
+
#define _MTL_EXPORT _NS_EXPORT
|
| 30 |
+
#define _MTL_EXTERN _NS_EXTERN
|
| 31 |
+
#define _MTL_INLINE _NS_INLINE
|
| 32 |
+
#define _MTL_PACKED _NS_PACKED
|
| 33 |
+
|
| 34 |
+
#define _MTL_CONST(type, name) _NS_CONST(type, name)
|
| 35 |
+
#define _MTL_ENUM(type, name) _NS_ENUM(type, name)
|
| 36 |
+
#define _MTL_OPTIONS(type, name) _NS_OPTIONS(type, name)
|
| 37 |
+
|
| 38 |
+
#define _MTL_VALIDATE_SIZE(ns, name) _NS_VALIDATE_SIZE(ns, name)
|
| 39 |
+
#define _MTL_VALIDATE_ENUM(ns, name) _NS_VALIDATE_ENUM(ns, name)
|
| 40 |
+
|
| 41 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLDepthStencil.hpp
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLDepthStencil.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLDepthStencil.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
_MTL_ENUM(NS::UInteger, CompareFunction) {
|
| 34 |
+
CompareFunctionNever = 0,
|
| 35 |
+
CompareFunctionLess = 1,
|
| 36 |
+
CompareFunctionEqual = 2,
|
| 37 |
+
CompareFunctionLessEqual = 3,
|
| 38 |
+
CompareFunctionGreater = 4,
|
| 39 |
+
CompareFunctionNotEqual = 5,
|
| 40 |
+
CompareFunctionGreaterEqual = 6,
|
| 41 |
+
CompareFunctionAlways = 7,
|
| 42 |
+
};
|
| 43 |
+
|
| 44 |
+
_MTL_ENUM(NS::UInteger, StencilOperation) {
|
| 45 |
+
StencilOperationKeep = 0,
|
| 46 |
+
StencilOperationZero = 1,
|
| 47 |
+
StencilOperationReplace = 2,
|
| 48 |
+
StencilOperationIncrementClamp = 3,
|
| 49 |
+
StencilOperationDecrementClamp = 4,
|
| 50 |
+
StencilOperationInvert = 5,
|
| 51 |
+
StencilOperationIncrementWrap = 6,
|
| 52 |
+
StencilOperationDecrementWrap = 7,
|
| 53 |
+
};
|
| 54 |
+
|
| 55 |
+
class StencilDescriptor : public NS::Copying<StencilDescriptor>
|
| 56 |
+
{
|
| 57 |
+
public:
|
| 58 |
+
static class StencilDescriptor* alloc();
|
| 59 |
+
|
| 60 |
+
class StencilDescriptor* init();
|
| 61 |
+
|
| 62 |
+
MTL::CompareFunction stencilCompareFunction() const;
|
| 63 |
+
void setStencilCompareFunction(MTL::CompareFunction stencilCompareFunction);
|
| 64 |
+
|
| 65 |
+
MTL::StencilOperation stencilFailureOperation() const;
|
| 66 |
+
void setStencilFailureOperation(MTL::StencilOperation stencilFailureOperation);
|
| 67 |
+
|
| 68 |
+
MTL::StencilOperation depthFailureOperation() const;
|
| 69 |
+
void setDepthFailureOperation(MTL::StencilOperation depthFailureOperation);
|
| 70 |
+
|
| 71 |
+
MTL::StencilOperation depthStencilPassOperation() const;
|
| 72 |
+
void setDepthStencilPassOperation(MTL::StencilOperation depthStencilPassOperation);
|
| 73 |
+
|
| 74 |
+
uint32_t readMask() const;
|
| 75 |
+
void setReadMask(uint32_t readMask);
|
| 76 |
+
|
| 77 |
+
uint32_t writeMask() const;
|
| 78 |
+
void setWriteMask(uint32_t writeMask);
|
| 79 |
+
};
|
| 80 |
+
|
| 81 |
+
class DepthStencilDescriptor : public NS::Copying<DepthStencilDescriptor>
|
| 82 |
+
{
|
| 83 |
+
public:
|
| 84 |
+
static class DepthStencilDescriptor* alloc();
|
| 85 |
+
|
| 86 |
+
class DepthStencilDescriptor* init();
|
| 87 |
+
|
| 88 |
+
MTL::CompareFunction depthCompareFunction() const;
|
| 89 |
+
void setDepthCompareFunction(MTL::CompareFunction depthCompareFunction);
|
| 90 |
+
|
| 91 |
+
bool depthWriteEnabled() const;
|
| 92 |
+
void setDepthWriteEnabled(bool depthWriteEnabled);
|
| 93 |
+
|
| 94 |
+
class StencilDescriptor* frontFaceStencil() const;
|
| 95 |
+
void setFrontFaceStencil(const class StencilDescriptor* frontFaceStencil);
|
| 96 |
+
|
| 97 |
+
class StencilDescriptor* backFaceStencil() const;
|
| 98 |
+
void setBackFaceStencil(const class StencilDescriptor* backFaceStencil);
|
| 99 |
+
|
| 100 |
+
NS::String* label() const;
|
| 101 |
+
void setLabel(const NS::String* label);
|
| 102 |
+
};
|
| 103 |
+
|
| 104 |
+
class DepthStencilState : public NS::Referencing<DepthStencilState>
|
| 105 |
+
{
|
| 106 |
+
public:
|
| 107 |
+
NS::String* label() const;
|
| 108 |
+
|
| 109 |
+
class Device* device() const;
|
| 110 |
+
};
|
| 111 |
+
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
// static method: alloc
|
| 115 |
+
_MTL_INLINE MTL::StencilDescriptor* MTL::StencilDescriptor::alloc()
|
| 116 |
+
{
|
| 117 |
+
return NS::Object::alloc<MTL::StencilDescriptor>(_MTL_PRIVATE_CLS(MTLStencilDescriptor));
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
// method: init
|
| 121 |
+
_MTL_INLINE MTL::StencilDescriptor* MTL::StencilDescriptor::init()
|
| 122 |
+
{
|
| 123 |
+
return NS::Object::init<MTL::StencilDescriptor>();
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
// property: stencilCompareFunction
|
| 127 |
+
_MTL_INLINE MTL::CompareFunction MTL::StencilDescriptor::stencilCompareFunction() const
|
| 128 |
+
{
|
| 129 |
+
return Object::sendMessage<MTL::CompareFunction>(this, _MTL_PRIVATE_SEL(stencilCompareFunction));
|
| 130 |
+
}
|
| 131 |
+
|
| 132 |
+
_MTL_INLINE void MTL::StencilDescriptor::setStencilCompareFunction(MTL::CompareFunction stencilCompareFunction)
|
| 133 |
+
{
|
| 134 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilCompareFunction_), stencilCompareFunction);
|
| 135 |
+
}
|
| 136 |
+
|
| 137 |
+
// property: stencilFailureOperation
|
| 138 |
+
_MTL_INLINE MTL::StencilOperation MTL::StencilDescriptor::stencilFailureOperation() const
|
| 139 |
+
{
|
| 140 |
+
return Object::sendMessage<MTL::StencilOperation>(this, _MTL_PRIVATE_SEL(stencilFailureOperation));
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
_MTL_INLINE void MTL::StencilDescriptor::setStencilFailureOperation(MTL::StencilOperation stencilFailureOperation)
|
| 144 |
+
{
|
| 145 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilFailureOperation_), stencilFailureOperation);
|
| 146 |
+
}
|
| 147 |
+
|
| 148 |
+
// property: depthFailureOperation
|
| 149 |
+
_MTL_INLINE MTL::StencilOperation MTL::StencilDescriptor::depthFailureOperation() const
|
| 150 |
+
{
|
| 151 |
+
return Object::sendMessage<MTL::StencilOperation>(this, _MTL_PRIVATE_SEL(depthFailureOperation));
|
| 152 |
+
}
|
| 153 |
+
|
| 154 |
+
_MTL_INLINE void MTL::StencilDescriptor::setDepthFailureOperation(MTL::StencilOperation depthFailureOperation)
|
| 155 |
+
{
|
| 156 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthFailureOperation_), depthFailureOperation);
|
| 157 |
+
}
|
| 158 |
+
|
| 159 |
+
// property: depthStencilPassOperation
|
| 160 |
+
_MTL_INLINE MTL::StencilOperation MTL::StencilDescriptor::depthStencilPassOperation() const
|
| 161 |
+
{
|
| 162 |
+
return Object::sendMessage<MTL::StencilOperation>(this, _MTL_PRIVATE_SEL(depthStencilPassOperation));
|
| 163 |
+
}
|
| 164 |
+
|
| 165 |
+
_MTL_INLINE void MTL::StencilDescriptor::setDepthStencilPassOperation(MTL::StencilOperation depthStencilPassOperation)
|
| 166 |
+
{
|
| 167 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthStencilPassOperation_), depthStencilPassOperation);
|
| 168 |
+
}
|
| 169 |
+
|
| 170 |
+
// property: readMask
|
| 171 |
+
_MTL_INLINE uint32_t MTL::StencilDescriptor::readMask() const
|
| 172 |
+
{
|
| 173 |
+
return Object::sendMessage<uint32_t>(this, _MTL_PRIVATE_SEL(readMask));
|
| 174 |
+
}
|
| 175 |
+
|
| 176 |
+
_MTL_INLINE void MTL::StencilDescriptor::setReadMask(uint32_t readMask)
|
| 177 |
+
{
|
| 178 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setReadMask_), readMask);
|
| 179 |
+
}
|
| 180 |
+
|
| 181 |
+
// property: writeMask
|
| 182 |
+
_MTL_INLINE uint32_t MTL::StencilDescriptor::writeMask() const
|
| 183 |
+
{
|
| 184 |
+
return Object::sendMessage<uint32_t>(this, _MTL_PRIVATE_SEL(writeMask));
|
| 185 |
+
}
|
| 186 |
+
|
| 187 |
+
_MTL_INLINE void MTL::StencilDescriptor::setWriteMask(uint32_t writeMask)
|
| 188 |
+
{
|
| 189 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setWriteMask_), writeMask);
|
| 190 |
+
}
|
| 191 |
+
|
| 192 |
+
// static method: alloc
|
| 193 |
+
_MTL_INLINE MTL::DepthStencilDescriptor* MTL::DepthStencilDescriptor::alloc()
|
| 194 |
+
{
|
| 195 |
+
return NS::Object::alloc<MTL::DepthStencilDescriptor>(_MTL_PRIVATE_CLS(MTLDepthStencilDescriptor));
|
| 196 |
+
}
|
| 197 |
+
|
| 198 |
+
// method: init
|
| 199 |
+
_MTL_INLINE MTL::DepthStencilDescriptor* MTL::DepthStencilDescriptor::init()
|
| 200 |
+
{
|
| 201 |
+
return NS::Object::init<MTL::DepthStencilDescriptor>();
|
| 202 |
+
}
|
| 203 |
+
|
| 204 |
+
// property: depthCompareFunction
|
| 205 |
+
_MTL_INLINE MTL::CompareFunction MTL::DepthStencilDescriptor::depthCompareFunction() const
|
| 206 |
+
{
|
| 207 |
+
return Object::sendMessage<MTL::CompareFunction>(this, _MTL_PRIVATE_SEL(depthCompareFunction));
|
| 208 |
+
}
|
| 209 |
+
|
| 210 |
+
_MTL_INLINE void MTL::DepthStencilDescriptor::setDepthCompareFunction(MTL::CompareFunction depthCompareFunction)
|
| 211 |
+
{
|
| 212 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthCompareFunction_), depthCompareFunction);
|
| 213 |
+
}
|
| 214 |
+
|
| 215 |
+
// property: depthWriteEnabled
|
| 216 |
+
_MTL_INLINE bool MTL::DepthStencilDescriptor::depthWriteEnabled() const
|
| 217 |
+
{
|
| 218 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isDepthWriteEnabled));
|
| 219 |
+
}
|
| 220 |
+
|
| 221 |
+
_MTL_INLINE void MTL::DepthStencilDescriptor::setDepthWriteEnabled(bool depthWriteEnabled)
|
| 222 |
+
{
|
| 223 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthWriteEnabled_), depthWriteEnabled);
|
| 224 |
+
}
|
| 225 |
+
|
| 226 |
+
// property: frontFaceStencil
|
| 227 |
+
_MTL_INLINE MTL::StencilDescriptor* MTL::DepthStencilDescriptor::frontFaceStencil() const
|
| 228 |
+
{
|
| 229 |
+
return Object::sendMessage<MTL::StencilDescriptor*>(this, _MTL_PRIVATE_SEL(frontFaceStencil));
|
| 230 |
+
}
|
| 231 |
+
|
| 232 |
+
_MTL_INLINE void MTL::DepthStencilDescriptor::setFrontFaceStencil(const MTL::StencilDescriptor* frontFaceStencil)
|
| 233 |
+
{
|
| 234 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFrontFaceStencil_), frontFaceStencil);
|
| 235 |
+
}
|
| 236 |
+
|
| 237 |
+
// property: backFaceStencil
|
| 238 |
+
_MTL_INLINE MTL::StencilDescriptor* MTL::DepthStencilDescriptor::backFaceStencil() const
|
| 239 |
+
{
|
| 240 |
+
return Object::sendMessage<MTL::StencilDescriptor*>(this, _MTL_PRIVATE_SEL(backFaceStencil));
|
| 241 |
+
}
|
| 242 |
+
|
| 243 |
+
_MTL_INLINE void MTL::DepthStencilDescriptor::setBackFaceStencil(const MTL::StencilDescriptor* backFaceStencil)
|
| 244 |
+
{
|
| 245 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBackFaceStencil_), backFaceStencil);
|
| 246 |
+
}
|
| 247 |
+
|
| 248 |
+
// property: label
|
| 249 |
+
_MTL_INLINE NS::String* MTL::DepthStencilDescriptor::label() const
|
| 250 |
+
{
|
| 251 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 252 |
+
}
|
| 253 |
+
|
| 254 |
+
_MTL_INLINE void MTL::DepthStencilDescriptor::setLabel(const NS::String* label)
|
| 255 |
+
{
|
| 256 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 257 |
+
}
|
| 258 |
+
|
| 259 |
+
// property: label
|
| 260 |
+
_MTL_INLINE NS::String* MTL::DepthStencilState::label() const
|
| 261 |
+
{
|
| 262 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 263 |
+
}
|
| 264 |
+
|
| 265 |
+
// property: device
|
| 266 |
+
_MTL_INLINE MTL::Device* MTL::DepthStencilState::device() const
|
| 267 |
+
{
|
| 268 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 269 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLDevice.hpp
ADDED
|
@@ -0,0 +1,1426 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLDevice.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLArgument.hpp"
|
| 30 |
+
#include "MTLDevice.hpp"
|
| 31 |
+
#include "MTLPixelFormat.hpp"
|
| 32 |
+
#include "MTLResource.hpp"
|
| 33 |
+
#include "MTLTexture.hpp"
|
| 34 |
+
#include "MTLTypes.hpp"
|
| 35 |
+
#include <IOSurface/IOSurfaceRef.h>
|
| 36 |
+
#include <functional>
|
| 37 |
+
|
| 38 |
+
namespace MTL
|
| 39 |
+
{
|
| 40 |
+
_MTL_ENUM(NS::Integer, IOCompressionMethod) {
|
| 41 |
+
IOCompressionMethodZlib = 0,
|
| 42 |
+
IOCompressionMethodLZFSE = 1,
|
| 43 |
+
IOCompressionMethodLZ4 = 2,
|
| 44 |
+
IOCompressionMethodLZMA = 3,
|
| 45 |
+
IOCompressionMethodLZBitmap = 4,
|
| 46 |
+
};
|
| 47 |
+
|
| 48 |
+
_MTL_ENUM(NS::UInteger, FeatureSet) {
|
| 49 |
+
FeatureSet_iOS_GPUFamily1_v1 = 0,
|
| 50 |
+
FeatureSet_iOS_GPUFamily2_v1 = 1,
|
| 51 |
+
FeatureSet_iOS_GPUFamily1_v2 = 2,
|
| 52 |
+
FeatureSet_iOS_GPUFamily2_v2 = 3,
|
| 53 |
+
FeatureSet_iOS_GPUFamily3_v1 = 4,
|
| 54 |
+
FeatureSet_iOS_GPUFamily1_v3 = 5,
|
| 55 |
+
FeatureSet_iOS_GPUFamily2_v3 = 6,
|
| 56 |
+
FeatureSet_iOS_GPUFamily3_v2 = 7,
|
| 57 |
+
FeatureSet_iOS_GPUFamily1_v4 = 8,
|
| 58 |
+
FeatureSet_iOS_GPUFamily2_v4 = 9,
|
| 59 |
+
FeatureSet_iOS_GPUFamily3_v3 = 10,
|
| 60 |
+
FeatureSet_iOS_GPUFamily4_v1 = 11,
|
| 61 |
+
FeatureSet_iOS_GPUFamily1_v5 = 12,
|
| 62 |
+
FeatureSet_iOS_GPUFamily2_v5 = 13,
|
| 63 |
+
FeatureSet_iOS_GPUFamily3_v4 = 14,
|
| 64 |
+
FeatureSet_iOS_GPUFamily4_v2 = 15,
|
| 65 |
+
FeatureSet_iOS_GPUFamily5_v1 = 16,
|
| 66 |
+
FeatureSet_macOS_GPUFamily1_v1 = 10000,
|
| 67 |
+
FeatureSet_OSX_GPUFamily1_v1 = 10000,
|
| 68 |
+
FeatureSet_macOS_GPUFamily1_v2 = 10001,
|
| 69 |
+
FeatureSet_OSX_GPUFamily1_v2 = 10001,
|
| 70 |
+
FeatureSet_OSX_ReadWriteTextureTier2 = 10002,
|
| 71 |
+
FeatureSet_macOS_ReadWriteTextureTier2 = 10002,
|
| 72 |
+
FeatureSet_macOS_GPUFamily1_v3 = 10003,
|
| 73 |
+
FeatureSet_macOS_GPUFamily1_v4 = 10004,
|
| 74 |
+
FeatureSet_macOS_GPUFamily2_v1 = 10005,
|
| 75 |
+
FeatureSet_watchOS_GPUFamily1_v1 = 20000,
|
| 76 |
+
FeatureSet_WatchOS_GPUFamily1_v1 = 20000,
|
| 77 |
+
FeatureSet_watchOS_GPUFamily2_v1 = 20001,
|
| 78 |
+
FeatureSet_WatchOS_GPUFamily2_v1 = 20001,
|
| 79 |
+
FeatureSet_tvOS_GPUFamily1_v1 = 30000,
|
| 80 |
+
FeatureSet_TVOS_GPUFamily1_v1 = 30000,
|
| 81 |
+
FeatureSet_tvOS_GPUFamily1_v2 = 30001,
|
| 82 |
+
FeatureSet_tvOS_GPUFamily1_v3 = 30002,
|
| 83 |
+
FeatureSet_tvOS_GPUFamily2_v1 = 30003,
|
| 84 |
+
FeatureSet_tvOS_GPUFamily1_v4 = 30004,
|
| 85 |
+
FeatureSet_tvOS_GPUFamily2_v2 = 30005,
|
| 86 |
+
};
|
| 87 |
+
|
| 88 |
+
_MTL_ENUM(NS::Integer, GPUFamily) {
|
| 89 |
+
GPUFamilyApple1 = 1001,
|
| 90 |
+
GPUFamilyApple2 = 1002,
|
| 91 |
+
GPUFamilyApple3 = 1003,
|
| 92 |
+
GPUFamilyApple4 = 1004,
|
| 93 |
+
GPUFamilyApple5 = 1005,
|
| 94 |
+
GPUFamilyApple6 = 1006,
|
| 95 |
+
GPUFamilyApple7 = 1007,
|
| 96 |
+
GPUFamilyApple8 = 1008,
|
| 97 |
+
GPUFamilyMac1 = 2001,
|
| 98 |
+
GPUFamilyMac2 = 2002,
|
| 99 |
+
GPUFamilyCommon1 = 3001,
|
| 100 |
+
GPUFamilyCommon2 = 3002,
|
| 101 |
+
GPUFamilyCommon3 = 3003,
|
| 102 |
+
GPUFamilyMacCatalyst1 = 4001,
|
| 103 |
+
GPUFamilyMacCatalyst2 = 4002,
|
| 104 |
+
GPUFamilyMetal3 = 5001,
|
| 105 |
+
};
|
| 106 |
+
|
| 107 |
+
_MTL_ENUM(NS::UInteger, DeviceLocation) {
|
| 108 |
+
DeviceLocationBuiltIn = 0,
|
| 109 |
+
DeviceLocationSlot = 1,
|
| 110 |
+
DeviceLocationExternal = 2,
|
| 111 |
+
DeviceLocationUnspecified = NS::UIntegerMax,
|
| 112 |
+
};
|
| 113 |
+
|
| 114 |
+
_MTL_OPTIONS(NS::UInteger, PipelineOption) {
|
| 115 |
+
PipelineOptionNone = 0,
|
| 116 |
+
PipelineOptionArgumentInfo = 1,
|
| 117 |
+
PipelineOptionBufferTypeInfo = 2,
|
| 118 |
+
PipelineOptionFailOnBinaryArchiveMiss = 4,
|
| 119 |
+
};
|
| 120 |
+
|
| 121 |
+
_MTL_ENUM(NS::UInteger, ReadWriteTextureTier) {
|
| 122 |
+
ReadWriteTextureTierNone = 0,
|
| 123 |
+
ReadWriteTextureTier1 = 1,
|
| 124 |
+
ReadWriteTextureTier2 = 2,
|
| 125 |
+
};
|
| 126 |
+
|
| 127 |
+
_MTL_ENUM(NS::UInteger, ArgumentBuffersTier) {
|
| 128 |
+
ArgumentBuffersTier1 = 0,
|
| 129 |
+
ArgumentBuffersTier2 = 1,
|
| 130 |
+
};
|
| 131 |
+
|
| 132 |
+
_MTL_ENUM(NS::UInteger, SparseTextureRegionAlignmentMode) {
|
| 133 |
+
SparseTextureRegionAlignmentModeOutward = 0,
|
| 134 |
+
SparseTextureRegionAlignmentModeInward = 1,
|
| 135 |
+
};
|
| 136 |
+
|
| 137 |
+
_MTL_ENUM(NS::Integer, SparsePageSize) {
|
| 138 |
+
SparsePageSize16 = 101,
|
| 139 |
+
SparsePageSize64 = 102,
|
| 140 |
+
SparsePageSize256 = 103,
|
| 141 |
+
};
|
| 142 |
+
|
| 143 |
+
struct AccelerationStructureSizes
|
| 144 |
+
{
|
| 145 |
+
NS::UInteger accelerationStructureSize;
|
| 146 |
+
NS::UInteger buildScratchBufferSize;
|
| 147 |
+
NS::UInteger refitScratchBufferSize;
|
| 148 |
+
} _MTL_PACKED;
|
| 149 |
+
|
| 150 |
+
_MTL_ENUM(NS::UInteger, CounterSamplingPoint) {
|
| 151 |
+
CounterSamplingPointAtStageBoundary = 0,
|
| 152 |
+
CounterSamplingPointAtDrawBoundary = 1,
|
| 153 |
+
CounterSamplingPointAtDispatchBoundary = 2,
|
| 154 |
+
CounterSamplingPointAtTileDispatchBoundary = 3,
|
| 155 |
+
CounterSamplingPointAtBlitBoundary = 4,
|
| 156 |
+
};
|
| 157 |
+
|
| 158 |
+
struct SizeAndAlign
|
| 159 |
+
{
|
| 160 |
+
NS::UInteger size;
|
| 161 |
+
NS::UInteger align;
|
| 162 |
+
} _MTL_PACKED;
|
| 163 |
+
|
| 164 |
+
class ArgumentDescriptor : public NS::Copying<ArgumentDescriptor>
|
| 165 |
+
{
|
| 166 |
+
public:
|
| 167 |
+
static class ArgumentDescriptor* alloc();
|
| 168 |
+
|
| 169 |
+
class ArgumentDescriptor* init();
|
| 170 |
+
|
| 171 |
+
static class ArgumentDescriptor* argumentDescriptor();
|
| 172 |
+
|
| 173 |
+
MTL::DataType dataType() const;
|
| 174 |
+
void setDataType(MTL::DataType dataType);
|
| 175 |
+
|
| 176 |
+
NS::UInteger index() const;
|
| 177 |
+
void setIndex(NS::UInteger index);
|
| 178 |
+
|
| 179 |
+
NS::UInteger arrayLength() const;
|
| 180 |
+
void setArrayLength(NS::UInteger arrayLength);
|
| 181 |
+
|
| 182 |
+
MTL::BindingAccess access() const;
|
| 183 |
+
void setAccess(MTL::BindingAccess access);
|
| 184 |
+
|
| 185 |
+
MTL::TextureType textureType() const;
|
| 186 |
+
void setTextureType(MTL::TextureType textureType);
|
| 187 |
+
|
| 188 |
+
NS::UInteger constantBlockAlignment() const;
|
| 189 |
+
void setConstantBlockAlignment(NS::UInteger constantBlockAlignment);
|
| 190 |
+
};
|
| 191 |
+
|
| 192 |
+
class Architecture : public NS::Copying<Architecture>
|
| 193 |
+
{
|
| 194 |
+
public:
|
| 195 |
+
static class Architecture* alloc();
|
| 196 |
+
|
| 197 |
+
class Architecture* init();
|
| 198 |
+
|
| 199 |
+
NS::String* name() const;
|
| 200 |
+
};
|
| 201 |
+
|
| 202 |
+
using DeviceNotificationName = NS::String*;
|
| 203 |
+
_MTL_CONST(DeviceNotificationName, DeviceWasAddedNotification);
|
| 204 |
+
_MTL_CONST(DeviceNotificationName, DeviceRemovalRequestedNotification);
|
| 205 |
+
_MTL_CONST(DeviceNotificationName, DeviceWasRemovedNotification);
|
| 206 |
+
_MTL_CONST(NS::ErrorUserInfoKey, CommandBufferEncoderInfoErrorKey);
|
| 207 |
+
|
| 208 |
+
using DeviceNotificationHandlerBlock = void (^)(class Device* pDevice, DeviceNotificationName notifyName);
|
| 209 |
+
|
| 210 |
+
using DeviceNotificationHandlerFunction = std::function<void(class Device* pDevice, DeviceNotificationName notifyName)>;
|
| 211 |
+
|
| 212 |
+
using AutoreleasedComputePipelineReflection = class ComputePipelineReflection*;
|
| 213 |
+
|
| 214 |
+
using AutoreleasedRenderPipelineReflection = class RenderPipelineReflection*;
|
| 215 |
+
|
| 216 |
+
using NewLibraryCompletionHandler = void (^)(class Library*, NS::Error*);
|
| 217 |
+
|
| 218 |
+
using NewLibraryCompletionHandlerFunction = std::function<void(class Library*, NS::Error*)>;
|
| 219 |
+
|
| 220 |
+
using NewRenderPipelineStateCompletionHandler = void (^)(class RenderPipelineState*, NS::Error*);
|
| 221 |
+
|
| 222 |
+
using NewRenderPipelineStateCompletionHandlerFunction = std::function<void(class RenderPipelineState*, NS::Error*)>;
|
| 223 |
+
|
| 224 |
+
using NewRenderPipelineStateWithReflectionCompletionHandler = void (^)(class RenderPipelineState*, class RenderPipelineReflection*, NS::Error*);
|
| 225 |
+
|
| 226 |
+
using NewRenderPipelineStateWithReflectionCompletionHandlerFunction = std::function<void(class RenderPipelineState*, class RenderPipelineReflection*, NS::Error*)>;
|
| 227 |
+
|
| 228 |
+
using NewComputePipelineStateCompletionHandler = void (^)(class ComputePipelineState*, NS::Error*);
|
| 229 |
+
|
| 230 |
+
using NewComputePipelineStateCompletionHandlerFunction = std::function<void(class ComputePipelineState*, NS::Error*)>;
|
| 231 |
+
|
| 232 |
+
using NewComputePipelineStateWithReflectionCompletionHandler = void (^)(class ComputePipelineState*, class ComputePipelineReflection*, NS::Error*);
|
| 233 |
+
|
| 234 |
+
using NewComputePipelineStateWithReflectionCompletionHandlerFunction = std::function<void(class ComputePipelineState*, class ComputePipelineReflection*, NS::Error*)>;
|
| 235 |
+
|
| 236 |
+
using Timestamp = std::uint64_t;
|
| 237 |
+
|
| 238 |
+
MTL::Device* CreateSystemDefaultDevice();
|
| 239 |
+
|
| 240 |
+
NS::Array* CopyAllDevices();
|
| 241 |
+
|
| 242 |
+
NS::Array* CopyAllDevicesWithObserver(NS::Object** pOutObserver, DeviceNotificationHandlerBlock handler);
|
| 243 |
+
|
| 244 |
+
NS::Array* CopyAllDevicesWithObserver(NS::Object** pOutObserver, const DeviceNotificationHandlerFunction& handler);
|
| 245 |
+
|
| 246 |
+
void RemoveDeviceObserver(const NS::Object* pObserver);
|
| 247 |
+
|
| 248 |
+
class Device : public NS::Referencing<Device>
|
| 249 |
+
{
|
| 250 |
+
public:
|
| 251 |
+
void newLibrary(const NS::String* pSource, const class CompileOptions* pOptions, const NewLibraryCompletionHandlerFunction& completionHandler);
|
| 252 |
+
|
| 253 |
+
void newLibrary(const class StitchedLibraryDescriptor* pDescriptor, const MTL::NewLibraryCompletionHandlerFunction& completionHandler);
|
| 254 |
+
|
| 255 |
+
void newRenderPipelineState(const class RenderPipelineDescriptor* pDescriptor, const NewRenderPipelineStateCompletionHandlerFunction& completionHandler);
|
| 256 |
+
|
| 257 |
+
void newRenderPipelineState(const class RenderPipelineDescriptor* pDescriptor, PipelineOption options, const NewRenderPipelineStateWithReflectionCompletionHandlerFunction& completionHandler);
|
| 258 |
+
|
| 259 |
+
void newRenderPipelineState(const class TileRenderPipelineDescriptor* pDescriptor, PipelineOption options, const NewRenderPipelineStateWithReflectionCompletionHandlerFunction& completionHandler);
|
| 260 |
+
|
| 261 |
+
void newComputePipelineState(const class Function* pFunction, const NewComputePipelineStateCompletionHandlerFunction& completionHandler);
|
| 262 |
+
|
| 263 |
+
void newComputePipelineState(const class Function* pFunction, PipelineOption options, const NewComputePipelineStateWithReflectionCompletionHandlerFunction& completionHandler);
|
| 264 |
+
|
| 265 |
+
void newComputePipelineState(const class ComputePipelineDescriptor* pDescriptor, PipelineOption options, const NewComputePipelineStateWithReflectionCompletionHandlerFunction& completionHandler);
|
| 266 |
+
|
| 267 |
+
bool isHeadless() const;
|
| 268 |
+
|
| 269 |
+
NS::String* name() const;
|
| 270 |
+
|
| 271 |
+
uint64_t registryID() const;
|
| 272 |
+
|
| 273 |
+
class Architecture* architecture() const;
|
| 274 |
+
|
| 275 |
+
MTL::Size maxThreadsPerThreadgroup() const;
|
| 276 |
+
|
| 277 |
+
bool lowPower() const;
|
| 278 |
+
|
| 279 |
+
bool headless() const;
|
| 280 |
+
|
| 281 |
+
bool removable() const;
|
| 282 |
+
|
| 283 |
+
bool hasUnifiedMemory() const;
|
| 284 |
+
|
| 285 |
+
uint64_t recommendedMaxWorkingSetSize() const;
|
| 286 |
+
|
| 287 |
+
MTL::DeviceLocation location() const;
|
| 288 |
+
|
| 289 |
+
NS::UInteger locationNumber() const;
|
| 290 |
+
|
| 291 |
+
uint64_t maxTransferRate() const;
|
| 292 |
+
|
| 293 |
+
bool depth24Stencil8PixelFormatSupported() const;
|
| 294 |
+
|
| 295 |
+
MTL::ReadWriteTextureTier readWriteTextureSupport() const;
|
| 296 |
+
|
| 297 |
+
MTL::ArgumentBuffersTier argumentBuffersSupport() const;
|
| 298 |
+
|
| 299 |
+
bool rasterOrderGroupsSupported() const;
|
| 300 |
+
|
| 301 |
+
bool supports32BitFloatFiltering() const;
|
| 302 |
+
|
| 303 |
+
bool supports32BitMSAA() const;
|
| 304 |
+
|
| 305 |
+
bool supportsQueryTextureLOD() const;
|
| 306 |
+
|
| 307 |
+
bool supportsBCTextureCompression() const;
|
| 308 |
+
|
| 309 |
+
bool supportsPullModelInterpolation() const;
|
| 310 |
+
|
| 311 |
+
bool barycentricCoordsSupported() const;
|
| 312 |
+
|
| 313 |
+
bool supportsShaderBarycentricCoordinates() const;
|
| 314 |
+
|
| 315 |
+
NS::UInteger currentAllocatedSize() const;
|
| 316 |
+
|
| 317 |
+
class CommandQueue* newCommandQueue();
|
| 318 |
+
|
| 319 |
+
class CommandQueue* newCommandQueue(NS::UInteger maxCommandBufferCount);
|
| 320 |
+
|
| 321 |
+
MTL::SizeAndAlign heapTextureSizeAndAlign(const class TextureDescriptor* desc);
|
| 322 |
+
|
| 323 |
+
MTL::SizeAndAlign heapBufferSizeAndAlign(NS::UInteger length, MTL::ResourceOptions options);
|
| 324 |
+
|
| 325 |
+
class Heap* newHeap(const class HeapDescriptor* descriptor);
|
| 326 |
+
|
| 327 |
+
class Buffer* newBuffer(NS::UInteger length, MTL::ResourceOptions options);
|
| 328 |
+
|
| 329 |
+
class Buffer* newBuffer(const void* pointer, NS::UInteger length, MTL::ResourceOptions options);
|
| 330 |
+
|
| 331 |
+
class Buffer* newBuffer(const void* pointer, NS::UInteger length, MTL::ResourceOptions options, void (^deallocator)(void*, NS::UInteger));
|
| 332 |
+
|
| 333 |
+
class DepthStencilState* newDepthStencilState(const class DepthStencilDescriptor* descriptor);
|
| 334 |
+
|
| 335 |
+
class Texture* newTexture(const class TextureDescriptor* descriptor);
|
| 336 |
+
|
| 337 |
+
class Texture* newTexture(const class TextureDescriptor* descriptor, const IOSurfaceRef iosurface, NS::UInteger plane);
|
| 338 |
+
|
| 339 |
+
class Texture* newSharedTexture(const class TextureDescriptor* descriptor);
|
| 340 |
+
|
| 341 |
+
class Texture* newSharedTexture(const class SharedTextureHandle* sharedHandle);
|
| 342 |
+
|
| 343 |
+
class SamplerState* newSamplerState(const class SamplerDescriptor* descriptor);
|
| 344 |
+
|
| 345 |
+
class Library* newDefaultLibrary();
|
| 346 |
+
|
| 347 |
+
class Library* newDefaultLibrary(const NS::Bundle* bundle, NS::Error** error);
|
| 348 |
+
|
| 349 |
+
class Library* newLibrary(const NS::String* filepath, NS::Error** error);
|
| 350 |
+
|
| 351 |
+
class Library* newLibrary(const NS::URL* url, NS::Error** error);
|
| 352 |
+
|
| 353 |
+
class Library* newLibrary(const dispatch_data_t data, NS::Error** error);
|
| 354 |
+
|
| 355 |
+
class Library* newLibrary(const NS::String* source, const class CompileOptions* options, NS::Error** error);
|
| 356 |
+
|
| 357 |
+
void newLibrary(const NS::String* source, const class CompileOptions* options, const MTL::NewLibraryCompletionHandler completionHandler);
|
| 358 |
+
|
| 359 |
+
class Library* newLibrary(const class StitchedLibraryDescriptor* descriptor, NS::Error** error);
|
| 360 |
+
|
| 361 |
+
void newLibrary(const class StitchedLibraryDescriptor* descriptor, const MTL::NewLibraryCompletionHandler completionHandler);
|
| 362 |
+
|
| 363 |
+
class RenderPipelineState* newRenderPipelineState(const class RenderPipelineDescriptor* descriptor, NS::Error** error);
|
| 364 |
+
|
| 365 |
+
class RenderPipelineState* newRenderPipelineState(const class RenderPipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::AutoreleasedRenderPipelineReflection* reflection, NS::Error** error);
|
| 366 |
+
|
| 367 |
+
void newRenderPipelineState(const class RenderPipelineDescriptor* descriptor, const MTL::NewRenderPipelineStateCompletionHandler completionHandler);
|
| 368 |
+
|
| 369 |
+
void newRenderPipelineState(const class RenderPipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::NewRenderPipelineStateWithReflectionCompletionHandler completionHandler);
|
| 370 |
+
|
| 371 |
+
class ComputePipelineState* newComputePipelineState(const class Function* computeFunction, NS::Error** error);
|
| 372 |
+
|
| 373 |
+
class ComputePipelineState* newComputePipelineState(const class Function* computeFunction, MTL::PipelineOption options, const MTL::AutoreleasedComputePipelineReflection* reflection, NS::Error** error);
|
| 374 |
+
|
| 375 |
+
void newComputePipelineState(const class Function* computeFunction, const MTL::NewComputePipelineStateCompletionHandler completionHandler);
|
| 376 |
+
|
| 377 |
+
void newComputePipelineState(const class Function* computeFunction, MTL::PipelineOption options, const MTL::NewComputePipelineStateWithReflectionCompletionHandler completionHandler);
|
| 378 |
+
|
| 379 |
+
class ComputePipelineState* newComputePipelineState(const class ComputePipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::AutoreleasedComputePipelineReflection* reflection, NS::Error** error);
|
| 380 |
+
|
| 381 |
+
void newComputePipelineState(const class ComputePipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::NewComputePipelineStateWithReflectionCompletionHandler completionHandler);
|
| 382 |
+
|
| 383 |
+
class Fence* newFence();
|
| 384 |
+
|
| 385 |
+
bool supportsFeatureSet(MTL::FeatureSet featureSet);
|
| 386 |
+
|
| 387 |
+
bool supportsFamily(MTL::GPUFamily gpuFamily);
|
| 388 |
+
|
| 389 |
+
bool supportsTextureSampleCount(NS::UInteger sampleCount);
|
| 390 |
+
|
| 391 |
+
NS::UInteger minimumLinearTextureAlignmentForPixelFormat(MTL::PixelFormat format);
|
| 392 |
+
|
| 393 |
+
NS::UInteger minimumTextureBufferAlignmentForPixelFormat(MTL::PixelFormat format);
|
| 394 |
+
|
| 395 |
+
class RenderPipelineState* newRenderPipelineState(const class TileRenderPipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::AutoreleasedRenderPipelineReflection* reflection, NS::Error** error);
|
| 396 |
+
|
| 397 |
+
void newRenderPipelineState(const class TileRenderPipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::NewRenderPipelineStateWithReflectionCompletionHandler completionHandler);
|
| 398 |
+
|
| 399 |
+
class RenderPipelineState* newRenderPipelineState(const class MeshRenderPipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::AutoreleasedRenderPipelineReflection* reflection, NS::Error** error);
|
| 400 |
+
|
| 401 |
+
void newRenderPipelineState(const class MeshRenderPipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::NewRenderPipelineStateWithReflectionCompletionHandler completionHandler);
|
| 402 |
+
|
| 403 |
+
NS::UInteger maxThreadgroupMemoryLength() const;
|
| 404 |
+
|
| 405 |
+
NS::UInteger maxArgumentBufferSamplerCount() const;
|
| 406 |
+
|
| 407 |
+
bool programmableSamplePositionsSupported() const;
|
| 408 |
+
|
| 409 |
+
void getDefaultSamplePositions(MTL::SamplePosition* positions, NS::UInteger count);
|
| 410 |
+
|
| 411 |
+
class ArgumentEncoder* newArgumentEncoder(const NS::Array* arguments);
|
| 412 |
+
|
| 413 |
+
bool supportsRasterizationRateMap(NS::UInteger layerCount);
|
| 414 |
+
|
| 415 |
+
class RasterizationRateMap* newRasterizationRateMap(const class RasterizationRateMapDescriptor* descriptor);
|
| 416 |
+
|
| 417 |
+
class IndirectCommandBuffer* newIndirectCommandBuffer(const class IndirectCommandBufferDescriptor* descriptor, NS::UInteger maxCount, MTL::ResourceOptions options);
|
| 418 |
+
|
| 419 |
+
class Event* newEvent();
|
| 420 |
+
|
| 421 |
+
class SharedEvent* newSharedEvent();
|
| 422 |
+
|
| 423 |
+
class SharedEvent* newSharedEvent(const class SharedEventHandle* sharedEventHandle);
|
| 424 |
+
|
| 425 |
+
uint64_t peerGroupID() const;
|
| 426 |
+
|
| 427 |
+
uint32_t peerIndex() const;
|
| 428 |
+
|
| 429 |
+
uint32_t peerCount() const;
|
| 430 |
+
|
| 431 |
+
class IOFileHandle* newIOHandle(const NS::URL* url, NS::Error** error);
|
| 432 |
+
|
| 433 |
+
class IOCommandQueue* newIOCommandQueue(const class IOCommandQueueDescriptor* descriptor, NS::Error** error);
|
| 434 |
+
|
| 435 |
+
class IOFileHandle* newIOHandle(const NS::URL* url, MTL::IOCompressionMethod compressionMethod, NS::Error** error);
|
| 436 |
+
|
| 437 |
+
class IOFileHandle* newIOFileHandle(const NS::URL* url, NS::Error** error);
|
| 438 |
+
|
| 439 |
+
class IOFileHandle* newIOFileHandle(const NS::URL* url, MTL::IOCompressionMethod compressionMethod, NS::Error** error);
|
| 440 |
+
|
| 441 |
+
MTL::Size sparseTileSize(MTL::TextureType textureType, MTL::PixelFormat pixelFormat, NS::UInteger sampleCount);
|
| 442 |
+
|
| 443 |
+
NS::UInteger sparseTileSizeInBytes() const;
|
| 444 |
+
|
| 445 |
+
void convertSparsePixelRegions(const MTL::Region* pixelRegions, MTL::Region* tileRegions, MTL::Size tileSize, MTL::SparseTextureRegionAlignmentMode mode, NS::UInteger numRegions);
|
| 446 |
+
|
| 447 |
+
void convertSparseTileRegions(const MTL::Region* tileRegions, MTL::Region* pixelRegions, MTL::Size tileSize, NS::UInteger numRegions);
|
| 448 |
+
|
| 449 |
+
NS::UInteger sparseTileSizeInBytes(MTL::SparsePageSize sparsePageSize);
|
| 450 |
+
|
| 451 |
+
MTL::Size sparseTileSize(MTL::TextureType textureType, MTL::PixelFormat pixelFormat, NS::UInteger sampleCount, MTL::SparsePageSize sparsePageSize);
|
| 452 |
+
|
| 453 |
+
NS::UInteger maxBufferLength() const;
|
| 454 |
+
|
| 455 |
+
NS::Array* counterSets() const;
|
| 456 |
+
|
| 457 |
+
class CounterSampleBuffer* newCounterSampleBuffer(const class CounterSampleBufferDescriptor* descriptor, NS::Error** error);
|
| 458 |
+
|
| 459 |
+
void sampleTimestamps(MTL::Timestamp* cpuTimestamp, MTL::Timestamp* gpuTimestamp);
|
| 460 |
+
|
| 461 |
+
class ArgumentEncoder* newArgumentEncoder(const class BufferBinding* bufferBinding);
|
| 462 |
+
|
| 463 |
+
bool supportsCounterSampling(MTL::CounterSamplingPoint samplingPoint);
|
| 464 |
+
|
| 465 |
+
bool supportsVertexAmplificationCount(NS::UInteger count);
|
| 466 |
+
|
| 467 |
+
bool supportsDynamicLibraries() const;
|
| 468 |
+
|
| 469 |
+
bool supportsRenderDynamicLibraries() const;
|
| 470 |
+
|
| 471 |
+
class DynamicLibrary* newDynamicLibrary(const class Library* library, NS::Error** error);
|
| 472 |
+
|
| 473 |
+
class DynamicLibrary* newDynamicLibrary(const NS::URL* url, NS::Error** error);
|
| 474 |
+
|
| 475 |
+
class BinaryArchive* newBinaryArchive(const class BinaryArchiveDescriptor* descriptor, NS::Error** error);
|
| 476 |
+
|
| 477 |
+
bool supportsRaytracing() const;
|
| 478 |
+
|
| 479 |
+
MTL::AccelerationStructureSizes accelerationStructureSizes(const class AccelerationStructureDescriptor* descriptor);
|
| 480 |
+
|
| 481 |
+
class AccelerationStructure* newAccelerationStructure(NS::UInteger size);
|
| 482 |
+
|
| 483 |
+
class AccelerationStructure* newAccelerationStructure(const class AccelerationStructureDescriptor* descriptor);
|
| 484 |
+
|
| 485 |
+
MTL::SizeAndAlign heapAccelerationStructureSizeAndAlign(NS::UInteger size);
|
| 486 |
+
|
| 487 |
+
MTL::SizeAndAlign heapAccelerationStructureSizeAndAlign(const class AccelerationStructureDescriptor* descriptor);
|
| 488 |
+
|
| 489 |
+
bool supportsFunctionPointers() const;
|
| 490 |
+
|
| 491 |
+
bool supportsFunctionPointersFromRender() const;
|
| 492 |
+
|
| 493 |
+
bool supportsRaytracingFromRender() const;
|
| 494 |
+
|
| 495 |
+
bool supportsPrimitiveMotionBlur() const;
|
| 496 |
+
|
| 497 |
+
bool shouldMaximizeConcurrentCompilation() const;
|
| 498 |
+
void setShouldMaximizeConcurrentCompilation(bool shouldMaximizeConcurrentCompilation);
|
| 499 |
+
|
| 500 |
+
NS::UInteger maximumConcurrentCompilationTaskCount() const;
|
| 501 |
+
};
|
| 502 |
+
|
| 503 |
+
}
|
| 504 |
+
|
| 505 |
+
// static method: alloc
|
| 506 |
+
_MTL_INLINE MTL::ArgumentDescriptor* MTL::ArgumentDescriptor::alloc()
|
| 507 |
+
{
|
| 508 |
+
return NS::Object::alloc<MTL::ArgumentDescriptor>(_MTL_PRIVATE_CLS(MTLArgumentDescriptor));
|
| 509 |
+
}
|
| 510 |
+
|
| 511 |
+
// method: init
|
| 512 |
+
_MTL_INLINE MTL::ArgumentDescriptor* MTL::ArgumentDescriptor::init()
|
| 513 |
+
{
|
| 514 |
+
return NS::Object::init<MTL::ArgumentDescriptor>();
|
| 515 |
+
}
|
| 516 |
+
|
| 517 |
+
// static method: argumentDescriptor
|
| 518 |
+
_MTL_INLINE MTL::ArgumentDescriptor* MTL::ArgumentDescriptor::argumentDescriptor()
|
| 519 |
+
{
|
| 520 |
+
return Object::sendMessage<MTL::ArgumentDescriptor*>(_MTL_PRIVATE_CLS(MTLArgumentDescriptor), _MTL_PRIVATE_SEL(argumentDescriptor));
|
| 521 |
+
}
|
| 522 |
+
|
| 523 |
+
// property: dataType
|
| 524 |
+
_MTL_INLINE MTL::DataType MTL::ArgumentDescriptor::dataType() const
|
| 525 |
+
{
|
| 526 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(dataType));
|
| 527 |
+
}
|
| 528 |
+
|
| 529 |
+
_MTL_INLINE void MTL::ArgumentDescriptor::setDataType(MTL::DataType dataType)
|
| 530 |
+
{
|
| 531 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDataType_), dataType);
|
| 532 |
+
}
|
| 533 |
+
|
| 534 |
+
// property: index
|
| 535 |
+
_MTL_INLINE NS::UInteger MTL::ArgumentDescriptor::index() const
|
| 536 |
+
{
|
| 537 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(index));
|
| 538 |
+
}
|
| 539 |
+
|
| 540 |
+
_MTL_INLINE void MTL::ArgumentDescriptor::setIndex(NS::UInteger index)
|
| 541 |
+
{
|
| 542 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndex_), index);
|
| 543 |
+
}
|
| 544 |
+
|
| 545 |
+
// property: arrayLength
|
| 546 |
+
_MTL_INLINE NS::UInteger MTL::ArgumentDescriptor::arrayLength() const
|
| 547 |
+
{
|
| 548 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(arrayLength));
|
| 549 |
+
}
|
| 550 |
+
|
| 551 |
+
_MTL_INLINE void MTL::ArgumentDescriptor::setArrayLength(NS::UInteger arrayLength)
|
| 552 |
+
{
|
| 553 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setArrayLength_), arrayLength);
|
| 554 |
+
}
|
| 555 |
+
|
| 556 |
+
// property: access
|
| 557 |
+
_MTL_INLINE MTL::BindingAccess MTL::ArgumentDescriptor::access() const
|
| 558 |
+
{
|
| 559 |
+
return Object::sendMessage<MTL::BindingAccess>(this, _MTL_PRIVATE_SEL(access));
|
| 560 |
+
}
|
| 561 |
+
|
| 562 |
+
_MTL_INLINE void MTL::ArgumentDescriptor::setAccess(MTL::BindingAccess access)
|
| 563 |
+
{
|
| 564 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAccess_), access);
|
| 565 |
+
}
|
| 566 |
+
|
| 567 |
+
// property: textureType
|
| 568 |
+
_MTL_INLINE MTL::TextureType MTL::ArgumentDescriptor::textureType() const
|
| 569 |
+
{
|
| 570 |
+
return Object::sendMessage<MTL::TextureType>(this, _MTL_PRIVATE_SEL(textureType));
|
| 571 |
+
}
|
| 572 |
+
|
| 573 |
+
_MTL_INLINE void MTL::ArgumentDescriptor::setTextureType(MTL::TextureType textureType)
|
| 574 |
+
{
|
| 575 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTextureType_), textureType);
|
| 576 |
+
}
|
| 577 |
+
|
| 578 |
+
// property: constantBlockAlignment
|
| 579 |
+
_MTL_INLINE NS::UInteger MTL::ArgumentDescriptor::constantBlockAlignment() const
|
| 580 |
+
{
|
| 581 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(constantBlockAlignment));
|
| 582 |
+
}
|
| 583 |
+
|
| 584 |
+
_MTL_INLINE void MTL::ArgumentDescriptor::setConstantBlockAlignment(NS::UInteger constantBlockAlignment)
|
| 585 |
+
{
|
| 586 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setConstantBlockAlignment_), constantBlockAlignment);
|
| 587 |
+
}
|
| 588 |
+
|
| 589 |
+
// static method: alloc
|
| 590 |
+
_MTL_INLINE MTL::Architecture* MTL::Architecture::alloc()
|
| 591 |
+
{
|
| 592 |
+
return NS::Object::alloc<MTL::Architecture>(_MTL_PRIVATE_CLS(MTLArchitecture));
|
| 593 |
+
}
|
| 594 |
+
|
| 595 |
+
// method: init
|
| 596 |
+
_MTL_INLINE MTL::Architecture* MTL::Architecture::init()
|
| 597 |
+
{
|
| 598 |
+
return NS::Object::init<MTL::Architecture>();
|
| 599 |
+
}
|
| 600 |
+
|
| 601 |
+
// property: name
|
| 602 |
+
_MTL_INLINE NS::String* MTL::Architecture::name() const
|
| 603 |
+
{
|
| 604 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 605 |
+
}
|
| 606 |
+
|
| 607 |
+
_MTL_PRIVATE_DEF_WEAK_CONST(MTL::DeviceNotificationName, DeviceWasAddedNotification);
|
| 608 |
+
_MTL_PRIVATE_DEF_WEAK_CONST(MTL::DeviceNotificationName, DeviceRemovalRequestedNotification);
|
| 609 |
+
_MTL_PRIVATE_DEF_WEAK_CONST(MTL::DeviceNotificationName, DeviceWasRemovedNotification);
|
| 610 |
+
_MTL_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, CommandBufferEncoderInfoErrorKey);
|
| 611 |
+
|
| 612 |
+
#if defined(MTL_PRIVATE_IMPLEMENTATION)
|
| 613 |
+
|
| 614 |
+
extern "C" MTL::Device* MTLCreateSystemDefaultDevice();
|
| 615 |
+
|
| 616 |
+
extern "C" NS::Array* MTLCopyAllDevices();
|
| 617 |
+
|
| 618 |
+
extern "C" NS::Array* MTLCopyAllDevicesWithObserver(NS::Object**, MTL::DeviceNotificationHandlerBlock);
|
| 619 |
+
|
| 620 |
+
extern "C" void MTLRemoveDeviceObserver(const NS::Object*);
|
| 621 |
+
|
| 622 |
+
#include <TargetConditionals.h>
|
| 623 |
+
|
| 624 |
+
_NS_EXPORT MTL::Device* MTL::CreateSystemDefaultDevice()
|
| 625 |
+
{
|
| 626 |
+
return ::MTLCreateSystemDefaultDevice();
|
| 627 |
+
}
|
| 628 |
+
|
| 629 |
+
_NS_EXPORT NS::Array* MTL::CopyAllDevices()
|
| 630 |
+
{
|
| 631 |
+
#if TARGET_OS_OSX
|
| 632 |
+
return ::MTLCopyAllDevices();
|
| 633 |
+
#else
|
| 634 |
+
return nullptr;
|
| 635 |
+
#endif // TARGET_OS_OSX
|
| 636 |
+
}
|
| 637 |
+
|
| 638 |
+
_NS_EXPORT NS::Array* MTL::CopyAllDevicesWithObserver(NS::Object** pOutObserver, DeviceNotificationHandlerBlock handler)
|
| 639 |
+
{
|
| 640 |
+
#if TARGET_OS_OSX
|
| 641 |
+
return ::MTLCopyAllDevicesWithObserver(pOutObserver, handler);
|
| 642 |
+
#else
|
| 643 |
+
(void)pOutObserver;
|
| 644 |
+
(void)handler;
|
| 645 |
+
|
| 646 |
+
return nullptr;
|
| 647 |
+
#endif // TARGET_OS_OSX
|
| 648 |
+
}
|
| 649 |
+
|
| 650 |
+
_NS_EXPORT NS::Array* MTL::CopyAllDevicesWithObserver(NS::Object** pOutObserver, const DeviceNotificationHandlerFunction& handler)
|
| 651 |
+
{
|
| 652 |
+
__block DeviceNotificationHandlerFunction function = handler;
|
| 653 |
+
|
| 654 |
+
return CopyAllDevicesWithObserver(pOutObserver, ^(Device* pDevice, DeviceNotificationName pNotificationName) { function(pDevice, pNotificationName); });
|
| 655 |
+
}
|
| 656 |
+
|
| 657 |
+
_NS_EXPORT void MTL::RemoveDeviceObserver(const NS::Object* pObserver)
|
| 658 |
+
{
|
| 659 |
+
#if TARGET_OS_OSX
|
| 660 |
+
::MTLRemoveDeviceObserver(pObserver);
|
| 661 |
+
#endif // TARGET_OS_OSX
|
| 662 |
+
}
|
| 663 |
+
|
| 664 |
+
#endif // MTL_PRIVATE_IMPLEMENTATION
|
| 665 |
+
|
| 666 |
+
_MTL_INLINE void MTL::Device::newLibrary(const NS::String* pSource, const CompileOptions* pOptions, const NewLibraryCompletionHandlerFunction& completionHandler)
|
| 667 |
+
{
|
| 668 |
+
__block NewLibraryCompletionHandlerFunction blockCompletionHandler = completionHandler;
|
| 669 |
+
|
| 670 |
+
newLibrary(pSource, pOptions, ^(Library* pLibrary, NS::Error* pError) { blockCompletionHandler(pLibrary, pError); });
|
| 671 |
+
}
|
| 672 |
+
|
| 673 |
+
_MTL_INLINE void MTL::Device::newLibrary(const class StitchedLibraryDescriptor* pDescriptor, const MTL::NewLibraryCompletionHandlerFunction& completionHandler)
|
| 674 |
+
{
|
| 675 |
+
__block NewLibraryCompletionHandlerFunction blockCompletionHandler = completionHandler;
|
| 676 |
+
|
| 677 |
+
newLibrary(pDescriptor, ^(Library* pLibrary, NS::Error* pError) { blockCompletionHandler(pLibrary, pError); });
|
| 678 |
+
}
|
| 679 |
+
|
| 680 |
+
_MTL_INLINE void MTL::Device::newRenderPipelineState(const RenderPipelineDescriptor* pDescriptor, const NewRenderPipelineStateCompletionHandlerFunction& completionHandler)
|
| 681 |
+
{
|
| 682 |
+
__block NewRenderPipelineStateCompletionHandlerFunction blockCompletionHandler = completionHandler;
|
| 683 |
+
|
| 684 |
+
newRenderPipelineState(pDescriptor, ^(RenderPipelineState* pPipelineState, NS::Error* pError) { blockCompletionHandler(pPipelineState, pError); });
|
| 685 |
+
}
|
| 686 |
+
|
| 687 |
+
_MTL_INLINE void MTL::Device::newRenderPipelineState(const RenderPipelineDescriptor* pDescriptor, PipelineOption options, const NewRenderPipelineStateWithReflectionCompletionHandlerFunction& completionHandler)
|
| 688 |
+
{
|
| 689 |
+
__block NewRenderPipelineStateWithReflectionCompletionHandlerFunction blockCompletionHandler = completionHandler;
|
| 690 |
+
|
| 691 |
+
newRenderPipelineState(pDescriptor, options, ^(RenderPipelineState* pPipelineState, class RenderPipelineReflection* pReflection, NS::Error* pError) { blockCompletionHandler(pPipelineState, pReflection, pError); });
|
| 692 |
+
}
|
| 693 |
+
|
| 694 |
+
_MTL_INLINE void MTL::Device::newRenderPipelineState(const TileRenderPipelineDescriptor* pDescriptor, PipelineOption options, const NewRenderPipelineStateWithReflectionCompletionHandlerFunction& completionHandler)
|
| 695 |
+
{
|
| 696 |
+
__block NewRenderPipelineStateWithReflectionCompletionHandlerFunction blockCompletionHandler = completionHandler;
|
| 697 |
+
|
| 698 |
+
newRenderPipelineState(pDescriptor, options, ^(RenderPipelineState* pPipelineState, class RenderPipelineReflection* pReflection, NS::Error* pError) { blockCompletionHandler(pPipelineState, pReflection, pError); });
|
| 699 |
+
}
|
| 700 |
+
|
| 701 |
+
_MTL_INLINE void MTL::Device::newComputePipelineState(const class Function* pFunction, const NewComputePipelineStateCompletionHandlerFunction& completionHandler)
|
| 702 |
+
{
|
| 703 |
+
__block NewComputePipelineStateCompletionHandlerFunction blockCompletionHandler = completionHandler;
|
| 704 |
+
|
| 705 |
+
newComputePipelineState(pFunction, ^(ComputePipelineState* pPipelineState, NS::Error* pError) { blockCompletionHandler(pPipelineState, pError); });
|
| 706 |
+
}
|
| 707 |
+
|
| 708 |
+
_MTL_INLINE void MTL::Device::newComputePipelineState(const Function* pFunction, PipelineOption options, const NewComputePipelineStateWithReflectionCompletionHandlerFunction& completionHandler)
|
| 709 |
+
{
|
| 710 |
+
__block NewComputePipelineStateWithReflectionCompletionHandlerFunction blockCompletionHandler = completionHandler;
|
| 711 |
+
|
| 712 |
+
newComputePipelineState(pFunction, options, ^(ComputePipelineState* pPipelineState, ComputePipelineReflection* pReflection, NS::Error* pError) { blockCompletionHandler(pPipelineState, pReflection, pError); });
|
| 713 |
+
}
|
| 714 |
+
|
| 715 |
+
_MTL_INLINE void MTL::Device::newComputePipelineState(const ComputePipelineDescriptor* pDescriptor, PipelineOption options, const NewComputePipelineStateWithReflectionCompletionHandlerFunction& completionHandler)
|
| 716 |
+
{
|
| 717 |
+
__block NewComputePipelineStateWithReflectionCompletionHandlerFunction blockCompletionHandler = completionHandler;
|
| 718 |
+
|
| 719 |
+
newComputePipelineState(pDescriptor, options, ^(ComputePipelineState* pPipelineState, ComputePipelineReflection* pReflection, NS::Error* pError) { blockCompletionHandler(pPipelineState, pReflection, pError); });
|
| 720 |
+
}
|
| 721 |
+
|
| 722 |
+
_MTL_INLINE bool MTL::Device::isHeadless() const
|
| 723 |
+
{
|
| 724 |
+
return headless();
|
| 725 |
+
}
|
| 726 |
+
|
| 727 |
+
// property: name
|
| 728 |
+
_MTL_INLINE NS::String* MTL::Device::name() const
|
| 729 |
+
{
|
| 730 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 731 |
+
}
|
| 732 |
+
|
| 733 |
+
// property: registryID
|
| 734 |
+
_MTL_INLINE uint64_t MTL::Device::registryID() const
|
| 735 |
+
{
|
| 736 |
+
return Object::sendMessage<uint64_t>(this, _MTL_PRIVATE_SEL(registryID));
|
| 737 |
+
}
|
| 738 |
+
|
| 739 |
+
// property: architecture
|
| 740 |
+
_MTL_INLINE MTL::Architecture* MTL::Device::architecture() const
|
| 741 |
+
{
|
| 742 |
+
return Object::sendMessage<MTL::Architecture*>(this, _MTL_PRIVATE_SEL(architecture));
|
| 743 |
+
}
|
| 744 |
+
|
| 745 |
+
// property: maxThreadsPerThreadgroup
|
| 746 |
+
_MTL_INLINE MTL::Size MTL::Device::maxThreadsPerThreadgroup() const
|
| 747 |
+
{
|
| 748 |
+
return Object::sendMessage<MTL::Size>(this, _MTL_PRIVATE_SEL(maxThreadsPerThreadgroup));
|
| 749 |
+
}
|
| 750 |
+
|
| 751 |
+
// property: lowPower
|
| 752 |
+
_MTL_INLINE bool MTL::Device::lowPower() const
|
| 753 |
+
{
|
| 754 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isLowPower));
|
| 755 |
+
}
|
| 756 |
+
|
| 757 |
+
// property: headless
|
| 758 |
+
_MTL_INLINE bool MTL::Device::headless() const
|
| 759 |
+
{
|
| 760 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isHeadless));
|
| 761 |
+
}
|
| 762 |
+
|
| 763 |
+
// property: removable
|
| 764 |
+
_MTL_INLINE bool MTL::Device::removable() const
|
| 765 |
+
{
|
| 766 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isRemovable));
|
| 767 |
+
}
|
| 768 |
+
|
| 769 |
+
// property: hasUnifiedMemory
|
| 770 |
+
_MTL_INLINE bool MTL::Device::hasUnifiedMemory() const
|
| 771 |
+
{
|
| 772 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(hasUnifiedMemory));
|
| 773 |
+
}
|
| 774 |
+
|
| 775 |
+
// property: recommendedMaxWorkingSetSize
|
| 776 |
+
_MTL_INLINE uint64_t MTL::Device::recommendedMaxWorkingSetSize() const
|
| 777 |
+
{
|
| 778 |
+
return Object::sendMessage<uint64_t>(this, _MTL_PRIVATE_SEL(recommendedMaxWorkingSetSize));
|
| 779 |
+
}
|
| 780 |
+
|
| 781 |
+
// property: location
|
| 782 |
+
_MTL_INLINE MTL::DeviceLocation MTL::Device::location() const
|
| 783 |
+
{
|
| 784 |
+
return Object::sendMessage<MTL::DeviceLocation>(this, _MTL_PRIVATE_SEL(location));
|
| 785 |
+
}
|
| 786 |
+
|
| 787 |
+
// property: locationNumber
|
| 788 |
+
_MTL_INLINE NS::UInteger MTL::Device::locationNumber() const
|
| 789 |
+
{
|
| 790 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(locationNumber));
|
| 791 |
+
}
|
| 792 |
+
|
| 793 |
+
// property: maxTransferRate
|
| 794 |
+
_MTL_INLINE uint64_t MTL::Device::maxTransferRate() const
|
| 795 |
+
{
|
| 796 |
+
return Object::sendMessage<uint64_t>(this, _MTL_PRIVATE_SEL(maxTransferRate));
|
| 797 |
+
}
|
| 798 |
+
|
| 799 |
+
// property: depth24Stencil8PixelFormatSupported
|
| 800 |
+
_MTL_INLINE bool MTL::Device::depth24Stencil8PixelFormatSupported() const
|
| 801 |
+
{
|
| 802 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(isDepth24Stencil8PixelFormatSupported));
|
| 803 |
+
}
|
| 804 |
+
|
| 805 |
+
// property: readWriteTextureSupport
|
| 806 |
+
_MTL_INLINE MTL::ReadWriteTextureTier MTL::Device::readWriteTextureSupport() const
|
| 807 |
+
{
|
| 808 |
+
return Object::sendMessage<MTL::ReadWriteTextureTier>(this, _MTL_PRIVATE_SEL(readWriteTextureSupport));
|
| 809 |
+
}
|
| 810 |
+
|
| 811 |
+
// property: argumentBuffersSupport
|
| 812 |
+
_MTL_INLINE MTL::ArgumentBuffersTier MTL::Device::argumentBuffersSupport() const
|
| 813 |
+
{
|
| 814 |
+
return Object::sendMessage<MTL::ArgumentBuffersTier>(this, _MTL_PRIVATE_SEL(argumentBuffersSupport));
|
| 815 |
+
}
|
| 816 |
+
|
| 817 |
+
// property: rasterOrderGroupsSupported
|
| 818 |
+
_MTL_INLINE bool MTL::Device::rasterOrderGroupsSupported() const
|
| 819 |
+
{
|
| 820 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(areRasterOrderGroupsSupported));
|
| 821 |
+
}
|
| 822 |
+
|
| 823 |
+
// property: supports32BitFloatFiltering
|
| 824 |
+
_MTL_INLINE bool MTL::Device::supports32BitFloatFiltering() const
|
| 825 |
+
{
|
| 826 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supports32BitFloatFiltering));
|
| 827 |
+
}
|
| 828 |
+
|
| 829 |
+
// property: supports32BitMSAA
|
| 830 |
+
_MTL_INLINE bool MTL::Device::supports32BitMSAA() const
|
| 831 |
+
{
|
| 832 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supports32BitMSAA));
|
| 833 |
+
}
|
| 834 |
+
|
| 835 |
+
// property: supportsQueryTextureLOD
|
| 836 |
+
_MTL_INLINE bool MTL::Device::supportsQueryTextureLOD() const
|
| 837 |
+
{
|
| 838 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsQueryTextureLOD));
|
| 839 |
+
}
|
| 840 |
+
|
| 841 |
+
// property: supportsBCTextureCompression
|
| 842 |
+
_MTL_INLINE bool MTL::Device::supportsBCTextureCompression() const
|
| 843 |
+
{
|
| 844 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsBCTextureCompression));
|
| 845 |
+
}
|
| 846 |
+
|
| 847 |
+
// property: supportsPullModelInterpolation
|
| 848 |
+
_MTL_INLINE bool MTL::Device::supportsPullModelInterpolation() const
|
| 849 |
+
{
|
| 850 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsPullModelInterpolation));
|
| 851 |
+
}
|
| 852 |
+
|
| 853 |
+
// property: barycentricCoordsSupported
|
| 854 |
+
_MTL_INLINE bool MTL::Device::barycentricCoordsSupported() const
|
| 855 |
+
{
|
| 856 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(areBarycentricCoordsSupported));
|
| 857 |
+
}
|
| 858 |
+
|
| 859 |
+
// property: supportsShaderBarycentricCoordinates
|
| 860 |
+
_MTL_INLINE bool MTL::Device::supportsShaderBarycentricCoordinates() const
|
| 861 |
+
{
|
| 862 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsShaderBarycentricCoordinates));
|
| 863 |
+
}
|
| 864 |
+
|
| 865 |
+
// property: currentAllocatedSize
|
| 866 |
+
_MTL_INLINE NS::UInteger MTL::Device::currentAllocatedSize() const
|
| 867 |
+
{
|
| 868 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(currentAllocatedSize));
|
| 869 |
+
}
|
| 870 |
+
|
| 871 |
+
// method: newCommandQueue
|
| 872 |
+
_MTL_INLINE MTL::CommandQueue* MTL::Device::newCommandQueue()
|
| 873 |
+
{
|
| 874 |
+
return Object::sendMessage<MTL::CommandQueue*>(this, _MTL_PRIVATE_SEL(newCommandQueue));
|
| 875 |
+
}
|
| 876 |
+
|
| 877 |
+
// method: newCommandQueueWithMaxCommandBufferCount:
|
| 878 |
+
_MTL_INLINE MTL::CommandQueue* MTL::Device::newCommandQueue(NS::UInteger maxCommandBufferCount)
|
| 879 |
+
{
|
| 880 |
+
return Object::sendMessage<MTL::CommandQueue*>(this, _MTL_PRIVATE_SEL(newCommandQueueWithMaxCommandBufferCount_), maxCommandBufferCount);
|
| 881 |
+
}
|
| 882 |
+
|
| 883 |
+
// method: heapTextureSizeAndAlignWithDescriptor:
|
| 884 |
+
_MTL_INLINE MTL::SizeAndAlign MTL::Device::heapTextureSizeAndAlign(const MTL::TextureDescriptor* desc)
|
| 885 |
+
{
|
| 886 |
+
return Object::sendMessage<MTL::SizeAndAlign>(this, _MTL_PRIVATE_SEL(heapTextureSizeAndAlignWithDescriptor_), desc);
|
| 887 |
+
}
|
| 888 |
+
|
| 889 |
+
// method: heapBufferSizeAndAlignWithLength:options:
|
| 890 |
+
_MTL_INLINE MTL::SizeAndAlign MTL::Device::heapBufferSizeAndAlign(NS::UInteger length, MTL::ResourceOptions options)
|
| 891 |
+
{
|
| 892 |
+
return Object::sendMessage<MTL::SizeAndAlign>(this, _MTL_PRIVATE_SEL(heapBufferSizeAndAlignWithLength_options_), length, options);
|
| 893 |
+
}
|
| 894 |
+
|
| 895 |
+
// method: newHeapWithDescriptor:
|
| 896 |
+
_MTL_INLINE MTL::Heap* MTL::Device::newHeap(const MTL::HeapDescriptor* descriptor)
|
| 897 |
+
{
|
| 898 |
+
return Object::sendMessage<MTL::Heap*>(this, _MTL_PRIVATE_SEL(newHeapWithDescriptor_), descriptor);
|
| 899 |
+
}
|
| 900 |
+
|
| 901 |
+
// method: newBufferWithLength:options:
|
| 902 |
+
_MTL_INLINE MTL::Buffer* MTL::Device::newBuffer(NS::UInteger length, MTL::ResourceOptions options)
|
| 903 |
+
{
|
| 904 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(newBufferWithLength_options_), length, options);
|
| 905 |
+
}
|
| 906 |
+
|
| 907 |
+
// method: newBufferWithBytes:length:options:
|
| 908 |
+
_MTL_INLINE MTL::Buffer* MTL::Device::newBuffer(const void* pointer, NS::UInteger length, MTL::ResourceOptions options)
|
| 909 |
+
{
|
| 910 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(newBufferWithBytes_length_options_), pointer, length, options);
|
| 911 |
+
}
|
| 912 |
+
|
| 913 |
+
// method: newBufferWithBytesNoCopy:length:options:deallocator:
|
| 914 |
+
_MTL_INLINE MTL::Buffer* MTL::Device::newBuffer(const void* pointer, NS::UInteger length, MTL::ResourceOptions options, void (^deallocator)(void*, NS::UInteger))
|
| 915 |
+
{
|
| 916 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(newBufferWithBytesNoCopy_length_options_deallocator_), pointer, length, options, deallocator);
|
| 917 |
+
}
|
| 918 |
+
|
| 919 |
+
// method: newDepthStencilStateWithDescriptor:
|
| 920 |
+
_MTL_INLINE MTL::DepthStencilState* MTL::Device::newDepthStencilState(const MTL::DepthStencilDescriptor* descriptor)
|
| 921 |
+
{
|
| 922 |
+
return Object::sendMessage<MTL::DepthStencilState*>(this, _MTL_PRIVATE_SEL(newDepthStencilStateWithDescriptor_), descriptor);
|
| 923 |
+
}
|
| 924 |
+
|
| 925 |
+
// method: newTextureWithDescriptor:
|
| 926 |
+
_MTL_INLINE MTL::Texture* MTL::Device::newTexture(const MTL::TextureDescriptor* descriptor)
|
| 927 |
+
{
|
| 928 |
+
return Object::sendMessage<MTL::Texture*>(this, _MTL_PRIVATE_SEL(newTextureWithDescriptor_), descriptor);
|
| 929 |
+
}
|
| 930 |
+
|
| 931 |
+
// method: newTextureWithDescriptor:iosurface:plane:
|
| 932 |
+
_MTL_INLINE MTL::Texture* MTL::Device::newTexture(const MTL::TextureDescriptor* descriptor, const IOSurfaceRef iosurface, NS::UInteger plane)
|
| 933 |
+
{
|
| 934 |
+
return Object::sendMessage<MTL::Texture*>(this, _MTL_PRIVATE_SEL(newTextureWithDescriptor_iosurface_plane_), descriptor, iosurface, plane);
|
| 935 |
+
}
|
| 936 |
+
|
| 937 |
+
// method: newSharedTextureWithDescriptor:
|
| 938 |
+
_MTL_INLINE MTL::Texture* MTL::Device::newSharedTexture(const MTL::TextureDescriptor* descriptor)
|
| 939 |
+
{
|
| 940 |
+
return Object::sendMessage<MTL::Texture*>(this, _MTL_PRIVATE_SEL(newSharedTextureWithDescriptor_), descriptor);
|
| 941 |
+
}
|
| 942 |
+
|
| 943 |
+
// method: newSharedTextureWithHandle:
|
| 944 |
+
_MTL_INLINE MTL::Texture* MTL::Device::newSharedTexture(const MTL::SharedTextureHandle* sharedHandle)
|
| 945 |
+
{
|
| 946 |
+
return Object::sendMessage<MTL::Texture*>(this, _MTL_PRIVATE_SEL(newSharedTextureWithHandle_), sharedHandle);
|
| 947 |
+
}
|
| 948 |
+
|
| 949 |
+
// method: newSamplerStateWithDescriptor:
|
| 950 |
+
_MTL_INLINE MTL::SamplerState* MTL::Device::newSamplerState(const MTL::SamplerDescriptor* descriptor)
|
| 951 |
+
{
|
| 952 |
+
return Object::sendMessage<MTL::SamplerState*>(this, _MTL_PRIVATE_SEL(newSamplerStateWithDescriptor_), descriptor);
|
| 953 |
+
}
|
| 954 |
+
|
| 955 |
+
// method: newDefaultLibrary
|
| 956 |
+
_MTL_INLINE MTL::Library* MTL::Device::newDefaultLibrary()
|
| 957 |
+
{
|
| 958 |
+
return Object::sendMessage<MTL::Library*>(this, _MTL_PRIVATE_SEL(newDefaultLibrary));
|
| 959 |
+
}
|
| 960 |
+
|
| 961 |
+
// method: newDefaultLibraryWithBundle:error:
|
| 962 |
+
_MTL_INLINE MTL::Library* MTL::Device::newDefaultLibrary(const NS::Bundle* bundle, NS::Error** error)
|
| 963 |
+
{
|
| 964 |
+
return Object::sendMessage<MTL::Library*>(this, _MTL_PRIVATE_SEL(newDefaultLibraryWithBundle_error_), bundle, error);
|
| 965 |
+
}
|
| 966 |
+
|
| 967 |
+
// method: newLibraryWithFile:error:
|
| 968 |
+
_MTL_INLINE MTL::Library* MTL::Device::newLibrary(const NS::String* filepath, NS::Error** error)
|
| 969 |
+
{
|
| 970 |
+
return Object::sendMessage<MTL::Library*>(this, _MTL_PRIVATE_SEL(newLibraryWithFile_error_), filepath, error);
|
| 971 |
+
}
|
| 972 |
+
|
| 973 |
+
// method: newLibraryWithURL:error:
|
| 974 |
+
_MTL_INLINE MTL::Library* MTL::Device::newLibrary(const NS::URL* url, NS::Error** error)
|
| 975 |
+
{
|
| 976 |
+
return Object::sendMessage<MTL::Library*>(this, _MTL_PRIVATE_SEL(newLibraryWithURL_error_), url, error);
|
| 977 |
+
}
|
| 978 |
+
|
| 979 |
+
// method: newLibraryWithData:error:
|
| 980 |
+
_MTL_INLINE MTL::Library* MTL::Device::newLibrary(const dispatch_data_t data, NS::Error** error)
|
| 981 |
+
{
|
| 982 |
+
return Object::sendMessage<MTL::Library*>(this, _MTL_PRIVATE_SEL(newLibraryWithData_error_), data, error);
|
| 983 |
+
}
|
| 984 |
+
|
| 985 |
+
// method: newLibraryWithSource:options:error:
|
| 986 |
+
_MTL_INLINE MTL::Library* MTL::Device::newLibrary(const NS::String* source, const MTL::CompileOptions* options, NS::Error** error)
|
| 987 |
+
{
|
| 988 |
+
return Object::sendMessage<MTL::Library*>(this, _MTL_PRIVATE_SEL(newLibraryWithSource_options_error_), source, options, error);
|
| 989 |
+
}
|
| 990 |
+
|
| 991 |
+
// method: newLibraryWithSource:options:completionHandler:
|
| 992 |
+
_MTL_INLINE void MTL::Device::newLibrary(const NS::String* source, const MTL::CompileOptions* options, const MTL::NewLibraryCompletionHandler completionHandler)
|
| 993 |
+
{
|
| 994 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(newLibraryWithSource_options_completionHandler_), source, options, completionHandler);
|
| 995 |
+
}
|
| 996 |
+
|
| 997 |
+
// method: newLibraryWithStitchedDescriptor:error:
|
| 998 |
+
_MTL_INLINE MTL::Library* MTL::Device::newLibrary(const MTL::StitchedLibraryDescriptor* descriptor, NS::Error** error)
|
| 999 |
+
{
|
| 1000 |
+
return Object::sendMessage<MTL::Library*>(this, _MTL_PRIVATE_SEL(newLibraryWithStitchedDescriptor_error_), descriptor, error);
|
| 1001 |
+
}
|
| 1002 |
+
|
| 1003 |
+
// method: newLibraryWithStitchedDescriptor:completionHandler:
|
| 1004 |
+
_MTL_INLINE void MTL::Device::newLibrary(const MTL::StitchedLibraryDescriptor* descriptor, const MTL::NewLibraryCompletionHandler completionHandler)
|
| 1005 |
+
{
|
| 1006 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(newLibraryWithStitchedDescriptor_completionHandler_), descriptor, completionHandler);
|
| 1007 |
+
}
|
| 1008 |
+
|
| 1009 |
+
// method: newRenderPipelineStateWithDescriptor:error:
|
| 1010 |
+
_MTL_INLINE MTL::RenderPipelineState* MTL::Device::newRenderPipelineState(const MTL::RenderPipelineDescriptor* descriptor, NS::Error** error)
|
| 1011 |
+
{
|
| 1012 |
+
return Object::sendMessage<MTL::RenderPipelineState*>(this, _MTL_PRIVATE_SEL(newRenderPipelineStateWithDescriptor_error_), descriptor, error);
|
| 1013 |
+
}
|
| 1014 |
+
|
| 1015 |
+
// method: newRenderPipelineStateWithDescriptor:options:reflection:error:
|
| 1016 |
+
_MTL_INLINE MTL::RenderPipelineState* MTL::Device::newRenderPipelineState(const MTL::RenderPipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::AutoreleasedRenderPipelineReflection* reflection, NS::Error** error)
|
| 1017 |
+
{
|
| 1018 |
+
return Object::sendMessage<MTL::RenderPipelineState*>(this, _MTL_PRIVATE_SEL(newRenderPipelineStateWithDescriptor_options_reflection_error_), descriptor, options, reflection, error);
|
| 1019 |
+
}
|
| 1020 |
+
|
| 1021 |
+
// method: newRenderPipelineStateWithDescriptor:completionHandler:
|
| 1022 |
+
_MTL_INLINE void MTL::Device::newRenderPipelineState(const MTL::RenderPipelineDescriptor* descriptor, const MTL::NewRenderPipelineStateCompletionHandler completionHandler)
|
| 1023 |
+
{
|
| 1024 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(newRenderPipelineStateWithDescriptor_completionHandler_), descriptor, completionHandler);
|
| 1025 |
+
}
|
| 1026 |
+
|
| 1027 |
+
// method: newRenderPipelineStateWithDescriptor:options:completionHandler:
|
| 1028 |
+
_MTL_INLINE void MTL::Device::newRenderPipelineState(const MTL::RenderPipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::NewRenderPipelineStateWithReflectionCompletionHandler completionHandler)
|
| 1029 |
+
{
|
| 1030 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(newRenderPipelineStateWithDescriptor_options_completionHandler_), descriptor, options, completionHandler);
|
| 1031 |
+
}
|
| 1032 |
+
|
| 1033 |
+
// method: newComputePipelineStateWithFunction:error:
|
| 1034 |
+
_MTL_INLINE MTL::ComputePipelineState* MTL::Device::newComputePipelineState(const MTL::Function* computeFunction, NS::Error** error)
|
| 1035 |
+
{
|
| 1036 |
+
return Object::sendMessage<MTL::ComputePipelineState*>(this, _MTL_PRIVATE_SEL(newComputePipelineStateWithFunction_error_), computeFunction, error);
|
| 1037 |
+
}
|
| 1038 |
+
|
| 1039 |
+
// method: newComputePipelineStateWithFunction:options:reflection:error:
|
| 1040 |
+
_MTL_INLINE MTL::ComputePipelineState* MTL::Device::newComputePipelineState(const MTL::Function* computeFunction, MTL::PipelineOption options, const MTL::AutoreleasedComputePipelineReflection* reflection, NS::Error** error)
|
| 1041 |
+
{
|
| 1042 |
+
return Object::sendMessage<MTL::ComputePipelineState*>(this, _MTL_PRIVATE_SEL(newComputePipelineStateWithFunction_options_reflection_error_), computeFunction, options, reflection, error);
|
| 1043 |
+
}
|
| 1044 |
+
|
| 1045 |
+
// method: newComputePipelineStateWithFunction:completionHandler:
|
| 1046 |
+
_MTL_INLINE void MTL::Device::newComputePipelineState(const MTL::Function* computeFunction, const MTL::NewComputePipelineStateCompletionHandler completionHandler)
|
| 1047 |
+
{
|
| 1048 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(newComputePipelineStateWithFunction_completionHandler_), computeFunction, completionHandler);
|
| 1049 |
+
}
|
| 1050 |
+
|
| 1051 |
+
// method: newComputePipelineStateWithFunction:options:completionHandler:
|
| 1052 |
+
_MTL_INLINE void MTL::Device::newComputePipelineState(const MTL::Function* computeFunction, MTL::PipelineOption options, const MTL::NewComputePipelineStateWithReflectionCompletionHandler completionHandler)
|
| 1053 |
+
{
|
| 1054 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(newComputePipelineStateWithFunction_options_completionHandler_), computeFunction, options, completionHandler);
|
| 1055 |
+
}
|
| 1056 |
+
|
| 1057 |
+
// method: newComputePipelineStateWithDescriptor:options:reflection:error:
|
| 1058 |
+
_MTL_INLINE MTL::ComputePipelineState* MTL::Device::newComputePipelineState(const MTL::ComputePipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::AutoreleasedComputePipelineReflection* reflection, NS::Error** error)
|
| 1059 |
+
{
|
| 1060 |
+
return Object::sendMessage<MTL::ComputePipelineState*>(this, _MTL_PRIVATE_SEL(newComputePipelineStateWithDescriptor_options_reflection_error_), descriptor, options, reflection, error);
|
| 1061 |
+
}
|
| 1062 |
+
|
| 1063 |
+
// method: newComputePipelineStateWithDescriptor:options:completionHandler:
|
| 1064 |
+
_MTL_INLINE void MTL::Device::newComputePipelineState(const MTL::ComputePipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::NewComputePipelineStateWithReflectionCompletionHandler completionHandler)
|
| 1065 |
+
{
|
| 1066 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(newComputePipelineStateWithDescriptor_options_completionHandler_), descriptor, options, completionHandler);
|
| 1067 |
+
}
|
| 1068 |
+
|
| 1069 |
+
// method: newFence
|
| 1070 |
+
_MTL_INLINE MTL::Fence* MTL::Device::newFence()
|
| 1071 |
+
{
|
| 1072 |
+
return Object::sendMessage<MTL::Fence*>(this, _MTL_PRIVATE_SEL(newFence));
|
| 1073 |
+
}
|
| 1074 |
+
|
| 1075 |
+
// method: supportsFeatureSet:
|
| 1076 |
+
_MTL_INLINE bool MTL::Device::supportsFeatureSet(MTL::FeatureSet featureSet)
|
| 1077 |
+
{
|
| 1078 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsFeatureSet_), featureSet);
|
| 1079 |
+
}
|
| 1080 |
+
|
| 1081 |
+
// method: supportsFamily:
|
| 1082 |
+
_MTL_INLINE bool MTL::Device::supportsFamily(MTL::GPUFamily gpuFamily)
|
| 1083 |
+
{
|
| 1084 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsFamily_), gpuFamily);
|
| 1085 |
+
}
|
| 1086 |
+
|
| 1087 |
+
// method: supportsTextureSampleCount:
|
| 1088 |
+
_MTL_INLINE bool MTL::Device::supportsTextureSampleCount(NS::UInteger sampleCount)
|
| 1089 |
+
{
|
| 1090 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsTextureSampleCount_), sampleCount);
|
| 1091 |
+
}
|
| 1092 |
+
|
| 1093 |
+
// method: minimumLinearTextureAlignmentForPixelFormat:
|
| 1094 |
+
_MTL_INLINE NS::UInteger MTL::Device::minimumLinearTextureAlignmentForPixelFormat(MTL::PixelFormat format)
|
| 1095 |
+
{
|
| 1096 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(minimumLinearTextureAlignmentForPixelFormat_), format);
|
| 1097 |
+
}
|
| 1098 |
+
|
| 1099 |
+
// method: minimumTextureBufferAlignmentForPixelFormat:
|
| 1100 |
+
_MTL_INLINE NS::UInteger MTL::Device::minimumTextureBufferAlignmentForPixelFormat(MTL::PixelFormat format)
|
| 1101 |
+
{
|
| 1102 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(minimumTextureBufferAlignmentForPixelFormat_), format);
|
| 1103 |
+
}
|
| 1104 |
+
|
| 1105 |
+
// method: newRenderPipelineStateWithTileDescriptor:options:reflection:error:
|
| 1106 |
+
_MTL_INLINE MTL::RenderPipelineState* MTL::Device::newRenderPipelineState(const MTL::TileRenderPipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::AutoreleasedRenderPipelineReflection* reflection, NS::Error** error)
|
| 1107 |
+
{
|
| 1108 |
+
return Object::sendMessage<MTL::RenderPipelineState*>(this, _MTL_PRIVATE_SEL(newRenderPipelineStateWithTileDescriptor_options_reflection_error_), descriptor, options, reflection, error);
|
| 1109 |
+
}
|
| 1110 |
+
|
| 1111 |
+
// method: newRenderPipelineStateWithTileDescriptor:options:completionHandler:
|
| 1112 |
+
_MTL_INLINE void MTL::Device::newRenderPipelineState(const MTL::TileRenderPipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::NewRenderPipelineStateWithReflectionCompletionHandler completionHandler)
|
| 1113 |
+
{
|
| 1114 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(newRenderPipelineStateWithTileDescriptor_options_completionHandler_), descriptor, options, completionHandler);
|
| 1115 |
+
}
|
| 1116 |
+
|
| 1117 |
+
// method: newRenderPipelineStateWithMeshDescriptor:options:reflection:error:
|
| 1118 |
+
_MTL_INLINE MTL::RenderPipelineState* MTL::Device::newRenderPipelineState(const MTL::MeshRenderPipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::AutoreleasedRenderPipelineReflection* reflection, NS::Error** error)
|
| 1119 |
+
{
|
| 1120 |
+
return Object::sendMessage<MTL::RenderPipelineState*>(this, _MTL_PRIVATE_SEL(newRenderPipelineStateWithMeshDescriptor_options_reflection_error_), descriptor, options, reflection, error);
|
| 1121 |
+
}
|
| 1122 |
+
|
| 1123 |
+
// method: newRenderPipelineStateWithMeshDescriptor:options:completionHandler:
|
| 1124 |
+
_MTL_INLINE void MTL::Device::newRenderPipelineState(const MTL::MeshRenderPipelineDescriptor* descriptor, MTL::PipelineOption options, const MTL::NewRenderPipelineStateWithReflectionCompletionHandler completionHandler)
|
| 1125 |
+
{
|
| 1126 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(newRenderPipelineStateWithMeshDescriptor_options_completionHandler_), descriptor, options, completionHandler);
|
| 1127 |
+
}
|
| 1128 |
+
|
| 1129 |
+
// property: maxThreadgroupMemoryLength
|
| 1130 |
+
_MTL_INLINE NS::UInteger MTL::Device::maxThreadgroupMemoryLength() const
|
| 1131 |
+
{
|
| 1132 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxThreadgroupMemoryLength));
|
| 1133 |
+
}
|
| 1134 |
+
|
| 1135 |
+
// property: maxArgumentBufferSamplerCount
|
| 1136 |
+
_MTL_INLINE NS::UInteger MTL::Device::maxArgumentBufferSamplerCount() const
|
| 1137 |
+
{
|
| 1138 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxArgumentBufferSamplerCount));
|
| 1139 |
+
}
|
| 1140 |
+
|
| 1141 |
+
// property: programmableSamplePositionsSupported
|
| 1142 |
+
_MTL_INLINE bool MTL::Device::programmableSamplePositionsSupported() const
|
| 1143 |
+
{
|
| 1144 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(areProgrammableSamplePositionsSupported));
|
| 1145 |
+
}
|
| 1146 |
+
|
| 1147 |
+
// method: getDefaultSamplePositions:count:
|
| 1148 |
+
_MTL_INLINE void MTL::Device::getDefaultSamplePositions(MTL::SamplePosition* positions, NS::UInteger count)
|
| 1149 |
+
{
|
| 1150 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(getDefaultSamplePositions_count_), positions, count);
|
| 1151 |
+
}
|
| 1152 |
+
|
| 1153 |
+
// method: newArgumentEncoderWithArguments:
|
| 1154 |
+
_MTL_INLINE MTL::ArgumentEncoder* MTL::Device::newArgumentEncoder(const NS::Array* arguments)
|
| 1155 |
+
{
|
| 1156 |
+
return Object::sendMessage<MTL::ArgumentEncoder*>(this, _MTL_PRIVATE_SEL(newArgumentEncoderWithArguments_), arguments);
|
| 1157 |
+
}
|
| 1158 |
+
|
| 1159 |
+
// method: supportsRasterizationRateMapWithLayerCount:
|
| 1160 |
+
_MTL_INLINE bool MTL::Device::supportsRasterizationRateMap(NS::UInteger layerCount)
|
| 1161 |
+
{
|
| 1162 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsRasterizationRateMapWithLayerCount_), layerCount);
|
| 1163 |
+
}
|
| 1164 |
+
|
| 1165 |
+
// method: newRasterizationRateMapWithDescriptor:
|
| 1166 |
+
_MTL_INLINE MTL::RasterizationRateMap* MTL::Device::newRasterizationRateMap(const MTL::RasterizationRateMapDescriptor* descriptor)
|
| 1167 |
+
{
|
| 1168 |
+
return Object::sendMessage<MTL::RasterizationRateMap*>(this, _MTL_PRIVATE_SEL(newRasterizationRateMapWithDescriptor_), descriptor);
|
| 1169 |
+
}
|
| 1170 |
+
|
| 1171 |
+
// method: newIndirectCommandBufferWithDescriptor:maxCommandCount:options:
|
| 1172 |
+
_MTL_INLINE MTL::IndirectCommandBuffer* MTL::Device::newIndirectCommandBuffer(const MTL::IndirectCommandBufferDescriptor* descriptor, NS::UInteger maxCount, MTL::ResourceOptions options)
|
| 1173 |
+
{
|
| 1174 |
+
return Object::sendMessage<MTL::IndirectCommandBuffer*>(this, _MTL_PRIVATE_SEL(newIndirectCommandBufferWithDescriptor_maxCommandCount_options_), descriptor, maxCount, options);
|
| 1175 |
+
}
|
| 1176 |
+
|
| 1177 |
+
// method: newEvent
|
| 1178 |
+
_MTL_INLINE MTL::Event* MTL::Device::newEvent()
|
| 1179 |
+
{
|
| 1180 |
+
return Object::sendMessage<MTL::Event*>(this, _MTL_PRIVATE_SEL(newEvent));
|
| 1181 |
+
}
|
| 1182 |
+
|
| 1183 |
+
// method: newSharedEvent
|
| 1184 |
+
_MTL_INLINE MTL::SharedEvent* MTL::Device::newSharedEvent()
|
| 1185 |
+
{
|
| 1186 |
+
return Object::sendMessage<MTL::SharedEvent*>(this, _MTL_PRIVATE_SEL(newSharedEvent));
|
| 1187 |
+
}
|
| 1188 |
+
|
| 1189 |
+
// method: newSharedEventWithHandle:
|
| 1190 |
+
_MTL_INLINE MTL::SharedEvent* MTL::Device::newSharedEvent(const MTL::SharedEventHandle* sharedEventHandle)
|
| 1191 |
+
{
|
| 1192 |
+
return Object::sendMessage<MTL::SharedEvent*>(this, _MTL_PRIVATE_SEL(newSharedEventWithHandle_), sharedEventHandle);
|
| 1193 |
+
}
|
| 1194 |
+
|
| 1195 |
+
// property: peerGroupID
|
| 1196 |
+
_MTL_INLINE uint64_t MTL::Device::peerGroupID() const
|
| 1197 |
+
{
|
| 1198 |
+
return Object::sendMessage<uint64_t>(this, _MTL_PRIVATE_SEL(peerGroupID));
|
| 1199 |
+
}
|
| 1200 |
+
|
| 1201 |
+
// property: peerIndex
|
| 1202 |
+
_MTL_INLINE uint32_t MTL::Device::peerIndex() const
|
| 1203 |
+
{
|
| 1204 |
+
return Object::sendMessage<uint32_t>(this, _MTL_PRIVATE_SEL(peerIndex));
|
| 1205 |
+
}
|
| 1206 |
+
|
| 1207 |
+
// property: peerCount
|
| 1208 |
+
_MTL_INLINE uint32_t MTL::Device::peerCount() const
|
| 1209 |
+
{
|
| 1210 |
+
return Object::sendMessage<uint32_t>(this, _MTL_PRIVATE_SEL(peerCount));
|
| 1211 |
+
}
|
| 1212 |
+
|
| 1213 |
+
// method: newIOHandleWithURL:error:
|
| 1214 |
+
_MTL_INLINE MTL::IOFileHandle* MTL::Device::newIOHandle(const NS::URL* url, NS::Error** error)
|
| 1215 |
+
{
|
| 1216 |
+
return Object::sendMessage<MTL::IOFileHandle*>(this, _MTL_PRIVATE_SEL(newIOHandleWithURL_error_), url, error);
|
| 1217 |
+
}
|
| 1218 |
+
|
| 1219 |
+
// method: newIOCommandQueueWithDescriptor:error:
|
| 1220 |
+
_MTL_INLINE MTL::IOCommandQueue* MTL::Device::newIOCommandQueue(const MTL::IOCommandQueueDescriptor* descriptor, NS::Error** error)
|
| 1221 |
+
{
|
| 1222 |
+
return Object::sendMessage<MTL::IOCommandQueue*>(this, _MTL_PRIVATE_SEL(newIOCommandQueueWithDescriptor_error_), descriptor, error);
|
| 1223 |
+
}
|
| 1224 |
+
|
| 1225 |
+
// method: newIOHandleWithURL:compressionMethod:error:
|
| 1226 |
+
_MTL_INLINE MTL::IOFileHandle* MTL::Device::newIOHandle(const NS::URL* url, MTL::IOCompressionMethod compressionMethod, NS::Error** error)
|
| 1227 |
+
{
|
| 1228 |
+
return Object::sendMessage<MTL::IOFileHandle*>(this, _MTL_PRIVATE_SEL(newIOHandleWithURL_compressionMethod_error_), url, compressionMethod, error);
|
| 1229 |
+
}
|
| 1230 |
+
|
| 1231 |
+
// method: newIOFileHandleWithURL:error:
|
| 1232 |
+
_MTL_INLINE MTL::IOFileHandle* MTL::Device::newIOFileHandle(const NS::URL* url, NS::Error** error)
|
| 1233 |
+
{
|
| 1234 |
+
return Object::sendMessage<MTL::IOFileHandle*>(this, _MTL_PRIVATE_SEL(newIOFileHandleWithURL_error_), url, error);
|
| 1235 |
+
}
|
| 1236 |
+
|
| 1237 |
+
// method: newIOFileHandleWithURL:compressionMethod:error:
|
| 1238 |
+
_MTL_INLINE MTL::IOFileHandle* MTL::Device::newIOFileHandle(const NS::URL* url, MTL::IOCompressionMethod compressionMethod, NS::Error** error)
|
| 1239 |
+
{
|
| 1240 |
+
return Object::sendMessage<MTL::IOFileHandle*>(this, _MTL_PRIVATE_SEL(newIOFileHandleWithURL_compressionMethod_error_), url, compressionMethod, error);
|
| 1241 |
+
}
|
| 1242 |
+
|
| 1243 |
+
// method: sparseTileSizeWithTextureType:pixelFormat:sampleCount:
|
| 1244 |
+
_MTL_INLINE MTL::Size MTL::Device::sparseTileSize(MTL::TextureType textureType, MTL::PixelFormat pixelFormat, NS::UInteger sampleCount)
|
| 1245 |
+
{
|
| 1246 |
+
return Object::sendMessage<MTL::Size>(this, _MTL_PRIVATE_SEL(sparseTileSizeWithTextureType_pixelFormat_sampleCount_), textureType, pixelFormat, sampleCount);
|
| 1247 |
+
}
|
| 1248 |
+
|
| 1249 |
+
// property: sparseTileSizeInBytes
|
| 1250 |
+
_MTL_INLINE NS::UInteger MTL::Device::sparseTileSizeInBytes() const
|
| 1251 |
+
{
|
| 1252 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(sparseTileSizeInBytes));
|
| 1253 |
+
}
|
| 1254 |
+
|
| 1255 |
+
// method: convertSparsePixelRegions:toTileRegions:withTileSize:alignmentMode:numRegions:
|
| 1256 |
+
_MTL_INLINE void MTL::Device::convertSparsePixelRegions(const MTL::Region* pixelRegions, MTL::Region* tileRegions, MTL::Size tileSize, MTL::SparseTextureRegionAlignmentMode mode, NS::UInteger numRegions)
|
| 1257 |
+
{
|
| 1258 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(convertSparsePixelRegions_toTileRegions_withTileSize_alignmentMode_numRegions_), pixelRegions, tileRegions, tileSize, mode, numRegions);
|
| 1259 |
+
}
|
| 1260 |
+
|
| 1261 |
+
// method: convertSparseTileRegions:toPixelRegions:withTileSize:numRegions:
|
| 1262 |
+
_MTL_INLINE void MTL::Device::convertSparseTileRegions(const MTL::Region* tileRegions, MTL::Region* pixelRegions, MTL::Size tileSize, NS::UInteger numRegions)
|
| 1263 |
+
{
|
| 1264 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(convertSparseTileRegions_toPixelRegions_withTileSize_numRegions_), tileRegions, pixelRegions, tileSize, numRegions);
|
| 1265 |
+
}
|
| 1266 |
+
|
| 1267 |
+
// method: sparseTileSizeInBytesForSparsePageSize:
|
| 1268 |
+
_MTL_INLINE NS::UInteger MTL::Device::sparseTileSizeInBytes(MTL::SparsePageSize sparsePageSize)
|
| 1269 |
+
{
|
| 1270 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(sparseTileSizeInBytesForSparsePageSize_), sparsePageSize);
|
| 1271 |
+
}
|
| 1272 |
+
|
| 1273 |
+
// method: sparseTileSizeWithTextureType:pixelFormat:sampleCount:sparsePageSize:
|
| 1274 |
+
_MTL_INLINE MTL::Size MTL::Device::sparseTileSize(MTL::TextureType textureType, MTL::PixelFormat pixelFormat, NS::UInteger sampleCount, MTL::SparsePageSize sparsePageSize)
|
| 1275 |
+
{
|
| 1276 |
+
return Object::sendMessage<MTL::Size>(this, _MTL_PRIVATE_SEL(sparseTileSizeWithTextureType_pixelFormat_sampleCount_sparsePageSize_), textureType, pixelFormat, sampleCount, sparsePageSize);
|
| 1277 |
+
}
|
| 1278 |
+
|
| 1279 |
+
// property: maxBufferLength
|
| 1280 |
+
_MTL_INLINE NS::UInteger MTL::Device::maxBufferLength() const
|
| 1281 |
+
{
|
| 1282 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxBufferLength));
|
| 1283 |
+
}
|
| 1284 |
+
|
| 1285 |
+
// property: counterSets
|
| 1286 |
+
_MTL_INLINE NS::Array* MTL::Device::counterSets() const
|
| 1287 |
+
{
|
| 1288 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(counterSets));
|
| 1289 |
+
}
|
| 1290 |
+
|
| 1291 |
+
// method: newCounterSampleBufferWithDescriptor:error:
|
| 1292 |
+
_MTL_INLINE MTL::CounterSampleBuffer* MTL::Device::newCounterSampleBuffer(const MTL::CounterSampleBufferDescriptor* descriptor, NS::Error** error)
|
| 1293 |
+
{
|
| 1294 |
+
return Object::sendMessage<MTL::CounterSampleBuffer*>(this, _MTL_PRIVATE_SEL(newCounterSampleBufferWithDescriptor_error_), descriptor, error);
|
| 1295 |
+
}
|
| 1296 |
+
|
| 1297 |
+
// method: sampleTimestamps:gpuTimestamp:
|
| 1298 |
+
_MTL_INLINE void MTL::Device::sampleTimestamps(MTL::Timestamp* cpuTimestamp, MTL::Timestamp* gpuTimestamp)
|
| 1299 |
+
{
|
| 1300 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(sampleTimestamps_gpuTimestamp_), cpuTimestamp, gpuTimestamp);
|
| 1301 |
+
}
|
| 1302 |
+
|
| 1303 |
+
// method: newArgumentEncoderWithBufferBinding:
|
| 1304 |
+
_MTL_INLINE MTL::ArgumentEncoder* MTL::Device::newArgumentEncoder(const MTL::BufferBinding* bufferBinding)
|
| 1305 |
+
{
|
| 1306 |
+
return Object::sendMessage<MTL::ArgumentEncoder*>(this, _MTL_PRIVATE_SEL(newArgumentEncoderWithBufferBinding_), bufferBinding);
|
| 1307 |
+
}
|
| 1308 |
+
|
| 1309 |
+
// method: supportsCounterSampling:
|
| 1310 |
+
_MTL_INLINE bool MTL::Device::supportsCounterSampling(MTL::CounterSamplingPoint samplingPoint)
|
| 1311 |
+
{
|
| 1312 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsCounterSampling_), samplingPoint);
|
| 1313 |
+
}
|
| 1314 |
+
|
| 1315 |
+
// method: supportsVertexAmplificationCount:
|
| 1316 |
+
_MTL_INLINE bool MTL::Device::supportsVertexAmplificationCount(NS::UInteger count)
|
| 1317 |
+
{
|
| 1318 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsVertexAmplificationCount_), count);
|
| 1319 |
+
}
|
| 1320 |
+
|
| 1321 |
+
// property: supportsDynamicLibraries
|
| 1322 |
+
_MTL_INLINE bool MTL::Device::supportsDynamicLibraries() const
|
| 1323 |
+
{
|
| 1324 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsDynamicLibraries));
|
| 1325 |
+
}
|
| 1326 |
+
|
| 1327 |
+
// property: supportsRenderDynamicLibraries
|
| 1328 |
+
_MTL_INLINE bool MTL::Device::supportsRenderDynamicLibraries() const
|
| 1329 |
+
{
|
| 1330 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsRenderDynamicLibraries));
|
| 1331 |
+
}
|
| 1332 |
+
|
| 1333 |
+
// method: newDynamicLibrary:error:
|
| 1334 |
+
_MTL_INLINE MTL::DynamicLibrary* MTL::Device::newDynamicLibrary(const MTL::Library* library, NS::Error** error)
|
| 1335 |
+
{
|
| 1336 |
+
return Object::sendMessage<MTL::DynamicLibrary*>(this, _MTL_PRIVATE_SEL(newDynamicLibrary_error_), library, error);
|
| 1337 |
+
}
|
| 1338 |
+
|
| 1339 |
+
// method: newDynamicLibraryWithURL:error:
|
| 1340 |
+
_MTL_INLINE MTL::DynamicLibrary* MTL::Device::newDynamicLibrary(const NS::URL* url, NS::Error** error)
|
| 1341 |
+
{
|
| 1342 |
+
return Object::sendMessage<MTL::DynamicLibrary*>(this, _MTL_PRIVATE_SEL(newDynamicLibraryWithURL_error_), url, error);
|
| 1343 |
+
}
|
| 1344 |
+
|
| 1345 |
+
// method: newBinaryArchiveWithDescriptor:error:
|
| 1346 |
+
_MTL_INLINE MTL::BinaryArchive* MTL::Device::newBinaryArchive(const MTL::BinaryArchiveDescriptor* descriptor, NS::Error** error)
|
| 1347 |
+
{
|
| 1348 |
+
return Object::sendMessage<MTL::BinaryArchive*>(this, _MTL_PRIVATE_SEL(newBinaryArchiveWithDescriptor_error_), descriptor, error);
|
| 1349 |
+
}
|
| 1350 |
+
|
| 1351 |
+
// property: supportsRaytracing
|
| 1352 |
+
_MTL_INLINE bool MTL::Device::supportsRaytracing() const
|
| 1353 |
+
{
|
| 1354 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsRaytracing));
|
| 1355 |
+
}
|
| 1356 |
+
|
| 1357 |
+
// method: accelerationStructureSizesWithDescriptor:
|
| 1358 |
+
_MTL_INLINE MTL::AccelerationStructureSizes MTL::Device::accelerationStructureSizes(const MTL::AccelerationStructureDescriptor* descriptor)
|
| 1359 |
+
{
|
| 1360 |
+
return Object::sendMessage<MTL::AccelerationStructureSizes>(this, _MTL_PRIVATE_SEL(accelerationStructureSizesWithDescriptor_), descriptor);
|
| 1361 |
+
}
|
| 1362 |
+
|
| 1363 |
+
// method: newAccelerationStructureWithSize:
|
| 1364 |
+
_MTL_INLINE MTL::AccelerationStructure* MTL::Device::newAccelerationStructure(NS::UInteger size)
|
| 1365 |
+
{
|
| 1366 |
+
return Object::sendMessage<MTL::AccelerationStructure*>(this, _MTL_PRIVATE_SEL(newAccelerationStructureWithSize_), size);
|
| 1367 |
+
}
|
| 1368 |
+
|
| 1369 |
+
// method: newAccelerationStructureWithDescriptor:
|
| 1370 |
+
_MTL_INLINE MTL::AccelerationStructure* MTL::Device::newAccelerationStructure(const MTL::AccelerationStructureDescriptor* descriptor)
|
| 1371 |
+
{
|
| 1372 |
+
return Object::sendMessage<MTL::AccelerationStructure*>(this, _MTL_PRIVATE_SEL(newAccelerationStructureWithDescriptor_), descriptor);
|
| 1373 |
+
}
|
| 1374 |
+
|
| 1375 |
+
// method: heapAccelerationStructureSizeAndAlignWithSize:
|
| 1376 |
+
_MTL_INLINE MTL::SizeAndAlign MTL::Device::heapAccelerationStructureSizeAndAlign(NS::UInteger size)
|
| 1377 |
+
{
|
| 1378 |
+
return Object::sendMessage<MTL::SizeAndAlign>(this, _MTL_PRIVATE_SEL(heapAccelerationStructureSizeAndAlignWithSize_), size);
|
| 1379 |
+
}
|
| 1380 |
+
|
| 1381 |
+
// method: heapAccelerationStructureSizeAndAlignWithDescriptor:
|
| 1382 |
+
_MTL_INLINE MTL::SizeAndAlign MTL::Device::heapAccelerationStructureSizeAndAlign(const MTL::AccelerationStructureDescriptor* descriptor)
|
| 1383 |
+
{
|
| 1384 |
+
return Object::sendMessage<MTL::SizeAndAlign>(this, _MTL_PRIVATE_SEL(heapAccelerationStructureSizeAndAlignWithDescriptor_), descriptor);
|
| 1385 |
+
}
|
| 1386 |
+
|
| 1387 |
+
// property: supportsFunctionPointers
|
| 1388 |
+
_MTL_INLINE bool MTL::Device::supportsFunctionPointers() const
|
| 1389 |
+
{
|
| 1390 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsFunctionPointers));
|
| 1391 |
+
}
|
| 1392 |
+
|
| 1393 |
+
// property: supportsFunctionPointersFromRender
|
| 1394 |
+
_MTL_INLINE bool MTL::Device::supportsFunctionPointersFromRender() const
|
| 1395 |
+
{
|
| 1396 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsFunctionPointersFromRender));
|
| 1397 |
+
}
|
| 1398 |
+
|
| 1399 |
+
// property: supportsRaytracingFromRender
|
| 1400 |
+
_MTL_INLINE bool MTL::Device::supportsRaytracingFromRender() const
|
| 1401 |
+
{
|
| 1402 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsRaytracingFromRender));
|
| 1403 |
+
}
|
| 1404 |
+
|
| 1405 |
+
// property: supportsPrimitiveMotionBlur
|
| 1406 |
+
_MTL_INLINE bool MTL::Device::supportsPrimitiveMotionBlur() const
|
| 1407 |
+
{
|
| 1408 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportsPrimitiveMotionBlur));
|
| 1409 |
+
}
|
| 1410 |
+
|
| 1411 |
+
// property: shouldMaximizeConcurrentCompilation
|
| 1412 |
+
_MTL_INLINE bool MTL::Device::shouldMaximizeConcurrentCompilation() const
|
| 1413 |
+
{
|
| 1414 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(shouldMaximizeConcurrentCompilation));
|
| 1415 |
+
}
|
| 1416 |
+
|
| 1417 |
+
_MTL_INLINE void MTL::Device::setShouldMaximizeConcurrentCompilation(bool shouldMaximizeConcurrentCompilation)
|
| 1418 |
+
{
|
| 1419 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setShouldMaximizeConcurrentCompilation_), shouldMaximizeConcurrentCompilation);
|
| 1420 |
+
}
|
| 1421 |
+
|
| 1422 |
+
// property: maximumConcurrentCompilationTaskCount
|
| 1423 |
+
_MTL_INLINE NS::UInteger MTL::Device::maximumConcurrentCompilationTaskCount() const
|
| 1424 |
+
{
|
| 1425 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maximumConcurrentCompilationTaskCount));
|
| 1426 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLDrawable.hpp
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLDrawable.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include <CoreFoundation/CoreFoundation.h>
|
| 30 |
+
#include <functional>
|
| 31 |
+
|
| 32 |
+
namespace MTL
|
| 33 |
+
{
|
| 34 |
+
using DrawablePresentedHandler = void (^)(class Drawable*);
|
| 35 |
+
|
| 36 |
+
using DrawablePresentedHandlerFunction = std::function<void(class Drawable*)>;
|
| 37 |
+
|
| 38 |
+
class Drawable : public NS::Referencing<Drawable>
|
| 39 |
+
{
|
| 40 |
+
public:
|
| 41 |
+
void addPresentedHandler(const MTL::DrawablePresentedHandlerFunction& function);
|
| 42 |
+
|
| 43 |
+
void present();
|
| 44 |
+
|
| 45 |
+
void presentAtTime(CFTimeInterval presentationTime);
|
| 46 |
+
|
| 47 |
+
void presentAfterMinimumDuration(CFTimeInterval duration);
|
| 48 |
+
|
| 49 |
+
void addPresentedHandler(const MTL::DrawablePresentedHandler block);
|
| 50 |
+
|
| 51 |
+
CFTimeInterval presentedTime() const;
|
| 52 |
+
|
| 53 |
+
NS::UInteger drawableID() const;
|
| 54 |
+
};
|
| 55 |
+
|
| 56 |
+
}
|
| 57 |
+
|
| 58 |
+
_MTL_INLINE void MTL::Drawable::addPresentedHandler(const MTL::DrawablePresentedHandlerFunction& function)
|
| 59 |
+
{
|
| 60 |
+
__block DrawablePresentedHandlerFunction blockFunction = function;
|
| 61 |
+
|
| 62 |
+
addPresentedHandler(^(Drawable* pDrawable) { blockFunction(pDrawable); });
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
// method: present
|
| 66 |
+
_MTL_INLINE void MTL::Drawable::present()
|
| 67 |
+
{
|
| 68 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(present));
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
// method: presentAtTime:
|
| 72 |
+
_MTL_INLINE void MTL::Drawable::presentAtTime(CFTimeInterval presentationTime)
|
| 73 |
+
{
|
| 74 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(presentAtTime_), presentationTime);
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
// method: presentAfterMinimumDuration:
|
| 78 |
+
_MTL_INLINE void MTL::Drawable::presentAfterMinimumDuration(CFTimeInterval duration)
|
| 79 |
+
{
|
| 80 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(presentAfterMinimumDuration_), duration);
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
// method: addPresentedHandler:
|
| 84 |
+
_MTL_INLINE void MTL::Drawable::addPresentedHandler(const MTL::DrawablePresentedHandler block)
|
| 85 |
+
{
|
| 86 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(addPresentedHandler_), block);
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
// property: presentedTime
|
| 90 |
+
_MTL_INLINE CFTimeInterval MTL::Drawable::presentedTime() const
|
| 91 |
+
{
|
| 92 |
+
return Object::sendMessage<CFTimeInterval>(this, _MTL_PRIVATE_SEL(presentedTime));
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
// property: drawableID
|
| 96 |
+
_MTL_INLINE NS::UInteger MTL::Drawable::drawableID() const
|
| 97 |
+
{
|
| 98 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(drawableID));
|
| 99 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLDynamicLibrary.hpp
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLDynamicLibrary.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
namespace MTL
|
| 30 |
+
{
|
| 31 |
+
_MTL_ENUM(NS::UInteger, DynamicLibraryError) {
|
| 32 |
+
DynamicLibraryErrorNone = 0,
|
| 33 |
+
DynamicLibraryErrorInvalidFile = 1,
|
| 34 |
+
DynamicLibraryErrorCompilationFailure = 2,
|
| 35 |
+
DynamicLibraryErrorUnresolvedInstallName = 3,
|
| 36 |
+
DynamicLibraryErrorDependencyLoadFailure = 4,
|
| 37 |
+
DynamicLibraryErrorUnsupported = 5,
|
| 38 |
+
};
|
| 39 |
+
|
| 40 |
+
class DynamicLibrary : public NS::Referencing<DynamicLibrary>
|
| 41 |
+
{
|
| 42 |
+
public:
|
| 43 |
+
NS::String* label() const;
|
| 44 |
+
void setLabel(const NS::String* label);
|
| 45 |
+
|
| 46 |
+
class Device* device() const;
|
| 47 |
+
|
| 48 |
+
NS::String* installName() const;
|
| 49 |
+
|
| 50 |
+
bool serializeToURL(const NS::URL* url, NS::Error** error);
|
| 51 |
+
};
|
| 52 |
+
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
// property: label
|
| 56 |
+
_MTL_INLINE NS::String* MTL::DynamicLibrary::label() const
|
| 57 |
+
{
|
| 58 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
_MTL_INLINE void MTL::DynamicLibrary::setLabel(const NS::String* label)
|
| 62 |
+
{
|
| 63 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 64 |
+
}
|
| 65 |
+
|
| 66 |
+
// property: device
|
| 67 |
+
_MTL_INLINE MTL::Device* MTL::DynamicLibrary::device() const
|
| 68 |
+
{
|
| 69 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
// property: installName
|
| 73 |
+
_MTL_INLINE NS::String* MTL::DynamicLibrary::installName() const
|
| 74 |
+
{
|
| 75 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(installName));
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
// method: serializeToURL:error:
|
| 79 |
+
_MTL_INLINE bool MTL::DynamicLibrary::serializeToURL(const NS::URL* url, NS::Error** error)
|
| 80 |
+
{
|
| 81 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(serializeToURL_error_), url, error);
|
| 82 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLEvent.hpp
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLEvent.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLEvent.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
class Event : public NS::Referencing<Event>
|
| 34 |
+
{
|
| 35 |
+
public:
|
| 36 |
+
class Device* device() const;
|
| 37 |
+
|
| 38 |
+
NS::String* label() const;
|
| 39 |
+
void setLabel(const NS::String* label);
|
| 40 |
+
};
|
| 41 |
+
|
| 42 |
+
class SharedEventListener : public NS::Referencing<SharedEventListener>
|
| 43 |
+
{
|
| 44 |
+
public:
|
| 45 |
+
static class SharedEventListener* alloc();
|
| 46 |
+
|
| 47 |
+
MTL::SharedEventListener* init();
|
| 48 |
+
|
| 49 |
+
MTL::SharedEventListener* init(const dispatch_queue_t dispatchQueue);
|
| 50 |
+
|
| 51 |
+
dispatch_queue_t dispatchQueue() const;
|
| 52 |
+
};
|
| 53 |
+
|
| 54 |
+
using SharedEventNotificationBlock = void (^)(SharedEvent* pEvent, std::uint64_t value);
|
| 55 |
+
|
| 56 |
+
class SharedEvent : public NS::Referencing<SharedEvent, Event>
|
| 57 |
+
{
|
| 58 |
+
public:
|
| 59 |
+
void notifyListener(const class SharedEventListener* listener, uint64_t value, const MTL::SharedEventNotificationBlock block);
|
| 60 |
+
|
| 61 |
+
class SharedEventHandle* newSharedEventHandle();
|
| 62 |
+
|
| 63 |
+
uint64_t signaledValue() const;
|
| 64 |
+
void setSignaledValue(uint64_t signaledValue);
|
| 65 |
+
};
|
| 66 |
+
|
| 67 |
+
class SharedEventHandle : public NS::SecureCoding<SharedEventHandle>
|
| 68 |
+
{
|
| 69 |
+
public:
|
| 70 |
+
static class SharedEventHandle* alloc();
|
| 71 |
+
|
| 72 |
+
class SharedEventHandle* init();
|
| 73 |
+
|
| 74 |
+
NS::String* label() const;
|
| 75 |
+
};
|
| 76 |
+
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
// property: device
|
| 80 |
+
_MTL_INLINE MTL::Device* MTL::Event::device() const
|
| 81 |
+
{
|
| 82 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
// property: label
|
| 86 |
+
_MTL_INLINE NS::String* MTL::Event::label() const
|
| 87 |
+
{
|
| 88 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
_MTL_INLINE void MTL::Event::setLabel(const NS::String* label)
|
| 92 |
+
{
|
| 93 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 94 |
+
}
|
| 95 |
+
|
| 96 |
+
// static method: alloc
|
| 97 |
+
_MTL_INLINE MTL::SharedEventListener* MTL::SharedEventListener::alloc()
|
| 98 |
+
{
|
| 99 |
+
return NS::Object::alloc<MTL::SharedEventListener>(_MTL_PRIVATE_CLS(MTLSharedEventListener));
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
// method: init
|
| 103 |
+
_MTL_INLINE MTL::SharedEventListener* MTL::SharedEventListener::init()
|
| 104 |
+
{
|
| 105 |
+
return NS::Object::init<MTL::SharedEventListener>();
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
// method: initWithDispatchQueue:
|
| 109 |
+
_MTL_INLINE MTL::SharedEventListener* MTL::SharedEventListener::init(const dispatch_queue_t dispatchQueue)
|
| 110 |
+
{
|
| 111 |
+
return Object::sendMessage<MTL::SharedEventListener*>(this, _MTL_PRIVATE_SEL(initWithDispatchQueue_), dispatchQueue);
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
// property: dispatchQueue
|
| 115 |
+
_MTL_INLINE dispatch_queue_t MTL::SharedEventListener::dispatchQueue() const
|
| 116 |
+
{
|
| 117 |
+
return Object::sendMessage<dispatch_queue_t>(this, _MTL_PRIVATE_SEL(dispatchQueue));
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
// method: notifyListener:atValue:block:
|
| 121 |
+
_MTL_INLINE void MTL::SharedEvent::notifyListener(const MTL::SharedEventListener* listener, uint64_t value, const MTL::SharedEventNotificationBlock block)
|
| 122 |
+
{
|
| 123 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(notifyListener_atValue_block_), listener, value, block);
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
// method: newSharedEventHandle
|
| 127 |
+
_MTL_INLINE MTL::SharedEventHandle* MTL::SharedEvent::newSharedEventHandle()
|
| 128 |
+
{
|
| 129 |
+
return Object::sendMessage<MTL::SharedEventHandle*>(this, _MTL_PRIVATE_SEL(newSharedEventHandle));
|
| 130 |
+
}
|
| 131 |
+
|
| 132 |
+
// property: signaledValue
|
| 133 |
+
_MTL_INLINE uint64_t MTL::SharedEvent::signaledValue() const
|
| 134 |
+
{
|
| 135 |
+
return Object::sendMessage<uint64_t>(this, _MTL_PRIVATE_SEL(signaledValue));
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
_MTL_INLINE void MTL::SharedEvent::setSignaledValue(uint64_t signaledValue)
|
| 139 |
+
{
|
| 140 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSignaledValue_), signaledValue);
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
// static method: alloc
|
| 144 |
+
_MTL_INLINE MTL::SharedEventHandle* MTL::SharedEventHandle::alloc()
|
| 145 |
+
{
|
| 146 |
+
return NS::Object::alloc<MTL::SharedEventHandle>(_MTL_PRIVATE_CLS(MTLSharedEventHandle));
|
| 147 |
+
}
|
| 148 |
+
|
| 149 |
+
// method: init
|
| 150 |
+
_MTL_INLINE MTL::SharedEventHandle* MTL::SharedEventHandle::init()
|
| 151 |
+
{
|
| 152 |
+
return NS::Object::init<MTL::SharedEventHandle>();
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
// property: label
|
| 156 |
+
_MTL_INLINE NS::String* MTL::SharedEventHandle::label() const
|
| 157 |
+
{
|
| 158 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 159 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLFence.hpp
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLFence.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
namespace MTL
|
| 30 |
+
{
|
| 31 |
+
class Fence : public NS::Referencing<Fence>
|
| 32 |
+
{
|
| 33 |
+
public:
|
| 34 |
+
class Device* device() const;
|
| 35 |
+
|
| 36 |
+
NS::String* label() const;
|
| 37 |
+
void setLabel(const NS::String* label);
|
| 38 |
+
};
|
| 39 |
+
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
// property: device
|
| 43 |
+
_MTL_INLINE MTL::Device* MTL::Fence::device() const
|
| 44 |
+
{
|
| 45 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
// property: label
|
| 49 |
+
_MTL_INLINE NS::String* MTL::Fence::label() const
|
| 50 |
+
{
|
| 51 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
_MTL_INLINE void MTL::Fence::setLabel(const NS::String* label)
|
| 55 |
+
{
|
| 56 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 57 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLFunctionConstantValues.hpp
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLFunctionConstantValues.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLArgument.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
class FunctionConstantValues : public NS::Copying<FunctionConstantValues>
|
| 34 |
+
{
|
| 35 |
+
public:
|
| 36 |
+
static class FunctionConstantValues* alloc();
|
| 37 |
+
|
| 38 |
+
class FunctionConstantValues* init();
|
| 39 |
+
|
| 40 |
+
void setConstantValue(const void* value, MTL::DataType type, NS::UInteger index);
|
| 41 |
+
|
| 42 |
+
void setConstantValues(const void* values, MTL::DataType type, NS::Range range);
|
| 43 |
+
|
| 44 |
+
void setConstantValue(const void* value, MTL::DataType type, const NS::String* name);
|
| 45 |
+
|
| 46 |
+
void reset();
|
| 47 |
+
};
|
| 48 |
+
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
// static method: alloc
|
| 52 |
+
_MTL_INLINE MTL::FunctionConstantValues* MTL::FunctionConstantValues::alloc()
|
| 53 |
+
{
|
| 54 |
+
return NS::Object::alloc<MTL::FunctionConstantValues>(_MTL_PRIVATE_CLS(MTLFunctionConstantValues));
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
// method: init
|
| 58 |
+
_MTL_INLINE MTL::FunctionConstantValues* MTL::FunctionConstantValues::init()
|
| 59 |
+
{
|
| 60 |
+
return NS::Object::init<MTL::FunctionConstantValues>();
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
// method: setConstantValue:type:atIndex:
|
| 64 |
+
_MTL_INLINE void MTL::FunctionConstantValues::setConstantValue(const void* value, MTL::DataType type, NS::UInteger index)
|
| 65 |
+
{
|
| 66 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setConstantValue_type_atIndex_), value, type, index);
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
// method: setConstantValues:type:withRange:
|
| 70 |
+
_MTL_INLINE void MTL::FunctionConstantValues::setConstantValues(const void* values, MTL::DataType type, NS::Range range)
|
| 71 |
+
{
|
| 72 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setConstantValues_type_withRange_), values, type, range);
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
// method: setConstantValue:type:withName:
|
| 76 |
+
_MTL_INLINE void MTL::FunctionConstantValues::setConstantValue(const void* value, MTL::DataType type, const NS::String* name)
|
| 77 |
+
{
|
| 78 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setConstantValue_type_withName_), value, type, name);
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
+
// method: reset
|
| 82 |
+
_MTL_INLINE void MTL::FunctionConstantValues::reset()
|
| 83 |
+
{
|
| 84 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(reset));
|
| 85 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLFunctionDescriptor.hpp
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLFunctionDescriptor.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLFunctionDescriptor.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
_MTL_OPTIONS(NS::UInteger, FunctionOptions) {
|
| 34 |
+
FunctionOptionNone = 0,
|
| 35 |
+
FunctionOptionCompileToBinary = 1,
|
| 36 |
+
FunctionOptionStoreFunctionInMetalScript = 2,
|
| 37 |
+
};
|
| 38 |
+
|
| 39 |
+
class FunctionDescriptor : public NS::Copying<FunctionDescriptor>
|
| 40 |
+
{
|
| 41 |
+
public:
|
| 42 |
+
static class FunctionDescriptor* alloc();
|
| 43 |
+
|
| 44 |
+
class FunctionDescriptor* init();
|
| 45 |
+
|
| 46 |
+
static class FunctionDescriptor* functionDescriptor();
|
| 47 |
+
|
| 48 |
+
NS::String* name() const;
|
| 49 |
+
void setName(const NS::String* name);
|
| 50 |
+
|
| 51 |
+
NS::String* specializedName() const;
|
| 52 |
+
void setSpecializedName(const NS::String* specializedName);
|
| 53 |
+
|
| 54 |
+
class FunctionConstantValues* constantValues() const;
|
| 55 |
+
void setConstantValues(const class FunctionConstantValues* constantValues);
|
| 56 |
+
|
| 57 |
+
MTL::FunctionOptions options() const;
|
| 58 |
+
void setOptions(MTL::FunctionOptions options);
|
| 59 |
+
|
| 60 |
+
NS::Array* binaryArchives() const;
|
| 61 |
+
void setBinaryArchives(const NS::Array* binaryArchives);
|
| 62 |
+
};
|
| 63 |
+
|
| 64 |
+
class IntersectionFunctionDescriptor : public NS::Copying<IntersectionFunctionDescriptor, MTL::FunctionDescriptor>
|
| 65 |
+
{
|
| 66 |
+
public:
|
| 67 |
+
static class IntersectionFunctionDescriptor* alloc();
|
| 68 |
+
|
| 69 |
+
class IntersectionFunctionDescriptor* init();
|
| 70 |
+
};
|
| 71 |
+
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
// static method: alloc
|
| 75 |
+
_MTL_INLINE MTL::FunctionDescriptor* MTL::FunctionDescriptor::alloc()
|
| 76 |
+
{
|
| 77 |
+
return NS::Object::alloc<MTL::FunctionDescriptor>(_MTL_PRIVATE_CLS(MTLFunctionDescriptor));
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
// method: init
|
| 81 |
+
_MTL_INLINE MTL::FunctionDescriptor* MTL::FunctionDescriptor::init()
|
| 82 |
+
{
|
| 83 |
+
return NS::Object::init<MTL::FunctionDescriptor>();
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
// static method: functionDescriptor
|
| 87 |
+
_MTL_INLINE MTL::FunctionDescriptor* MTL::FunctionDescriptor::functionDescriptor()
|
| 88 |
+
{
|
| 89 |
+
return Object::sendMessage<MTL::FunctionDescriptor*>(_MTL_PRIVATE_CLS(MTLFunctionDescriptor), _MTL_PRIVATE_SEL(functionDescriptor));
|
| 90 |
+
}
|
| 91 |
+
|
| 92 |
+
// property: name
|
| 93 |
+
_MTL_INLINE NS::String* MTL::FunctionDescriptor::name() const
|
| 94 |
+
{
|
| 95 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
_MTL_INLINE void MTL::FunctionDescriptor::setName(const NS::String* name)
|
| 99 |
+
{
|
| 100 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setName_), name);
|
| 101 |
+
}
|
| 102 |
+
|
| 103 |
+
// property: specializedName
|
| 104 |
+
_MTL_INLINE NS::String* MTL::FunctionDescriptor::specializedName() const
|
| 105 |
+
{
|
| 106 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(specializedName));
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
_MTL_INLINE void MTL::FunctionDescriptor::setSpecializedName(const NS::String* specializedName)
|
| 110 |
+
{
|
| 111 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSpecializedName_), specializedName);
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
// property: constantValues
|
| 115 |
+
_MTL_INLINE MTL::FunctionConstantValues* MTL::FunctionDescriptor::constantValues() const
|
| 116 |
+
{
|
| 117 |
+
return Object::sendMessage<MTL::FunctionConstantValues*>(this, _MTL_PRIVATE_SEL(constantValues));
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
_MTL_INLINE void MTL::FunctionDescriptor::setConstantValues(const MTL::FunctionConstantValues* constantValues)
|
| 121 |
+
{
|
| 122 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setConstantValues_), constantValues);
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
// property: options
|
| 126 |
+
_MTL_INLINE MTL::FunctionOptions MTL::FunctionDescriptor::options() const
|
| 127 |
+
{
|
| 128 |
+
return Object::sendMessage<MTL::FunctionOptions>(this, _MTL_PRIVATE_SEL(options));
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
_MTL_INLINE void MTL::FunctionDescriptor::setOptions(MTL::FunctionOptions options)
|
| 132 |
+
{
|
| 133 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOptions_), options);
|
| 134 |
+
}
|
| 135 |
+
|
| 136 |
+
// property: binaryArchives
|
| 137 |
+
_MTL_INLINE NS::Array* MTL::FunctionDescriptor::binaryArchives() const
|
| 138 |
+
{
|
| 139 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(binaryArchives));
|
| 140 |
+
}
|
| 141 |
+
|
| 142 |
+
_MTL_INLINE void MTL::FunctionDescriptor::setBinaryArchives(const NS::Array* binaryArchives)
|
| 143 |
+
{
|
| 144 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBinaryArchives_), binaryArchives);
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
// static method: alloc
|
| 148 |
+
_MTL_INLINE MTL::IntersectionFunctionDescriptor* MTL::IntersectionFunctionDescriptor::alloc()
|
| 149 |
+
{
|
| 150 |
+
return NS::Object::alloc<MTL::IntersectionFunctionDescriptor>(_MTL_PRIVATE_CLS(MTLIntersectionFunctionDescriptor));
|
| 151 |
+
}
|
| 152 |
+
|
| 153 |
+
// method: init
|
| 154 |
+
_MTL_INLINE MTL::IntersectionFunctionDescriptor* MTL::IntersectionFunctionDescriptor::init()
|
| 155 |
+
{
|
| 156 |
+
return NS::Object::init<MTL::IntersectionFunctionDescriptor>();
|
| 157 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLFunctionHandle.hpp
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLFunctionHandle.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLLibrary.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
class FunctionHandle : public NS::Referencing<FunctionHandle>
|
| 34 |
+
{
|
| 35 |
+
public:
|
| 36 |
+
MTL::FunctionType functionType() const;
|
| 37 |
+
|
| 38 |
+
NS::String* name() const;
|
| 39 |
+
|
| 40 |
+
class Device* device() const;
|
| 41 |
+
};
|
| 42 |
+
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
+
// property: functionType
|
| 46 |
+
_MTL_INLINE MTL::FunctionType MTL::FunctionHandle::functionType() const
|
| 47 |
+
{
|
| 48 |
+
return Object::sendMessage<MTL::FunctionType>(this, _MTL_PRIVATE_SEL(functionType));
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
// property: name
|
| 52 |
+
_MTL_INLINE NS::String* MTL::FunctionHandle::name() const
|
| 53 |
+
{
|
| 54 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
// property: device
|
| 58 |
+
_MTL_INLINE MTL::Device* MTL::FunctionHandle::device() const
|
| 59 |
+
{
|
| 60 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 61 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLFunctionLog.hpp
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLFunctionLog.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLFunctionLog.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
_MTL_ENUM(NS::UInteger, FunctionLogType) {
|
| 34 |
+
FunctionLogTypeValidation = 0,
|
| 35 |
+
};
|
| 36 |
+
|
| 37 |
+
class LogContainer : public NS::Referencing<LogContainer, NS::FastEnumeration>
|
| 38 |
+
{
|
| 39 |
+
public:
|
| 40 |
+
};
|
| 41 |
+
|
| 42 |
+
class FunctionLogDebugLocation : public NS::Referencing<FunctionLogDebugLocation>
|
| 43 |
+
{
|
| 44 |
+
public:
|
| 45 |
+
NS::String* functionName() const;
|
| 46 |
+
|
| 47 |
+
NS::URL* URL() const;
|
| 48 |
+
|
| 49 |
+
NS::UInteger line() const;
|
| 50 |
+
|
| 51 |
+
NS::UInteger column() const;
|
| 52 |
+
};
|
| 53 |
+
|
| 54 |
+
class FunctionLog : public NS::Referencing<FunctionLog>
|
| 55 |
+
{
|
| 56 |
+
public:
|
| 57 |
+
MTL::FunctionLogType type() const;
|
| 58 |
+
|
| 59 |
+
NS::String* encoderLabel() const;
|
| 60 |
+
|
| 61 |
+
class Function* function() const;
|
| 62 |
+
|
| 63 |
+
class FunctionLogDebugLocation* debugLocation() const;
|
| 64 |
+
};
|
| 65 |
+
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
// property: functionName
|
| 69 |
+
_MTL_INLINE NS::String* MTL::FunctionLogDebugLocation::functionName() const
|
| 70 |
+
{
|
| 71 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(functionName));
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
// property: URL
|
| 75 |
+
_MTL_INLINE NS::URL* MTL::FunctionLogDebugLocation::URL() const
|
| 76 |
+
{
|
| 77 |
+
return Object::sendMessage<NS::URL*>(this, _MTL_PRIVATE_SEL(URL));
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
// property: line
|
| 81 |
+
_MTL_INLINE NS::UInteger MTL::FunctionLogDebugLocation::line() const
|
| 82 |
+
{
|
| 83 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(line));
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
// property: column
|
| 87 |
+
_MTL_INLINE NS::UInteger MTL::FunctionLogDebugLocation::column() const
|
| 88 |
+
{
|
| 89 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(column));
|
| 90 |
+
}
|
| 91 |
+
|
| 92 |
+
// property: type
|
| 93 |
+
_MTL_INLINE MTL::FunctionLogType MTL::FunctionLog::type() const
|
| 94 |
+
{
|
| 95 |
+
return Object::sendMessage<MTL::FunctionLogType>(this, _MTL_PRIVATE_SEL(type));
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
// property: encoderLabel
|
| 99 |
+
_MTL_INLINE NS::String* MTL::FunctionLog::encoderLabel() const
|
| 100 |
+
{
|
| 101 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(encoderLabel));
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
// property: function
|
| 105 |
+
_MTL_INLINE MTL::Function* MTL::FunctionLog::function() const
|
| 106 |
+
{
|
| 107 |
+
return Object::sendMessage<MTL::Function*>(this, _MTL_PRIVATE_SEL(function));
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
// property: debugLocation
|
| 111 |
+
_MTL_INLINE MTL::FunctionLogDebugLocation* MTL::FunctionLog::debugLocation() const
|
| 112 |
+
{
|
| 113 |
+
return Object::sendMessage<MTL::FunctionLogDebugLocation*>(this, _MTL_PRIVATE_SEL(debugLocation));
|
| 114 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLFunctionStitching.hpp
ADDED
|
@@ -0,0 +1,307 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLFunctionStitching.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLFunctionStitching.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
class FunctionStitchingAttribute : public NS::Referencing<FunctionStitchingAttribute>
|
| 34 |
+
{
|
| 35 |
+
public:
|
| 36 |
+
};
|
| 37 |
+
|
| 38 |
+
class FunctionStitchingAttributeAlwaysInline : public NS::Referencing<FunctionStitchingAttributeAlwaysInline, FunctionStitchingAttribute>
|
| 39 |
+
{
|
| 40 |
+
public:
|
| 41 |
+
static class FunctionStitchingAttributeAlwaysInline* alloc();
|
| 42 |
+
|
| 43 |
+
class FunctionStitchingAttributeAlwaysInline* init();
|
| 44 |
+
};
|
| 45 |
+
|
| 46 |
+
class FunctionStitchingNode : public NS::Copying<FunctionStitchingNode>
|
| 47 |
+
{
|
| 48 |
+
public:
|
| 49 |
+
};
|
| 50 |
+
|
| 51 |
+
class FunctionStitchingInputNode : public NS::Referencing<FunctionStitchingInputNode, FunctionStitchingNode>
|
| 52 |
+
{
|
| 53 |
+
public:
|
| 54 |
+
static class FunctionStitchingInputNode* alloc();
|
| 55 |
+
|
| 56 |
+
class FunctionStitchingInputNode* init();
|
| 57 |
+
|
| 58 |
+
NS::UInteger argumentIndex() const;
|
| 59 |
+
void setArgumentIndex(NS::UInteger argumentIndex);
|
| 60 |
+
|
| 61 |
+
MTL::FunctionStitchingInputNode* init(NS::UInteger argument);
|
| 62 |
+
};
|
| 63 |
+
|
| 64 |
+
class FunctionStitchingFunctionNode : public NS::Referencing<FunctionStitchingFunctionNode, FunctionStitchingNode>
|
| 65 |
+
{
|
| 66 |
+
public:
|
| 67 |
+
static class FunctionStitchingFunctionNode* alloc();
|
| 68 |
+
|
| 69 |
+
class FunctionStitchingFunctionNode* init();
|
| 70 |
+
|
| 71 |
+
NS::String* name() const;
|
| 72 |
+
void setName(const NS::String* name);
|
| 73 |
+
|
| 74 |
+
NS::Array* arguments() const;
|
| 75 |
+
void setArguments(const NS::Array* arguments);
|
| 76 |
+
|
| 77 |
+
NS::Array* controlDependencies() const;
|
| 78 |
+
void setControlDependencies(const NS::Array* controlDependencies);
|
| 79 |
+
|
| 80 |
+
MTL::FunctionStitchingFunctionNode* init(const NS::String* name, const NS::Array* arguments, const NS::Array* controlDependencies);
|
| 81 |
+
};
|
| 82 |
+
|
| 83 |
+
class FunctionStitchingGraph : public NS::Copying<FunctionStitchingGraph>
|
| 84 |
+
{
|
| 85 |
+
public:
|
| 86 |
+
static class FunctionStitchingGraph* alloc();
|
| 87 |
+
|
| 88 |
+
class FunctionStitchingGraph* init();
|
| 89 |
+
|
| 90 |
+
NS::String* functionName() const;
|
| 91 |
+
void setFunctionName(const NS::String* functionName);
|
| 92 |
+
|
| 93 |
+
NS::Array* nodes() const;
|
| 94 |
+
void setNodes(const NS::Array* nodes);
|
| 95 |
+
|
| 96 |
+
class FunctionStitchingFunctionNode* outputNode() const;
|
| 97 |
+
void setOutputNode(const class FunctionStitchingFunctionNode* outputNode);
|
| 98 |
+
|
| 99 |
+
NS::Array* attributes() const;
|
| 100 |
+
void setAttributes(const NS::Array* attributes);
|
| 101 |
+
|
| 102 |
+
MTL::FunctionStitchingGraph* init(const NS::String* functionName, const NS::Array* nodes, const class FunctionStitchingFunctionNode* outputNode, const NS::Array* attributes);
|
| 103 |
+
};
|
| 104 |
+
|
| 105 |
+
class StitchedLibraryDescriptor : public NS::Copying<StitchedLibraryDescriptor>
|
| 106 |
+
{
|
| 107 |
+
public:
|
| 108 |
+
static class StitchedLibraryDescriptor* alloc();
|
| 109 |
+
|
| 110 |
+
class StitchedLibraryDescriptor* init();
|
| 111 |
+
|
| 112 |
+
NS::Array* functionGraphs() const;
|
| 113 |
+
void setFunctionGraphs(const NS::Array* functionGraphs);
|
| 114 |
+
|
| 115 |
+
NS::Array* functions() const;
|
| 116 |
+
void setFunctions(const NS::Array* functions);
|
| 117 |
+
};
|
| 118 |
+
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
// static method: alloc
|
| 122 |
+
_MTL_INLINE MTL::FunctionStitchingAttributeAlwaysInline* MTL::FunctionStitchingAttributeAlwaysInline::alloc()
|
| 123 |
+
{
|
| 124 |
+
return NS::Object::alloc<MTL::FunctionStitchingAttributeAlwaysInline>(_MTL_PRIVATE_CLS(MTLFunctionStitchingAttributeAlwaysInline));
|
| 125 |
+
}
|
| 126 |
+
|
| 127 |
+
// method: init
|
| 128 |
+
_MTL_INLINE MTL::FunctionStitchingAttributeAlwaysInline* MTL::FunctionStitchingAttributeAlwaysInline::init()
|
| 129 |
+
{
|
| 130 |
+
return NS::Object::init<MTL::FunctionStitchingAttributeAlwaysInline>();
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
// static method: alloc
|
| 134 |
+
_MTL_INLINE MTL::FunctionStitchingInputNode* MTL::FunctionStitchingInputNode::alloc()
|
| 135 |
+
{
|
| 136 |
+
return NS::Object::alloc<MTL::FunctionStitchingInputNode>(_MTL_PRIVATE_CLS(MTLFunctionStitchingInputNode));
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
// method: init
|
| 140 |
+
_MTL_INLINE MTL::FunctionStitchingInputNode* MTL::FunctionStitchingInputNode::init()
|
| 141 |
+
{
|
| 142 |
+
return NS::Object::init<MTL::FunctionStitchingInputNode>();
|
| 143 |
+
}
|
| 144 |
+
|
| 145 |
+
// property: argumentIndex
|
| 146 |
+
_MTL_INLINE NS::UInteger MTL::FunctionStitchingInputNode::argumentIndex() const
|
| 147 |
+
{
|
| 148 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(argumentIndex));
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
_MTL_INLINE void MTL::FunctionStitchingInputNode::setArgumentIndex(NS::UInteger argumentIndex)
|
| 152 |
+
{
|
| 153 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setArgumentIndex_), argumentIndex);
|
| 154 |
+
}
|
| 155 |
+
|
| 156 |
+
// method: initWithArgumentIndex:
|
| 157 |
+
_MTL_INLINE MTL::FunctionStitchingInputNode* MTL::FunctionStitchingInputNode::init(NS::UInteger argument)
|
| 158 |
+
{
|
| 159 |
+
return Object::sendMessage<MTL::FunctionStitchingInputNode*>(this, _MTL_PRIVATE_SEL(initWithArgumentIndex_), argument);
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
// static method: alloc
|
| 163 |
+
_MTL_INLINE MTL::FunctionStitchingFunctionNode* MTL::FunctionStitchingFunctionNode::alloc()
|
| 164 |
+
{
|
| 165 |
+
return NS::Object::alloc<MTL::FunctionStitchingFunctionNode>(_MTL_PRIVATE_CLS(MTLFunctionStitchingFunctionNode));
|
| 166 |
+
}
|
| 167 |
+
|
| 168 |
+
// method: init
|
| 169 |
+
_MTL_INLINE MTL::FunctionStitchingFunctionNode* MTL::FunctionStitchingFunctionNode::init()
|
| 170 |
+
{
|
| 171 |
+
return NS::Object::init<MTL::FunctionStitchingFunctionNode>();
|
| 172 |
+
}
|
| 173 |
+
|
| 174 |
+
// property: name
|
| 175 |
+
_MTL_INLINE NS::String* MTL::FunctionStitchingFunctionNode::name() const
|
| 176 |
+
{
|
| 177 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 178 |
+
}
|
| 179 |
+
|
| 180 |
+
_MTL_INLINE void MTL::FunctionStitchingFunctionNode::setName(const NS::String* name)
|
| 181 |
+
{
|
| 182 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setName_), name);
|
| 183 |
+
}
|
| 184 |
+
|
| 185 |
+
// property: arguments
|
| 186 |
+
_MTL_INLINE NS::Array* MTL::FunctionStitchingFunctionNode::arguments() const
|
| 187 |
+
{
|
| 188 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(arguments));
|
| 189 |
+
}
|
| 190 |
+
|
| 191 |
+
_MTL_INLINE void MTL::FunctionStitchingFunctionNode::setArguments(const NS::Array* arguments)
|
| 192 |
+
{
|
| 193 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setArguments_), arguments);
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
// property: controlDependencies
|
| 197 |
+
_MTL_INLINE NS::Array* MTL::FunctionStitchingFunctionNode::controlDependencies() const
|
| 198 |
+
{
|
| 199 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(controlDependencies));
|
| 200 |
+
}
|
| 201 |
+
|
| 202 |
+
_MTL_INLINE void MTL::FunctionStitchingFunctionNode::setControlDependencies(const NS::Array* controlDependencies)
|
| 203 |
+
{
|
| 204 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlDependencies_), controlDependencies);
|
| 205 |
+
}
|
| 206 |
+
|
| 207 |
+
// method: initWithName:arguments:controlDependencies:
|
| 208 |
+
_MTL_INLINE MTL::FunctionStitchingFunctionNode* MTL::FunctionStitchingFunctionNode::init(const NS::String* name, const NS::Array* arguments, const NS::Array* controlDependencies)
|
| 209 |
+
{
|
| 210 |
+
return Object::sendMessage<MTL::FunctionStitchingFunctionNode*>(this, _MTL_PRIVATE_SEL(initWithName_arguments_controlDependencies_), name, arguments, controlDependencies);
|
| 211 |
+
}
|
| 212 |
+
|
| 213 |
+
// static method: alloc
|
| 214 |
+
_MTL_INLINE MTL::FunctionStitchingGraph* MTL::FunctionStitchingGraph::alloc()
|
| 215 |
+
{
|
| 216 |
+
return NS::Object::alloc<MTL::FunctionStitchingGraph>(_MTL_PRIVATE_CLS(MTLFunctionStitchingGraph));
|
| 217 |
+
}
|
| 218 |
+
|
| 219 |
+
// method: init
|
| 220 |
+
_MTL_INLINE MTL::FunctionStitchingGraph* MTL::FunctionStitchingGraph::init()
|
| 221 |
+
{
|
| 222 |
+
return NS::Object::init<MTL::FunctionStitchingGraph>();
|
| 223 |
+
}
|
| 224 |
+
|
| 225 |
+
// property: functionName
|
| 226 |
+
_MTL_INLINE NS::String* MTL::FunctionStitchingGraph::functionName() const
|
| 227 |
+
{
|
| 228 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(functionName));
|
| 229 |
+
}
|
| 230 |
+
|
| 231 |
+
_MTL_INLINE void MTL::FunctionStitchingGraph::setFunctionName(const NS::String* functionName)
|
| 232 |
+
{
|
| 233 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFunctionName_), functionName);
|
| 234 |
+
}
|
| 235 |
+
|
| 236 |
+
// property: nodes
|
| 237 |
+
_MTL_INLINE NS::Array* MTL::FunctionStitchingGraph::nodes() const
|
| 238 |
+
{
|
| 239 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(nodes));
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
_MTL_INLINE void MTL::FunctionStitchingGraph::setNodes(const NS::Array* nodes)
|
| 243 |
+
{
|
| 244 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setNodes_), nodes);
|
| 245 |
+
}
|
| 246 |
+
|
| 247 |
+
// property: outputNode
|
| 248 |
+
_MTL_INLINE MTL::FunctionStitchingFunctionNode* MTL::FunctionStitchingGraph::outputNode() const
|
| 249 |
+
{
|
| 250 |
+
return Object::sendMessage<MTL::FunctionStitchingFunctionNode*>(this, _MTL_PRIVATE_SEL(outputNode));
|
| 251 |
+
}
|
| 252 |
+
|
| 253 |
+
_MTL_INLINE void MTL::FunctionStitchingGraph::setOutputNode(const MTL::FunctionStitchingFunctionNode* outputNode)
|
| 254 |
+
{
|
| 255 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOutputNode_), outputNode);
|
| 256 |
+
}
|
| 257 |
+
|
| 258 |
+
// property: attributes
|
| 259 |
+
_MTL_INLINE NS::Array* MTL::FunctionStitchingGraph::attributes() const
|
| 260 |
+
{
|
| 261 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(attributes));
|
| 262 |
+
}
|
| 263 |
+
|
| 264 |
+
_MTL_INLINE void MTL::FunctionStitchingGraph::setAttributes(const NS::Array* attributes)
|
| 265 |
+
{
|
| 266 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAttributes_), attributes);
|
| 267 |
+
}
|
| 268 |
+
|
| 269 |
+
// method: initWithFunctionName:nodes:outputNode:attributes:
|
| 270 |
+
_MTL_INLINE MTL::FunctionStitchingGraph* MTL::FunctionStitchingGraph::init(const NS::String* functionName, const NS::Array* nodes, const MTL::FunctionStitchingFunctionNode* outputNode, const NS::Array* attributes)
|
| 271 |
+
{
|
| 272 |
+
return Object::sendMessage<MTL::FunctionStitchingGraph*>(this, _MTL_PRIVATE_SEL(initWithFunctionName_nodes_outputNode_attributes_), functionName, nodes, outputNode, attributes);
|
| 273 |
+
}
|
| 274 |
+
|
| 275 |
+
// static method: alloc
|
| 276 |
+
_MTL_INLINE MTL::StitchedLibraryDescriptor* MTL::StitchedLibraryDescriptor::alloc()
|
| 277 |
+
{
|
| 278 |
+
return NS::Object::alloc<MTL::StitchedLibraryDescriptor>(_MTL_PRIVATE_CLS(MTLStitchedLibraryDescriptor));
|
| 279 |
+
}
|
| 280 |
+
|
| 281 |
+
// method: init
|
| 282 |
+
_MTL_INLINE MTL::StitchedLibraryDescriptor* MTL::StitchedLibraryDescriptor::init()
|
| 283 |
+
{
|
| 284 |
+
return NS::Object::init<MTL::StitchedLibraryDescriptor>();
|
| 285 |
+
}
|
| 286 |
+
|
| 287 |
+
// property: functionGraphs
|
| 288 |
+
_MTL_INLINE NS::Array* MTL::StitchedLibraryDescriptor::functionGraphs() const
|
| 289 |
+
{
|
| 290 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(functionGraphs));
|
| 291 |
+
}
|
| 292 |
+
|
| 293 |
+
_MTL_INLINE void MTL::StitchedLibraryDescriptor::setFunctionGraphs(const NS::Array* functionGraphs)
|
| 294 |
+
{
|
| 295 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFunctionGraphs_), functionGraphs);
|
| 296 |
+
}
|
| 297 |
+
|
| 298 |
+
// property: functions
|
| 299 |
+
_MTL_INLINE NS::Array* MTL::StitchedLibraryDescriptor::functions() const
|
| 300 |
+
{
|
| 301 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(functions));
|
| 302 |
+
}
|
| 303 |
+
|
| 304 |
+
_MTL_INLINE void MTL::StitchedLibraryDescriptor::setFunctions(const NS::Array* functions)
|
| 305 |
+
{
|
| 306 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFunctions_), functions);
|
| 307 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLHeaderBridge.hpp
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLHeap.hpp
ADDED
|
@@ -0,0 +1,329 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLHeap.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLDevice.hpp"
|
| 30 |
+
#include "MTLHeap.hpp"
|
| 31 |
+
#include "MTLResource.hpp"
|
| 32 |
+
|
| 33 |
+
namespace MTL
|
| 34 |
+
{
|
| 35 |
+
_MTL_ENUM(NS::Integer, HeapType) {
|
| 36 |
+
HeapTypeAutomatic = 0,
|
| 37 |
+
HeapTypePlacement = 1,
|
| 38 |
+
HeapTypeSparse = 2,
|
| 39 |
+
};
|
| 40 |
+
|
| 41 |
+
class HeapDescriptor : public NS::Copying<HeapDescriptor>
|
| 42 |
+
{
|
| 43 |
+
public:
|
| 44 |
+
static class HeapDescriptor* alloc();
|
| 45 |
+
|
| 46 |
+
class HeapDescriptor* init();
|
| 47 |
+
|
| 48 |
+
NS::UInteger size() const;
|
| 49 |
+
void setSize(NS::UInteger size);
|
| 50 |
+
|
| 51 |
+
MTL::StorageMode storageMode() const;
|
| 52 |
+
void setStorageMode(MTL::StorageMode storageMode);
|
| 53 |
+
|
| 54 |
+
MTL::CPUCacheMode cpuCacheMode() const;
|
| 55 |
+
void setCpuCacheMode(MTL::CPUCacheMode cpuCacheMode);
|
| 56 |
+
|
| 57 |
+
MTL::SparsePageSize sparsePageSize() const;
|
| 58 |
+
void setSparsePageSize(MTL::SparsePageSize sparsePageSize);
|
| 59 |
+
|
| 60 |
+
MTL::HazardTrackingMode hazardTrackingMode() const;
|
| 61 |
+
void setHazardTrackingMode(MTL::HazardTrackingMode hazardTrackingMode);
|
| 62 |
+
|
| 63 |
+
MTL::ResourceOptions resourceOptions() const;
|
| 64 |
+
void setResourceOptions(MTL::ResourceOptions resourceOptions);
|
| 65 |
+
|
| 66 |
+
MTL::HeapType type() const;
|
| 67 |
+
void setType(MTL::HeapType type);
|
| 68 |
+
};
|
| 69 |
+
|
| 70 |
+
class Heap : public NS::Referencing<Heap>
|
| 71 |
+
{
|
| 72 |
+
public:
|
| 73 |
+
NS::String* label() const;
|
| 74 |
+
void setLabel(const NS::String* label);
|
| 75 |
+
|
| 76 |
+
class Device* device() const;
|
| 77 |
+
|
| 78 |
+
MTL::StorageMode storageMode() const;
|
| 79 |
+
|
| 80 |
+
MTL::CPUCacheMode cpuCacheMode() const;
|
| 81 |
+
|
| 82 |
+
MTL::HazardTrackingMode hazardTrackingMode() const;
|
| 83 |
+
|
| 84 |
+
MTL::ResourceOptions resourceOptions() const;
|
| 85 |
+
|
| 86 |
+
NS::UInteger size() const;
|
| 87 |
+
|
| 88 |
+
NS::UInteger usedSize() const;
|
| 89 |
+
|
| 90 |
+
NS::UInteger currentAllocatedSize() const;
|
| 91 |
+
|
| 92 |
+
NS::UInteger maxAvailableSize(NS::UInteger alignment);
|
| 93 |
+
|
| 94 |
+
class Buffer* newBuffer(NS::UInteger length, MTL::ResourceOptions options);
|
| 95 |
+
|
| 96 |
+
class Texture* newTexture(const class TextureDescriptor* descriptor);
|
| 97 |
+
|
| 98 |
+
MTL::PurgeableState setPurgeableState(MTL::PurgeableState state);
|
| 99 |
+
|
| 100 |
+
MTL::HeapType type() const;
|
| 101 |
+
|
| 102 |
+
class Buffer* newBuffer(NS::UInteger length, MTL::ResourceOptions options, NS::UInteger offset);
|
| 103 |
+
|
| 104 |
+
class Texture* newTexture(const class TextureDescriptor* descriptor, NS::UInteger offset);
|
| 105 |
+
|
| 106 |
+
class AccelerationStructure* newAccelerationStructure(NS::UInteger size);
|
| 107 |
+
|
| 108 |
+
class AccelerationStructure* newAccelerationStructure(const class AccelerationStructureDescriptor* descriptor);
|
| 109 |
+
|
| 110 |
+
class AccelerationStructure* newAccelerationStructure(NS::UInteger size, NS::UInteger offset);
|
| 111 |
+
|
| 112 |
+
class AccelerationStructure* newAccelerationStructure(const class AccelerationStructureDescriptor* descriptor, NS::UInteger offset);
|
| 113 |
+
};
|
| 114 |
+
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
+
// static method: alloc
|
| 118 |
+
_MTL_INLINE MTL::HeapDescriptor* MTL::HeapDescriptor::alloc()
|
| 119 |
+
{
|
| 120 |
+
return NS::Object::alloc<MTL::HeapDescriptor>(_MTL_PRIVATE_CLS(MTLHeapDescriptor));
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
// method: init
|
| 124 |
+
_MTL_INLINE MTL::HeapDescriptor* MTL::HeapDescriptor::init()
|
| 125 |
+
{
|
| 126 |
+
return NS::Object::init<MTL::HeapDescriptor>();
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
// property: size
|
| 130 |
+
_MTL_INLINE NS::UInteger MTL::HeapDescriptor::size() const
|
| 131 |
+
{
|
| 132 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(size));
|
| 133 |
+
}
|
| 134 |
+
|
| 135 |
+
_MTL_INLINE void MTL::HeapDescriptor::setSize(NS::UInteger size)
|
| 136 |
+
{
|
| 137 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSize_), size);
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
// property: storageMode
|
| 141 |
+
_MTL_INLINE MTL::StorageMode MTL::HeapDescriptor::storageMode() const
|
| 142 |
+
{
|
| 143 |
+
return Object::sendMessage<MTL::StorageMode>(this, _MTL_PRIVATE_SEL(storageMode));
|
| 144 |
+
}
|
| 145 |
+
|
| 146 |
+
_MTL_INLINE void MTL::HeapDescriptor::setStorageMode(MTL::StorageMode storageMode)
|
| 147 |
+
{
|
| 148 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStorageMode_), storageMode);
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
// property: cpuCacheMode
|
| 152 |
+
_MTL_INLINE MTL::CPUCacheMode MTL::HeapDescriptor::cpuCacheMode() const
|
| 153 |
+
{
|
| 154 |
+
return Object::sendMessage<MTL::CPUCacheMode>(this, _MTL_PRIVATE_SEL(cpuCacheMode));
|
| 155 |
+
}
|
| 156 |
+
|
| 157 |
+
_MTL_INLINE void MTL::HeapDescriptor::setCpuCacheMode(MTL::CPUCacheMode cpuCacheMode)
|
| 158 |
+
{
|
| 159 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCpuCacheMode_), cpuCacheMode);
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
// property: sparsePageSize
|
| 163 |
+
_MTL_INLINE MTL::SparsePageSize MTL::HeapDescriptor::sparsePageSize() const
|
| 164 |
+
{
|
| 165 |
+
return Object::sendMessage<MTL::SparsePageSize>(this, _MTL_PRIVATE_SEL(sparsePageSize));
|
| 166 |
+
}
|
| 167 |
+
|
| 168 |
+
_MTL_INLINE void MTL::HeapDescriptor::setSparsePageSize(MTL::SparsePageSize sparsePageSize)
|
| 169 |
+
{
|
| 170 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSparsePageSize_), sparsePageSize);
|
| 171 |
+
}
|
| 172 |
+
|
| 173 |
+
// property: hazardTrackingMode
|
| 174 |
+
_MTL_INLINE MTL::HazardTrackingMode MTL::HeapDescriptor::hazardTrackingMode() const
|
| 175 |
+
{
|
| 176 |
+
return Object::sendMessage<MTL::HazardTrackingMode>(this, _MTL_PRIVATE_SEL(hazardTrackingMode));
|
| 177 |
+
}
|
| 178 |
+
|
| 179 |
+
_MTL_INLINE void MTL::HeapDescriptor::setHazardTrackingMode(MTL::HazardTrackingMode hazardTrackingMode)
|
| 180 |
+
{
|
| 181 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setHazardTrackingMode_), hazardTrackingMode);
|
| 182 |
+
}
|
| 183 |
+
|
| 184 |
+
// property: resourceOptions
|
| 185 |
+
_MTL_INLINE MTL::ResourceOptions MTL::HeapDescriptor::resourceOptions() const
|
| 186 |
+
{
|
| 187 |
+
return Object::sendMessage<MTL::ResourceOptions>(this, _MTL_PRIVATE_SEL(resourceOptions));
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
_MTL_INLINE void MTL::HeapDescriptor::setResourceOptions(MTL::ResourceOptions resourceOptions)
|
| 191 |
+
{
|
| 192 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setResourceOptions_), resourceOptions);
|
| 193 |
+
}
|
| 194 |
+
|
| 195 |
+
// property: type
|
| 196 |
+
_MTL_INLINE MTL::HeapType MTL::HeapDescriptor::type() const
|
| 197 |
+
{
|
| 198 |
+
return Object::sendMessage<MTL::HeapType>(this, _MTL_PRIVATE_SEL(type));
|
| 199 |
+
}
|
| 200 |
+
|
| 201 |
+
_MTL_INLINE void MTL::HeapDescriptor::setType(MTL::HeapType type)
|
| 202 |
+
{
|
| 203 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setType_), type);
|
| 204 |
+
}
|
| 205 |
+
|
| 206 |
+
// property: label
|
| 207 |
+
_MTL_INLINE NS::String* MTL::Heap::label() const
|
| 208 |
+
{
|
| 209 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 210 |
+
}
|
| 211 |
+
|
| 212 |
+
_MTL_INLINE void MTL::Heap::setLabel(const NS::String* label)
|
| 213 |
+
{
|
| 214 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 215 |
+
}
|
| 216 |
+
|
| 217 |
+
// property: device
|
| 218 |
+
_MTL_INLINE MTL::Device* MTL::Heap::device() const
|
| 219 |
+
{
|
| 220 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 221 |
+
}
|
| 222 |
+
|
| 223 |
+
// property: storageMode
|
| 224 |
+
_MTL_INLINE MTL::StorageMode MTL::Heap::storageMode() const
|
| 225 |
+
{
|
| 226 |
+
return Object::sendMessage<MTL::StorageMode>(this, _MTL_PRIVATE_SEL(storageMode));
|
| 227 |
+
}
|
| 228 |
+
|
| 229 |
+
// property: cpuCacheMode
|
| 230 |
+
_MTL_INLINE MTL::CPUCacheMode MTL::Heap::cpuCacheMode() const
|
| 231 |
+
{
|
| 232 |
+
return Object::sendMessage<MTL::CPUCacheMode>(this, _MTL_PRIVATE_SEL(cpuCacheMode));
|
| 233 |
+
}
|
| 234 |
+
|
| 235 |
+
// property: hazardTrackingMode
|
| 236 |
+
_MTL_INLINE MTL::HazardTrackingMode MTL::Heap::hazardTrackingMode() const
|
| 237 |
+
{
|
| 238 |
+
return Object::sendMessage<MTL::HazardTrackingMode>(this, _MTL_PRIVATE_SEL(hazardTrackingMode));
|
| 239 |
+
}
|
| 240 |
+
|
| 241 |
+
// property: resourceOptions
|
| 242 |
+
_MTL_INLINE MTL::ResourceOptions MTL::Heap::resourceOptions() const
|
| 243 |
+
{
|
| 244 |
+
return Object::sendMessage<MTL::ResourceOptions>(this, _MTL_PRIVATE_SEL(resourceOptions));
|
| 245 |
+
}
|
| 246 |
+
|
| 247 |
+
// property: size
|
| 248 |
+
_MTL_INLINE NS::UInteger MTL::Heap::size() const
|
| 249 |
+
{
|
| 250 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(size));
|
| 251 |
+
}
|
| 252 |
+
|
| 253 |
+
// property: usedSize
|
| 254 |
+
_MTL_INLINE NS::UInteger MTL::Heap::usedSize() const
|
| 255 |
+
{
|
| 256 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(usedSize));
|
| 257 |
+
}
|
| 258 |
+
|
| 259 |
+
// property: currentAllocatedSize
|
| 260 |
+
_MTL_INLINE NS::UInteger MTL::Heap::currentAllocatedSize() const
|
| 261 |
+
{
|
| 262 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(currentAllocatedSize));
|
| 263 |
+
}
|
| 264 |
+
|
| 265 |
+
// method: maxAvailableSizeWithAlignment:
|
| 266 |
+
_MTL_INLINE NS::UInteger MTL::Heap::maxAvailableSize(NS::UInteger alignment)
|
| 267 |
+
{
|
| 268 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxAvailableSizeWithAlignment_), alignment);
|
| 269 |
+
}
|
| 270 |
+
|
| 271 |
+
// method: newBufferWithLength:options:
|
| 272 |
+
_MTL_INLINE MTL::Buffer* MTL::Heap::newBuffer(NS::UInteger length, MTL::ResourceOptions options)
|
| 273 |
+
{
|
| 274 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(newBufferWithLength_options_), length, options);
|
| 275 |
+
}
|
| 276 |
+
|
| 277 |
+
// method: newTextureWithDescriptor:
|
| 278 |
+
_MTL_INLINE MTL::Texture* MTL::Heap::newTexture(const MTL::TextureDescriptor* descriptor)
|
| 279 |
+
{
|
| 280 |
+
return Object::sendMessage<MTL::Texture*>(this, _MTL_PRIVATE_SEL(newTextureWithDescriptor_), descriptor);
|
| 281 |
+
}
|
| 282 |
+
|
| 283 |
+
// method: setPurgeableState:
|
| 284 |
+
_MTL_INLINE MTL::PurgeableState MTL::Heap::setPurgeableState(MTL::PurgeableState state)
|
| 285 |
+
{
|
| 286 |
+
return Object::sendMessage<MTL::PurgeableState>(this, _MTL_PRIVATE_SEL(setPurgeableState_), state);
|
| 287 |
+
}
|
| 288 |
+
|
| 289 |
+
// property: type
|
| 290 |
+
_MTL_INLINE MTL::HeapType MTL::Heap::type() const
|
| 291 |
+
{
|
| 292 |
+
return Object::sendMessage<MTL::HeapType>(this, _MTL_PRIVATE_SEL(type));
|
| 293 |
+
}
|
| 294 |
+
|
| 295 |
+
// method: newBufferWithLength:options:offset:
|
| 296 |
+
_MTL_INLINE MTL::Buffer* MTL::Heap::newBuffer(NS::UInteger length, MTL::ResourceOptions options, NS::UInteger offset)
|
| 297 |
+
{
|
| 298 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(newBufferWithLength_options_offset_), length, options, offset);
|
| 299 |
+
}
|
| 300 |
+
|
| 301 |
+
// method: newTextureWithDescriptor:offset:
|
| 302 |
+
_MTL_INLINE MTL::Texture* MTL::Heap::newTexture(const MTL::TextureDescriptor* descriptor, NS::UInteger offset)
|
| 303 |
+
{
|
| 304 |
+
return Object::sendMessage<MTL::Texture*>(this, _MTL_PRIVATE_SEL(newTextureWithDescriptor_offset_), descriptor, offset);
|
| 305 |
+
}
|
| 306 |
+
|
| 307 |
+
// method: newAccelerationStructureWithSize:
|
| 308 |
+
_MTL_INLINE MTL::AccelerationStructure* MTL::Heap::newAccelerationStructure(NS::UInteger size)
|
| 309 |
+
{
|
| 310 |
+
return Object::sendMessage<MTL::AccelerationStructure*>(this, _MTL_PRIVATE_SEL(newAccelerationStructureWithSize_), size);
|
| 311 |
+
}
|
| 312 |
+
|
| 313 |
+
// method: newAccelerationStructureWithDescriptor:
|
| 314 |
+
_MTL_INLINE MTL::AccelerationStructure* MTL::Heap::newAccelerationStructure(const MTL::AccelerationStructureDescriptor* descriptor)
|
| 315 |
+
{
|
| 316 |
+
return Object::sendMessage<MTL::AccelerationStructure*>(this, _MTL_PRIVATE_SEL(newAccelerationStructureWithDescriptor_), descriptor);
|
| 317 |
+
}
|
| 318 |
+
|
| 319 |
+
// method: newAccelerationStructureWithSize:offset:
|
| 320 |
+
_MTL_INLINE MTL::AccelerationStructure* MTL::Heap::newAccelerationStructure(NS::UInteger size, NS::UInteger offset)
|
| 321 |
+
{
|
| 322 |
+
return Object::sendMessage<MTL::AccelerationStructure*>(this, _MTL_PRIVATE_SEL(newAccelerationStructureWithSize_offset_), size, offset);
|
| 323 |
+
}
|
| 324 |
+
|
| 325 |
+
// method: newAccelerationStructureWithDescriptor:offset:
|
| 326 |
+
_MTL_INLINE MTL::AccelerationStructure* MTL::Heap::newAccelerationStructure(const MTL::AccelerationStructureDescriptor* descriptor, NS::UInteger offset)
|
| 327 |
+
{
|
| 328 |
+
return Object::sendMessage<MTL::AccelerationStructure*>(this, _MTL_PRIVATE_SEL(newAccelerationStructureWithDescriptor_offset_), descriptor, offset);
|
| 329 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLIOCommandBuffer.hpp
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLIOCommandBuffer.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLIOCommandBuffer.hpp"
|
| 30 |
+
#include "MTLTypes.hpp"
|
| 31 |
+
|
| 32 |
+
namespace MTL
|
| 33 |
+
{
|
| 34 |
+
_MTL_ENUM(NS::Integer, IOStatus) {
|
| 35 |
+
IOStatusPending = 0,
|
| 36 |
+
IOStatusCancelled = 1,
|
| 37 |
+
IOStatusError = 2,
|
| 38 |
+
IOStatusComplete = 3,
|
| 39 |
+
};
|
| 40 |
+
|
| 41 |
+
using IOCommandBufferHandler = void (^)(class IOCommandBuffer*);
|
| 42 |
+
|
| 43 |
+
using IOCommandBufferHandlerFunction = std::function<void(class IOCommandBuffer*)>;
|
| 44 |
+
|
| 45 |
+
class IOCommandBuffer : public NS::Referencing<IOCommandBuffer>
|
| 46 |
+
{
|
| 47 |
+
public:
|
| 48 |
+
void addCompletedHandler(const MTL::IOCommandBufferHandlerFunction& function);
|
| 49 |
+
|
| 50 |
+
void addCompletedHandler(const MTL::IOCommandBufferHandler block);
|
| 51 |
+
|
| 52 |
+
void loadBytes(const void* pointer, NS::UInteger size, const class IOFileHandle* sourceHandle, NS::UInteger sourceHandleOffset);
|
| 53 |
+
|
| 54 |
+
void loadBuffer(const class Buffer* buffer, NS::UInteger offset, NS::UInteger size, const class IOFileHandle* sourceHandle, NS::UInteger sourceHandleOffset);
|
| 55 |
+
|
| 56 |
+
void loadTexture(const class Texture* texture, NS::UInteger slice, NS::UInteger level, MTL::Size size, NS::UInteger sourceBytesPerRow, NS::UInteger sourceBytesPerImage, MTL::Origin destinationOrigin, const class IOFileHandle* sourceHandle, NS::UInteger sourceHandleOffset);
|
| 57 |
+
|
| 58 |
+
void copyStatusToBuffer(const class Buffer* buffer, NS::UInteger offset);
|
| 59 |
+
|
| 60 |
+
void commit();
|
| 61 |
+
|
| 62 |
+
void waitUntilCompleted();
|
| 63 |
+
|
| 64 |
+
void tryCancel();
|
| 65 |
+
|
| 66 |
+
void addBarrier();
|
| 67 |
+
|
| 68 |
+
void pushDebugGroup(const NS::String* string);
|
| 69 |
+
|
| 70 |
+
void popDebugGroup();
|
| 71 |
+
|
| 72 |
+
void enqueue();
|
| 73 |
+
|
| 74 |
+
void wait(const class SharedEvent* event, uint64_t value);
|
| 75 |
+
|
| 76 |
+
void signalEvent(const class SharedEvent* event, uint64_t value);
|
| 77 |
+
|
| 78 |
+
NS::String* label() const;
|
| 79 |
+
void setLabel(const NS::String* label);
|
| 80 |
+
|
| 81 |
+
MTL::IOStatus status() const;
|
| 82 |
+
|
| 83 |
+
NS::Error* error() const;
|
| 84 |
+
};
|
| 85 |
+
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
_MTL_INLINE void MTL::IOCommandBuffer::addCompletedHandler(const MTL::IOCommandBufferHandlerFunction& function)
|
| 89 |
+
{
|
| 90 |
+
__block IOCommandBufferHandlerFunction blockFunction = function;
|
| 91 |
+
|
| 92 |
+
addCompletedHandler(^(IOCommandBuffer* pCommandBuffer) { blockFunction(pCommandBuffer); });
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
// method: addCompletedHandler:
|
| 96 |
+
_MTL_INLINE void MTL::IOCommandBuffer::addCompletedHandler(const MTL::IOCommandBufferHandler block)
|
| 97 |
+
{
|
| 98 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(addCompletedHandler_), block);
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
+
// method: loadBytes:size:sourceHandle:sourceHandleOffset:
|
| 102 |
+
_MTL_INLINE void MTL::IOCommandBuffer::loadBytes(const void* pointer, NS::UInteger size, const MTL::IOFileHandle* sourceHandle, NS::UInteger sourceHandleOffset)
|
| 103 |
+
{
|
| 104 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(loadBytes_size_sourceHandle_sourceHandleOffset_), pointer, size, sourceHandle, sourceHandleOffset);
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
// method: loadBuffer:offset:size:sourceHandle:sourceHandleOffset:
|
| 108 |
+
_MTL_INLINE void MTL::IOCommandBuffer::loadBuffer(const MTL::Buffer* buffer, NS::UInteger offset, NS::UInteger size, const MTL::IOFileHandle* sourceHandle, NS::UInteger sourceHandleOffset)
|
| 109 |
+
{
|
| 110 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(loadBuffer_offset_size_sourceHandle_sourceHandleOffset_), buffer, offset, size, sourceHandle, sourceHandleOffset);
|
| 111 |
+
}
|
| 112 |
+
|
| 113 |
+
// method: loadTexture:slice:level:size:sourceBytesPerRow:sourceBytesPerImage:destinationOrigin:sourceHandle:sourceHandleOffset:
|
| 114 |
+
_MTL_INLINE void MTL::IOCommandBuffer::loadTexture(const MTL::Texture* texture, NS::UInteger slice, NS::UInteger level, MTL::Size size, NS::UInteger sourceBytesPerRow, NS::UInteger sourceBytesPerImage, MTL::Origin destinationOrigin, const MTL::IOFileHandle* sourceHandle, NS::UInteger sourceHandleOffset)
|
| 115 |
+
{
|
| 116 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(loadTexture_slice_level_size_sourceBytesPerRow_sourceBytesPerImage_destinationOrigin_sourceHandle_sourceHandleOffset_), texture, slice, level, size, sourceBytesPerRow, sourceBytesPerImage, destinationOrigin, sourceHandle, sourceHandleOffset);
|
| 117 |
+
}
|
| 118 |
+
|
| 119 |
+
// method: copyStatusToBuffer:offset:
|
| 120 |
+
_MTL_INLINE void MTL::IOCommandBuffer::copyStatusToBuffer(const MTL::Buffer* buffer, NS::UInteger offset)
|
| 121 |
+
{
|
| 122 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(copyStatusToBuffer_offset_), buffer, offset);
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
// method: commit
|
| 126 |
+
_MTL_INLINE void MTL::IOCommandBuffer::commit()
|
| 127 |
+
{
|
| 128 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(commit));
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
// method: waitUntilCompleted
|
| 132 |
+
_MTL_INLINE void MTL::IOCommandBuffer::waitUntilCompleted()
|
| 133 |
+
{
|
| 134 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(waitUntilCompleted));
|
| 135 |
+
}
|
| 136 |
+
|
| 137 |
+
// method: tryCancel
|
| 138 |
+
_MTL_INLINE void MTL::IOCommandBuffer::tryCancel()
|
| 139 |
+
{
|
| 140 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(tryCancel));
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
// method: addBarrier
|
| 144 |
+
_MTL_INLINE void MTL::IOCommandBuffer::addBarrier()
|
| 145 |
+
{
|
| 146 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(addBarrier));
|
| 147 |
+
}
|
| 148 |
+
|
| 149 |
+
// method: pushDebugGroup:
|
| 150 |
+
_MTL_INLINE void MTL::IOCommandBuffer::pushDebugGroup(const NS::String* string)
|
| 151 |
+
{
|
| 152 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(pushDebugGroup_), string);
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
// method: popDebugGroup
|
| 156 |
+
_MTL_INLINE void MTL::IOCommandBuffer::popDebugGroup()
|
| 157 |
+
{
|
| 158 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(popDebugGroup));
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
// method: enqueue
|
| 162 |
+
_MTL_INLINE void MTL::IOCommandBuffer::enqueue()
|
| 163 |
+
{
|
| 164 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(enqueue));
|
| 165 |
+
}
|
| 166 |
+
|
| 167 |
+
// method: waitForEvent:value:
|
| 168 |
+
_MTL_INLINE void MTL::IOCommandBuffer::wait(const MTL::SharedEvent* event, uint64_t value)
|
| 169 |
+
{
|
| 170 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(waitForEvent_value_), event, value);
|
| 171 |
+
}
|
| 172 |
+
|
| 173 |
+
// method: signalEvent:value:
|
| 174 |
+
_MTL_INLINE void MTL::IOCommandBuffer::signalEvent(const MTL::SharedEvent* event, uint64_t value)
|
| 175 |
+
{
|
| 176 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(signalEvent_value_), event, value);
|
| 177 |
+
}
|
| 178 |
+
|
| 179 |
+
// property: label
|
| 180 |
+
_MTL_INLINE NS::String* MTL::IOCommandBuffer::label() const
|
| 181 |
+
{
|
| 182 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 183 |
+
}
|
| 184 |
+
|
| 185 |
+
_MTL_INLINE void MTL::IOCommandBuffer::setLabel(const NS::String* label)
|
| 186 |
+
{
|
| 187 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
// property: status
|
| 191 |
+
_MTL_INLINE MTL::IOStatus MTL::IOCommandBuffer::status() const
|
| 192 |
+
{
|
| 193 |
+
return Object::sendMessage<MTL::IOStatus>(this, _MTL_PRIVATE_SEL(status));
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
// property: error
|
| 197 |
+
_MTL_INLINE NS::Error* MTL::IOCommandBuffer::error() const
|
| 198 |
+
{
|
| 199 |
+
return Object::sendMessage<NS::Error*>(this, _MTL_PRIVATE_SEL(error));
|
| 200 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLIOCommandQueue.hpp
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLIOCommandQueue.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLIOCommandQueue.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
_MTL_ENUM(NS::Integer, IOPriority) {
|
| 34 |
+
IOPriorityHigh = 0,
|
| 35 |
+
IOPriorityNormal = 1,
|
| 36 |
+
IOPriorityLow = 2,
|
| 37 |
+
};
|
| 38 |
+
|
| 39 |
+
_MTL_ENUM(NS::Integer, IOCommandQueueType) {
|
| 40 |
+
IOCommandQueueTypeConcurrent = 0,
|
| 41 |
+
IOCommandQueueTypeSerial = 1,
|
| 42 |
+
};
|
| 43 |
+
|
| 44 |
+
_MTL_CONST(NS::ErrorDomain, IOErrorDomain);
|
| 45 |
+
|
| 46 |
+
_MTL_ENUM(NS::Integer, IOError) {
|
| 47 |
+
IOErrorURLInvalid = 1,
|
| 48 |
+
IOErrorInternal = 2,
|
| 49 |
+
};
|
| 50 |
+
|
| 51 |
+
class IOCommandQueue : public NS::Referencing<IOCommandQueue>
|
| 52 |
+
{
|
| 53 |
+
public:
|
| 54 |
+
void enqueueBarrier();
|
| 55 |
+
|
| 56 |
+
class IOCommandBuffer* commandBuffer();
|
| 57 |
+
|
| 58 |
+
class IOCommandBuffer* commandBufferWithUnretainedReferences();
|
| 59 |
+
|
| 60 |
+
NS::String* label() const;
|
| 61 |
+
void setLabel(const NS::String* label);
|
| 62 |
+
};
|
| 63 |
+
|
| 64 |
+
class IOScratchBuffer : public NS::Referencing<IOScratchBuffer>
|
| 65 |
+
{
|
| 66 |
+
public:
|
| 67 |
+
class Buffer* buffer() const;
|
| 68 |
+
};
|
| 69 |
+
|
| 70 |
+
class IOScratchBufferAllocator : public NS::Referencing<IOScratchBufferAllocator>
|
| 71 |
+
{
|
| 72 |
+
public:
|
| 73 |
+
class IOScratchBuffer* newScratchBuffer(NS::UInteger minimumSize);
|
| 74 |
+
};
|
| 75 |
+
|
| 76 |
+
class IOCommandQueueDescriptor : public NS::Copying<IOCommandQueueDescriptor>
|
| 77 |
+
{
|
| 78 |
+
public:
|
| 79 |
+
static class IOCommandQueueDescriptor* alloc();
|
| 80 |
+
|
| 81 |
+
class IOCommandQueueDescriptor* init();
|
| 82 |
+
|
| 83 |
+
NS::UInteger maxCommandBufferCount() const;
|
| 84 |
+
void setMaxCommandBufferCount(NS::UInteger maxCommandBufferCount);
|
| 85 |
+
|
| 86 |
+
MTL::IOPriority priority() const;
|
| 87 |
+
void setPriority(MTL::IOPriority priority);
|
| 88 |
+
|
| 89 |
+
MTL::IOCommandQueueType type() const;
|
| 90 |
+
void setType(MTL::IOCommandQueueType type);
|
| 91 |
+
|
| 92 |
+
NS::UInteger maxCommandsInFlight() const;
|
| 93 |
+
void setMaxCommandsInFlight(NS::UInteger maxCommandsInFlight);
|
| 94 |
+
|
| 95 |
+
class IOScratchBufferAllocator* scratchBufferAllocator() const;
|
| 96 |
+
void setScratchBufferAllocator(const class IOScratchBufferAllocator* scratchBufferAllocator);
|
| 97 |
+
};
|
| 98 |
+
|
| 99 |
+
class IOFileHandle : public NS::Referencing<IOFileHandle>
|
| 100 |
+
{
|
| 101 |
+
public:
|
| 102 |
+
NS::String* label() const;
|
| 103 |
+
void setLabel(const NS::String* label);
|
| 104 |
+
};
|
| 105 |
+
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
// method: enqueueBarrier
|
| 109 |
+
_MTL_INLINE void MTL::IOCommandQueue::enqueueBarrier()
|
| 110 |
+
{
|
| 111 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(enqueueBarrier));
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
// method: commandBuffer
|
| 115 |
+
_MTL_INLINE MTL::IOCommandBuffer* MTL::IOCommandQueue::commandBuffer()
|
| 116 |
+
{
|
| 117 |
+
return Object::sendMessage<MTL::IOCommandBuffer*>(this, _MTL_PRIVATE_SEL(commandBuffer));
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
// method: commandBufferWithUnretainedReferences
|
| 121 |
+
_MTL_INLINE MTL::IOCommandBuffer* MTL::IOCommandQueue::commandBufferWithUnretainedReferences()
|
| 122 |
+
{
|
| 123 |
+
return Object::sendMessage<MTL::IOCommandBuffer*>(this, _MTL_PRIVATE_SEL(commandBufferWithUnretainedReferences));
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
// property: label
|
| 127 |
+
_MTL_INLINE NS::String* MTL::IOCommandQueue::label() const
|
| 128 |
+
{
|
| 129 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 130 |
+
}
|
| 131 |
+
|
| 132 |
+
_MTL_INLINE void MTL::IOCommandQueue::setLabel(const NS::String* label)
|
| 133 |
+
{
|
| 134 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 135 |
+
}
|
| 136 |
+
|
| 137 |
+
// property: buffer
|
| 138 |
+
_MTL_INLINE MTL::Buffer* MTL::IOScratchBuffer::buffer() const
|
| 139 |
+
{
|
| 140 |
+
return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(buffer));
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
// method: newScratchBufferWithMinimumSize:
|
| 144 |
+
_MTL_INLINE MTL::IOScratchBuffer* MTL::IOScratchBufferAllocator::newScratchBuffer(NS::UInteger minimumSize)
|
| 145 |
+
{
|
| 146 |
+
return Object::sendMessage<MTL::IOScratchBuffer*>(this, _MTL_PRIVATE_SEL(newScratchBufferWithMinimumSize_), minimumSize);
|
| 147 |
+
}
|
| 148 |
+
|
| 149 |
+
// static method: alloc
|
| 150 |
+
_MTL_INLINE MTL::IOCommandQueueDescriptor* MTL::IOCommandQueueDescriptor::alloc()
|
| 151 |
+
{
|
| 152 |
+
return NS::Object::alloc<MTL::IOCommandQueueDescriptor>(_MTL_PRIVATE_CLS(MTLIOCommandQueueDescriptor));
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
// method: init
|
| 156 |
+
_MTL_INLINE MTL::IOCommandQueueDescriptor* MTL::IOCommandQueueDescriptor::init()
|
| 157 |
+
{
|
| 158 |
+
return NS::Object::init<MTL::IOCommandQueueDescriptor>();
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
// property: maxCommandBufferCount
|
| 162 |
+
_MTL_INLINE NS::UInteger MTL::IOCommandQueueDescriptor::maxCommandBufferCount() const
|
| 163 |
+
{
|
| 164 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxCommandBufferCount));
|
| 165 |
+
}
|
| 166 |
+
|
| 167 |
+
_MTL_INLINE void MTL::IOCommandQueueDescriptor::setMaxCommandBufferCount(NS::UInteger maxCommandBufferCount)
|
| 168 |
+
{
|
| 169 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxCommandBufferCount_), maxCommandBufferCount);
|
| 170 |
+
}
|
| 171 |
+
|
| 172 |
+
// property: priority
|
| 173 |
+
_MTL_INLINE MTL::IOPriority MTL::IOCommandQueueDescriptor::priority() const
|
| 174 |
+
{
|
| 175 |
+
return Object::sendMessage<MTL::IOPriority>(this, _MTL_PRIVATE_SEL(priority));
|
| 176 |
+
}
|
| 177 |
+
|
| 178 |
+
_MTL_INLINE void MTL::IOCommandQueueDescriptor::setPriority(MTL::IOPriority priority)
|
| 179 |
+
{
|
| 180 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPriority_), priority);
|
| 181 |
+
}
|
| 182 |
+
|
| 183 |
+
// property: type
|
| 184 |
+
_MTL_INLINE MTL::IOCommandQueueType MTL::IOCommandQueueDescriptor::type() const
|
| 185 |
+
{
|
| 186 |
+
return Object::sendMessage<MTL::IOCommandQueueType>(this, _MTL_PRIVATE_SEL(type));
|
| 187 |
+
}
|
| 188 |
+
|
| 189 |
+
_MTL_INLINE void MTL::IOCommandQueueDescriptor::setType(MTL::IOCommandQueueType type)
|
| 190 |
+
{
|
| 191 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setType_), type);
|
| 192 |
+
}
|
| 193 |
+
|
| 194 |
+
// property: maxCommandsInFlight
|
| 195 |
+
_MTL_INLINE NS::UInteger MTL::IOCommandQueueDescriptor::maxCommandsInFlight() const
|
| 196 |
+
{
|
| 197 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxCommandsInFlight));
|
| 198 |
+
}
|
| 199 |
+
|
| 200 |
+
_MTL_INLINE void MTL::IOCommandQueueDescriptor::setMaxCommandsInFlight(NS::UInteger maxCommandsInFlight)
|
| 201 |
+
{
|
| 202 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxCommandsInFlight_), maxCommandsInFlight);
|
| 203 |
+
}
|
| 204 |
+
|
| 205 |
+
// property: scratchBufferAllocator
|
| 206 |
+
_MTL_INLINE MTL::IOScratchBufferAllocator* MTL::IOCommandQueueDescriptor::scratchBufferAllocator() const
|
| 207 |
+
{
|
| 208 |
+
return Object::sendMessage<MTL::IOScratchBufferAllocator*>(this, _MTL_PRIVATE_SEL(scratchBufferAllocator));
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
_MTL_INLINE void MTL::IOCommandQueueDescriptor::setScratchBufferAllocator(const MTL::IOScratchBufferAllocator* scratchBufferAllocator)
|
| 212 |
+
{
|
| 213 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setScratchBufferAllocator_), scratchBufferAllocator);
|
| 214 |
+
}
|
| 215 |
+
|
| 216 |
+
// property: label
|
| 217 |
+
_MTL_INLINE NS::String* MTL::IOFileHandle::label() const
|
| 218 |
+
{
|
| 219 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 220 |
+
}
|
| 221 |
+
|
| 222 |
+
_MTL_INLINE void MTL::IOFileHandle::setLabel(const NS::String* label)
|
| 223 |
+
{
|
| 224 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 225 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLIOCompressor.hpp
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLIOCompressor.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
#include "MTLDevice.hpp"
|
| 27 |
+
|
| 28 |
+
#include <Foundation/Foundation.hpp>
|
| 29 |
+
|
| 30 |
+
namespace MTL
|
| 31 |
+
{
|
| 32 |
+
using IOCompresionContext=void*;
|
| 33 |
+
|
| 34 |
+
_MTL_ENUM(NS::Integer, IOCompressionStatus) {
|
| 35 |
+
IOCompressionStatusComplete = 0,
|
| 36 |
+
IOCompressionStatusError = 1,
|
| 37 |
+
};
|
| 38 |
+
|
| 39 |
+
size_t IOCompressionContextDefaultChunkSize();
|
| 40 |
+
|
| 41 |
+
IOCompresionContext IOCreateCompressionContext(const char* path, IOCompressionMethod type, size_t chunkSize);
|
| 42 |
+
|
| 43 |
+
void IOCompressionContextAppendData(IOCompresionContext context, const void* data, size_t size);
|
| 44 |
+
|
| 45 |
+
IOCompressionStatus IOFlushAndDestroyCompressionContext(IOCompresionContext context);
|
| 46 |
+
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
#if defined(MTL_PRIVATE_IMPLEMENTATION)
|
| 50 |
+
|
| 51 |
+
namespace MTL::Private {
|
| 52 |
+
|
| 53 |
+
MTL_DEF_FUNC(MTLIOCompressionContextDefaultChunkSize, size_t (*)(void));
|
| 54 |
+
|
| 55 |
+
MTL_DEF_FUNC( MTLIOCreateCompressionContext, void* (*)(const char*, MTL::IOCompressionMethod, size_t) );
|
| 56 |
+
|
| 57 |
+
MTL_DEF_FUNC( MTLIOCompressionContextAppendData, void (*)(void*, const void*, size_t) );
|
| 58 |
+
|
| 59 |
+
MTL_DEF_FUNC( MTLIOFlushAndDestroyCompressionContext, MTL::IOCompressionStatus (*)(void*) );
|
| 60 |
+
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
_NS_EXPORT size_t MTL::IOCompressionContextDefaultChunkSize()
|
| 64 |
+
{
|
| 65 |
+
return MTL::Private::MTLIOCompressionContextDefaultChunkSize();
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
_NS_EXPORT void* MTL::IOCreateCompressionContext(const char* path, IOCompressionMethod type, size_t chunkSize)
|
| 69 |
+
{
|
| 70 |
+
if ( MTL::Private::MTLIOCreateCompressionContext )
|
| 71 |
+
{
|
| 72 |
+
return MTL::Private::MTLIOCreateCompressionContext( path, type, chunkSize );
|
| 73 |
+
}
|
| 74 |
+
return nullptr;
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
_NS_EXPORT void MTL::IOCompressionContextAppendData(void* context, const void* data, size_t size)
|
| 78 |
+
{
|
| 79 |
+
if ( MTL::Private::MTLIOCompressionContextAppendData )
|
| 80 |
+
{
|
| 81 |
+
MTL::Private::MTLIOCompressionContextAppendData( context, data, size );
|
| 82 |
+
}
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
_NS_EXPORT MTL::IOCompressionStatus MTL::IOFlushAndDestroyCompressionContext(void* context)
|
| 86 |
+
{
|
| 87 |
+
if ( MTL::Private::MTLIOFlushAndDestroyCompressionContext )
|
| 88 |
+
{
|
| 89 |
+
return MTL::Private::MTLIOFlushAndDestroyCompressionContext( context );
|
| 90 |
+
}
|
| 91 |
+
return MTL::IOCompressionStatusError;
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
#endif
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLIndirectCommandBuffer.hpp
ADDED
|
@@ -0,0 +1,240 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLIndirectCommandBuffer.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLIndirectCommandBuffer.hpp"
|
| 30 |
+
#include "MTLResource.hpp"
|
| 31 |
+
#include "MTLTypes.hpp"
|
| 32 |
+
|
| 33 |
+
namespace MTL
|
| 34 |
+
{
|
| 35 |
+
_MTL_OPTIONS(NS::UInteger, IndirectCommandType) {
|
| 36 |
+
IndirectCommandTypeDraw = 1,
|
| 37 |
+
IndirectCommandTypeDrawIndexed = 2,
|
| 38 |
+
IndirectCommandTypeDrawPatches = 4,
|
| 39 |
+
IndirectCommandTypeDrawIndexedPatches = 8,
|
| 40 |
+
IndirectCommandTypeConcurrentDispatch = 32,
|
| 41 |
+
IndirectCommandTypeConcurrentDispatchThreads = 64,
|
| 42 |
+
};
|
| 43 |
+
|
| 44 |
+
struct IndirectCommandBufferExecutionRange
|
| 45 |
+
{
|
| 46 |
+
uint32_t location;
|
| 47 |
+
uint32_t length;
|
| 48 |
+
} _MTL_PACKED;
|
| 49 |
+
|
| 50 |
+
class IndirectCommandBufferDescriptor : public NS::Copying<IndirectCommandBufferDescriptor>
|
| 51 |
+
{
|
| 52 |
+
public:
|
| 53 |
+
static class IndirectCommandBufferDescriptor* alloc();
|
| 54 |
+
|
| 55 |
+
class IndirectCommandBufferDescriptor* init();
|
| 56 |
+
|
| 57 |
+
MTL::IndirectCommandType commandTypes() const;
|
| 58 |
+
void setCommandTypes(MTL::IndirectCommandType commandTypes);
|
| 59 |
+
|
| 60 |
+
bool inheritPipelineState() const;
|
| 61 |
+
void setInheritPipelineState(bool inheritPipelineState);
|
| 62 |
+
|
| 63 |
+
bool inheritBuffers() const;
|
| 64 |
+
void setInheritBuffers(bool inheritBuffers);
|
| 65 |
+
|
| 66 |
+
NS::UInteger maxVertexBufferBindCount() const;
|
| 67 |
+
void setMaxVertexBufferBindCount(NS::UInteger maxVertexBufferBindCount);
|
| 68 |
+
|
| 69 |
+
NS::UInteger maxFragmentBufferBindCount() const;
|
| 70 |
+
void setMaxFragmentBufferBindCount(NS::UInteger maxFragmentBufferBindCount);
|
| 71 |
+
|
| 72 |
+
NS::UInteger maxKernelBufferBindCount() const;
|
| 73 |
+
void setMaxKernelBufferBindCount(NS::UInteger maxKernelBufferBindCount);
|
| 74 |
+
|
| 75 |
+
NS::UInteger maxKernelThreadgroupMemoryBindCount() const;
|
| 76 |
+
void setMaxKernelThreadgroupMemoryBindCount(NS::UInteger maxKernelThreadgroupMemoryBindCount);
|
| 77 |
+
|
| 78 |
+
bool supportRayTracing() const;
|
| 79 |
+
void setSupportRayTracing(bool supportRayTracing);
|
| 80 |
+
|
| 81 |
+
bool supportDynamicAttributeStride() const;
|
| 82 |
+
void setSupportDynamicAttributeStride(bool supportDynamicAttributeStride);
|
| 83 |
+
};
|
| 84 |
+
|
| 85 |
+
class IndirectCommandBuffer : public NS::Referencing<IndirectCommandBuffer, Resource>
|
| 86 |
+
{
|
| 87 |
+
public:
|
| 88 |
+
NS::UInteger size() const;
|
| 89 |
+
|
| 90 |
+
MTL::ResourceID gpuResourceID() const;
|
| 91 |
+
|
| 92 |
+
void reset(NS::Range range);
|
| 93 |
+
|
| 94 |
+
class IndirectRenderCommand* indirectRenderCommand(NS::UInteger commandIndex);
|
| 95 |
+
|
| 96 |
+
class IndirectComputeCommand* indirectComputeCommand(NS::UInteger commandIndex);
|
| 97 |
+
};
|
| 98 |
+
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
+
// static method: alloc
|
| 102 |
+
_MTL_INLINE MTL::IndirectCommandBufferDescriptor* MTL::IndirectCommandBufferDescriptor::alloc()
|
| 103 |
+
{
|
| 104 |
+
return NS::Object::alloc<MTL::IndirectCommandBufferDescriptor>(_MTL_PRIVATE_CLS(MTLIndirectCommandBufferDescriptor));
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
// method: init
|
| 108 |
+
_MTL_INLINE MTL::IndirectCommandBufferDescriptor* MTL::IndirectCommandBufferDescriptor::init()
|
| 109 |
+
{
|
| 110 |
+
return NS::Object::init<MTL::IndirectCommandBufferDescriptor>();
|
| 111 |
+
}
|
| 112 |
+
|
| 113 |
+
// property: commandTypes
|
| 114 |
+
_MTL_INLINE MTL::IndirectCommandType MTL::IndirectCommandBufferDescriptor::commandTypes() const
|
| 115 |
+
{
|
| 116 |
+
return Object::sendMessage<MTL::IndirectCommandType>(this, _MTL_PRIVATE_SEL(commandTypes));
|
| 117 |
+
}
|
| 118 |
+
|
| 119 |
+
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setCommandTypes(MTL::IndirectCommandType commandTypes)
|
| 120 |
+
{
|
| 121 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCommandTypes_), commandTypes);
|
| 122 |
+
}
|
| 123 |
+
|
| 124 |
+
// property: inheritPipelineState
|
| 125 |
+
_MTL_INLINE bool MTL::IndirectCommandBufferDescriptor::inheritPipelineState() const
|
| 126 |
+
{
|
| 127 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(inheritPipelineState));
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setInheritPipelineState(bool inheritPipelineState)
|
| 131 |
+
{
|
| 132 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInheritPipelineState_), inheritPipelineState);
|
| 133 |
+
}
|
| 134 |
+
|
| 135 |
+
// property: inheritBuffers
|
| 136 |
+
_MTL_INLINE bool MTL::IndirectCommandBufferDescriptor::inheritBuffers() const
|
| 137 |
+
{
|
| 138 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(inheritBuffers));
|
| 139 |
+
}
|
| 140 |
+
|
| 141 |
+
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setInheritBuffers(bool inheritBuffers)
|
| 142 |
+
{
|
| 143 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInheritBuffers_), inheritBuffers);
|
| 144 |
+
}
|
| 145 |
+
|
| 146 |
+
// property: maxVertexBufferBindCount
|
| 147 |
+
_MTL_INLINE NS::UInteger MTL::IndirectCommandBufferDescriptor::maxVertexBufferBindCount() const
|
| 148 |
+
{
|
| 149 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxVertexBufferBindCount));
|
| 150 |
+
}
|
| 151 |
+
|
| 152 |
+
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setMaxVertexBufferBindCount(NS::UInteger maxVertexBufferBindCount)
|
| 153 |
+
{
|
| 154 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxVertexBufferBindCount_), maxVertexBufferBindCount);
|
| 155 |
+
}
|
| 156 |
+
|
| 157 |
+
// property: maxFragmentBufferBindCount
|
| 158 |
+
_MTL_INLINE NS::UInteger MTL::IndirectCommandBufferDescriptor::maxFragmentBufferBindCount() const
|
| 159 |
+
{
|
| 160 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxFragmentBufferBindCount));
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
+
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setMaxFragmentBufferBindCount(NS::UInteger maxFragmentBufferBindCount)
|
| 164 |
+
{
|
| 165 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxFragmentBufferBindCount_), maxFragmentBufferBindCount);
|
| 166 |
+
}
|
| 167 |
+
|
| 168 |
+
// property: maxKernelBufferBindCount
|
| 169 |
+
_MTL_INLINE NS::UInteger MTL::IndirectCommandBufferDescriptor::maxKernelBufferBindCount() const
|
| 170 |
+
{
|
| 171 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxKernelBufferBindCount));
|
| 172 |
+
}
|
| 173 |
+
|
| 174 |
+
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setMaxKernelBufferBindCount(NS::UInteger maxKernelBufferBindCount)
|
| 175 |
+
{
|
| 176 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxKernelBufferBindCount_), maxKernelBufferBindCount);
|
| 177 |
+
}
|
| 178 |
+
|
| 179 |
+
// property: maxKernelThreadgroupMemoryBindCount
|
| 180 |
+
_MTL_INLINE NS::UInteger MTL::IndirectCommandBufferDescriptor::maxKernelThreadgroupMemoryBindCount() const
|
| 181 |
+
{
|
| 182 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxKernelThreadgroupMemoryBindCount));
|
| 183 |
+
}
|
| 184 |
+
|
| 185 |
+
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setMaxKernelThreadgroupMemoryBindCount(NS::UInteger maxKernelThreadgroupMemoryBindCount)
|
| 186 |
+
{
|
| 187 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxKernelThreadgroupMemoryBindCount_), maxKernelThreadgroupMemoryBindCount);
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
// property: supportRayTracing
|
| 191 |
+
_MTL_INLINE bool MTL::IndirectCommandBufferDescriptor::supportRayTracing() const
|
| 192 |
+
{
|
| 193 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportRayTracing));
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setSupportRayTracing(bool supportRayTracing)
|
| 197 |
+
{
|
| 198 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportRayTracing_), supportRayTracing);
|
| 199 |
+
}
|
| 200 |
+
|
| 201 |
+
// property: supportDynamicAttributeStride
|
| 202 |
+
_MTL_INLINE bool MTL::IndirectCommandBufferDescriptor::supportDynamicAttributeStride() const
|
| 203 |
+
{
|
| 204 |
+
return Object::sendMessageSafe<bool>(this, _MTL_PRIVATE_SEL(supportDynamicAttributeStride));
|
| 205 |
+
}
|
| 206 |
+
|
| 207 |
+
_MTL_INLINE void MTL::IndirectCommandBufferDescriptor::setSupportDynamicAttributeStride(bool supportDynamicAttributeStride)
|
| 208 |
+
{
|
| 209 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSupportDynamicAttributeStride_), supportDynamicAttributeStride);
|
| 210 |
+
}
|
| 211 |
+
|
| 212 |
+
// property: size
|
| 213 |
+
_MTL_INLINE NS::UInteger MTL::IndirectCommandBuffer::size() const
|
| 214 |
+
{
|
| 215 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(size));
|
| 216 |
+
}
|
| 217 |
+
|
| 218 |
+
// property: gpuResourceID
|
| 219 |
+
_MTL_INLINE MTL::ResourceID MTL::IndirectCommandBuffer::gpuResourceID() const
|
| 220 |
+
{
|
| 221 |
+
return Object::sendMessage<MTL::ResourceID>(this, _MTL_PRIVATE_SEL(gpuResourceID));
|
| 222 |
+
}
|
| 223 |
+
|
| 224 |
+
// method: resetWithRange:
|
| 225 |
+
_MTL_INLINE void MTL::IndirectCommandBuffer::reset(NS::Range range)
|
| 226 |
+
{
|
| 227 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(resetWithRange_), range);
|
| 228 |
+
}
|
| 229 |
+
|
| 230 |
+
// method: indirectRenderCommandAtIndex:
|
| 231 |
+
_MTL_INLINE MTL::IndirectRenderCommand* MTL::IndirectCommandBuffer::indirectRenderCommand(NS::UInteger commandIndex)
|
| 232 |
+
{
|
| 233 |
+
return Object::sendMessage<MTL::IndirectRenderCommand*>(this, _MTL_PRIVATE_SEL(indirectRenderCommandAtIndex_), commandIndex);
|
| 234 |
+
}
|
| 235 |
+
|
| 236 |
+
// method: indirectComputeCommandAtIndex:
|
| 237 |
+
_MTL_INLINE MTL::IndirectComputeCommand* MTL::IndirectCommandBuffer::indirectComputeCommand(NS::UInteger commandIndex)
|
| 238 |
+
{
|
| 239 |
+
return Object::sendMessage<MTL::IndirectComputeCommand*>(this, _MTL_PRIVATE_SEL(indirectComputeCommandAtIndex_), commandIndex);
|
| 240 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLIndirectCommandEncoder.hpp
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLIndirectCommandEncoder.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLRenderCommandEncoder.hpp"
|
| 30 |
+
#include "MTLStageInputOutputDescriptor.hpp"
|
| 31 |
+
#include "MTLTypes.hpp"
|
| 32 |
+
|
| 33 |
+
namespace MTL
|
| 34 |
+
{
|
| 35 |
+
class IndirectRenderCommand : public NS::Referencing<IndirectRenderCommand>
|
| 36 |
+
{
|
| 37 |
+
public:
|
| 38 |
+
void setRenderPipelineState(const class RenderPipelineState* pipelineState);
|
| 39 |
+
|
| 40 |
+
void setVertexBuffer(const class Buffer* buffer, NS::UInteger offset, NS::UInteger index);
|
| 41 |
+
|
| 42 |
+
void setFragmentBuffer(const class Buffer* buffer, NS::UInteger offset, NS::UInteger index);
|
| 43 |
+
|
| 44 |
+
void setVertexBuffer(const class Buffer* buffer, NS::UInteger offset, NS::UInteger stride, NS::UInteger index);
|
| 45 |
+
|
| 46 |
+
void drawPatches(NS::UInteger numberOfPatchControlPoints, NS::UInteger patchStart, NS::UInteger patchCount, const class Buffer* patchIndexBuffer, NS::UInteger patchIndexBufferOffset, NS::UInteger instanceCount, NS::UInteger baseInstance, const class Buffer* buffer, NS::UInteger offset, NS::UInteger instanceStride);
|
| 47 |
+
|
| 48 |
+
void drawIndexedPatches(NS::UInteger numberOfPatchControlPoints, NS::UInteger patchStart, NS::UInteger patchCount, const class Buffer* patchIndexBuffer, NS::UInteger patchIndexBufferOffset, const class Buffer* controlPointIndexBuffer, NS::UInteger controlPointIndexBufferOffset, NS::UInteger instanceCount, NS::UInteger baseInstance, const class Buffer* buffer, NS::UInteger offset, NS::UInteger instanceStride);
|
| 49 |
+
|
| 50 |
+
void drawPrimitives(MTL::PrimitiveType primitiveType, NS::UInteger vertexStart, NS::UInteger vertexCount, NS::UInteger instanceCount, NS::UInteger baseInstance);
|
| 51 |
+
|
| 52 |
+
void drawIndexedPrimitives(MTL::PrimitiveType primitiveType, NS::UInteger indexCount, MTL::IndexType indexType, const class Buffer* indexBuffer, NS::UInteger indexBufferOffset, NS::UInteger instanceCount, NS::Integer baseVertex, NS::UInteger baseInstance);
|
| 53 |
+
|
| 54 |
+
void reset();
|
| 55 |
+
};
|
| 56 |
+
|
| 57 |
+
class IndirectComputeCommand : public NS::Referencing<IndirectComputeCommand>
|
| 58 |
+
{
|
| 59 |
+
public:
|
| 60 |
+
void setComputePipelineState(const class ComputePipelineState* pipelineState);
|
| 61 |
+
|
| 62 |
+
void setKernelBuffer(const class Buffer* buffer, NS::UInteger offset, NS::UInteger index);
|
| 63 |
+
|
| 64 |
+
void setKernelBuffer(const class Buffer* buffer, NS::UInteger offset, NS::UInteger stride, NS::UInteger index);
|
| 65 |
+
|
| 66 |
+
void concurrentDispatchThreadgroups(MTL::Size threadgroupsPerGrid, MTL::Size threadsPerThreadgroup);
|
| 67 |
+
|
| 68 |
+
void concurrentDispatchThreads(MTL::Size threadsPerGrid, MTL::Size threadsPerThreadgroup);
|
| 69 |
+
|
| 70 |
+
void setBarrier();
|
| 71 |
+
|
| 72 |
+
void clearBarrier();
|
| 73 |
+
|
| 74 |
+
void setImageblockWidth(NS::UInteger width, NS::UInteger height);
|
| 75 |
+
|
| 76 |
+
void reset();
|
| 77 |
+
|
| 78 |
+
void setThreadgroupMemoryLength(NS::UInteger length, NS::UInteger index);
|
| 79 |
+
|
| 80 |
+
void setStageInRegion(MTL::Region region);
|
| 81 |
+
};
|
| 82 |
+
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
// method: setRenderPipelineState:
|
| 86 |
+
_MTL_INLINE void MTL::IndirectRenderCommand::setRenderPipelineState(const MTL::RenderPipelineState* pipelineState)
|
| 87 |
+
{
|
| 88 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRenderPipelineState_), pipelineState);
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
// method: setVertexBuffer:offset:atIndex:
|
| 92 |
+
_MTL_INLINE void MTL::IndirectRenderCommand::setVertexBuffer(const MTL::Buffer* buffer, NS::UInteger offset, NS::UInteger index)
|
| 93 |
+
{
|
| 94 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBuffer_offset_atIndex_), buffer, offset, index);
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
// method: setFragmentBuffer:offset:atIndex:
|
| 98 |
+
_MTL_INLINE void MTL::IndirectRenderCommand::setFragmentBuffer(const MTL::Buffer* buffer, NS::UInteger offset, NS::UInteger index)
|
| 99 |
+
{
|
| 100 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFragmentBuffer_offset_atIndex_), buffer, offset, index);
|
| 101 |
+
}
|
| 102 |
+
|
| 103 |
+
// method: setVertexBuffer:offset:attributeStride:atIndex:
|
| 104 |
+
_MTL_INLINE void MTL::IndirectRenderCommand::setVertexBuffer(const MTL::Buffer* buffer, NS::UInteger offset, NS::UInteger stride, NS::UInteger index)
|
| 105 |
+
{
|
| 106 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBuffer_offset_attributeStride_atIndex_), buffer, offset, stride, index);
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
// method: drawPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:instanceCount:baseInstance:tessellationFactorBuffer:tessellationFactorBufferOffset:tessellationFactorBufferInstanceStride:
|
| 110 |
+
_MTL_INLINE void MTL::IndirectRenderCommand::drawPatches(NS::UInteger numberOfPatchControlPoints, NS::UInteger patchStart, NS::UInteger patchCount, const MTL::Buffer* patchIndexBuffer, NS::UInteger patchIndexBufferOffset, NS::UInteger instanceCount, NS::UInteger baseInstance, const MTL::Buffer* buffer, NS::UInteger offset, NS::UInteger instanceStride)
|
| 111 |
+
{
|
| 112 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(drawPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_instanceCount_baseInstance_tessellationFactorBuffer_tessellationFactorBufferOffset_tessellationFactorBufferInstanceStride_), numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, instanceCount, baseInstance, buffer, offset, instanceStride);
|
| 113 |
+
}
|
| 114 |
+
|
| 115 |
+
// method: drawIndexedPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:instanceCount:baseInstance:tessellationFactorBuffer:tessellationFactorBufferOffset:tessellationFactorBufferInstanceStride:
|
| 116 |
+
_MTL_INLINE void MTL::IndirectRenderCommand::drawIndexedPatches(NS::UInteger numberOfPatchControlPoints, NS::UInteger patchStart, NS::UInteger patchCount, const MTL::Buffer* patchIndexBuffer, NS::UInteger patchIndexBufferOffset, const MTL::Buffer* controlPointIndexBuffer, NS::UInteger controlPointIndexBufferOffset, NS::UInteger instanceCount, NS::UInteger baseInstance, const MTL::Buffer* buffer, NS::UInteger offset, NS::UInteger instanceStride)
|
| 117 |
+
{
|
| 118 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(drawIndexedPatches_patchStart_patchCount_patchIndexBuffer_patchIndexBufferOffset_controlPointIndexBuffer_controlPointIndexBufferOffset_instanceCount_baseInstance_tessellationFactorBuffer_tessellationFactorBufferOffset_tessellationFactorBufferInstanceStride_), numberOfPatchControlPoints, patchStart, patchCount, patchIndexBuffer, patchIndexBufferOffset, controlPointIndexBuffer, controlPointIndexBufferOffset, instanceCount, baseInstance, buffer, offset, instanceStride);
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
// method: drawPrimitives:vertexStart:vertexCount:instanceCount:baseInstance:
|
| 122 |
+
_MTL_INLINE void MTL::IndirectRenderCommand::drawPrimitives(MTL::PrimitiveType primitiveType, NS::UInteger vertexStart, NS::UInteger vertexCount, NS::UInteger instanceCount, NS::UInteger baseInstance)
|
| 123 |
+
{
|
| 124 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(drawPrimitives_vertexStart_vertexCount_instanceCount_baseInstance_), primitiveType, vertexStart, vertexCount, instanceCount, baseInstance);
|
| 125 |
+
}
|
| 126 |
+
|
| 127 |
+
// method: drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount:baseVertex:baseInstance:
|
| 128 |
+
_MTL_INLINE void MTL::IndirectRenderCommand::drawIndexedPrimitives(MTL::PrimitiveType primitiveType, NS::UInteger indexCount, MTL::IndexType indexType, const MTL::Buffer* indexBuffer, NS::UInteger indexBufferOffset, NS::UInteger instanceCount, NS::Integer baseVertex, NS::UInteger baseInstance)
|
| 129 |
+
{
|
| 130 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(drawIndexedPrimitives_indexCount_indexType_indexBuffer_indexBufferOffset_instanceCount_baseVertex_baseInstance_), primitiveType, indexCount, indexType, indexBuffer, indexBufferOffset, instanceCount, baseVertex, baseInstance);
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
// method: reset
|
| 134 |
+
_MTL_INLINE void MTL::IndirectRenderCommand::reset()
|
| 135 |
+
{
|
| 136 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(reset));
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
// method: setComputePipelineState:
|
| 140 |
+
_MTL_INLINE void MTL::IndirectComputeCommand::setComputePipelineState(const MTL::ComputePipelineState* pipelineState)
|
| 141 |
+
{
|
| 142 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setComputePipelineState_), pipelineState);
|
| 143 |
+
}
|
| 144 |
+
|
| 145 |
+
// method: setKernelBuffer:offset:atIndex:
|
| 146 |
+
_MTL_INLINE void MTL::IndirectComputeCommand::setKernelBuffer(const MTL::Buffer* buffer, NS::UInteger offset, NS::UInteger index)
|
| 147 |
+
{
|
| 148 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setKernelBuffer_offset_atIndex_), buffer, offset, index);
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
// method: setKernelBuffer:offset:attributeStride:atIndex:
|
| 152 |
+
_MTL_INLINE void MTL::IndirectComputeCommand::setKernelBuffer(const MTL::Buffer* buffer, NS::UInteger offset, NS::UInteger stride, NS::UInteger index)
|
| 153 |
+
{
|
| 154 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setKernelBuffer_offset_attributeStride_atIndex_), buffer, offset, stride, index);
|
| 155 |
+
}
|
| 156 |
+
|
| 157 |
+
// method: concurrentDispatchThreadgroups:threadsPerThreadgroup:
|
| 158 |
+
_MTL_INLINE void MTL::IndirectComputeCommand::concurrentDispatchThreadgroups(MTL::Size threadgroupsPerGrid, MTL::Size threadsPerThreadgroup)
|
| 159 |
+
{
|
| 160 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(concurrentDispatchThreadgroups_threadsPerThreadgroup_), threadgroupsPerGrid, threadsPerThreadgroup);
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
+
// method: concurrentDispatchThreads:threadsPerThreadgroup:
|
| 164 |
+
_MTL_INLINE void MTL::IndirectComputeCommand::concurrentDispatchThreads(MTL::Size threadsPerGrid, MTL::Size threadsPerThreadgroup)
|
| 165 |
+
{
|
| 166 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(concurrentDispatchThreads_threadsPerThreadgroup_), threadsPerGrid, threadsPerThreadgroup);
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
// method: setBarrier
|
| 170 |
+
_MTL_INLINE void MTL::IndirectComputeCommand::setBarrier()
|
| 171 |
+
{
|
| 172 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBarrier));
|
| 173 |
+
}
|
| 174 |
+
|
| 175 |
+
// method: clearBarrier
|
| 176 |
+
_MTL_INLINE void MTL::IndirectComputeCommand::clearBarrier()
|
| 177 |
+
{
|
| 178 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(clearBarrier));
|
| 179 |
+
}
|
| 180 |
+
|
| 181 |
+
// method: setImageblockWidth:height:
|
| 182 |
+
_MTL_INLINE void MTL::IndirectComputeCommand::setImageblockWidth(NS::UInteger width, NS::UInteger height)
|
| 183 |
+
{
|
| 184 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setImageblockWidth_height_), width, height);
|
| 185 |
+
}
|
| 186 |
+
|
| 187 |
+
// method: reset
|
| 188 |
+
_MTL_INLINE void MTL::IndirectComputeCommand::reset()
|
| 189 |
+
{
|
| 190 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(reset));
|
| 191 |
+
}
|
| 192 |
+
|
| 193 |
+
// method: setThreadgroupMemoryLength:atIndex:
|
| 194 |
+
_MTL_INLINE void MTL::IndirectComputeCommand::setThreadgroupMemoryLength(NS::UInteger length, NS::UInteger index)
|
| 195 |
+
{
|
| 196 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setThreadgroupMemoryLength_atIndex_), length, index);
|
| 197 |
+
}
|
| 198 |
+
|
| 199 |
+
// method: setStageInRegion:
|
| 200 |
+
_MTL_INLINE void MTL::IndirectComputeCommand::setStageInRegion(MTL::Region region)
|
| 201 |
+
{
|
| 202 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStageInRegion_), region);
|
| 203 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLIntersectionFunctionTable.hpp
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLIntersectionFunctionTable.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLIntersectionFunctionTable.hpp"
|
| 30 |
+
#include "MTLResource.hpp"
|
| 31 |
+
#include "MTLTypes.hpp"
|
| 32 |
+
|
| 33 |
+
namespace MTL
|
| 34 |
+
{
|
| 35 |
+
_MTL_OPTIONS(NS::UInteger, IntersectionFunctionSignature) {
|
| 36 |
+
IntersectionFunctionSignatureNone = 0,
|
| 37 |
+
IntersectionFunctionSignatureInstancing = 1,
|
| 38 |
+
IntersectionFunctionSignatureTriangleData = 2,
|
| 39 |
+
IntersectionFunctionSignatureWorldSpaceData = 4,
|
| 40 |
+
IntersectionFunctionSignatureInstanceMotion = 8,
|
| 41 |
+
IntersectionFunctionSignaturePrimitiveMotion = 16,
|
| 42 |
+
IntersectionFunctionSignatureExtendedLimits = 32,
|
| 43 |
+
IntersectionFunctionSignatureMaxLevels = 64,
|
| 44 |
+
IntersectionFunctionSignatureCurveData = 128,
|
| 45 |
+
};
|
| 46 |
+
|
| 47 |
+
class IntersectionFunctionTableDescriptor : public NS::Copying<IntersectionFunctionTableDescriptor>
|
| 48 |
+
{
|
| 49 |
+
public:
|
| 50 |
+
static class IntersectionFunctionTableDescriptor* alloc();
|
| 51 |
+
|
| 52 |
+
class IntersectionFunctionTableDescriptor* init();
|
| 53 |
+
|
| 54 |
+
static class IntersectionFunctionTableDescriptor* intersectionFunctionTableDescriptor();
|
| 55 |
+
|
| 56 |
+
NS::UInteger functionCount() const;
|
| 57 |
+
void setFunctionCount(NS::UInteger functionCount);
|
| 58 |
+
};
|
| 59 |
+
|
| 60 |
+
class IntersectionFunctionTable : public NS::Referencing<IntersectionFunctionTable, Resource>
|
| 61 |
+
{
|
| 62 |
+
public:
|
| 63 |
+
void setBuffer(const class Buffer* buffer, NS::UInteger offset, NS::UInteger index);
|
| 64 |
+
|
| 65 |
+
void setBuffers(const class Buffer* const buffers[], const NS::UInteger offsets[], NS::Range range);
|
| 66 |
+
|
| 67 |
+
MTL::ResourceID gpuResourceID() const;
|
| 68 |
+
|
| 69 |
+
void setFunction(const class FunctionHandle* function, NS::UInteger index);
|
| 70 |
+
|
| 71 |
+
void setFunctions(const class FunctionHandle* const functions[], NS::Range range);
|
| 72 |
+
|
| 73 |
+
void setOpaqueTriangleIntersectionFunction(MTL::IntersectionFunctionSignature signature, NS::UInteger index);
|
| 74 |
+
|
| 75 |
+
void setOpaqueTriangleIntersectionFunction(MTL::IntersectionFunctionSignature signature, NS::Range range);
|
| 76 |
+
|
| 77 |
+
void setOpaqueCurveIntersectionFunction(MTL::IntersectionFunctionSignature signature, NS::UInteger index);
|
| 78 |
+
|
| 79 |
+
void setOpaqueCurveIntersectionFunction(MTL::IntersectionFunctionSignature signature, NS::Range range);
|
| 80 |
+
|
| 81 |
+
void setVisibleFunctionTable(const class VisibleFunctionTable* functionTable, NS::UInteger bufferIndex);
|
| 82 |
+
|
| 83 |
+
void setVisibleFunctionTables(const class VisibleFunctionTable* const functionTables[], NS::Range bufferRange);
|
| 84 |
+
};
|
| 85 |
+
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
// static method: alloc
|
| 89 |
+
_MTL_INLINE MTL::IntersectionFunctionTableDescriptor* MTL::IntersectionFunctionTableDescriptor::alloc()
|
| 90 |
+
{
|
| 91 |
+
return NS::Object::alloc<MTL::IntersectionFunctionTableDescriptor>(_MTL_PRIVATE_CLS(MTLIntersectionFunctionTableDescriptor));
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
// method: init
|
| 95 |
+
_MTL_INLINE MTL::IntersectionFunctionTableDescriptor* MTL::IntersectionFunctionTableDescriptor::init()
|
| 96 |
+
{
|
| 97 |
+
return NS::Object::init<MTL::IntersectionFunctionTableDescriptor>();
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
// static method: intersectionFunctionTableDescriptor
|
| 101 |
+
_MTL_INLINE MTL::IntersectionFunctionTableDescriptor* MTL::IntersectionFunctionTableDescriptor::intersectionFunctionTableDescriptor()
|
| 102 |
+
{
|
| 103 |
+
return Object::sendMessage<MTL::IntersectionFunctionTableDescriptor*>(_MTL_PRIVATE_CLS(MTLIntersectionFunctionTableDescriptor), _MTL_PRIVATE_SEL(intersectionFunctionTableDescriptor));
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
// property: functionCount
|
| 107 |
+
_MTL_INLINE NS::UInteger MTL::IntersectionFunctionTableDescriptor::functionCount() const
|
| 108 |
+
{
|
| 109 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(functionCount));
|
| 110 |
+
}
|
| 111 |
+
|
| 112 |
+
_MTL_INLINE void MTL::IntersectionFunctionTableDescriptor::setFunctionCount(NS::UInteger functionCount)
|
| 113 |
+
{
|
| 114 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFunctionCount_), functionCount);
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
+
// method: setBuffer:offset:atIndex:
|
| 118 |
+
_MTL_INLINE void MTL::IntersectionFunctionTable::setBuffer(const MTL::Buffer* buffer, NS::UInteger offset, NS::UInteger index)
|
| 119 |
+
{
|
| 120 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBuffer_offset_atIndex_), buffer, offset, index);
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
// method: setBuffers:offsets:withRange:
|
| 124 |
+
_MTL_INLINE void MTL::IntersectionFunctionTable::setBuffers(const MTL::Buffer* const buffers[], const NS::UInteger offsets[], NS::Range range)
|
| 125 |
+
{
|
| 126 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBuffers_offsets_withRange_), buffers, offsets, range);
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
// property: gpuResourceID
|
| 130 |
+
_MTL_INLINE MTL::ResourceID MTL::IntersectionFunctionTable::gpuResourceID() const
|
| 131 |
+
{
|
| 132 |
+
return Object::sendMessage<MTL::ResourceID>(this, _MTL_PRIVATE_SEL(gpuResourceID));
|
| 133 |
+
}
|
| 134 |
+
|
| 135 |
+
// method: setFunction:atIndex:
|
| 136 |
+
_MTL_INLINE void MTL::IntersectionFunctionTable::setFunction(const MTL::FunctionHandle* function, NS::UInteger index)
|
| 137 |
+
{
|
| 138 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFunction_atIndex_), function, index);
|
| 139 |
+
}
|
| 140 |
+
|
| 141 |
+
// method: setFunctions:withRange:
|
| 142 |
+
_MTL_INLINE void MTL::IntersectionFunctionTable::setFunctions(const MTL::FunctionHandle* const functions[], NS::Range range)
|
| 143 |
+
{
|
| 144 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFunctions_withRange_), functions, range);
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
// method: setOpaqueTriangleIntersectionFunctionWithSignature:atIndex:
|
| 148 |
+
_MTL_INLINE void MTL::IntersectionFunctionTable::setOpaqueTriangleIntersectionFunction(MTL::IntersectionFunctionSignature signature, NS::UInteger index)
|
| 149 |
+
{
|
| 150 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOpaqueTriangleIntersectionFunctionWithSignature_atIndex_), signature, index);
|
| 151 |
+
}
|
| 152 |
+
|
| 153 |
+
// method: setOpaqueTriangleIntersectionFunctionWithSignature:withRange:
|
| 154 |
+
_MTL_INLINE void MTL::IntersectionFunctionTable::setOpaqueTriangleIntersectionFunction(MTL::IntersectionFunctionSignature signature, NS::Range range)
|
| 155 |
+
{
|
| 156 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOpaqueTriangleIntersectionFunctionWithSignature_withRange_), signature, range);
|
| 157 |
+
}
|
| 158 |
+
|
| 159 |
+
// method: setOpaqueCurveIntersectionFunctionWithSignature:atIndex:
|
| 160 |
+
_MTL_INLINE void MTL::IntersectionFunctionTable::setOpaqueCurveIntersectionFunction(MTL::IntersectionFunctionSignature signature, NS::UInteger index)
|
| 161 |
+
{
|
| 162 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOpaqueCurveIntersectionFunctionWithSignature_atIndex_), signature, index);
|
| 163 |
+
}
|
| 164 |
+
|
| 165 |
+
// method: setOpaqueCurveIntersectionFunctionWithSignature:withRange:
|
| 166 |
+
_MTL_INLINE void MTL::IntersectionFunctionTable::setOpaqueCurveIntersectionFunction(MTL::IntersectionFunctionSignature signature, NS::Range range)
|
| 167 |
+
{
|
| 168 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOpaqueCurveIntersectionFunctionWithSignature_withRange_), signature, range);
|
| 169 |
+
}
|
| 170 |
+
|
| 171 |
+
// method: setVisibleFunctionTable:atBufferIndex:
|
| 172 |
+
_MTL_INLINE void MTL::IntersectionFunctionTable::setVisibleFunctionTable(const MTL::VisibleFunctionTable* functionTable, NS::UInteger bufferIndex)
|
| 173 |
+
{
|
| 174 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVisibleFunctionTable_atBufferIndex_), functionTable, bufferIndex);
|
| 175 |
+
}
|
| 176 |
+
|
| 177 |
+
// method: setVisibleFunctionTables:withBufferRange:
|
| 178 |
+
_MTL_INLINE void MTL::IntersectionFunctionTable::setVisibleFunctionTables(const MTL::VisibleFunctionTable* const functionTables[], NS::Range bufferRange)
|
| 179 |
+
{
|
| 180 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVisibleFunctionTables_withBufferRange_), functionTables, bufferRange);
|
| 181 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLLibrary.hpp
ADDED
|
@@ -0,0 +1,691 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLLibrary.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLArgument.hpp"
|
| 30 |
+
#include "MTLFunctionDescriptor.hpp"
|
| 31 |
+
#include "MTLLibrary.hpp"
|
| 32 |
+
#include <functional>
|
| 33 |
+
|
| 34 |
+
namespace MTL
|
| 35 |
+
{
|
| 36 |
+
_MTL_ENUM(NS::UInteger, PatchType) {
|
| 37 |
+
PatchTypeNone = 0,
|
| 38 |
+
PatchTypeTriangle = 1,
|
| 39 |
+
PatchTypeQuad = 2,
|
| 40 |
+
};
|
| 41 |
+
|
| 42 |
+
class VertexAttribute : public NS::Referencing<VertexAttribute>
|
| 43 |
+
{
|
| 44 |
+
public:
|
| 45 |
+
static class VertexAttribute* alloc();
|
| 46 |
+
|
| 47 |
+
class VertexAttribute* init();
|
| 48 |
+
|
| 49 |
+
NS::String* name() const;
|
| 50 |
+
|
| 51 |
+
NS::UInteger attributeIndex() const;
|
| 52 |
+
|
| 53 |
+
MTL::DataType attributeType() const;
|
| 54 |
+
|
| 55 |
+
bool active() const;
|
| 56 |
+
|
| 57 |
+
bool patchData() const;
|
| 58 |
+
|
| 59 |
+
bool patchControlPointData() const;
|
| 60 |
+
};
|
| 61 |
+
|
| 62 |
+
class Attribute : public NS::Referencing<Attribute>
|
| 63 |
+
{
|
| 64 |
+
public:
|
| 65 |
+
static class Attribute* alloc();
|
| 66 |
+
|
| 67 |
+
class Attribute* init();
|
| 68 |
+
|
| 69 |
+
NS::String* name() const;
|
| 70 |
+
|
| 71 |
+
NS::UInteger attributeIndex() const;
|
| 72 |
+
|
| 73 |
+
MTL::DataType attributeType() const;
|
| 74 |
+
|
| 75 |
+
bool active() const;
|
| 76 |
+
|
| 77 |
+
bool patchData() const;
|
| 78 |
+
|
| 79 |
+
bool patchControlPointData() const;
|
| 80 |
+
};
|
| 81 |
+
|
| 82 |
+
_MTL_ENUM(NS::UInteger, FunctionType) {
|
| 83 |
+
FunctionTypeVertex = 1,
|
| 84 |
+
FunctionTypeFragment = 2,
|
| 85 |
+
FunctionTypeKernel = 3,
|
| 86 |
+
FunctionTypeVisible = 5,
|
| 87 |
+
FunctionTypeIntersection = 6,
|
| 88 |
+
FunctionTypeMesh = 7,
|
| 89 |
+
FunctionTypeObject = 8,
|
| 90 |
+
};
|
| 91 |
+
|
| 92 |
+
class FunctionConstant : public NS::Referencing<FunctionConstant>
|
| 93 |
+
{
|
| 94 |
+
public:
|
| 95 |
+
static class FunctionConstant* alloc();
|
| 96 |
+
|
| 97 |
+
class FunctionConstant* init();
|
| 98 |
+
|
| 99 |
+
NS::String* name() const;
|
| 100 |
+
|
| 101 |
+
MTL::DataType type() const;
|
| 102 |
+
|
| 103 |
+
NS::UInteger index() const;
|
| 104 |
+
|
| 105 |
+
bool required() const;
|
| 106 |
+
};
|
| 107 |
+
|
| 108 |
+
using AutoreleasedArgument = class Argument*;
|
| 109 |
+
|
| 110 |
+
class Function : public NS::Referencing<Function>
|
| 111 |
+
{
|
| 112 |
+
public:
|
| 113 |
+
NS::String* label() const;
|
| 114 |
+
void setLabel(const NS::String* label);
|
| 115 |
+
|
| 116 |
+
class Device* device() const;
|
| 117 |
+
|
| 118 |
+
MTL::FunctionType functionType() const;
|
| 119 |
+
|
| 120 |
+
MTL::PatchType patchType() const;
|
| 121 |
+
|
| 122 |
+
NS::Integer patchControlPointCount() const;
|
| 123 |
+
|
| 124 |
+
NS::Array* vertexAttributes() const;
|
| 125 |
+
|
| 126 |
+
NS::Array* stageInputAttributes() const;
|
| 127 |
+
|
| 128 |
+
NS::String* name() const;
|
| 129 |
+
|
| 130 |
+
NS::Dictionary* functionConstantsDictionary() const;
|
| 131 |
+
|
| 132 |
+
class ArgumentEncoder* newArgumentEncoder(NS::UInteger bufferIndex);
|
| 133 |
+
|
| 134 |
+
class ArgumentEncoder* newArgumentEncoder(NS::UInteger bufferIndex, const MTL::AutoreleasedArgument* reflection);
|
| 135 |
+
|
| 136 |
+
MTL::FunctionOptions options() const;
|
| 137 |
+
};
|
| 138 |
+
|
| 139 |
+
_MTL_ENUM(NS::UInteger, LanguageVersion) {
|
| 140 |
+
LanguageVersion1_0 = 65536,
|
| 141 |
+
LanguageVersion1_1 = 65537,
|
| 142 |
+
LanguageVersion1_2 = 65538,
|
| 143 |
+
LanguageVersion2_0 = 131072,
|
| 144 |
+
LanguageVersion2_1 = 131073,
|
| 145 |
+
LanguageVersion2_2 = 131074,
|
| 146 |
+
LanguageVersion2_3 = 131075,
|
| 147 |
+
LanguageVersion2_4 = 131076,
|
| 148 |
+
LanguageVersion3_0 = 196608,
|
| 149 |
+
};
|
| 150 |
+
|
| 151 |
+
_MTL_ENUM(NS::Integer, LibraryType) {
|
| 152 |
+
LibraryTypeExecutable = 0,
|
| 153 |
+
LibraryTypeDynamic = 1,
|
| 154 |
+
};
|
| 155 |
+
|
| 156 |
+
_MTL_ENUM(NS::Integer, LibraryOptimizationLevel) {
|
| 157 |
+
LibraryOptimizationLevelDefault = 0,
|
| 158 |
+
LibraryOptimizationLevelSize = 1,
|
| 159 |
+
};
|
| 160 |
+
|
| 161 |
+
_MTL_ENUM(NS::Integer, CompileSymbolVisibility) {
|
| 162 |
+
CompileSymbolVisibilityDefault = 0,
|
| 163 |
+
CompileSymbolVisibilityHidden = 1,
|
| 164 |
+
};
|
| 165 |
+
|
| 166 |
+
class CompileOptions : public NS::Copying<CompileOptions>
|
| 167 |
+
{
|
| 168 |
+
public:
|
| 169 |
+
static class CompileOptions* alloc();
|
| 170 |
+
|
| 171 |
+
class CompileOptions* init();
|
| 172 |
+
|
| 173 |
+
NS::Dictionary* preprocessorMacros() const;
|
| 174 |
+
void setPreprocessorMacros(const NS::Dictionary* preprocessorMacros);
|
| 175 |
+
|
| 176 |
+
bool fastMathEnabled() const;
|
| 177 |
+
void setFastMathEnabled(bool fastMathEnabled);
|
| 178 |
+
|
| 179 |
+
MTL::LanguageVersion languageVersion() const;
|
| 180 |
+
void setLanguageVersion(MTL::LanguageVersion languageVersion);
|
| 181 |
+
|
| 182 |
+
MTL::LibraryType libraryType() const;
|
| 183 |
+
void setLibraryType(MTL::LibraryType libraryType);
|
| 184 |
+
|
| 185 |
+
NS::String* installName() const;
|
| 186 |
+
void setInstallName(const NS::String* installName);
|
| 187 |
+
|
| 188 |
+
NS::Array* libraries() const;
|
| 189 |
+
void setLibraries(const NS::Array* libraries);
|
| 190 |
+
|
| 191 |
+
bool preserveInvariance() const;
|
| 192 |
+
void setPreserveInvariance(bool preserveInvariance);
|
| 193 |
+
|
| 194 |
+
MTL::LibraryOptimizationLevel optimizationLevel() const;
|
| 195 |
+
void setOptimizationLevel(MTL::LibraryOptimizationLevel optimizationLevel);
|
| 196 |
+
|
| 197 |
+
MTL::CompileSymbolVisibility compileSymbolVisibility() const;
|
| 198 |
+
void setCompileSymbolVisibility(MTL::CompileSymbolVisibility compileSymbolVisibility);
|
| 199 |
+
|
| 200 |
+
bool allowReferencingUndefinedSymbols() const;
|
| 201 |
+
void setAllowReferencingUndefinedSymbols(bool allowReferencingUndefinedSymbols);
|
| 202 |
+
|
| 203 |
+
NS::UInteger maxTotalThreadsPerThreadgroup() const;
|
| 204 |
+
void setMaxTotalThreadsPerThreadgroup(NS::UInteger maxTotalThreadsPerThreadgroup);
|
| 205 |
+
};
|
| 206 |
+
|
| 207 |
+
_MTL_ENUM(NS::UInteger, LibraryError) {
|
| 208 |
+
LibraryErrorUnsupported = 1,
|
| 209 |
+
LibraryErrorInternal = 2,
|
| 210 |
+
LibraryErrorCompileFailure = 3,
|
| 211 |
+
LibraryErrorCompileWarning = 4,
|
| 212 |
+
LibraryErrorFunctionNotFound = 5,
|
| 213 |
+
LibraryErrorFileNotFound = 6,
|
| 214 |
+
};
|
| 215 |
+
|
| 216 |
+
class Library : public NS::Referencing<Library>
|
| 217 |
+
{
|
| 218 |
+
public:
|
| 219 |
+
void newFunction(const NS::String* pFunctionName, const class FunctionConstantValues* pConstantValues, const std::function<void(Function* pFunction, NS::Error* pError)>& completionHandler);
|
| 220 |
+
|
| 221 |
+
void newFunction(const class FunctionDescriptor* pDescriptor, const std::function<void(Function* pFunction, NS::Error* pError)>& completionHandler);
|
| 222 |
+
|
| 223 |
+
void newIntersectionFunction(const class IntersectionFunctionDescriptor* pDescriptor, const std::function<void(Function* pFunction, NS::Error* pError)>& completionHandler);
|
| 224 |
+
|
| 225 |
+
NS::String* label() const;
|
| 226 |
+
void setLabel(const NS::String* label);
|
| 227 |
+
|
| 228 |
+
class Device* device() const;
|
| 229 |
+
|
| 230 |
+
class Function* newFunction(const NS::String* functionName);
|
| 231 |
+
|
| 232 |
+
class Function* newFunction(const NS::String* name, const class FunctionConstantValues* constantValues, NS::Error** error);
|
| 233 |
+
|
| 234 |
+
void newFunction(const NS::String* name, const class FunctionConstantValues* constantValues, void (^completionHandler)(MTL::Function*, NS::Error*));
|
| 235 |
+
|
| 236 |
+
void newFunction(const class FunctionDescriptor* descriptor, void (^completionHandler)(MTL::Function*, NS::Error*));
|
| 237 |
+
|
| 238 |
+
class Function* newFunction(const class FunctionDescriptor* descriptor, NS::Error** error);
|
| 239 |
+
|
| 240 |
+
void newIntersectionFunction(const class IntersectionFunctionDescriptor* descriptor, void (^completionHandler)(MTL::Function*, NS::Error*));
|
| 241 |
+
|
| 242 |
+
class Function* newIntersectionFunction(const class IntersectionFunctionDescriptor* descriptor, NS::Error** error);
|
| 243 |
+
|
| 244 |
+
NS::Array* functionNames() const;
|
| 245 |
+
|
| 246 |
+
MTL::LibraryType type() const;
|
| 247 |
+
|
| 248 |
+
NS::String* installName() const;
|
| 249 |
+
};
|
| 250 |
+
|
| 251 |
+
}
|
| 252 |
+
|
| 253 |
+
// static method: alloc
|
| 254 |
+
_MTL_INLINE MTL::VertexAttribute* MTL::VertexAttribute::alloc()
|
| 255 |
+
{
|
| 256 |
+
return NS::Object::alloc<MTL::VertexAttribute>(_MTL_PRIVATE_CLS(MTLVertexAttribute));
|
| 257 |
+
}
|
| 258 |
+
|
| 259 |
+
// method: init
|
| 260 |
+
_MTL_INLINE MTL::VertexAttribute* MTL::VertexAttribute::init()
|
| 261 |
+
{
|
| 262 |
+
return NS::Object::init<MTL::VertexAttribute>();
|
| 263 |
+
}
|
| 264 |
+
|
| 265 |
+
// property: name
|
| 266 |
+
_MTL_INLINE NS::String* MTL::VertexAttribute::name() const
|
| 267 |
+
{
|
| 268 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 269 |
+
}
|
| 270 |
+
|
| 271 |
+
// property: attributeIndex
|
| 272 |
+
_MTL_INLINE NS::UInteger MTL::VertexAttribute::attributeIndex() const
|
| 273 |
+
{
|
| 274 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(attributeIndex));
|
| 275 |
+
}
|
| 276 |
+
|
| 277 |
+
// property: attributeType
|
| 278 |
+
_MTL_INLINE MTL::DataType MTL::VertexAttribute::attributeType() const
|
| 279 |
+
{
|
| 280 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(attributeType));
|
| 281 |
+
}
|
| 282 |
+
|
| 283 |
+
// property: active
|
| 284 |
+
_MTL_INLINE bool MTL::VertexAttribute::active() const
|
| 285 |
+
{
|
| 286 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isActive));
|
| 287 |
+
}
|
| 288 |
+
|
| 289 |
+
// property: patchData
|
| 290 |
+
_MTL_INLINE bool MTL::VertexAttribute::patchData() const
|
| 291 |
+
{
|
| 292 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isPatchData));
|
| 293 |
+
}
|
| 294 |
+
|
| 295 |
+
// property: patchControlPointData
|
| 296 |
+
_MTL_INLINE bool MTL::VertexAttribute::patchControlPointData() const
|
| 297 |
+
{
|
| 298 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isPatchControlPointData));
|
| 299 |
+
}
|
| 300 |
+
|
| 301 |
+
// static method: alloc
|
| 302 |
+
_MTL_INLINE MTL::Attribute* MTL::Attribute::alloc()
|
| 303 |
+
{
|
| 304 |
+
return NS::Object::alloc<MTL::Attribute>(_MTL_PRIVATE_CLS(MTLAttribute));
|
| 305 |
+
}
|
| 306 |
+
|
| 307 |
+
// method: init
|
| 308 |
+
_MTL_INLINE MTL::Attribute* MTL::Attribute::init()
|
| 309 |
+
{
|
| 310 |
+
return NS::Object::init<MTL::Attribute>();
|
| 311 |
+
}
|
| 312 |
+
|
| 313 |
+
// property: name
|
| 314 |
+
_MTL_INLINE NS::String* MTL::Attribute::name() const
|
| 315 |
+
{
|
| 316 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 317 |
+
}
|
| 318 |
+
|
| 319 |
+
// property: attributeIndex
|
| 320 |
+
_MTL_INLINE NS::UInteger MTL::Attribute::attributeIndex() const
|
| 321 |
+
{
|
| 322 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(attributeIndex));
|
| 323 |
+
}
|
| 324 |
+
|
| 325 |
+
// property: attributeType
|
| 326 |
+
_MTL_INLINE MTL::DataType MTL::Attribute::attributeType() const
|
| 327 |
+
{
|
| 328 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(attributeType));
|
| 329 |
+
}
|
| 330 |
+
|
| 331 |
+
// property: active
|
| 332 |
+
_MTL_INLINE bool MTL::Attribute::active() const
|
| 333 |
+
{
|
| 334 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isActive));
|
| 335 |
+
}
|
| 336 |
+
|
| 337 |
+
// property: patchData
|
| 338 |
+
_MTL_INLINE bool MTL::Attribute::patchData() const
|
| 339 |
+
{
|
| 340 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isPatchData));
|
| 341 |
+
}
|
| 342 |
+
|
| 343 |
+
// property: patchControlPointData
|
| 344 |
+
_MTL_INLINE bool MTL::Attribute::patchControlPointData() const
|
| 345 |
+
{
|
| 346 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(isPatchControlPointData));
|
| 347 |
+
}
|
| 348 |
+
|
| 349 |
+
// static method: alloc
|
| 350 |
+
_MTL_INLINE MTL::FunctionConstant* MTL::FunctionConstant::alloc()
|
| 351 |
+
{
|
| 352 |
+
return NS::Object::alloc<MTL::FunctionConstant>(_MTL_PRIVATE_CLS(MTLFunctionConstant));
|
| 353 |
+
}
|
| 354 |
+
|
| 355 |
+
// method: init
|
| 356 |
+
_MTL_INLINE MTL::FunctionConstant* MTL::FunctionConstant::init()
|
| 357 |
+
{
|
| 358 |
+
return NS::Object::init<MTL::FunctionConstant>();
|
| 359 |
+
}
|
| 360 |
+
|
| 361 |
+
// property: name
|
| 362 |
+
_MTL_INLINE NS::String* MTL::FunctionConstant::name() const
|
| 363 |
+
{
|
| 364 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 365 |
+
}
|
| 366 |
+
|
| 367 |
+
// property: type
|
| 368 |
+
_MTL_INLINE MTL::DataType MTL::FunctionConstant::type() const
|
| 369 |
+
{
|
| 370 |
+
return Object::sendMessage<MTL::DataType>(this, _MTL_PRIVATE_SEL(type));
|
| 371 |
+
}
|
| 372 |
+
|
| 373 |
+
// property: index
|
| 374 |
+
_MTL_INLINE NS::UInteger MTL::FunctionConstant::index() const
|
| 375 |
+
{
|
| 376 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(index));
|
| 377 |
+
}
|
| 378 |
+
|
| 379 |
+
// property: required
|
| 380 |
+
_MTL_INLINE bool MTL::FunctionConstant::required() const
|
| 381 |
+
{
|
| 382 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(required));
|
| 383 |
+
}
|
| 384 |
+
|
| 385 |
+
// property: label
|
| 386 |
+
_MTL_INLINE NS::String* MTL::Function::label() const
|
| 387 |
+
{
|
| 388 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 389 |
+
}
|
| 390 |
+
|
| 391 |
+
_MTL_INLINE void MTL::Function::setLabel(const NS::String* label)
|
| 392 |
+
{
|
| 393 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 394 |
+
}
|
| 395 |
+
|
| 396 |
+
// property: device
|
| 397 |
+
_MTL_INLINE MTL::Device* MTL::Function::device() const
|
| 398 |
+
{
|
| 399 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 400 |
+
}
|
| 401 |
+
|
| 402 |
+
// property: functionType
|
| 403 |
+
_MTL_INLINE MTL::FunctionType MTL::Function::functionType() const
|
| 404 |
+
{
|
| 405 |
+
return Object::sendMessage<MTL::FunctionType>(this, _MTL_PRIVATE_SEL(functionType));
|
| 406 |
+
}
|
| 407 |
+
|
| 408 |
+
// property: patchType
|
| 409 |
+
_MTL_INLINE MTL::PatchType MTL::Function::patchType() const
|
| 410 |
+
{
|
| 411 |
+
return Object::sendMessage<MTL::PatchType>(this, _MTL_PRIVATE_SEL(patchType));
|
| 412 |
+
}
|
| 413 |
+
|
| 414 |
+
// property: patchControlPointCount
|
| 415 |
+
_MTL_INLINE NS::Integer MTL::Function::patchControlPointCount() const
|
| 416 |
+
{
|
| 417 |
+
return Object::sendMessage<NS::Integer>(this, _MTL_PRIVATE_SEL(patchControlPointCount));
|
| 418 |
+
}
|
| 419 |
+
|
| 420 |
+
// property: vertexAttributes
|
| 421 |
+
_MTL_INLINE NS::Array* MTL::Function::vertexAttributes() const
|
| 422 |
+
{
|
| 423 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(vertexAttributes));
|
| 424 |
+
}
|
| 425 |
+
|
| 426 |
+
// property: stageInputAttributes
|
| 427 |
+
_MTL_INLINE NS::Array* MTL::Function::stageInputAttributes() const
|
| 428 |
+
{
|
| 429 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(stageInputAttributes));
|
| 430 |
+
}
|
| 431 |
+
|
| 432 |
+
// property: name
|
| 433 |
+
_MTL_INLINE NS::String* MTL::Function::name() const
|
| 434 |
+
{
|
| 435 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name));
|
| 436 |
+
}
|
| 437 |
+
|
| 438 |
+
// property: functionConstantsDictionary
|
| 439 |
+
_MTL_INLINE NS::Dictionary* MTL::Function::functionConstantsDictionary() const
|
| 440 |
+
{
|
| 441 |
+
return Object::sendMessage<NS::Dictionary*>(this, _MTL_PRIVATE_SEL(functionConstantsDictionary));
|
| 442 |
+
}
|
| 443 |
+
|
| 444 |
+
// method: newArgumentEncoderWithBufferIndex:
|
| 445 |
+
_MTL_INLINE MTL::ArgumentEncoder* MTL::Function::newArgumentEncoder(NS::UInteger bufferIndex)
|
| 446 |
+
{
|
| 447 |
+
return Object::sendMessage<MTL::ArgumentEncoder*>(this, _MTL_PRIVATE_SEL(newArgumentEncoderWithBufferIndex_), bufferIndex);
|
| 448 |
+
}
|
| 449 |
+
|
| 450 |
+
// method: newArgumentEncoderWithBufferIndex:reflection:
|
| 451 |
+
_MTL_INLINE MTL::ArgumentEncoder* MTL::Function::newArgumentEncoder(NS::UInteger bufferIndex, const MTL::AutoreleasedArgument* reflection)
|
| 452 |
+
{
|
| 453 |
+
return Object::sendMessage<MTL::ArgumentEncoder*>(this, _MTL_PRIVATE_SEL(newArgumentEncoderWithBufferIndex_reflection_), bufferIndex, reflection);
|
| 454 |
+
}
|
| 455 |
+
|
| 456 |
+
// property: options
|
| 457 |
+
_MTL_INLINE MTL::FunctionOptions MTL::Function::options() const
|
| 458 |
+
{
|
| 459 |
+
return Object::sendMessage<MTL::FunctionOptions>(this, _MTL_PRIVATE_SEL(options));
|
| 460 |
+
}
|
| 461 |
+
|
| 462 |
+
// static method: alloc
|
| 463 |
+
_MTL_INLINE MTL::CompileOptions* MTL::CompileOptions::alloc()
|
| 464 |
+
{
|
| 465 |
+
return NS::Object::alloc<MTL::CompileOptions>(_MTL_PRIVATE_CLS(MTLCompileOptions));
|
| 466 |
+
}
|
| 467 |
+
|
| 468 |
+
// method: init
|
| 469 |
+
_MTL_INLINE MTL::CompileOptions* MTL::CompileOptions::init()
|
| 470 |
+
{
|
| 471 |
+
return NS::Object::init<MTL::CompileOptions>();
|
| 472 |
+
}
|
| 473 |
+
|
| 474 |
+
// property: preprocessorMacros
|
| 475 |
+
_MTL_INLINE NS::Dictionary* MTL::CompileOptions::preprocessorMacros() const
|
| 476 |
+
{
|
| 477 |
+
return Object::sendMessage<NS::Dictionary*>(this, _MTL_PRIVATE_SEL(preprocessorMacros));
|
| 478 |
+
}
|
| 479 |
+
|
| 480 |
+
_MTL_INLINE void MTL::CompileOptions::setPreprocessorMacros(const NS::Dictionary* preprocessorMacros)
|
| 481 |
+
{
|
| 482 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPreprocessorMacros_), preprocessorMacros);
|
| 483 |
+
}
|
| 484 |
+
|
| 485 |
+
// property: fastMathEnabled
|
| 486 |
+
_MTL_INLINE bool MTL::CompileOptions::fastMathEnabled() const
|
| 487 |
+
{
|
| 488 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(fastMathEnabled));
|
| 489 |
+
}
|
| 490 |
+
|
| 491 |
+
_MTL_INLINE void MTL::CompileOptions::setFastMathEnabled(bool fastMathEnabled)
|
| 492 |
+
{
|
| 493 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFastMathEnabled_), fastMathEnabled);
|
| 494 |
+
}
|
| 495 |
+
|
| 496 |
+
// property: languageVersion
|
| 497 |
+
_MTL_INLINE MTL::LanguageVersion MTL::CompileOptions::languageVersion() const
|
| 498 |
+
{
|
| 499 |
+
return Object::sendMessage<MTL::LanguageVersion>(this, _MTL_PRIVATE_SEL(languageVersion));
|
| 500 |
+
}
|
| 501 |
+
|
| 502 |
+
_MTL_INLINE void MTL::CompileOptions::setLanguageVersion(MTL::LanguageVersion languageVersion)
|
| 503 |
+
{
|
| 504 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLanguageVersion_), languageVersion);
|
| 505 |
+
}
|
| 506 |
+
|
| 507 |
+
// property: libraryType
|
| 508 |
+
_MTL_INLINE MTL::LibraryType MTL::CompileOptions::libraryType() const
|
| 509 |
+
{
|
| 510 |
+
return Object::sendMessage<MTL::LibraryType>(this, _MTL_PRIVATE_SEL(libraryType));
|
| 511 |
+
}
|
| 512 |
+
|
| 513 |
+
_MTL_INLINE void MTL::CompileOptions::setLibraryType(MTL::LibraryType libraryType)
|
| 514 |
+
{
|
| 515 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLibraryType_), libraryType);
|
| 516 |
+
}
|
| 517 |
+
|
| 518 |
+
// property: installName
|
| 519 |
+
_MTL_INLINE NS::String* MTL::CompileOptions::installName() const
|
| 520 |
+
{
|
| 521 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(installName));
|
| 522 |
+
}
|
| 523 |
+
|
| 524 |
+
_MTL_INLINE void MTL::CompileOptions::setInstallName(const NS::String* installName)
|
| 525 |
+
{
|
| 526 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstallName_), installName);
|
| 527 |
+
}
|
| 528 |
+
|
| 529 |
+
// property: libraries
|
| 530 |
+
_MTL_INLINE NS::Array* MTL::CompileOptions::libraries() const
|
| 531 |
+
{
|
| 532 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(libraries));
|
| 533 |
+
}
|
| 534 |
+
|
| 535 |
+
_MTL_INLINE void MTL::CompileOptions::setLibraries(const NS::Array* libraries)
|
| 536 |
+
{
|
| 537 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLibraries_), libraries);
|
| 538 |
+
}
|
| 539 |
+
|
| 540 |
+
// property: preserveInvariance
|
| 541 |
+
_MTL_INLINE bool MTL::CompileOptions::preserveInvariance() const
|
| 542 |
+
{
|
| 543 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(preserveInvariance));
|
| 544 |
+
}
|
| 545 |
+
|
| 546 |
+
_MTL_INLINE void MTL::CompileOptions::setPreserveInvariance(bool preserveInvariance)
|
| 547 |
+
{
|
| 548 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPreserveInvariance_), preserveInvariance);
|
| 549 |
+
}
|
| 550 |
+
|
| 551 |
+
// property: optimizationLevel
|
| 552 |
+
_MTL_INLINE MTL::LibraryOptimizationLevel MTL::CompileOptions::optimizationLevel() const
|
| 553 |
+
{
|
| 554 |
+
return Object::sendMessage<MTL::LibraryOptimizationLevel>(this, _MTL_PRIVATE_SEL(optimizationLevel));
|
| 555 |
+
}
|
| 556 |
+
|
| 557 |
+
_MTL_INLINE void MTL::CompileOptions::setOptimizationLevel(MTL::LibraryOptimizationLevel optimizationLevel)
|
| 558 |
+
{
|
| 559 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOptimizationLevel_), optimizationLevel);
|
| 560 |
+
}
|
| 561 |
+
|
| 562 |
+
// property: compileSymbolVisibility
|
| 563 |
+
_MTL_INLINE MTL::CompileSymbolVisibility MTL::CompileOptions::compileSymbolVisibility() const
|
| 564 |
+
{
|
| 565 |
+
return Object::sendMessage<MTL::CompileSymbolVisibility>(this, _MTL_PRIVATE_SEL(compileSymbolVisibility));
|
| 566 |
+
}
|
| 567 |
+
|
| 568 |
+
_MTL_INLINE void MTL::CompileOptions::setCompileSymbolVisibility(MTL::CompileSymbolVisibility compileSymbolVisibility)
|
| 569 |
+
{
|
| 570 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCompileSymbolVisibility_), compileSymbolVisibility);
|
| 571 |
+
}
|
| 572 |
+
|
| 573 |
+
// property: allowReferencingUndefinedSymbols
|
| 574 |
+
_MTL_INLINE bool MTL::CompileOptions::allowReferencingUndefinedSymbols() const
|
| 575 |
+
{
|
| 576 |
+
return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(allowReferencingUndefinedSymbols));
|
| 577 |
+
}
|
| 578 |
+
|
| 579 |
+
_MTL_INLINE void MTL::CompileOptions::setAllowReferencingUndefinedSymbols(bool allowReferencingUndefinedSymbols)
|
| 580 |
+
{
|
| 581 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAllowReferencingUndefinedSymbols_), allowReferencingUndefinedSymbols);
|
| 582 |
+
}
|
| 583 |
+
|
| 584 |
+
// property: maxTotalThreadsPerThreadgroup
|
| 585 |
+
_MTL_INLINE NS::UInteger MTL::CompileOptions::maxTotalThreadsPerThreadgroup() const
|
| 586 |
+
{
|
| 587 |
+
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxTotalThreadsPerThreadgroup));
|
| 588 |
+
}
|
| 589 |
+
|
| 590 |
+
_MTL_INLINE void MTL::CompileOptions::setMaxTotalThreadsPerThreadgroup(NS::UInteger maxTotalThreadsPerThreadgroup)
|
| 591 |
+
{
|
| 592 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxTotalThreadsPerThreadgroup_), maxTotalThreadsPerThreadgroup);
|
| 593 |
+
}
|
| 594 |
+
|
| 595 |
+
_MTL_INLINE void MTL::Library::newFunction(const NS::String* pFunctionName, const FunctionConstantValues* pConstantValues, const std::function<void(Function* pFunction, NS::Error* pError)>& completionHandler)
|
| 596 |
+
{
|
| 597 |
+
__block std::function<void(Function * pFunction, NS::Error * pError)> blockCompletionHandler = completionHandler;
|
| 598 |
+
|
| 599 |
+
newFunction(pFunctionName, pConstantValues, ^(Function* pFunction, NS::Error* pError) { blockCompletionHandler(pFunction, pError); });
|
| 600 |
+
}
|
| 601 |
+
|
| 602 |
+
_MTL_INLINE void MTL::Library::newFunction(const FunctionDescriptor* pDescriptor, const std::function<void(Function* pFunction, NS::Error* pError)>& completionHandler)
|
| 603 |
+
{
|
| 604 |
+
__block std::function<void(Function * pFunction, NS::Error * pError)> blockCompletionHandler = completionHandler;
|
| 605 |
+
|
| 606 |
+
newFunction(pDescriptor, ^(Function* pFunction, NS::Error* pError) { blockCompletionHandler(pFunction, pError); });
|
| 607 |
+
}
|
| 608 |
+
|
| 609 |
+
_MTL_INLINE void MTL::Library::newIntersectionFunction(const IntersectionFunctionDescriptor* pDescriptor, const std::function<void(Function* pFunction, NS::Error* pError)>& completionHandler)
|
| 610 |
+
{
|
| 611 |
+
__block std::function<void(Function * pFunction, NS::Error * pError)> blockCompletionHandler = completionHandler;
|
| 612 |
+
|
| 613 |
+
newIntersectionFunction(pDescriptor, ^(Function* pFunction, NS::Error* pError) { blockCompletionHandler(pFunction, pError); });
|
| 614 |
+
}
|
| 615 |
+
|
| 616 |
+
// property: label
|
| 617 |
+
_MTL_INLINE NS::String* MTL::Library::label() const
|
| 618 |
+
{
|
| 619 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
|
| 620 |
+
}
|
| 621 |
+
|
| 622 |
+
_MTL_INLINE void MTL::Library::setLabel(const NS::String* label)
|
| 623 |
+
{
|
| 624 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
|
| 625 |
+
}
|
| 626 |
+
|
| 627 |
+
// property: device
|
| 628 |
+
_MTL_INLINE MTL::Device* MTL::Library::device() const
|
| 629 |
+
{
|
| 630 |
+
return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device));
|
| 631 |
+
}
|
| 632 |
+
|
| 633 |
+
// method: newFunctionWithName:
|
| 634 |
+
_MTL_INLINE MTL::Function* MTL::Library::newFunction(const NS::String* functionName)
|
| 635 |
+
{
|
| 636 |
+
return Object::sendMessage<MTL::Function*>(this, _MTL_PRIVATE_SEL(newFunctionWithName_), functionName);
|
| 637 |
+
}
|
| 638 |
+
|
| 639 |
+
// method: newFunctionWithName:constantValues:error:
|
| 640 |
+
_MTL_INLINE MTL::Function* MTL::Library::newFunction(const NS::String* name, const MTL::FunctionConstantValues* constantValues, NS::Error** error)
|
| 641 |
+
{
|
| 642 |
+
return Object::sendMessage<MTL::Function*>(this, _MTL_PRIVATE_SEL(newFunctionWithName_constantValues_error_), name, constantValues, error);
|
| 643 |
+
}
|
| 644 |
+
|
| 645 |
+
// method: newFunctionWithName:constantValues:completionHandler:
|
| 646 |
+
_MTL_INLINE void MTL::Library::newFunction(const NS::String* name, const MTL::FunctionConstantValues* constantValues, void (^completionHandler)(MTL::Function*, NS::Error*))
|
| 647 |
+
{
|
| 648 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(newFunctionWithName_constantValues_completionHandler_), name, constantValues, completionHandler);
|
| 649 |
+
}
|
| 650 |
+
|
| 651 |
+
// method: newFunctionWithDescriptor:completionHandler:
|
| 652 |
+
_MTL_INLINE void MTL::Library::newFunction(const MTL::FunctionDescriptor* descriptor, void (^completionHandler)(MTL::Function*, NS::Error*))
|
| 653 |
+
{
|
| 654 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(newFunctionWithDescriptor_completionHandler_), descriptor, completionHandler);
|
| 655 |
+
}
|
| 656 |
+
|
| 657 |
+
// method: newFunctionWithDescriptor:error:
|
| 658 |
+
_MTL_INLINE MTL::Function* MTL::Library::newFunction(const MTL::FunctionDescriptor* descriptor, NS::Error** error)
|
| 659 |
+
{
|
| 660 |
+
return Object::sendMessage<MTL::Function*>(this, _MTL_PRIVATE_SEL(newFunctionWithDescriptor_error_), descriptor, error);
|
| 661 |
+
}
|
| 662 |
+
|
| 663 |
+
// method: newIntersectionFunctionWithDescriptor:completionHandler:
|
| 664 |
+
_MTL_INLINE void MTL::Library::newIntersectionFunction(const MTL::IntersectionFunctionDescriptor* descriptor, void (^completionHandler)(MTL::Function*, NS::Error*))
|
| 665 |
+
{
|
| 666 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(newIntersectionFunctionWithDescriptor_completionHandler_), descriptor, completionHandler);
|
| 667 |
+
}
|
| 668 |
+
|
| 669 |
+
// method: newIntersectionFunctionWithDescriptor:error:
|
| 670 |
+
_MTL_INLINE MTL::Function* MTL::Library::newIntersectionFunction(const MTL::IntersectionFunctionDescriptor* descriptor, NS::Error** error)
|
| 671 |
+
{
|
| 672 |
+
return Object::sendMessage<MTL::Function*>(this, _MTL_PRIVATE_SEL(newIntersectionFunctionWithDescriptor_error_), descriptor, error);
|
| 673 |
+
}
|
| 674 |
+
|
| 675 |
+
// property: functionNames
|
| 676 |
+
_MTL_INLINE NS::Array* MTL::Library::functionNames() const
|
| 677 |
+
{
|
| 678 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(functionNames));
|
| 679 |
+
}
|
| 680 |
+
|
| 681 |
+
// property: type
|
| 682 |
+
_MTL_INLINE MTL::LibraryType MTL::Library::type() const
|
| 683 |
+
{
|
| 684 |
+
return Object::sendMessage<MTL::LibraryType>(this, _MTL_PRIVATE_SEL(type));
|
| 685 |
+
}
|
| 686 |
+
|
| 687 |
+
// property: installName
|
| 688 |
+
_MTL_INLINE NS::String* MTL::Library::installName() const
|
| 689 |
+
{
|
| 690 |
+
return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(installName));
|
| 691 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLLinkedFunctions.hpp
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLLinkedFunctions.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
namespace MTL
|
| 30 |
+
{
|
| 31 |
+
class LinkedFunctions : public NS::Copying<LinkedFunctions>
|
| 32 |
+
{
|
| 33 |
+
public:
|
| 34 |
+
static class LinkedFunctions* alloc();
|
| 35 |
+
|
| 36 |
+
class LinkedFunctions* init();
|
| 37 |
+
|
| 38 |
+
static class LinkedFunctions* linkedFunctions();
|
| 39 |
+
|
| 40 |
+
NS::Array* functions() const;
|
| 41 |
+
void setFunctions(const NS::Array* functions);
|
| 42 |
+
|
| 43 |
+
NS::Array* binaryFunctions() const;
|
| 44 |
+
void setBinaryFunctions(const NS::Array* binaryFunctions);
|
| 45 |
+
|
| 46 |
+
NS::Dictionary* groups() const;
|
| 47 |
+
void setGroups(const NS::Dictionary* groups);
|
| 48 |
+
|
| 49 |
+
NS::Array* privateFunctions() const;
|
| 50 |
+
void setPrivateFunctions(const NS::Array* privateFunctions);
|
| 51 |
+
};
|
| 52 |
+
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
// static method: alloc
|
| 56 |
+
_MTL_INLINE MTL::LinkedFunctions* MTL::LinkedFunctions::alloc()
|
| 57 |
+
{
|
| 58 |
+
return NS::Object::alloc<MTL::LinkedFunctions>(_MTL_PRIVATE_CLS(MTLLinkedFunctions));
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
// method: init
|
| 62 |
+
_MTL_INLINE MTL::LinkedFunctions* MTL::LinkedFunctions::init()
|
| 63 |
+
{
|
| 64 |
+
return NS::Object::init<MTL::LinkedFunctions>();
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
// static method: linkedFunctions
|
| 68 |
+
_MTL_INLINE MTL::LinkedFunctions* MTL::LinkedFunctions::linkedFunctions()
|
| 69 |
+
{
|
| 70 |
+
return Object::sendMessage<MTL::LinkedFunctions*>(_MTL_PRIVATE_CLS(MTLLinkedFunctions), _MTL_PRIVATE_SEL(linkedFunctions));
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
// property: functions
|
| 74 |
+
_MTL_INLINE NS::Array* MTL::LinkedFunctions::functions() const
|
| 75 |
+
{
|
| 76 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(functions));
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
_MTL_INLINE void MTL::LinkedFunctions::setFunctions(const NS::Array* functions)
|
| 80 |
+
{
|
| 81 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFunctions_), functions);
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
// property: binaryFunctions
|
| 85 |
+
_MTL_INLINE NS::Array* MTL::LinkedFunctions::binaryFunctions() const
|
| 86 |
+
{
|
| 87 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(binaryFunctions));
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
_MTL_INLINE void MTL::LinkedFunctions::setBinaryFunctions(const NS::Array* binaryFunctions)
|
| 91 |
+
{
|
| 92 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBinaryFunctions_), binaryFunctions);
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
// property: groups
|
| 96 |
+
_MTL_INLINE NS::Dictionary* MTL::LinkedFunctions::groups() const
|
| 97 |
+
{
|
| 98 |
+
return Object::sendMessage<NS::Dictionary*>(this, _MTL_PRIVATE_SEL(groups));
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
+
_MTL_INLINE void MTL::LinkedFunctions::setGroups(const NS::Dictionary* groups)
|
| 102 |
+
{
|
| 103 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setGroups_), groups);
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
// property: privateFunctions
|
| 107 |
+
_MTL_INLINE NS::Array* MTL::LinkedFunctions::privateFunctions() const
|
| 108 |
+
{
|
| 109 |
+
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(privateFunctions));
|
| 110 |
+
}
|
| 111 |
+
|
| 112 |
+
_MTL_INLINE void MTL::LinkedFunctions::setPrivateFunctions(const NS::Array* privateFunctions)
|
| 113 |
+
{
|
| 114 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrivateFunctions_), privateFunctions);
|
| 115 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLParallelRenderCommandEncoder.hpp
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLParallelRenderCommandEncoder.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLCommandEncoder.hpp"
|
| 30 |
+
#include "MTLRenderPass.hpp"
|
| 31 |
+
|
| 32 |
+
namespace MTL
|
| 33 |
+
{
|
| 34 |
+
class ParallelRenderCommandEncoder : public NS::Referencing<ParallelRenderCommandEncoder, CommandEncoder>
|
| 35 |
+
{
|
| 36 |
+
public:
|
| 37 |
+
class RenderCommandEncoder* renderCommandEncoder();
|
| 38 |
+
|
| 39 |
+
void setColorStoreAction(MTL::StoreAction storeAction, NS::UInteger colorAttachmentIndex);
|
| 40 |
+
|
| 41 |
+
void setDepthStoreAction(MTL::StoreAction storeAction);
|
| 42 |
+
|
| 43 |
+
void setStencilStoreAction(MTL::StoreAction storeAction);
|
| 44 |
+
|
| 45 |
+
void setColorStoreActionOptions(MTL::StoreActionOptions storeActionOptions, NS::UInteger colorAttachmentIndex);
|
| 46 |
+
|
| 47 |
+
void setDepthStoreActionOptions(MTL::StoreActionOptions storeActionOptions);
|
| 48 |
+
|
| 49 |
+
void setStencilStoreActionOptions(MTL::StoreActionOptions storeActionOptions);
|
| 50 |
+
};
|
| 51 |
+
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
// method: renderCommandEncoder
|
| 55 |
+
_MTL_INLINE MTL::RenderCommandEncoder* MTL::ParallelRenderCommandEncoder::renderCommandEncoder()
|
| 56 |
+
{
|
| 57 |
+
return Object::sendMessage<MTL::RenderCommandEncoder*>(this, _MTL_PRIVATE_SEL(renderCommandEncoder));
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
// method: setColorStoreAction:atIndex:
|
| 61 |
+
_MTL_INLINE void MTL::ParallelRenderCommandEncoder::setColorStoreAction(MTL::StoreAction storeAction, NS::UInteger colorAttachmentIndex)
|
| 62 |
+
{
|
| 63 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setColorStoreAction_atIndex_), storeAction, colorAttachmentIndex);
|
| 64 |
+
}
|
| 65 |
+
|
| 66 |
+
// method: setDepthStoreAction:
|
| 67 |
+
_MTL_INLINE void MTL::ParallelRenderCommandEncoder::setDepthStoreAction(MTL::StoreAction storeAction)
|
| 68 |
+
{
|
| 69 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthStoreAction_), storeAction);
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
// method: setStencilStoreAction:
|
| 73 |
+
_MTL_INLINE void MTL::ParallelRenderCommandEncoder::setStencilStoreAction(MTL::StoreAction storeAction)
|
| 74 |
+
{
|
| 75 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilStoreAction_), storeAction);
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
// method: setColorStoreActionOptions:atIndex:
|
| 79 |
+
_MTL_INLINE void MTL::ParallelRenderCommandEncoder::setColorStoreActionOptions(MTL::StoreActionOptions storeActionOptions, NS::UInteger colorAttachmentIndex)
|
| 80 |
+
{
|
| 81 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setColorStoreActionOptions_atIndex_), storeActionOptions, colorAttachmentIndex);
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
// method: setDepthStoreActionOptions:
|
| 85 |
+
_MTL_INLINE void MTL::ParallelRenderCommandEncoder::setDepthStoreActionOptions(MTL::StoreActionOptions storeActionOptions)
|
| 86 |
+
{
|
| 87 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setDepthStoreActionOptions_), storeActionOptions);
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
// method: setStencilStoreActionOptions:
|
| 91 |
+
_MTL_INLINE void MTL::ParallelRenderCommandEncoder::setStencilStoreActionOptions(MTL::StoreActionOptions storeActionOptions)
|
| 92 |
+
{
|
| 93 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setStencilStoreActionOptions_), storeActionOptions);
|
| 94 |
+
}
|
lib/python3.11/site-packages/mlx/include/metal_cpp/Metal/MTLPipeline.hpp
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 2 |
+
//
|
| 3 |
+
// Metal/MTLPipeline.hpp
|
| 4 |
+
//
|
| 5 |
+
// Copyright 2020-2023 Apple Inc.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
| 8 |
+
// you may not use this file except in compliance with the License.
|
| 9 |
+
// You may obtain a copy of the License at
|
| 10 |
+
//
|
| 11 |
+
// http://www.apache.org/licenses/LICENSE-2.0
|
| 12 |
+
//
|
| 13 |
+
// Unless required by applicable law or agreed to in writing, software
|
| 14 |
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
| 15 |
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 16 |
+
// See the License for the specific language governing permissions and
|
| 17 |
+
// limitations under the License.
|
| 18 |
+
//
|
| 19 |
+
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 20 |
+
|
| 21 |
+
#pragma once
|
| 22 |
+
|
| 23 |
+
#include "MTLDefines.hpp"
|
| 24 |
+
#include "MTLHeaderBridge.hpp"
|
| 25 |
+
#include "MTLPrivate.hpp"
|
| 26 |
+
|
| 27 |
+
#include <Foundation/Foundation.hpp>
|
| 28 |
+
|
| 29 |
+
#include "MTLPipeline.hpp"
|
| 30 |
+
|
| 31 |
+
namespace MTL
|
| 32 |
+
{
|
| 33 |
+
_MTL_ENUM(NS::UInteger, Mutability) {
|
| 34 |
+
MutabilityDefault = 0,
|
| 35 |
+
MutabilityMutable = 1,
|
| 36 |
+
MutabilityImmutable = 2,
|
| 37 |
+
};
|
| 38 |
+
|
| 39 |
+
class PipelineBufferDescriptor : public NS::Copying<PipelineBufferDescriptor>
|
| 40 |
+
{
|
| 41 |
+
public:
|
| 42 |
+
static class PipelineBufferDescriptor* alloc();
|
| 43 |
+
|
| 44 |
+
class PipelineBufferDescriptor* init();
|
| 45 |
+
|
| 46 |
+
MTL::Mutability mutability() const;
|
| 47 |
+
void setMutability(MTL::Mutability mutability);
|
| 48 |
+
};
|
| 49 |
+
|
| 50 |
+
class PipelineBufferDescriptorArray : public NS::Referencing<PipelineBufferDescriptorArray>
|
| 51 |
+
{
|
| 52 |
+
public:
|
| 53 |
+
static class PipelineBufferDescriptorArray* alloc();
|
| 54 |
+
|
| 55 |
+
class PipelineBufferDescriptorArray* init();
|
| 56 |
+
|
| 57 |
+
class PipelineBufferDescriptor* object(NS::UInteger bufferIndex);
|
| 58 |
+
|
| 59 |
+
void setObject(const class PipelineBufferDescriptor* buffer, NS::UInteger bufferIndex);
|
| 60 |
+
};
|
| 61 |
+
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
// static method: alloc
|
| 65 |
+
_MTL_INLINE MTL::PipelineBufferDescriptor* MTL::PipelineBufferDescriptor::alloc()
|
| 66 |
+
{
|
| 67 |
+
return NS::Object::alloc<MTL::PipelineBufferDescriptor>(_MTL_PRIVATE_CLS(MTLPipelineBufferDescriptor));
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
// method: init
|
| 71 |
+
_MTL_INLINE MTL::PipelineBufferDescriptor* MTL::PipelineBufferDescriptor::init()
|
| 72 |
+
{
|
| 73 |
+
return NS::Object::init<MTL::PipelineBufferDescriptor>();
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
// property: mutability
|
| 77 |
+
_MTL_INLINE MTL::Mutability MTL::PipelineBufferDescriptor::mutability() const
|
| 78 |
+
{
|
| 79 |
+
return Object::sendMessage<MTL::Mutability>(this, _MTL_PRIVATE_SEL(mutability));
|
| 80 |
+
}
|
| 81 |
+
|
| 82 |
+
_MTL_INLINE void MTL::PipelineBufferDescriptor::setMutability(MTL::Mutability mutability)
|
| 83 |
+
{
|
| 84 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMutability_), mutability);
|
| 85 |
+
}
|
| 86 |
+
|
| 87 |
+
// static method: alloc
|
| 88 |
+
_MTL_INLINE MTL::PipelineBufferDescriptorArray* MTL::PipelineBufferDescriptorArray::alloc()
|
| 89 |
+
{
|
| 90 |
+
return NS::Object::alloc<MTL::PipelineBufferDescriptorArray>(_MTL_PRIVATE_CLS(MTLPipelineBufferDescriptorArray));
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
// method: init
|
| 94 |
+
_MTL_INLINE MTL::PipelineBufferDescriptorArray* MTL::PipelineBufferDescriptorArray::init()
|
| 95 |
+
{
|
| 96 |
+
return NS::Object::init<MTL::PipelineBufferDescriptorArray>();
|
| 97 |
+
}
|
| 98 |
+
|
| 99 |
+
// method: objectAtIndexedSubscript:
|
| 100 |
+
_MTL_INLINE MTL::PipelineBufferDescriptor* MTL::PipelineBufferDescriptorArray::object(NS::UInteger bufferIndex)
|
| 101 |
+
{
|
| 102 |
+
return Object::sendMessage<MTL::PipelineBufferDescriptor*>(this, _MTL_PRIVATE_SEL(objectAtIndexedSubscript_), bufferIndex);
|
| 103 |
+
}
|
| 104 |
+
|
| 105 |
+
// method: setObject:atIndexedSubscript:
|
| 106 |
+
_MTL_INLINE void MTL::PipelineBufferDescriptorArray::setObject(const MTL::PipelineBufferDescriptor* buffer, NS::UInteger bufferIndex)
|
| 107 |
+
{
|
| 108 |
+
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setObject_atIndexedSubscript_), buffer, bufferIndex);
|
| 109 |
+
}
|