aboutsummaryrefslogtreecommitdiff
path: root/glslang/Include/Types.h
diff options
context:
space:
mode:
authorJohn Kessenich <cepheus@frii.com>2019-08-06 07:00:58 -0600
committerJohn Kessenich <cepheus@frii.com>2019-08-20 23:21:55 -0600
commita28f7a75d1aee8d1c89f9c237400278603e8ab9f (patch)
tree808dc6f84c7960623868ca660edd459c4b406a37 /glslang/Include/Types.h
parentb6d3ee5acaa960664fbd3700e871a2026152f7f1 (diff)
downloadglslang-a28f7a75d1aee8d1c89f9c237400278603e8ab9f.tar.gz
Web: Generalize _EXTENSIONS* in SPIR-V back-end.
About 50 fewer #ifdefs. About 14K smaller. Note, the base size is ill-defined due to optimizer settings (size vs. performance), compression, and target architecture. Some recent %'s are accidentally reported as 3X the real savings. Early %'s were accurate. What matters though is that each step got worthwhile gains, and what the final size ends up being.
Diffstat (limited to 'glslang/Include/Types.h')
-rw-r--r--glslang/Include/Types.h36
1 files changed, 17 insertions, 19 deletions
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index f104f490..a9e4617b 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -442,9 +442,11 @@ public:
{
precision = EpqNone;
invariant = false;
- noContraction = false;
makeTemporary();
declaredBuiltIn = EbvNone;
+#ifndef GLSLANG_WEB
+ noContraction = false;
+#endif
}
// drop qualifiers that don't belong in a temporary variable
@@ -517,11 +519,11 @@ public:
static_assert(EbvLast < 256, "need to increase size of TBuiltInVariable bitfields!");
TPrecisionQualifier precision : 3;
bool invariant : 1; // require canonical treatment for cross-shader invariance
- bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects
bool centroid : 1;
bool smooth : 1;
bool flat : 1;
#ifndef GLSLANG_WEB
+ bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects
bool nopersp : 1;
bool explicitInterp : 1;
bool pervertexNV : 1;
@@ -552,40 +554,36 @@ public:
{
return subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly;
}
- bool bufferReferenceNeedsVulkanMemoryModel() const
- {
+
#ifdef GLSLANG_WEB
- return false;
+ bool bufferReferenceNeedsVulkanMemoryModel() const { return false; }
+ bool isInterpolation() const
+ {
+ return flat || smooth;
+ }
+ bool isExplicitInterpolation() const { return false; }
+ bool isAuxiliary() const { return centroid; }
+ bool isNoContraction() const { return false; }
#else
+ bool bufferReferenceNeedsVulkanMemoryModel() const
+ {
// include qualifiers that map to load/store availability/visibility/nonprivate memory access operands
return subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || nonprivate;
-#endif
}
-
bool isInterpolation() const
{
-#ifndef GLSLANG_WEB
return flat || smooth || nopersp || explicitInterp;
-#else
- return flat || smooth;
-#endif
}
-
-#ifndef GLSLANG_WEB
bool isExplicitInterpolation() const
{
return explicitInterp;
}
-#endif
-
bool isAuxiliary() const
{
-#ifndef GLSLANG_WEB
return centroid || patch || sample || pervertexNV;
-#else
- return centroid;
-#endif
}
+ bool isNoContraction() const { return noContraction; }
+#endif
bool isPipeInput() const
{