From bf1c1788cab4740d8c46c30ad8a97021b2e858f9 Mon Sep 17 00:00:00 2001
From: Chloe Marcec <dmarcecguzman@gmail.com>
Date: Tue, 30 Mar 2021 20:37:40 +1100
Subject: nvdrv: Cleanup CDMA Processor on device closure

Brings us a step closer to unifying all channels to share a common interface.
---
 src/video_core/gpu.cpp | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

(limited to 'src/video_core/gpu.cpp')

diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp
index c61f446196..811e248a32 100644
--- a/src/video_core/gpu.cpp
+++ b/src/video_core/gpu.cpp
@@ -480,11 +480,7 @@ void GPU::PushCommandBuffer(Tegra::ChCommandHeaderList& entries) {
     if (!use_nvdec) {
         return;
     }
-    // This condition fires when a video stream ends, clear all intermediary data
-    if (entries[0].raw == 0xDEADB33F) {
-        cdma_pusher.reset();
-        return;
-    }
+
     if (!cdma_pusher) {
         cdma_pusher = std::make_unique<Tegra::CDmaPusher>(*this);
     }
@@ -496,6 +492,13 @@ void GPU::PushCommandBuffer(Tegra::ChCommandHeaderList& entries) {
     cdma_pusher->ProcessEntries(std::move(entries));
 }
 
+void GPU::ClearCommandBuffer() {
+    // This condition fires when a video stream ends, clear all intermediary data
+    if (cdma_pusher) {
+        cdma_pusher.reset();
+    }
+}
+
 void GPU::SwapBuffers(const Tegra::FramebufferConfig* framebuffer) {
     gpu_thread.SwapBuffers(framebuffer);
 }
-- 
cgit v1.2.3-70-g09d2