)]}'
{
  "commit": "eaff806e30cbe8ce138f1f3edcee5f0977a14a9a",
  "tree": "84f1a7a668713b9f904fd3a73006abe3a93549d3",
  "parents": [
    "aa165943fef048cd0a8a00dcad694464aaf6f557"
  ],
  "author": {
    "name": "Barnabás Pőcze",
    "email": "pobrn@protonmail.com",
    "time": "Mon Aug 24 21:27:08 2026"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Aug 24 21:27:08 2026"
  },
  "message": "`local_size_*_id` and SPIR-V 1.2 (#4052)\n\n* Reject `local_size_*_id` before SPIR-V 1.2\n\n`OpExecutionModeId` and the `LocalSizeId` execution mode are missing before\nSPIR-V 1.2[0], and currently when targeting an earlier version, it is ignored\nand the work group sizes are set to 1 instead without any diagnostic.\n\nSo to prevent surprises, reject `local_size_*_id` layout qualifiers when\ntargeting a SPIR-V version before 1.2.\n\n[0]: https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#OpExecutionModeId\n\n* spirv: only set LocalSizeId mode when necessary\n\nOnly use `LocalSizeId` when necessary, same changes as #3351\nbut applied to mesh and task shaders.\n\nFixes #3739\n\n* spirv: use `LocalSizeId` exec mode when targeting \u003e\u003d SPIR-V 1.2\n\n`OpExecutionModeId` and the `LocalSizeId` execution mode were added in\nSPIR-V 1.2[0]. So use them when targeting at least 1.2.\n\n[0]: https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#OpExecutionModeId\n\nSee #3510\n\n* spirv: remove unnecessary assignment\n\nChanging the value of `needSizeId` in the loop will have no\neffect because it is not checked after that anywhere.\n\n* spirv: test OpExecutionModeId in 1.1 and 1.2\n\nUsing `local_size_{x,y,z}_id` in vulkan when targeting below SPIR-V 1.2\nshould be rejected, but it should be accepted otherwise. Add tests to\ncheck that.\n\n* spirv: update test base results for new error\n\nNow that `local_size_*_id` is reject when targeting \u003c SPIR-V 1.2,\nregenerate the test base results.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b74addaa76458c058f92f4a4afa7954d235ebbce",
      "old_mode": 33188,
      "old_path": "SPIRV/GlslangToSpv.cpp",
      "new_id": "2b150885221186fccd4d31cfe7e4d2bc9c2cbfff",
      "new_mode": 33188,
      "new_path": "SPIRV/GlslangToSpv.cpp"
    },
    {
      "type": "modify",
      "old_id": "9cd445e658f3cf0b7035539b636bcd5f4577f7e9",
      "old_mode": 33188,
      "old_path": "Test/baseResults/link.vk.multiUnitLayout.0.comp.out",
      "new_id": "9526fd465dedb571732a072d312bc873b451c5dc",
      "new_mode": 33188,
      "new_path": "Test/baseResults/link.vk.multiUnitLayout.0.comp.out"
    },
    {
      "type": "modify",
      "old_id": "f637687eef4aa93364e34e44e59060d4e3893aa3",
      "old_mode": 33188,
      "old_path": "Test/baseResults/link.vk.multiUnitLayout.2.comp.out",
      "new_id": "9bb2239c09c78f001351fc7a6434d2549cd335a9",
      "new_mode": 33188,
      "new_path": "Test/baseResults/link.vk.multiUnitLayout.2.comp.out"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9da71e7c77d62bca6c4027c534c6791bdb7c99aa",
      "new_mode": 33188,
      "new_path": "Test/baseResults/spv.OpExecutionModeId.11.comp.out"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f16f50f38e645de7f9251223bbd9da3d078317a1",
      "new_mode": 33188,
      "new_path": "Test/baseResults/spv.OpExecutionModeId.12.comp.out"
    },
    {
      "type": "modify",
      "old_id": "118ee00347b4415151d2d1a6f4e123146189758c",
      "old_mode": 33188,
      "old_path": "Test/baseResults/spv.atomicAdd.bufferReference.comp.out",
      "new_id": "aac688f7633f2d1f9096ba1a8551993c96e95e5c",
      "new_mode": 33188,
      "new_path": "Test/baseResults/spv.atomicAdd.bufferReference.comp.out"
    },
    {
      "type": "modify",
      "old_id": "b008b157e105f52d7bad0e1853b825ca60b9f38c",
      "old_mode": 33188,
      "old_path": "Test/baseResults/spv.computeShaderDerivativesSpec.comp.out",
      "new_id": "992bc83d392c420d200310564da11b0b30ef8039",
      "new_mode": 33188,
      "new_path": "Test/baseResults/spv.computeShaderDerivativesSpec.comp.out"
    },
    {
      "type": "modify",
      "old_id": "5c31ea1fddadb6397fdc79aa67d30ad310233312",
      "old_mode": 33188,
      "old_path": "Test/baseResults/spv.computeShaderDerivativesSpec2.comp.out",
      "new_id": "2c3fc8f0806e48bbf259718c47e4b8c5f6f19008",
      "new_mode": 33188,
      "new_path": "Test/baseResults/spv.computeShaderDerivativesSpec2.comp.out"
    },
    {
      "type": "modify",
      "old_id": "e92ebcb264a1f01e7fc8c9c20cdb123958c295ec",
      "old_mode": 33188,
      "old_path": "Test/baseResults/spv.noWorkgroup.comp.out",
      "new_id": "ba67fe6cb3ce798dc8eca0ed2aea70d067d8a4d7",
      "new_mode": 33188,
      "new_path": "Test/baseResults/spv.noWorkgroup.comp.out"
    },
    {
      "type": "modify",
      "old_id": "6a7dd1db522e075f29e5251edcf64fd1117628c0",
      "old_mode": 33188,
      "old_path": "Test/baseResults/spv.specConstant.comp.out",
      "new_id": "8670bf4afecea5f5e8e1e6fec84952bdfc101f6e",
      "new_mode": 33188,
      "new_path": "Test/baseResults/spv.specConstant.comp.out"
    },
    {
      "type": "modify",
      "old_id": "f2e7cf44f35e8793a9a7be44959600c065865e36",
      "old_mode": 33188,
      "old_path": "Test/baseResults/validation_fails.txt",
      "new_id": "e57f36f97fa080a92df88842c2e8707e0daabd16",
      "new_mode": 33188,
      "new_path": "Test/baseResults/validation_fails.txt"
    },
    {
      "type": "modify",
      "old_id": "3edb619d79dd5c1676fada35b9d277ff19d1a2c8",
      "old_mode": 33188,
      "old_path": "Test/baseResults/vulkan.comp.out",
      "new_id": "a8e1ce93e23e0d8efeec3c4c66a3a837c7295b26",
      "new_mode": 33188,
      "new_path": "Test/baseResults/vulkan.comp.out"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2312a0021516f8b4a012b77ce6521e56467bbbbb",
      "new_mode": 33188,
      "new_path": "Test/spv.OpExecutionModeId.11.comp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "78d118ede0db38889e478ac88b333424b6e81fc1",
      "new_mode": 40960,
      "new_path": "Test/spv.OpExecutionModeId.12.comp"
    },
    {
      "type": "modify",
      "old_id": "8eaf1863b5bd4af06b813f2a6abf8ac582e29075",
      "old_mode": 33188,
      "old_path": "glslang/MachineIndependent/ParseHelper.cpp",
      "new_id": "9ccd91f1a605636fa54a0240180535b5a5cecab6",
      "new_mode": 33188,
      "new_path": "glslang/MachineIndependent/ParseHelper.cpp"
    },
    {
      "type": "modify",
      "old_id": "536130d5abfa84ae47804b28aa7aa722789d6bf3",
      "old_mode": 33188,
      "old_path": "gtests/Spv.FromFile.cpp",
      "new_id": "b127920fb280678513925998f89037ae132aa5dc",
      "new_mode": 33188,
      "new_path": "gtests/Spv.FromFile.cpp"
    }
  ]
}
