On Fri, 14 Jan 2022 at 05:57, Conor McCarthy <cmccarthy(a)codeweavers.com> wrote:
+static VkImageAspectFlags vk_image_aspect_flags_from_d3d12_plane_slice(const struct vkd3d_format *format, + unsigned int plane_slice) +{ + VkImageAspectFlags aspect_flags = format->vk_aspect_mask; + unsigned int i; + + /* For all formats we currently handle, the n-th aspect bit in Vulkan + * corresponds to the n-th plane in D3D12, so isolate the respective + * bit in the aspect flags. */ + for (i = 0; i < plane_slice; i++) + aspect_flags &= aspect_flags - 1; + So above we're clearing the least significant bit set.
+ if (!aspect_flags) + { + WARN("Invalid plane slice %u for format %#x.\n", plane_slice, format->vk_format); + aspect_flags = format->vk_aspect_mask; + } + + return aspect_flags & -aspect_flags; And then here we return the least significant bit set.
+} + That works, but I wouldn't say it's the most obvious code I've ever seen; some comments wouldn't be inappropriate.