Tidy around sampler handling

Bug: b/134584057
Change-Id: I1574c9017a5d48f69d14732874a8c8b814056aec
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/34248
Tested-by: Chris Forbes <chrisforbes@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Device/Sampler.hpp b/src/Device/Sampler.hpp
index 9d80a3b..b348a80 100644
--- a/src/Device/Sampler.hpp
+++ b/src/Device/Sampler.hpp
@@ -52,26 +52,6 @@
 		float4 depth;
 	};
 
-	enum SamplerType
-	{
-		SAMPLER_PIXEL,
-		SAMPLER_VERTEX
-	};
-
-	enum TextureType ENUM_UNDERLYING_TYPE_UNSIGNED_INT
-	{
-		TEXTURE_NULL,       // TODO(b/129523279): Eliminate
-		TEXTURE_1D,
-		TEXTURE_2D,
-		TEXTURE_3D,
-		TEXTURE_CUBE,
-		TEXTURE_1D_ARRAY,   // Treated as 2D texture with second coordinate 0. TODO(b/134669567)
-		TEXTURE_2D_ARRAY,
-		TEXTURE_CUBE_ARRAY,
-
-		TEXTURE_LAST = TEXTURE_CUBE_ARRAY
-	};
-
 	enum FilterType ENUM_UNDERLYING_TYPE_UNSIGNED_INT
 	{
 		FILTER_POINT,
@@ -109,36 +89,9 @@
 		ADDRESSING_LAST = ADDRESSING_TEXELFETCH
 	};
 
