Default to [X,0,0,one] for undefined texture components

Vulkan 1.1 section 15.3.5 table 24 specifies "Conversion to RGBA"
to use 'one' as the last component when it's not present in the format,
where "one = 1.0f for floating-point formats and depth aspects, and
one = 1 for integer formats and stencil aspects", and 0 for the other
missing components.

Bug b/129523279

Change-Id: I9e4b0b9a8d1d696e51fc76b6554045835966c4b0
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/29274
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Device/Context.cpp b/src/Device/Context.cpp
index 6af0540..8d460c8 100644
--- a/src/Device/Context.cpp
+++ b/src/Device/Context.cpp
@@ -28,7 +28,6 @@
 
 	bool booleanFaceRegister = false;
 	bool fullPixelPositionRegister = false;
-	bool colorsDefaultToZero = false;
 
 	bool forceWindowed = false;
 	bool quadLayoutEnabled = false;
diff --git a/src/Device/Renderer.cpp b/src/Device/Renderer.cpp
index 6d7d340..5034f36 100644
--- a/src/Device/Renderer.cpp
+++ b/src/Device/Renderer.cpp
@@ -47,7 +47,6 @@
 {
 	extern bool booleanFaceRegister;
 	extern bool fullPixelPositionRegister;
-	extern bool colorsDefaultToZero;
 
 	extern bool forceWindowed;
 	extern bool postBlendSRGB;
@@ -78,7 +77,6 @@
 		{
 			sw::booleanFaceRegister = conventions.booleanFaceRegister;
 			sw::fullPixelPositionRegister = conventions.fullPixelPositionRegister;
-			sw::colorsDefaultToZero = conventions.colorsDefaultToZero;
 			sw::exactColorRounding = exactColorRounding;
 			initialized = true;
 		}
diff --git a/src/Device/Renderer.hpp b/src/Device/Renderer.hpp
index 32301f7..a10187a 100644
--- a/src/Device/Renderer.hpp
+++ b/src/Device/Renderer.hpp
@@ -59,13 +59,12 @@
 	extern TranscendentalPrecision rsqPrecision;
 	extern bool perspectiveCorrection;
 
-	struct Conventions
+	struct Conventions  // FIXME(capn): Eliminate. Only support Vulkan 1.1 conventions.
 	{
 		bool halfIntegerCoordinates;
 		bool symmetricNormalizedDepth;
 		bool booleanFaceRegister;
 		bool fullPixelPositionRegister;
-		bool colorsDefaultToZero;
 	};
 
 	static const Conventions OpenGL =
@@ -74,7 +73,6 @@
 		true,    // symmetricNormalizedDepth
 		true,    // booleanFaceRegister
 		true,    // fullPixelPositionRegister
-		true,    // colorsDefaultToZero
 	};
 
 	static const Conventions Direct3D =
@@ -83,7 +81,6 @@
 		false,   // symmetricNormalizedDepth
 		false,   // booleanFaceRegister
 		false,   // fullPixelPositionRegister
-		false,   // colorsDefaultToZero
 	};
 
 	struct DrawData
diff --git a/src/Pipeline/SamplerCore.cpp b/src/Pipeline/SamplerCore.cpp
index af19a2a..7469004 100644
--- a/src/Pipeline/SamplerCore.cpp
+++ b/src/Pipeline/SamplerCore.cpp
@@ -36,8 +36,6 @@
 
 namespace sw
 {
-	extern bool colorsDefaultToZero;
-
 	SamplerCore::SamplerCore(Pointer<Byte> &constants, const Sampler::State &state) : constants(constants), state(state)
 	{
 	}
@@ -188,7 +186,6 @@
 		}
 
 		int componentCount = textureComponentCount();
-		float defaultColorValue = colorsDefaultToZero ? 0.0f : 1.0f;
 
 		if(state.textureFilter != FILTER_GATHER)
 		{
@@ -227,14 +224,14 @@
 			case VK_FORMAT_R8G8B8A8_UNORM:
 			case VK_FORMAT_R8G8B8A8_SRGB:
 			case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
-				if(componentCount < 2) c.y = Float4(defaultColorValue);
-				if(componentCount < 3) c.z = Float4(defaultColorValue);
+				if(componentCount < 2) c.y = Float4(0.0f);
+				if(componentCount < 3) c.z = Float4(0.0f);
 				if(componentCount < 4) c.w = Float4(1.0f);
 				break;
 			case VK_FORMAT_R32_SFLOAT:
-				c.y = Float4(defaultColorValue);
+				c.y = Float4(0.0f);
 			case VK_FORMAT_R32G32_SFLOAT:
-				c.z = Float4(defaultColorValue);
+				c.z = Float4(0.0f);
 				c.w = Float4(1.0f);
 			case VK_FORMAT_R32G32B32A32_SFLOAT:
 				break;