Increase subPixelPrecisionBits from 4 to 8
This is a requirement of the Vulkan Roadmap 2022 profile. We've long
kept it at 4 sub-pixel precision bits because a significant number of
mobile devices report this number.
Defining SWIFTSHADER_LEGACY_PRECISION=true keeps it at 4, which is
currently the case for GN builds to not affect Chromium golden images.
Test: dEQP-VK.api.info.profiles.roadmap_2022
Bug: b/226657516
Change-Id: I261362c5d1dc12c3a4e600a9acb7d5880e456a9b
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/69669
Tested-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/Device/BUILD.gn b/src/Device/BUILD.gn
index 4497e3b..c1ae1ff 100644
--- a/src/Device/BUILD.gn
+++ b/src/Device/BUILD.gn
@@ -70,6 +70,7 @@
defines = [
"SWIFTSHADER_ENABLE_ASTC", # TODO(b/150130101)
+ "SWIFTSHADER_LEGACY_PRECISION=true", # TODO(b/226657516)
]
deps = [
diff --git a/src/Vulkan/VkConfig.hpp b/src/Vulkan/VkConfig.hpp
index 4884986..4e2c023 100644
--- a/src/Vulkan/VkConfig.hpp
+++ b/src/Vulkan/VkConfig.hpp
@@ -20,6 +20,10 @@
#include "Vulkan/VulkanPlatform.hpp"
#include "spirv-tools/libspirv.h"
+#ifndef SWIFTSHADER_LEGACY_PRECISION
+# define SWIFTSHADER_LEGACY_PRECISION false
+#endif
+
namespace vk {
// Note: Constant array initialization requires a string literal.
@@ -90,7 +94,7 @@
constexpr int MAX_SAMPLER_ALLOCATION_COUNT = 4000;
-constexpr int SUBPIXEL_PRECISION_BITS = 4;
+constexpr int SUBPIXEL_PRECISION_BITS = SWIFTSHADER_LEGACY_PRECISION ? 4 : 8;
constexpr float SUBPIXEL_PRECISION_FACTOR = static_cast<float>(1 << SUBPIXEL_PRECISION_BITS);
constexpr int SUBPIXEL_PRECISION_MASK = 0xFFFFFFFF >> (32 - SUBPIXEL_PRECISION_BITS);