-	enum CompareFunc ENUM_UNDERLYING_TYPE_UNSIGNED_INT
-	{
-		COMPARE_BYPASS,
-		COMPARE_LESSEQUAL,
-		COMPARE_GREATEREQUAL,
-		COMPARE_LESS,
-		COMPARE_GREATER,
-		COMPARE_EQUAL,
-		COMPARE_NOTEQUAL,
-		COMPARE_ALWAYS,
-		COMPARE_NEVER,
-
-		COMPARE_LAST = COMPARE_NEVER
-	};
-
-	enum SwizzleType ENUM_UNDERLYING_TYPE_UNSIGNED_INT
-	{
-		SWIZZLE_RED,
-		SWIZZLE_GREEN,
-		SWIZZLE_BLUE,
-		SWIZZLE_ALPHA,
-		SWIZZLE_ZERO,
-		SWIZZLE_ONE,
-
-		SWIZZLE_LAST = SWIZZLE_ONE
-	};
-
 	struct Sampler
 	{
-		TextureType textureType;
+		VkImageViewType textureType;
 		vk::Format textureFormat;
 		FilterType textureFilter;
 		AddressingMode addressingModeU;
diff --git a/src/Pipeline/SamplerCore.cpp b/src/Pipeline/SamplerCore.cpp
index d832bcb..3c2dc9a 100644
--- a/src/Pipeline/SamplerCore.cpp
+++ b/src/Pipeline/SamplerCore.cpp
@@ -68,7 +68,7 @@
 		Float4 vDelta;
 		Float4 M;  // Major axis
 
-		if(state.textureType == TEXTURE_CUBE)
+		if(state.textureType == VK_IMAGE_VIEW_TYPE_CUBE)
 		{
 			Int4 face = cubeFace(uuuu, vvvv, u, v, w, M);
 			wwww = As<Float4>(face);
@@ -76,9 +76,9 @@
 
 		if(function == Implicit || function == Bias || function == Grad || function == Query)
 		{
-			if(state.textureType != TEXTURE_3D)
+			if(state.textureType != VK_IMAGE_VIEW_TYPE_3D)
 			{
-				if(state.textureType != TEXTURE_CUBE)
+				if(state.textureType != VK_IMAGE_VIEW_TYPE_CUBE)
 				{
 					computeLod(texture, sampler, lod, anisotropy, uDelta, vDelta, uuuu, vvvv, dsx, dsy, function);
 				}
@@ -446,7 +446,7 @@
 
 	Vector4s SamplerCore::sampleQuad(Pointer<Byte> &texture, Float4 &u, Float4 &v, Float4 &w, Vector4f &offset, Float &lod, bool secondLOD, SamplerFunction function)
 	{
-		if(state.textureType != TEXTURE_3D)
+		if(state.textureType != VK_IMAGE_VIEW_TYPE_3D)
 		{
 			return sampleQuad2D(texture, u, v, w, offset, lod, secondLOD, function);
 		}
@@ -867,7 +867,7 @@
 
 	Vector4f SamplerCore::sampleFloat(Pointer<Byte> &texture, Float4 &u, Float4 &v, Float4 &w, Float4 &q, Vector4f &offset, Float &lod, bool secondLOD, SamplerFunction function)
 	{
-		if(state.textureType != TEXTURE_3D)
+		if(state.textureType != VK_IMAGE_VIEW_TYPE_3D)
 		{
 			return sampleFloat2D(texture, u, v, w, q, offset, lod, secondLOD, function);
 		}
@@ -1288,7 +1288,7 @@
 
 		if(hasThirdCoordinate())
 		{
-			if(state.textureType == TEXTURE_3D)
+			if(state.textureType == VK_IMAGE_VIEW_TYPE_3D)
 			{
 				if(!texelFetch)
 				{
@@ -2361,9 +2361,9 @@
 
 	bool SamplerCore::hasThirdCoordinate() const
 	{
-		return (state.textureType == TEXTURE_3D) ||
-		       (state.textureType == TEXTURE_2D_ARRAY) ||
-		       (state.textureType == TEXTURE_1D_ARRAY);  // Treated as 2D texture with second coordinate 0. TODO(b/134669567)
+		return (state.textureType == VK_IMAGE_VIEW_TYPE_3D) ||
+		       (state.textureType == VK_IMAGE_VIEW_TYPE_2D_ARRAY) ||
+		       (state.textureType == VK_IMAGE_VIEW_TYPE_1D_ARRAY);  // Treated as 2D texture with second coordinate 0. TODO(b/134669567)
 	}
 
 	bool SamplerCore::has16bitTextureFormat() const
diff --git a/src/Pipeline/SpirvShader.hpp b/src/Pipeline/SpirvShader.hpp
index 1066da5..2c78203 100644
--- a/src/Pipeline/SpirvShader.hpp
+++ b/src/Pipeline/SpirvShader.hpp
@@ -1235,7 +1235,6 @@
 		static std::shared_ptr<rr::Routine> emitSamplerRoutine(ImageInstruction instruction, const Sampler &samplerState);
 
 		// TODO(b/129523279): Eliminate conversion and use vk::Sampler members directly.
-		static sw::TextureType convertTextureType(VkImageViewType imageViewType);
 		static sw::FilterType convertFilterMode(const vk::Sampler *sampler);
 		static sw::MipmapType convertMipmapMode(const vk::Sampler *sampler);
 		static sw::AddressingMode convertAddressingMode(int coordinateIndex, VkSamplerAddressMode addressMode, VkImageViewType imageViewType);
diff --git a/src/Pipeline/SpirvShaderSampling.cpp b/src/Pipeline/SpirvShaderSampling.cpp
index 6a232fd..9013bf6 100644
--- a/src/Pipeline/SpirvShaderSampling.cpp
+++ b/src/Pipeline/SpirvShaderSampling.cpp
@@ -57,7 +57,7 @@
 	auto type = imageDescriptor->type;
 
 	Sampler samplerState = {};
-	samplerState.textureType = convertTextureType(type);
+	samplerState.textureType = type;
 	samplerState.textureFormat = imageDescriptor->format;
 	samplerState.textureFilter = (instruction.samplerMethod == Gather) ? FILTER_GATHER : convertFilterMode(sampler);
 	samplerState.border = sampler->borderColor;
@@ -128,11 +128,11 @@
 
 		// TODO(b/134669567): Currently 1D textures are treated as 2D by setting the second coordinate to 0.
 		// Implement optimized 1D sampling.
-		if(samplerState.textureType == TEXTURE_1D)
+		if(samplerState.textureType == VK_IMAGE_VIEW_TYPE_1D)
 		{
 			uvw[1] = SIMD::Float(0);
 		}
-		else if(samplerState.textureType == TEXTURE_1D_ARRAY)
+		else if(samplerState.textureType == VK_IMAGE_VIEW_TYPE_1D_ARRAY)
 		{
 			uvw[1] = SIMD::Float(0);
 			uvw[2] = in[1];  // Move 1D layer coordinate to 2D layer coordinate index.
@@ -185,7 +185,7 @@
 				dPdy.z = Pointer<Float>(&dsy.z)[i];
 
 				// 1D textures are treated as 2D texture with second coordinate 0, so we also need to zero out the second grad component. TODO(b/134669567)
-				if(samplerState.textureType == TEXTURE_1D || samplerState.textureType == TEXTURE_1D_ARRAY)
+				if(samplerState.textureType == VK_IMAGE_VIEW_TYPE_1D || samplerState.textureType == VK_IMAGE_VIEW_TYPE_1D_ARRAY)
 				{
 					dPdx.y = Float(0.0f);
 					dPdy.y = Float(0.0f);
@@ -215,23 +215,6 @@
 	return function("sampler");
 }
 
-sw::TextureType SpirvShader::convertTextureType(VkImageViewType imageViewType)
-{
-	switch(imageViewType)
-	{
-	case VK_IMAGE_VIEW_TYPE_1D:         return TEXTURE_1D;
-	case VK_IMAGE_VIEW_TYPE_2D:         return TEXTURE_2D;
-	case VK_IMAGE_VIEW_TYPE_3D:         return TEXTURE_3D;
-	case VK_IMAGE_VIEW_TYPE_CUBE:       return TEXTURE_CUBE;
-	case VK_IMAGE_VIEW_TYPE_1D_ARRAY:   return TEXTURE_1D_ARRAY;
-	case VK_IMAGE_VIEW_TYPE_2D_ARRAY:   return TEXTURE_2D_ARRAY;
-//	case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY: return TEXTURE_CUBE_ARRAY;
-	default:
-		UNIMPLEMENTED("imageViewType %d", imageViewType);
-		return TEXTURE_2D;
-	}
-}
-
 sw::FilterType SpirvShader::convertFilterMode(const vk::Sampler *sampler)
 {
 	switch(sampler->magFilter)