From d7b405c6f8f469c1dca1a162d8437452c71fc1cd Mon Sep 17 00:00:00 2001
From: Thomas Harte <thomas.harte@gmail.com>
Date: Thu, 10 Sep 2020 13:20:40 -0400
Subject: [PATCH] Ensures direct luminance -> 'RGB' video doesn't go down the
 composition pipeline.

---
 .../Clock Signal/ScanTarget/CSScanTarget.mm   | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

diff --git a/OSBindings/Mac/Clock Signal/ScanTarget/CSScanTarget.mm b/OSBindings/Mac/Clock Signal/ScanTarget/CSScanTarget.mm
index 1f64ae8e8..cef6f5e57 100644
--- a/OSBindings/Mac/Clock Signal/ScanTarget/CSScanTarget.mm	
+++ b/OSBindings/Mac/Clock Signal/ScanTarget/CSScanTarget.mm	
@@ -598,15 +598,10 @@ using BufferingScanTarget = Outputs::Display::BufferingScanTarget;
 	id<MTLLibrary> library = [_view.device newDefaultLibrary];
 	MTLRenderPipelineDescriptor *pipelineDescriptor = [[MTLRenderPipelineDescriptor alloc] init];
 
-	// Occasions when the composition buffer isn't required are slender:
-	//
-	//	(i) input and output are both RGB; or
-	//	(i) output is composite monochrome.
+	// Occasions when the composition buffer isn't required are slender: the output must be neither RGB nor composite monochrome.
 	const bool isComposition =
-		(
-			(natural_display_type_for_data_type(modals.input_data_type) != Outputs::Display::DisplayType::RGB) ||
-			(modals.display_type != Outputs::Display::DisplayType::RGB)
-		) && modals.display_type != Outputs::Display::DisplayType::CompositeMonochrome;
+		modals.display_type != Outputs::Display::DisplayType::RGB &&
+		modals.display_type != Outputs::Display::DisplayType::CompositeMonochrome;
 	const bool isSVideoOutput = modals.display_type == Outputs::Display::DisplayType::SVideo;
 
 	if(!isComposition) {
@@ -632,12 +627,12 @@ using BufferingScanTarget = Outputs::Display::BufferingScanTarget;
 	};
 	const FragmentSamplerDictionary samplerDictionary[8] = {
 		// Composite formats.
-		{@"compositeSampleLuminance1", 				nil,	@"sampleLuminance1",				@"sampleLuminance1"},
-		{@"compositeSampleLuminance8", 				nil,	@"sampleLuminance8", 				@"sampleLuminance8WithGamma"},
-		{@"compositeSamplePhaseLinkedLuminance8", 	nil,	@"samplePhaseLinkedLuminance8",		@"samplePhaseLinkedLuminance8WithGamma"},
+		{@"compositeSampleLuminance1", 				nil,	@"sampleLuminance1",				@"sampleLuminance1",						@"sampleLuminance1",				@"sampleLuminance1"},
+		{@"compositeSampleLuminance8", 				nil,	@"sampleLuminance8", 				@"sampleLuminance8WithGamma",				@"sampleLuminance8", 				@"sampleLuminance8WithGamma"},
+		{@"compositeSamplePhaseLinkedLuminance8", 	nil,	@"samplePhaseLinkedLuminance8",		@"samplePhaseLinkedLuminance8WithGamma",	@"samplePhaseLinkedLuminance8",		@"samplePhaseLinkedLuminance8WithGamma"},
 
 		// S-Video formats.
-		{@"compositeSampleLuminance8Phase8", @"sampleLuminance8Phase8", @"directCompositeSampleLuminance8Phase8", @"directCompositeSampleLuminance8Phase8WithGamma"},
+		{@"compositeSampleLuminance8Phase8", @"sampleLuminance8Phase8", @"directCompositeSampleLuminance8Phase8", @"directCompositeSampleLuminance8Phase8WithGamma", @"directCompositeSampleLuminance8Phase8", @"directCompositeSampleLuminance8Phase8WithGamma"},
 
 		// RGB formats.
 		{@"compositeSampleRed1Green1Blue1", @"svideoSampleRed1Green1Blue1", @"directCompositeSampleRed1Green1Blue1", @"directCompositeSampleRed1Green1Blue1WithGamma", @"sampleRed1Green1Blue1", @"sampleRed1Green1Blue1"},