9 ShaderFunctionMTL::ShaderFunctionMTL(UniqueID parent_library_id,
10 id<MTLFunction>
function,
11 id<MTLLibrary> library,
14 : ShaderFunction(parent_library_id,
std::move(name), stage),
18 ShaderFunctionMTL::~ShaderFunctionMTL() =
default;
20 void ShaderFunctionMTL::GetMTLFunctionSpecialized(
21 const std::vector<Scalar>& constants,
23 MTLFunctionConstantValues* constantValues =
24 [[MTLFunctionConstantValues alloc] init];
26 for (
const auto value : constants) {
28 [constantValues setConstantValue:&copied_value
34 [library_ newFunctionWithName:@(GetName().data())
35 constantValues:constantValues
36 completionHandler:^(id<MTLFunction> _Nullable
function,
37 NSError* _Nullable error) {
38 callback_value(
function);
42 id<MTLFunction> ShaderFunctionMTL::GetMTLFunction()
const {
std::function< void(id< MTLFunction >)> CompileCallback