From 2d118bfbfabebdc2652cbf08476c5e07ef802c81 Mon Sep 17 00:00:00 2001 From: Try Date: Sat, 10 Feb 2024 22:27:17 +0100 Subject: [PATCH] Metal: mesh-indirect #54 --- Engine/gapi/metal/mtcommandbuffer.cpp | 5 +++++ Engine/gapi/metal/mtcommandbuffer.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/Engine/gapi/metal/mtcommandbuffer.cpp b/Engine/gapi/metal/mtcommandbuffer.cpp index eb054f1f..833ce736 100644 --- a/Engine/gapi/metal/mtcommandbuffer.cpp +++ b/Engine/gapi/metal/mtcommandbuffer.cpp @@ -323,6 +323,11 @@ void MtCommandBuffer::dispatchMesh(size_t x, size_t y, size_t z) { encDraw->drawMeshThreadgroups(MTL::Size(x,y,z), localSize, localSizeMesh); } +void MtCommandBuffer::dispatchMeshIndirect(const AbstractGraphicsApi::Buffer& indirect, size_t offset) { + auto& ind = reinterpret_cast(indirect); + encDraw->drawMeshThreadgroups(ind.impl.get(), offset, localSize, localSizeMesh); + } + void MtCommandBuffer::dispatch(size_t x, size_t y, size_t z) { encComp->dispatchThreadgroups(MTL::Size(x,y,z), localSize); } diff --git a/Engine/gapi/metal/mtcommandbuffer.h b/Engine/gapi/metal/mtcommandbuffer.h index d49e83cf..78c02abe 100644 --- a/Engine/gapi/metal/mtcommandbuffer.h +++ b/Engine/gapi/metal/mtcommandbuffer.h @@ -59,6 +59,8 @@ class MtCommandBuffer : public AbstractGraphicsApi::CommandBuffer { void drawIndirect(const AbstractGraphicsApi::Buffer& indirect, size_t offset) override; void dispatchMesh(size_t x, size_t y, size_t z) override; + void dispatchMeshIndirect(const AbstractGraphicsApi::Buffer& indirect, size_t offset) override; + void dispatch (size_t x, size_t y, size_t z) override; void barrier (const AbstractGraphicsApi::BarrierDesc* desc, size_t cnt) override;