)]}' { "commit": "5cef1162b9af6c9377cc8f41c019b5cdc456c77f", "tree": "940030b29e2c776dc7ce5d6abdc0aebea95f158d", "parents": [ "984493d0ac077cccbe4e5b83ab6028aaa5d40357" ], "author": { "name": "Corentin Wallez", "email": "cwallez@chromium.org", "time": "Tue Jun 16 07:54:28 2020 +0000" }, "committer": { "name": "Commit Bot service account", "email": "commit-bot@chromium.org", "time": "Tue Jun 16 07:54:28 2020 +0000" }, "message": "Reland: Vulkan: Report and enable subgroup size control device extension.\n\nReland after a refactor of how the extension handling work in the Vulkan\nbackend.\n\nThe original author is David Turner \u003cdavid.turner.dev@gmail.com\u003e.\n\nCertain Vulkan ICDs (Intel ones notably) will compile SPIR-V\nshaders with an liberal, compiler-selected, subgroup size (i.e.\neither 8, 16 or 32). For more context, see [1].\n\nThis can be a problem for compute, when one shader stores data\nin device memory using a subgroup-size dependent layout, to be\nconsumed by a another shader. Problems arise when the compiler\ndecides to compile both shaders with different subgroup sizes.\n\nTo work-around this, the VK_EXT_subgroup_size_control device\nextension was introduced recently: it allows the device to\nreport the min/max subgroup sizes it provides, and allows\nthe Vulkan program to control the subgroup size precisely\nif it wants to.\n\nThis patch adds support to the Vulkan backend to report and\nenable the extension if it is available. Note that:\n\n- This changes the definition of VulkanDeviceKnobs to\n make room for the required pNext-linked chains of\n extensions.\n\n- A helper class, PNextChainBuilder is also provided in\n UtilsVulkan.h to make it easy to build pNext-linked\n extension struct chains at runtime, as required when\n probing device propertires/features, or when\n creating a new VkDevice handle.\n\n- This modifies VulkanDeviceInfo::GatherDeviceInfo() to\n use PNextChainBuilder to query extension features and properties\n in a single call to vkGetPhysicalDevice{Properties,Features}2.\n\nApart from that, there is no change in behaviour in this CL.\nI.e. a later CL might force a specific subgroup size for\nconsistency, or introduce a new API to let Dawn clients\nselect a fixed subgroup size.\n\n[1] https://bugs.freedesktop.org/show_bug.cgi?id\u003d108875\n\nBug: dawn:464\nChange-Id: I01e5c28e7dac66f0a57bf35532eb192912b254fa\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/23201\nReviewed-by: Corentin Wallez \u003ccwallez@chromium.org\u003e\nCommit-Queue: Corentin Wallez \u003ccwallez@chromium.org\u003e\n", "tree_diff": [ { "type": "modify", "old_id": "db9ecb6519d8b5f525b30a186bd2d61f17bc098e", "old_mode": 33188, "old_path": "src/dawn_native/vulkan/DeviceVk.cpp", "new_id": "df356f6031b825dc85266599b4e6686c7787147c", "new_mode": 33188, "new_path": "src/dawn_native/vulkan/DeviceVk.cpp" }, { "type": "modify", "old_id": "02ef6d3737b9b855ac3f45b5db7f20ce4456a78a", "old_mode": 33188, "old_path": "src/dawn_native/vulkan/UtilsVulkan.h", "new_id": "462c08c68c7a3fa6007afc4edf1015e08177ba90", "new_mode": 33188, "new_path": "src/dawn_native/vulkan/UtilsVulkan.h" }, { "type": "modify", "old_id": "9015a6dbb7c1a0ac6b2fa0eb5ecbcbf5fa3fd05f", "old_mode": 33188, "old_path": "src/dawn_native/vulkan/VulkanExtensions.cpp", "new_id": "1e7f23d5e7eaf58f66c7711e78662445bebf1055", "new_mode": 33188, "new_path": "src/dawn_native/vulkan/VulkanExtensions.cpp" }, { "type": "modify", "old_id": "5c59bc83110dd0d27c4fb1f3a9960901c5b44c63", "old_mode": 33188, "old_path": "src/dawn_native/vulkan/VulkanExtensions.h", "new_id": "ba6abc2c0afcafadba728bae698009909f878175", "new_mode": 33188, "new_path": "src/dawn_native/vulkan/VulkanExtensions.h" }, { "type": "modify", "old_id": "6b2346e1da3192b5747220fbd5639f67e659991b", "old_mode": 33188, "old_path": "src/dawn_native/vulkan/VulkanInfo.cpp", "new_id": "5a66c678fb28ab240f5be164da5e8cbb71587a5e", "new_mode": 33188, "new_path": "src/dawn_native/vulkan/VulkanInfo.cpp" }, { "type": "modify", "old_id": "6d0a756fc0d62e1ac784d49b51f6f5f0eb6314ad", "old_mode": 33188, "old_path": "src/dawn_native/vulkan/VulkanInfo.h", "new_id": "e051247515686c3d1dd98c38fd57ccf5bdfc44e3", "new_mode": 33188, "new_path": "src/dawn_native/vulkan/VulkanInfo.h" } ] }