ComputeShaderMTL.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2025 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #pragma once
  5. #ifdef JPH_USE_MTL
  6. #include <MetalKit/MetalKit.h>
  7. #include <Jolt/Compute/ComputeShader.h>
  8. #include <Jolt/Core/UnorderedMap.h>
  9. JPH_NAMESPACE_BEGIN
  10. /// Compute shader handle for Metal
  11. class JPH_EXPORT ComputeShaderMTL : public ComputeShader
  12. {
  13. public:
  14. JPH_OVERRIDE_NEW_DELETE
  15. /// Constructor
  16. ComputeShaderMTL(id<MTLComputePipelineState> inPipelineState, MTLComputePipelineReflection *inReflection, uint32 inGroupSizeX, uint32 inGroupSizeY, uint32 inGroupSizeZ);
  17. virtual ~ComputeShaderMTL() override { [mPipelineState release]; }
  18. /// Access to the function
  19. id<MTLComputePipelineState> GetPipelineState() const { return mPipelineState; }
  20. /// Get index of buffer name
  21. uint NameToBindingIndex(const char *inName) const;
  22. private:
  23. id<MTLComputePipelineState> mPipelineState;
  24. UnorderedMap<String, uint> mNameToBindingIndex;
  25. };
  26. JPH_NAMESPACE_END
  27. #endif // JPH_USE_MTL