Mark compute state trackers as dirty when destroying mtlComputeEncoder
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm
index 27af9e8..d871019 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm
@@ -449,6 +449,10 @@
void MVKCommandEncoder::endCurrentMetalEncoding() {
endMetalRenderEncoding();
+ _computePipelineState.markDirty();
+ _computeResourcesState.markDirty();
+ _computePushConstants.markDirty();
+
[_mtlComputeEncoder endEncoding];
_mtlComputeEncoder = nil; // not retained
_mtlComputeEncoderUse = kMVKCommandUseNone;
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h
index 0464e7f..05c9c18 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h
@@ -514,6 +514,8 @@
/** Sets the current buffer size buffer state. */
void bindBufferSizeBuffer(const MVKShaderImplicitRezBinding& binding, bool needSizeBuffer);
+ void markDirty() override;
+
#pragma mark Construction
/** Constructs this instance for the specified command encoder. */
@@ -522,7 +524,6 @@
protected:
void encodeImpl(uint32_t) override;
void resetImpl() override;
- void markDirty() override;
MVKVectorInline<MVKMTLBufferBinding, 4> _bufferBindings;
MVKVectorInline<MVKMTLTextureBinding, 4> _textureBindings;