Implement basic SPIR-V texture sampling
Replaces VkDescriptorImageInfo with a more concrete
SampledImageDescriptor, which contains an sw::Texture that SamplerCore
uses.
The parameters can be looked up statically only because the
shaderSampledImageArrayDynamicIndexing feature is currently not
supported.
Bug b/129523279
Test: dEQP-VK.texture.filtering.2d.formats.r8g8b8a8_unorm.nearest
Change-Id: I619b5b48b2b4552d9bfc70b087df2c31eabb49ea
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28434
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/Vulkan/VkSampler.hpp b/src/Vulkan/VkSampler.hpp
index fc62389..5fa0b4e 100644
--- a/src/Vulkan/VkSampler.hpp
+++ b/src/Vulkan/VkSampler.hpp
@@ -49,22 +49,21 @@
return 0;
}
-private:
- VkFilter magFilter = VK_FILTER_NEAREST;
- VkFilter minFilter = VK_FILTER_NEAREST;
- VkSamplerMipmapMode mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST;
- VkSamplerAddressMode addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT;
- VkSamplerAddressMode addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT;
- VkSamplerAddressMode addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
- float mipLodBias = 0.0f;
- VkBool32 anisotropyEnable = VK_FALSE;
- float maxAnisotropy = 0.0f;
- VkBool32 compareEnable = VK_FALSE;
- VkCompareOp compareOp = VK_COMPARE_OP_NEVER;
- float minLod = 0.0f;
- float maxLod = 0.0f;
- VkBorderColor borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
- VkBool32 unnormalizedCoordinates = VK_FALSE;
+ const VkFilter magFilter = VK_FILTER_NEAREST;
+ const VkFilter minFilter = VK_FILTER_NEAREST;
+ const VkSamplerMipmapMode mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST;
+ const VkSamplerAddressMode addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT;
+ const VkSamplerAddressMode addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT;
+ const VkSamplerAddressMode addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
+ const float mipLodBias = 0.0f;
+ const VkBool32 anisotropyEnable = VK_FALSE;
+ const float maxAnisotropy = 0.0f;
+ const VkBool32 compareEnable = VK_FALSE;
+ const VkCompareOp compareOp = VK_COMPARE_OP_NEVER;
+ const float minLod = 0.0f;
+ const float maxLod = 0.0f;
+ const VkBorderColor borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
+ const VkBool32 unnormalizedCoordinates = VK_FALSE;
};
static inline Sampler* Cast(VkSampler object)