Enable samplerAnisotropy

- Enabled the feature
- Removed restriction from SpirvShader::getImageSampler()
- Added support for it in SpirvShader::convertFilterMode()

The rest of the logic to compute anisotropic filtering was
still there.

Tests: dEQP-VK.texture.filtering_anisotropy.*
Bug: b/146438763
Change-Id: I2a36d00b6da88091202abe6d4f4f7f9b49507eb3
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/39668
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/Pipeline/SpirvShaderSampling.cpp b/src/Pipeline/SpirvShaderSampling.cpp
index 45deba6..fa07d73 100644
--- a/src/Pipeline/SpirvShaderSampling.cpp
+++ b/src/Pipeline/SpirvShaderSampling.cpp
@@ -90,11 +90,6 @@
 			samplerState.studioSwing = (sampler->ycbcrConversion->ycbcrRange == VK_SAMPLER_YCBCR_RANGE_ITU_NARROW);
 			samplerState.swappedChroma = (sampler->ycbcrConversion->components.r != VK_COMPONENT_SWIZZLE_R);
 		}
-
-		if(sampler->anisotropyEnable != VK_FALSE)
-		{
-			UNSUPPORTED("anisotropyEnable");
-		}
 	}
 
 	routine = emitSamplerRoutine(instruction, samplerState);
@@ -229,6 +224,11 @@
 
 sw::FilterType SpirvShader::convertFilterMode(const vk::Sampler *sampler)
 {
+	if(sampler->anisotropyEnable == VK_TRUE)
+	{
+		return FILTER_ANISOTROPIC;
+	}
+
 	switch(sampler->magFilter)
 	{
 		case VK_FILTER_NEAREST:
diff --git a/src/Vulkan/VkPhysicalDevice.cpp b/src/Vulkan/VkPhysicalDevice.cpp
index 14b608e..dce1c09 100644
--- a/src/Vulkan/VkPhysicalDevice.cpp
+++ b/src/Vulkan/VkPhysicalDevice.cpp
@@ -64,7 +64,7 @@
 		VK_FALSE,  // largePoints
 		VK_FALSE,  // alphaToOne
 		VK_FALSE,  // multiViewport
-		VK_FALSE,  // samplerAnisotropy
+		VK_TRUE,   // samplerAnisotropy
 		VK_TRUE,   // textureCompressionETC2
 		VK_FALSE,  // textureCompressionASTC_LDR
 		VK_FALSE,  // textureCompressionBC