1. 14 Jul, 2020 2 commits
  2. 13 Jul, 2020 5 commits
  3. 12 Jul, 2020 4 commits
  4. 11 Jul, 2020 1 commit
  5. 10 Jul, 2020 5 commits
  6. 09 Jul, 2020 2 commits
    • Generate build information from CHANGES.md · fbe9a23b
      Ben Clayton authored
      This PR significantly reworks the way glslang is versioned.
      
      Instead of committing changes to the `GLSLANG_MINOR_VERSION` define in
      `glslang/Public/ShaderLang.h`, and using `make-revision` to generate
      `GLSLANG_PATCH_LEVEL` in `glslang/Include/revision.h`, all version
      information is now derived from the new `CHANGES.md` file.
      
      `CHANGES.md` acts as the single source of truth for glslang version
      information, along with a convenient place to put all release notes for
      each notable change made.
      
      `CHANGES.md` is parsed using the new `build_info.py` python script.
      This script can read basic template files to produce new source files,
      which it does to read the new `build_info.h.tmpl` to generate (at build
      time) a glslang private header at
      `<build-dir>/include/glslang/build_info.h`.
      I've written generators for each of the CMake, Bazel, gn, and
      `Android.mk` build scripts.
      
      The new version code conforms to the Semantic Versioning 2.0 spec.
      
      This new version is also used by the CMake rules to produce versioned
      shared objects, including a major-versioned SONAME.
      
      New APIs:
      ---------
      
      * `glslang::GetVersion()` returns a `Version` struct with the version
        major, minor, patch and flavor.
      
      Breaking API changes:
      ---------------------
      
      * The public defines `GLSLANG_MINOR_VERSION` and `GLSLANG_PATCH_LEVEL`
        have been entirely removed.
      * `glslang/Public/ShaderLang.h` and `glslang/Include/revision.h` have
        been deleted.
      * Instead, `<build-dir>/include/glslang/build_info.h` is created in
        the build directory, and `<build-dir>/include` is a CMake `PUBLIC`
        (dependee-inherited) include directory for the glslang targets.
      * `<build-dir>/include/glslang/build_info.h` contains the following
         new #defines:
         `GLSLANG_VERSION_MAJOR`, `GLSLANG_VERSION_MINOR`,
         `GLSLANG_VERSION_PATCH`, `GLSLANG_VERSION_FLAVOR`,
         `GLSLANG_VERSION_GREATER_THAN(major, minor, patch)`,
         `GLSLANG_VERSION_GREATER_OR_EQUAL_TO(major, minor, patch)`,
         `GLSLANG_VERSION_LESS_THAN(major, minor, patch)`,
         `GLSLANG_VERSION_LESS_OR_EQUAL_TO(major, minor, patch)`
      *  The CMake install output directory contains a copy of
         `build_info.h` at: `include/glslang/build_info.h`
      *  Python3 is now always required to build glslang (likely always
         required for transitive dependency builds).
    • Merge pull request #2327 from ben-clayton/fix-pch · 5aaa0c2b
      John Kessenich authored
      Use CMake's builtin functionality for pre-compiled headers
  7. 08 Jul, 2020 2 commits
    • Customize glslang.y to GLSLANG_ANGLE · 59fb2d63
      Shahbaz Youssefi authored
      glslang.y is specialized to remove what is not supported or won't be
      supported by ANGLE.
      
      This change shaves about 125KB off of ANGLE's binary size with minor
      improvement to the cost of SetupBuiltinSymbolTable.
      Signed-off-by: 's avatarShahbaz Youssefi <ShabbyX@gmail.com>
    • Use GLSLANG_ANGLE to strip features to what ANGLE requires · 8c49d15f
      Shahbaz Youssefi authored
      This change strips a few features similar to GLSLANG_WEB but doesn't
      remove every detail like the latter.  It also hardcodes profile/version
      to core/450.
      
      In particular, TBuiltIns::initialize is specialized to remove most of
      what is not supported or won't be supported by ANGLE.  The result of
      this function is parsed with TParseContext::parseShaderStrings which is
      a performance bottleneck.
      
      This change shaves about 300KB off of ANGLE's binary size and reduces
      the cost of SetupBuiltinSymbolTable to nearly a sixth.
      Signed-off-by: 's avatarShahbaz Youssefi <ShabbyX@gmail.com>
  8. 07 Jul, 2020 8 commits
  9. 06 Jul, 2020 3 commits
  10. 05 Jul, 2020 3 commits
  11. 04 Jul, 2020 3 commits
  12. 03 Jul, 2020 2 commits
    • Add GLSLANG_BUILD_PIC CMake flag · 1125f1b2
      Ben Clayton authored
      Enables `-fPIC` compiler flag even when building statically.
      This is helpful for statically linking a `glslang` target into a shared library.
      
      Simplifies the workarounds seen in google/shaderc#1093 to a `set(GLSLANG_BUILD_PIC 1)`.
    • gn: Optionally disable optimizations and HLSL · 8f8f1bc5
      Shahbaz Youssefi authored
      To reduce the binary size of ANGLE, a gn override is added
      (glslang_angle) which:
      
      - Controls whether ENABLE_OPT=1 is set
      - Customizes the build for the Vulkan backend of ANGLE.  As a first
        step, this removes HLSL functionality which together with no
        optimization shave ~2.5MB off of ANGLE's binary size.
      
      Upcoming changes will add a macro for GLSLANG_ANGLE similar to
      GLSLANG_WEB that will strip features from glslang to support only what
      ANGLE needs.
      Signed-off-by: 's avatarShahbaz Youssefi <ShabbyX@gmail.com>