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