9#include <MetalKit/MetalKit.h>
15class ComputeShaderMTL;
24 ComputeQueueMTL(id<MTLDevice> inDevice);
25 virtual ~ComputeQueueMTL()
override;
28 virtual void SetShader(
const ComputeShader *inShader)
override;
29 virtual void SetConstantBuffer(
const char *inName,
const ComputeBuffer *inBuffer)
override;
30 virtual void SetBuffer(
const char *inName,
const ComputeBuffer *inBuffer)
override;
31 virtual void SetRWBuffer(
const char *inName, ComputeBuffer *inBuffer, EBarrier inBarrier = EBarrier::Yes)
override;
32 virtual void ScheduleReadback(ComputeBuffer *inDst,
const ComputeBuffer *inSrc)
override;
33 virtual void Dispatch(
uint inThreadGroupsX,
uint inThreadGroupsY,
uint inThreadGroupsZ)
override;
34 virtual void Execute()
override;
35 virtual void Wait()
override;
38 void BeginCommandBuffer();
40 id<MTLCommandQueue> mCommandQueue;
41 id<MTLCommandBuffer> mCommandBuffer;
42 id<MTLComputeCommandEncoder> mComputeEncoder;
43 RefConst<ComputeShaderMTL> mShader;
44 bool mIsExecuting =
false;
#define JPH_EXPORT
Definition Core.h:286
unsigned int uint
Definition Core.h:546
#define JPH_NAMESPACE_END
Definition Core.h:469
#define JPH_NAMESPACE_BEGIN
Definition Core.h:463
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:50
Definition ComputeQueue.h:20
virtual void SetBuffer(const char *inName, const ComputeBuffer *inBuffer)=0
virtual void ScheduleReadback(ComputeBuffer *inDst, const ComputeBuffer *inSrc)=0
virtual void SetConstantBuffer(const char *inName, const ComputeBuffer *inBuffer)=0
virtual void SetShader(const ComputeShader *inShader)=0
virtual void Dispatch(uint inThreadGroupsX, uint inThreadGroupsY=1, uint inThreadGroupsZ=1)=0
Dispatch a compute shader with the specified number of thread groups.
virtual void SetRWBuffer(const char *inName, ComputeBuffer *inBuffer, EBarrier inBarrier=EBarrier::Yes)=0