Clear reference to MTLTexture on TextureView::DestroyImpl

Bug: dawn:1355
Change-Id: I834b02a05d50c39b1a8d272e2d437d7ce1f96fb5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/115061
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
diff --git a/src/dawn/native/metal/TextureMTL.h b/src/dawn/native/metal/TextureMTL.h
index 0d5a3c8..f4ae94e 100644
--- a/src/dawn/native/metal/TextureMTL.h
+++ b/src/dawn/native/metal/TextureMTL.h
@@ -104,8 +104,8 @@
   private:
     using TextureViewBase::TextureViewBase;
     MaybeError Initialize(const TextureViewDescriptor* descriptor);
+    void DestroyImpl() override;
 
-    // TODO(crbug.com/dawn/1355): Clear this reference on texture destroy.
     NSPRef<id<MTLTexture>> mMtlTextureView;
 };
 
diff --git a/src/dawn/native/metal/TextureMTL.mm b/src/dawn/native/metal/TextureMTL.mm
index a26ad65..42d7524 100644
--- a/src/dawn/native/metal/TextureMTL.mm
+++ b/src/dawn/native/metal/TextureMTL.mm
@@ -1124,6 +1124,10 @@
     return {};
 }
 
+void TextureView::DestroyImpl() {
+    mMtlTextureView = nil;
+}
+
 id<MTLTexture> TextureView::GetMTLTexture() const {
     ASSERT(mMtlTextureView != nullptr);
     return mMtlTextureView.Get();