diff --git a/components/operators/include/ftl/operators/disparity.hpp b/components/operators/include/ftl/operators/disparity.hpp
index 54cfa1c8846f4c38327a06406905f9fbfdfe597b..2f9a807cdc0119ee9efc51dae6db69d17a47e3b2 100644
--- a/components/operators/include/ftl/operators/disparity.hpp
+++ b/components/operators/include/ftl/operators/disparity.hpp
@@ -29,6 +29,8 @@ class FixstarsSGM : public ftl::operators::Operator {
 	~FixstarsSGM();
 	inline Operator::Type type() const override { return Operator::Type::OneToOne; }
 	bool apply(ftl::rgbd::Frame &in, ftl::rgbd::Frame &out, cudaStream_t stream) override;
+
+	bool isMemoryHeavy() const override { return true; }
 	
 	private:
 	bool init();
diff --git a/components/operators/include/ftl/operators/operator.hpp b/components/operators/include/ftl/operators/operator.hpp
index 8dee5f7b987aba6e87364a277d53ffe1e0b2d901..399adddd4656f1a76476b93de074a6eb55983739 100644
--- a/components/operators/include/ftl/operators/operator.hpp
+++ b/components/operators/include/ftl/operators/operator.hpp
@@ -54,6 +54,8 @@ class Operator {
 	 */
 	virtual void wait(cudaStream_t) {}
 
+	virtual bool isMemoryHeavy() const { return false; }
+
 	inline ftl::Configurable *config() const { return config_; }
 
 	private:
diff --git a/components/operators/src/operator.cpp b/components/operators/src/operator.cpp
index 1f000e9a7c57f35da967287f258fd73f78a44be7..617514afdfa3542846415001b085422a01f1bbea 100644
--- a/components/operators/src/operator.cpp
+++ b/components/operators/src/operator.cpp
@@ -59,14 +59,15 @@ bool Graph::apply(FrameSet &in, FrameSet &out, cudaStream_t stream) {
 			//while (i.instances.size() < in.frames.size()) {
 				//i.instances.push_back(i.maker->make());
 			//}
-			if (in.frames.size() > 1 && i.instances.size() < 2) {
+			if (in.frames.size() > 1 && i.instances.size() < 2 && !i.instances[0]->isMemoryHeavy()) {
 				i.instances.push_back(i.maker->make());
 			}
 
 			for (size_t j=0; j<in.frames.size(); ++j) {
 				if (!in.hasFrame(j)) continue;
 				
-				auto *instance = i.instances[j&0x1];
+				int iix = (i.instances[0]->isMemoryHeavy()) ? 0 : j&0x1;
+				auto *instance = i.instances[iix];
 
 				if (instance->enabled()) {
 					try {