diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md
index 81f29f9..07f4544 100644
--- a/Docs/Whats_New.md
+++ b/Docs/Whats_New.md
@@ -41,6 +41,7 @@
 - Fix new and unexpected App Store failure on newly deprecated color space values.
 - Fix intermittent concurrent shader specialization race condition.
 - Fix offsets when flushing buffer data to GPU.
+- Fix issue where expected buffer-sizes buffer not bound to Metal compute encoder.
 - Ensure fragment shader inputs to have as many components as vertex shader outputs.
 - Include vertex attribute size when testing whether attribute offset exceeds stride.
 - Add support for `USCALED/SSCALED` vertex formats.
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm
index ac055f0..7ac03ea 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm
@@ -781,26 +781,10 @@
 
 void MVKComputeResourcesCommandEncoderState::encodeImpl(uint32_t) {
 
-    bool fullImageViewSwizzle = false;
     MVKPipeline* pipeline = _cmdEncoder->_computePipelineState.getPipeline();
-    if (pipeline)
-        fullImageViewSwizzle = pipeline->fullImageViewSwizzle();
-
-    encodeBinding<MVKMTLBufferBinding>(_resourceBindings.bufferBindings, _resourceBindings.areBufferBindingsDirty,
-									   [](MVKCommandEncoder* cmdEncoder, MVKMTLBufferBinding& b)->void {
-											if (b.isInline)
-												cmdEncoder->setComputeBytes(cmdEncoder->getMTLComputeEncoder(kMVKCommandUseDispatch),
-																			b.mtlBytes,
-																			b.size,
-																			b.index);
-											else
-												[cmdEncoder->getMTLComputeEncoder(kMVKCommandUseDispatch) setBuffer: b.mtlBuffer
-																											 offset: b.offset
-																											atIndex: b.index];
-                                       });
+	bool fullImageViewSwizzle = pipeline ? pipeline->fullImageViewSwizzle() : false;
 
     if (_resourceBindings.swizzleBufferBinding.isDirty) {
-
 		for (auto& b : _resourceBindings.textureBindings) {
 			if (b.isDirty) { updateImplicitBuffer(_resourceBindings.swizzleConstants, b.index, b.swizzle); }
 		}
@@ -826,6 +810,20 @@
 
     }
 
+	encodeBinding<MVKMTLBufferBinding>(_resourceBindings.bufferBindings, _resourceBindings.areBufferBindingsDirty,
+									   [](MVKCommandEncoder* cmdEncoder, MVKMTLBufferBinding& b)->void {
+		if (b.isInline) {
+			cmdEncoder->setComputeBytes(cmdEncoder->getMTLComputeEncoder(kMVKCommandUseDispatch),
+										b.mtlBytes,
+										b.size,
+										b.index);
+		} else {
+			[cmdEncoder->getMTLComputeEncoder(kMVKCommandUseDispatch) setBuffer: b.mtlBuffer
+																		 offset: b.offset
+																		atIndex: b.index];
+		}
+	});
+
     encodeBinding<MVKMTLTextureBinding>(_resourceBindings.textureBindings, _resourceBindings.areTextureBindingsDirty,
                                         [](MVKCommandEncoder* cmdEncoder, MVKMTLTextureBinding& b)->void {
                                             [cmdEncoder->getMTLComputeEncoder(kMVKCommandUseDispatch) setTexture: b.mtlTexture
