2
0

ComputeSystemMTLImpl.mm 952 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2025 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #include <Jolt/Jolt.h>
  5. #ifdef JPH_USE_MTL
  6. #include <Jolt/Compute/MTL/ComputeSystemMTLImpl.h>
  7. JPH_NAMESPACE_BEGIN
  8. JPH_IMPLEMENT_RTTI_VIRTUAL(ComputeSystemMTLImpl)
  9. {
  10. JPH_ADD_BASE_CLASS(ComputeSystemMTLImpl, ComputeSystemMTL)
  11. }
  12. ComputeSystemMTLImpl::~ComputeSystemMTLImpl()
  13. {
  14. Shutdown();
  15. [GetDevice() release];
  16. }
  17. bool ComputeSystemMTLImpl::Initialize()
  18. {
  19. id<MTLDevice> device = MTLCreateSystemDefaultDevice();
  20. return ComputeSystemMTL::Initialize(device);
  21. }
  22. ComputeSystemResult CreateComputeSystemMTL()
  23. {
  24. ComputeSystemResult result;
  25. Ref<ComputeSystemMTLImpl> compute = new ComputeSystemMTLImpl;
  26. if (!compute->Initialize())
  27. {
  28. result.SetError("Failed to initialize compute system");
  29. return result;
  30. }
  31. result.Set(compute.GetPtr());
  32. return result;
  33. }
  34. JPH_NAMESPACE_END
  35. #endif // JPH_USE_MTL