)]}'
{
  "commit": "3036e0903c8d1e4f8c9b64bb67ad86812cc027d5",
  "tree": "73978d503d5dc3ec54551b3096e1deabdee1c5d7",
  "parents": [
    "8f77e0bc6e73efa93d368c6000564e5061f7027c"
  ],
  "author": {
    "name": "Shahbaz Youssefi",
    "email": "syoussefi@chromium.org",
    "time": "Thu Jul 29 15:55:39 2021 -0400"
  },
  "committer": {
    "name": "Angle LUCI CQ",
    "email": "angle-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Jul 29 21:55:23 2021 +0000"
  },
  "message": "Vulkan: Direct SPIR-V Gen: Support the precise keyword\n\nThe precise keyword is different in GLSL in that it defines what\narithmetic operations _that have led to the value being assigned to a\nvariable_ should be done precisely (i.e. not \"contracted\").\n\nA tree traverser is implemented that detects precise access chains and\napplies precise-ness to the right hand side of assignment expressions to\nsaid access chains.  This is only done if the shader uses the precise\nkeyword in the first place.  The algorithm for this is inspired by the\nimplementation in glslang.\n\nThis change additionally:\n\n- Fixes parser to allow precise on function parameters\n- Fixes GLSL code generation to output precise on struct members and\n  function parameters.\n\nBug: angleproject:4889\nChange-Id: Ie3808c3c8c08da308e88af20f5f90379d9d14d47\nReviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3056369\nReviewed-by: Tim Van Patten \u003ctimvp@google.com\u003e\nReviewed-by: Jamie Madill \u003cjmadill@chromium.org\u003e\nCommit-Queue: Shahbaz Youssefi \u003csyoussefi@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b6979bfdbfff46d9d82ec6538719752e0829f635",
      "old_mode": 33188,
      "old_path": "scripts/code_generation_hashes/ANGLE_shader_translator.json",
      "new_id": "8d7dc8cf39c5891205ca9cf5f1321c14f6d1d600",
      "new_mode": 33188,
      "new_path": "scripts/code_generation_hashes/ANGLE_shader_translator.json"
    },
    {
      "type": "modify",
      "old_id": "b8a6c658f50fdf22e98c4aba59fb7a3afcd2da76",
      "old_mode": 33188,
      "old_path": "src/common/spirv/spirv_types.h",
      "new_id": "8323e946f6954bf1f3e5df6c44b7644ed29d2186",
      "new_mode": 33188,
      "new_path": "src/common/spirv/spirv_types.h"
    },
    {
      "type": "modify",
      "old_id": "88caf863937a479aac851972510d3d5500248032",
      "old_mode": 33188,
      "old_path": "src/compiler.gni",
      "new_id": "d1b4c988b7bc9a92570ea4d3247e960b2360545c",
      "new_mode": 33188,
      "new_path": "src/compiler.gni"
    },
    {
      "type": "modify",
      "old_id": "4e0fc0c0f3bf5a3c27f7f91ee3cc7d5515a8a220",
      "old_mode": 33188,
      "old_path": "src/compiler/translator/BuildSPIRV.cpp",
      "new_id": "7690aebcc7064be9fb17871ec2c71123afd524f5",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/BuildSPIRV.cpp"
    },
    {
      "type": "modify",
      "old_id": "1c100b48caeefdc8c6b80b08bede8705ecf6c788",
      "old_mode": 33188,
      "old_path": "src/compiler/translator/BuildSPIRV.h",
      "new_id": "39989053be611b768df1825e41c04753dbe2575f",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/BuildSPIRV.h"
    },
    {
      "type": "modify",
      "old_id": "ff5d228d8b718a57233b3fc30ff744ef32683e64",
      "old_mode": 33188,
      "old_path": "src/compiler/translator/Compiler.cpp",
      "new_id": "e61dd6ca0506eb5a6e2448154153fe8a625e8f7e",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/Compiler.cpp"
    },
    {
      "type": "modify",
      "old_id": "69afb5ca4aebffda33747daae35405669286a681",
      "old_mode": 33188,
      "old_path": "src/compiler/translator/Compiler.h",
      "new_id": "a2481bc52fc128c04f52d52834c673ff59cff587",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/Compiler.h"
    },
    {
      "type": "modify",
      "old_id": "2eb0c349d3b4eec324518cf825eaa6080367aa45",
      "old_mode": 33188,
      "old_path": "src/compiler/translator/OutputGLSLBase.cpp",
      "new_id": "8c6ac4039f702090b3b3ad7fc7be8972d470d673",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/OutputGLSLBase.cpp"
    },
    {
      "type": "modify",
      "old_id": "a663406006260e514bf86edbd1ba5ee38f88b461",
      "old_mode": 33188,
      "old_path": "src/compiler/translator/OutputSPIRV.cpp",
      "new_id": "600e4b5c498467b03a0e3baa22c34c51fedf2b80",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/OutputSPIRV.cpp"
    },
    {
      "type": "modify",
      "old_id": "499a8fb74de9a9945f431a1ff9d77a482257a623",
      "old_mode": 33188,
      "old_path": "src/compiler/translator/ParseContext.cpp",
      "new_id": "3421d8ede2230caa1cfb612e7d8f7f8de72f29f7",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/ParseContext.cpp"
    },
    {
      "type": "modify",
      "old_id": "da369a92e6c1e551a64e5cc68536484eed0805fe",
      "old_mode": 33188,
      "old_path": "src/compiler/translator/ParseContext.h",
      "new_id": "bc9f927aeecad552f6610f7638807d300f7c25e3",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/ParseContext.h"
    },
    {
      "type": "modify",
      "old_id": "f27c774c0841cafe12954c952b82d3bad3e90a3e",
      "old_mode": 33188,
      "old_path": "src/compiler/translator/QualifierTypes.cpp",
      "new_id": "0a928bad43f346abf6a8ff2be8a2ea9ce214312c",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/QualifierTypes.cpp"
    },
    {
      "type": "modify",
      "old_id": "2da4f864c125e8809d4e3685adb75301826816f4",
      "old_mode": 33188,
      "old_path": "src/compiler/translator/glslang.y",
      "new_id": "972ef945703d56b40db1fe63271ddfba2890c6c4",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/glslang.y"
    },
    {
      "type": "modify",
      "old_id": "864bd06d4a58b14d818cbbeb58bfa00fe51b58ad",
      "old_mode": 33188,
      "old_path": "src/compiler/translator/glslang_tab_autogen.cpp",
      "new_id": "c4ff87737c604d65a7a88282a031bdebb65677bf",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/glslang_tab_autogen.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "62cdc8480c3e5c85c85bff50be41d61f0d0abdd4",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/tree_util/FindPreciseNodes.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bf1d8a44c4e193b46a391af006164cfcccbac2d3",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/tree_util/FindPreciseNodes.h"
    },
    {
      "type": "modify",
      "old_id": "bb48625d0039b5a7f6b27583790cffacc992f4a1",
      "old_mode": 33188,
      "old_path": "src/compiler/translator/tree_util/ReplaceVariable.h",
      "new_id": "b99b4bd61365efd87e1526bf66c8a16466f65848",
      "new_mode": 33188,
      "new_path": "src/compiler/translator/tree_util/ReplaceVariable.h"
    },
    {
      "type": "modify",
      "old_id": "dde356dd553a73498ca2748ac650211a0ae6b386",
      "old_mode": 33188,
      "old_path": "src/libANGLE/renderer/glslang_wrapper_utils.cpp",
      "new_id": "0cc3daa9795176a451505af7f280670ea52b0f0b",
      "new_mode": 33188,
      "new_path": "src/libANGLE/renderer/glslang_wrapper_utils.cpp"
    },
    {
      "type": "modify",
      "old_id": "3ab249c1e5e3883fac8f60dd21556b55eff09955",
      "old_mode": 33188,
      "old_path": "src/tests/BUILD.gn",
      "new_id": "aa1a636dcfef6dad4a131bba33945c5c56fe1bbb",
      "new_mode": 33188,
      "new_path": "src/tests/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8418145b269e71f61133b6b1714f1546c9d50e76",
      "new_mode": 33188,
      "new_path": "src/tests/compiler_tests/Precise_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "e2d294d7b7f3a8f575aa27f71446953614491f53",
      "old_mode": 33188,
      "old_path": "src/tests/deqp_support/deqp_gles31_test_expectations.txt",
      "new_id": "de746f1b2d0982fe3cbec6b6f525290f594f6bef",
      "new_mode": 33188,
      "new_path": "src/tests/deqp_support/deqp_gles31_test_expectations.txt"
    }
  ]
}
