)]}'
{
  "commit": "2d7959b75ca88c24b70945300dc2e45e2f5a747c",
  "tree": "ab4d58a1d9dcd94690c00c4ded842c46e8709e2a",
  "parents": [
    "3c50399aa8b9e5c34b71b795f483dc32cb7ec50d"
  ],
  "author": {
    "name": "Steven Perron",
    "email": "stevenperron@google.com",
    "time": "Tue Jul 14 07:56:53 2026 -0700"
  },
  "committer": {
    "name": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Jul 14 07:56:53 2026 -0700"
  },
  "message": "[reader] Fix implicit flat for structs\n\nThe spir-v parser currently adds the flat decoration to vertex shader\noutputs that are integer scalar or vector. It does the same with struct\nmembers that have a location decoration on the member.\n\nHowever, it does not handle the case where the location decoration is on\nthe variable, and there is an integer inside the struct. This is fixed\nby adding the flat decoration to members of the variable\u0027s type when the\nvariable has a location decoration.\n\nWe do not handle the case of nested structs:\n\n```glsl\nstruct T { int i; };\nstruct S { T t; };\n\nlayout(location \u003d 0) in T in_var;\n\nThis is rejected by glslang, even if the straightforward translation to\nspir-v is valid. See\nhttps://github.com/KhronosGroup/Vulkan-Docs/issues/2770. In DXC, the\nmembers of the structs are separated into individual variables, so that\ncase will not come up either.\n\nFixes: 525572465\nChange-Id: Id62f89ca5fa5253cad85a582efac52bdb6acadc3\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/324015\nAuto-Submit: Steven Perron \u003cstevenperron@google.com\u003e\nReviewed-by: dan sinclair \u003cdsinclair@chromium.org\u003e\nCommit-Queue: Steven Perron \u003cstevenperron@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ea1b3f116c52dbb9fd4705e41440790e8ae1ae47",
      "old_mode": 33188,
      "old_path": "src/tint/lang/spirv/reader/parser/parser.cc",
      "new_id": "627286ed8fc821de21b033564c3999f8054fe930",
      "new_mode": 33188,
      "new_path": "src/tint/lang/spirv/reader/parser/parser.cc"
    },
    {
      "type": "modify",
      "old_id": "204d4f7246d753e7987246f3b004117b6bdbdc1a",
      "old_mode": 33188,
      "old_path": "src/tint/lang/spirv/reader/parser/struct_test.cc",
      "new_id": "be8ddf430d9aef1f8f0923a033b17ab9060a2c8b",
      "new_mode": 33188,
      "new_path": "src/tint/lang/spirv/reader/parser/struct_test.cc"
    }
  ]
}
