Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/metal-cpp/Metal/MTL4LinkingDescriptor.hpp
21066 views
1
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
2
//
3
// Metal/MTL4LinkingDescriptor.hpp
4
//
5
// Copyright 2020-2025 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 "../Foundation/Foundation.hpp"
24
#include "MTLDefines.hpp"
25
#include "MTLHeaderBridge.hpp"
26
#include "MTLPrivate.hpp"
27
28
namespace MTL4
29
{
30
class PipelineStageDynamicLinkingDescriptor;
31
class RenderPipelineDynamicLinkingDescriptor;
32
class StaticLinkingDescriptor;
33
34
class StaticLinkingDescriptor : public NS::Copying<StaticLinkingDescriptor>
35
{
36
public:
37
static StaticLinkingDescriptor* alloc();
38
39
NS::Array* functionDescriptors() const;
40
41
NS::Dictionary* groups() const;
42
43
StaticLinkingDescriptor* init();
44
45
NS::Array* privateFunctionDescriptors() const;
46
47
void setFunctionDescriptors(const NS::Array* functionDescriptors);
48
49
void setGroups(const NS::Dictionary* groups);
50
51
void setPrivateFunctionDescriptors(const NS::Array* privateFunctionDescriptors);
52
};
53
class PipelineStageDynamicLinkingDescriptor : public NS::Copying<PipelineStageDynamicLinkingDescriptor>
54
{
55
public:
56
static PipelineStageDynamicLinkingDescriptor* alloc();
57
58
NS::Array* binaryLinkedFunctions() const;
59
60
PipelineStageDynamicLinkingDescriptor* init();
61
62
NS::UInteger maxCallStackDepth() const;
63
64
NS::Array* preloadedLibraries() const;
65
66
void setBinaryLinkedFunctions(const NS::Array* binaryLinkedFunctions);
67
68
void setMaxCallStackDepth(NS::UInteger maxCallStackDepth);
69
70
void setPreloadedLibraries(const NS::Array* preloadedLibraries);
71
};
72
class RenderPipelineDynamicLinkingDescriptor : public NS::Copying<RenderPipelineDynamicLinkingDescriptor>
73
{
74
public:
75
static RenderPipelineDynamicLinkingDescriptor* alloc();
76
77
PipelineStageDynamicLinkingDescriptor* fragmentLinkingDescriptor() const;
78
79
RenderPipelineDynamicLinkingDescriptor* init();
80
81
PipelineStageDynamicLinkingDescriptor* meshLinkingDescriptor() const;
82
83
PipelineStageDynamicLinkingDescriptor* objectLinkingDescriptor() const;
84
85
PipelineStageDynamicLinkingDescriptor* tileLinkingDescriptor() const;
86
87
PipelineStageDynamicLinkingDescriptor* vertexLinkingDescriptor() const;
88
};
89
90
}
91
_MTL_INLINE MTL4::StaticLinkingDescriptor* MTL4::StaticLinkingDescriptor::alloc()
92
{
93
return NS::Object::alloc<MTL4::StaticLinkingDescriptor>(_MTL_PRIVATE_CLS(MTL4StaticLinkingDescriptor));
94
}
95
96
_MTL_INLINE NS::Array* MTL4::StaticLinkingDescriptor::functionDescriptors() const
97
{
98
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(functionDescriptors));
99
}
100
101
_MTL_INLINE NS::Dictionary* MTL4::StaticLinkingDescriptor::groups() const
102
{
103
return Object::sendMessage<NS::Dictionary*>(this, _MTL_PRIVATE_SEL(groups));
104
}
105
106
_MTL_INLINE MTL4::StaticLinkingDescriptor* MTL4::StaticLinkingDescriptor::init()
107
{
108
return NS::Object::init<MTL4::StaticLinkingDescriptor>();
109
}
110
111
_MTL_INLINE NS::Array* MTL4::StaticLinkingDescriptor::privateFunctionDescriptors() const
112
{
113
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(privateFunctionDescriptors));
114
}
115
116
_MTL_INLINE void MTL4::StaticLinkingDescriptor::setFunctionDescriptors(const NS::Array* functionDescriptors)
117
{
118
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFunctionDescriptors_), functionDescriptors);
119
}
120
121
_MTL_INLINE void MTL4::StaticLinkingDescriptor::setGroups(const NS::Dictionary* groups)
122
{
123
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setGroups_), groups);
124
}
125
126
_MTL_INLINE void MTL4::StaticLinkingDescriptor::setPrivateFunctionDescriptors(const NS::Array* privateFunctionDescriptors)
127
{
128
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrivateFunctionDescriptors_), privateFunctionDescriptors);
129
}
130
131
_MTL_INLINE MTL4::PipelineStageDynamicLinkingDescriptor* MTL4::PipelineStageDynamicLinkingDescriptor::alloc()
132
{
133
return NS::Object::alloc<MTL4::PipelineStageDynamicLinkingDescriptor>(_MTL_PRIVATE_CLS(MTL4PipelineStageDynamicLinkingDescriptor));
134
}
135
136
_MTL_INLINE NS::Array* MTL4::PipelineStageDynamicLinkingDescriptor::binaryLinkedFunctions() const
137
{
138
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(binaryLinkedFunctions));
139
}
140
141
_MTL_INLINE MTL4::PipelineStageDynamicLinkingDescriptor* MTL4::PipelineStageDynamicLinkingDescriptor::init()
142
{
143
return NS::Object::init<MTL4::PipelineStageDynamicLinkingDescriptor>();
144
}
145
146
_MTL_INLINE NS::UInteger MTL4::PipelineStageDynamicLinkingDescriptor::maxCallStackDepth() const
147
{
148
return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxCallStackDepth));
149
}
150
151
_MTL_INLINE NS::Array* MTL4::PipelineStageDynamicLinkingDescriptor::preloadedLibraries() const
152
{
153
return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(preloadedLibraries));
154
}
155
156
_MTL_INLINE void MTL4::PipelineStageDynamicLinkingDescriptor::setBinaryLinkedFunctions(const NS::Array* binaryLinkedFunctions)
157
{
158
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBinaryLinkedFunctions_), binaryLinkedFunctions);
159
}
160
161
_MTL_INLINE void MTL4::PipelineStageDynamicLinkingDescriptor::setMaxCallStackDepth(NS::UInteger maxCallStackDepth)
162
{
163
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxCallStackDepth_), maxCallStackDepth);
164
}
165
166
_MTL_INLINE void MTL4::PipelineStageDynamicLinkingDescriptor::setPreloadedLibraries(const NS::Array* preloadedLibraries)
167
{
168
Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPreloadedLibraries_), preloadedLibraries);
169
}
170
171
_MTL_INLINE MTL4::RenderPipelineDynamicLinkingDescriptor* MTL4::RenderPipelineDynamicLinkingDescriptor::alloc()
172
{
173
return NS::Object::alloc<MTL4::RenderPipelineDynamicLinkingDescriptor>(_MTL_PRIVATE_CLS(MTL4RenderPipelineDynamicLinkingDescriptor));
174
}
175
176
_MTL_INLINE MTL4::PipelineStageDynamicLinkingDescriptor* MTL4::RenderPipelineDynamicLinkingDescriptor::fragmentLinkingDescriptor() const
177
{
178
return Object::sendMessage<MTL4::PipelineStageDynamicLinkingDescriptor*>(this, _MTL_PRIVATE_SEL(fragmentLinkingDescriptor));
179
}
180
181
_MTL_INLINE MTL4::RenderPipelineDynamicLinkingDescriptor* MTL4::RenderPipelineDynamicLinkingDescriptor::init()
182
{
183
return NS::Object::init<MTL4::RenderPipelineDynamicLinkingDescriptor>();
184
}
185
186
_MTL_INLINE MTL4::PipelineStageDynamicLinkingDescriptor* MTL4::RenderPipelineDynamicLinkingDescriptor::meshLinkingDescriptor() const
187
{
188
return Object::sendMessage<MTL4::PipelineStageDynamicLinkingDescriptor*>(this, _MTL_PRIVATE_SEL(meshLinkingDescriptor));
189
}
190
191
_MTL_INLINE MTL4::PipelineStageDynamicLinkingDescriptor* MTL4::RenderPipelineDynamicLinkingDescriptor::objectLinkingDescriptor() const
192
{
193
return Object::sendMessage<MTL4::PipelineStageDynamicLinkingDescriptor*>(this, _MTL_PRIVATE_SEL(objectLinkingDescriptor));
194
}
195
196
_MTL_INLINE MTL4::PipelineStageDynamicLinkingDescriptor* MTL4::RenderPipelineDynamicLinkingDescriptor::tileLinkingDescriptor() const
197
{
198
return Object::sendMessage<MTL4::PipelineStageDynamicLinkingDescriptor*>(this, _MTL_PRIVATE_SEL(tileLinkingDescriptor));
199
}
200
201
_MTL_INLINE MTL4::PipelineStageDynamicLinkingDescriptor* MTL4::RenderPipelineDynamicLinkingDescriptor::vertexLinkingDescriptor() const
202
{
203
return Object::sendMessage<MTL4::PipelineStageDynamicLinkingDescriptor*>(this, _MTL_PRIVATE_SEL(vertexLinkingDescriptor));
204
}
205
206