)]}'
{
  "commit": "6cb64651ccd4ee8a1002b1f31fa7fc85acb31253",
  "tree": "de6ee3859bc41f5d6b2cad10547386e24b23bd77",
  "parents": [
    "236bf64c0853d024b5739b16e1da294e3e672067"
  ],
  "author": {
    "name": "Guang-035",
    "email": "xuguang035@gmail.com",
    "time": "Wed May 27 11:02:11 2026 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue May 26 23:02:11 2026 -0400"
  },
  "message": "spirv-val: Allow ArrayStrideIdEXT on structs with descriptors (#6705)\n\nPer `SPV_EXT_descriptor_heap`, `ArrayStrideIdEXT` must be allowed on\narrays containing descriptor types. This includes composites that\ncontain descriptors, not only arrays whose element type is directly a\ndescriptor.\n\n**Root Cause**:\nThe validator only checked whether the array element type itself was a\ndescriptor type.\nFor\n[RuntimeArray\u003cMaterial\u003e](https://github.com/KhronosGroup/glslang/pull/4272/changes#diff-3142250076641bab8379f6637d480636190a14c9f31e0f7915cb4e76fc1d840e),\nthe direct element type is `OpTypeStruct`, so validation rejected it\neven though `Material` contains `OpTypeBufferEXT`.\n\n**Solution**:\nRecursively inspect the array element type when validating\n`ArrayStrideIdEXT`, so structs and other composites containing\ndescriptor types are accepted.\n\n**Test**:\nAdded a validator regression test covering a runtime array of a struct\ncontaining `OpTypeBufferEXT`.\n\nCo-authored-by: guangxu2 \u003cguangxu2@amd.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "037bbfdef532da52ceb98dc4a7a68fdee4a6038e",
      "old_mode": 33188,
      "old_path": "source/val/validate_annotation.cpp",
      "new_id": "be5cc3848ccb86feb5a22dd15346c70e635fb478",
      "new_mode": 33188,
      "new_path": "source/val/validate_annotation.cpp"
    },
    {
      "type": "modify",
      "old_id": "ce6c1fe3db998a4b724d6c3ba6f12b5e65b9fd9b",
      "old_mode": 33188,
      "old_path": "test/val/val_extension_spv_ext_descriptor_heap.cpp",
      "new_id": "55bda50dad4c474e80e46e0c1fc355f52d0acd0c",
      "new_mode": 33188,
      "new_path": "test/val/val_extension_spv_ext_descriptor_heap.cpp"
    }
  ]
}
