Vulkan 1.2.168 release specification introduces two new KHR extensions namely VK_KHR_workgroup_memory_explicit_layout and VK_KHR_zero_initialize_workgroup_memory.
VK_KHR_workgroup_memory_explicit_layout: This is a SPIR-V extension, which allows shaders to explicitly define the layout of code: Workgroup storage class memory and creates aliases between variables from that storage class in a compute shader.
The aliasing feature allows different “views” on the same data, so the shader can bulk copy data from another storage class using one type (e.g. an array of large vectors), and then use the data with a more specific type. It also enables reducing the amount of workgroup memory consumed by allowing the shader to alias data whose lifetimes don’t overlap.
The explicit layout support and some form of aliasing is also required for
layering OpenCL on top of Vulkan.
VK_KHR_zero_initialize_workgroup_memory: This extension allows the use of a null constant initializer on shader Workgroup memory variables, allowing implementations to expose any special hardware or instructions they may have. Zero initialization is commonly used by applications running untrusted content (e.g. web browsers) as a way of defeating memory-scraping attacks.
You can get the full list of changes in the Vulkan 1.2.168 release specifications here.
Found this article interesting? Follow Brightwhiz on Facebook, Twitter, and YouTube to read and watch more content we post.