diff options
author | John Kessenich <cepheus@frii.com> | 2019-08-06 07:00:58 -0600 |
---|---|---|
committer | John Kessenich <cepheus@frii.com> | 2019-08-20 23:21:55 -0600 |
commit | a28f7a75d1aee8d1c89f9c237400278603e8ab9f (patch) | |
tree | 808dc6f84c7960623868ca660edd459c4b406a37 /glslang/Include/Types.h | |
parent | b6d3ee5acaa960664fbd3700e871a2026152f7f1 (diff) | |
download | glslang-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.h | 36 |
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 { |