ComputeBufferMTL.h 980 B

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 <Jolt/Compute/MTL/ComputeSystemMTL.h>
  7. JPH_NAMESPACE_BEGIN
  8. /// Buffer that can be read from / written to by a compute shader
  9. class JPH_EXPORT ComputeBufferMTL final : public ComputeBuffer
  10. {
  11. public:
  12. JPH_OVERRIDE_NEW_DELETE
  13. /// Constructor
  14. ComputeBufferMTL(ComputeSystemMTL *inComputeSystem, EType inType, uint64 inSize, uint inStride);
  15. virtual ~ComputeBufferMTL() override;
  16. bool Initialize(const void *inData);
  17. virtual ComputeBufferResult CreateReadBackBuffer() const override;
  18. id<MTLBuffer> GetBuffer() const { return mBuffer; }
  19. private:
  20. virtual void * MapInternal(EMode inMode) override;
  21. virtual void UnmapInternal() override;
  22. ComputeSystemMTL * mComputeSystem;
  23. id<MTLBuffer> mBuffer;
  24. };
  25. JPH_NAMESPACE_END
  26. #endif // JPH_USE_MTL