Implement VK_EXT_custom_border_color

This implementation uses the custom border color as "baked" state,
instead of data stored in the descriptor. This is justified by the
assumption that only few custom border colors will be used in practice.
maxSamplerAllocationCount and maxCustomBorderColorSamplers are both
set to 4000, like many other implementations currently:
https://vulkan.gpuinfo.org/displayextensionproperty.php?name=maxCustomBorderColorSamplers

Note that infinity is deemed a valid border component value, and Reactor
intentionally asserts when trying to initialize a Float constant with
infinity, so we bit-cast to int in C++.

Bug: b/151215666
Bug: angleproject:6200
Tests: dEQP-VK.*clamp_to_border_custom*
Change-Id: I22608a80f50194bbac66cf515b0a9249b67b5f00
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/54469
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Sean Risser <srisser@google.com>
Commit-Queue: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Vulkan/VkConfig.hpp b/src/Vulkan/VkConfig.hpp
index ee850e3..9317549 100644
--- a/src/Vulkan/VkConfig.hpp
+++ b/src/Vulkan/VkConfig.hpp
@@ -80,6 +80,8 @@
 	MAX_POINT_SIZE = 1023,
 };
 
+constexpr int MAX_SAMPLER_ALLOCATION_COUNT = 4000;
+
 constexpr int SUBPIXEL_PRECISION_BITS = 4;
 constexpr float SUBPIXEL_PRECISION_FACTOR = static_cast<float>(1 << SUBPIXEL_PRECISION_BITS);
 constexpr int SUBPIXEL_PRECISION_MASK = 0xFFFFFFFF >> (32 - SUBPIXEL_PRECISION_BITS);