// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics) // SPDX-FileCopyrightText: 2025 Jorrit Rouwe // SPDX-License-Identifier: MIT #pragma once #include #ifdef JPH_USE_MTL #include JPH_NAMESPACE_BEGIN /// Interface to run a workload on the GPU class JPH_EXPORT ComputeSystemMTL : public ComputeSystem { public: JPH_DECLARE_RTTI_VIRTUAL(JPH_EXPORT, ComputeSystemMTL) // Initialize / shutdown the compute system bool Initialize(id inDevice); void Shutdown(); // See: ComputeSystem virtual ComputeShaderResult CreateComputeShader(const char *inName, uint32 inGroupSizeX, uint32 inGroupSizeY, uint32 inGroupSizeZ) override; virtual ComputeBufferResult CreateComputeBuffer(ComputeBuffer::EType inType, uint64 inSize, uint inStride, const void *inData = nullptr) override; virtual ComputeQueueResult CreateComputeQueue() override; /// Get the metal device id GetDevice() const { return mDevice; } private: id mDevice; id mShaderLibrary; }; JPH_NAMESPACE_END #endif // JPH_USE_MTL