Skip to content

Commit e68408d

Browse files
[MTL] Use scope_exit to auto-close command encoder. (#1069)
1 parent f0fafbe commit e68408d

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

lib/API/MTL/MTLDevice.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "API/Device.h"
1313
#include "Support/Pipeline.h"
1414

15+
#include "llvm/ADT/ScopeExit.h"
1516
#include "llvm/ADT/SmallString.h"
1617
#include "llvm/Support/Error.h"
1718
#include "llvm/Support/JSON.h"
@@ -405,6 +406,9 @@ class MTLDevice : public offloadtest::Device {
405406
MTL::ComputeCommandEncoder *CmdEncoder =
406407
IS.CmdBuffer->computeCommandEncoder();
407408

409+
auto CloseCommandEncoder =
410+
llvm::scope_exit([&]() { CmdEncoder->endEncoding(); });
411+
408412
CmdEncoder->setComputePipelineState(IS.ComputePipeline);
409413
CmdEncoder->setBuffer(IS.ArgBuffer, 0, 2);
410414
for (uint64_t I = 0; I < IS.Textures.size(); ++I)
@@ -463,7 +467,6 @@ class MTLDevice : public offloadtest::Device {
463467
CmdEncoder->dispatchThreads(GridSize, GroupSize);
464468
CmdEncoder->memoryBarrier(MTL::BarrierScopeBuffers);
465469

466-
CmdEncoder->endEncoding();
467470
return llvm::Error::success();
468471
}
469472

0 commit comments

Comments
 (0)