Revert "Use int when possible to calculate atlas indices in shaders."
This reverts commit 999ec57291dc7cf1d8e3a745627670e6cadc1c12.
Reason for revert: Causing issues with NexusPlayer Vulkan.
Original change's description:
> Use int when possible to calculate atlas indices in shaders.
>
> On certain iOS devices half has a mantissa of only 10 bits, which is not
> enough to perform the floating point trickery to get the lower bits
> out of the "texture coordinates". Instead we use int if available, and
> float if not available.
>
> Also re-enables multitexturing for iOS and adds a sample which
> stresses the issue.
>
> Bug: skia:7285
> Change-Id: I365532c7cbbcca7c7753af209bef46e05be49e11
> Reviewed-on: https://skia-review.googlesource.com/71181
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
TBR=jvanverth@google.com,bsalomon@google.com,robertphillips@google.com
Change-Id: I82801a73a2a8067588049b213f010ff25f4014f3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7285
Reviewed-on: https://skia-review.googlesource.com/74001
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index 69acd15..68cf42e 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -211,12 +211,20 @@
new GrDrawingManager(this, prcOptions, atlasTextContextOptions, &fSingleOwner));
GrDrawOpAtlas::AllowMultitexturing allowMultitexturing;
- if (GrContextOptions::Enable::kNo == options.fAllowMultipleGlyphCacheTextures ||
- // multitexturing supported only if range can represent the index + texcoords fully
- !(fCaps->shaderCaps()->floatIs32Bits() || fCaps->shaderCaps()->integerSupport())) {
- allowMultitexturing = GrDrawOpAtlas::AllowMultitexturing::kNo;
- } else {
- allowMultitexturing = GrDrawOpAtlas::AllowMultitexturing::kYes;
+ switch (options.fAllowMultipleGlyphCacheTextures) {
+ case GrContextOptions::Enable::kDefault:
+#ifdef SK_BUILD_FOR_IOS
+ allowMultitexturing = GrDrawOpAtlas::AllowMultitexturing::kNo;
+#else
+ allowMultitexturing = GrDrawOpAtlas::AllowMultitexturing::kYes;
+#endif
+ break;
+ case GrContextOptions::Enable::kNo:
+ allowMultitexturing = GrDrawOpAtlas::AllowMultitexturing::kNo;
+ break;
+ case GrContextOptions::Enable::kYes:
+ allowMultitexturing = GrDrawOpAtlas::AllowMultitexturing::kYes;
+ break;
}
fAtlasGlyphCache = new GrAtlasGlyphCache(this, options.fGlyphCacheTextureMaximumBytes,
allowMultitexturing);