diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.mm b/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.mm
index 15e4b1f..76964a0 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.mm
@@ -1345,20 +1345,41 @@
 				layerEnd = layerStart + layerCnt;
 			}
 
-            for (uint32_t layer = layerStart; layer < layerEnd; layer++) {
+            // If we can do layered rendering, I can clear all the layers at once.
+            if (cmdEncoder->getDevice()->_pMetalFeatures->layeredRendering &&
+                (_image->getSampleCount() == VK_SAMPLE_COUNT_1_BIT || cmdEncoder->getDevice()->_pMetalFeatures->multisampleLayeredRendering)) {
                 if (is3D) {
-                    mtlRPCADesc.depthPlane = layer;
-                    mtlRPDADesc.depthPlane = layer;
-                    mtlRPSADesc.depthPlane = layer;
+                    mtlRPCADesc.depthPlane = layerStart;
+                    mtlRPDADesc.depthPlane = layerStart;
+                    mtlRPSADesc.depthPlane = layerStart;
                 } else {
-                    mtlRPCADesc.slice = layer;
-                    mtlRPDADesc.slice = layer;
-                    mtlRPSADesc.slice = layer;
+                    mtlRPCADesc.slice = layerStart;
+                    mtlRPDADesc.slice = layerStart;
+                    mtlRPSADesc.slice = layerStart;
                 }
+                mtlRPDesc.renderTargetArrayLength = (layerCnt == VK_REMAINING_ARRAY_LAYERS
+                                                     ? (_image->getLayerCount() - layerStart)
+                                                     : layerCnt);
 
                 id<MTLRenderCommandEncoder> mtlRendEnc = [cmdEncoder->_mtlCmdBuffer renderCommandEncoderWithDescriptor: mtlRPDesc];
-				setLabelIfNotNil(mtlRendEnc, mtlRendEncName);
+                setLabelIfNotNil(mtlRendEnc, mtlRendEncName);
                 [mtlRendEnc endEncoding];
+            } else {
+                for (uint32_t layer = layerStart; layer < layerEnd; layer++) {
+                    if (is3D) {
+                        mtlRPCADesc.depthPlane = layer;
+                        mtlRPDADesc.depthPlane = layer;
+                        mtlRPSADesc.depthPlane = layer;
+                    } else {
+                        mtlRPCADesc.slice = layer;
+                        mtlRPDADesc.slice = layer;
+                        mtlRPSADesc.slice = layer;
+                    }
+
+                    id<MTLRenderCommandEncoder> mtlRendEnc = [cmdEncoder->_mtlCmdBuffer renderCommandEncoderWithDescriptor: mtlRPDesc];
+                    setLabelIfNotNil(mtlRendEnc, mtlRendEncName);
+                    [mtlRendEnc endEncoding];
+                }
             }
         }
     }
