On Tue, Feb 14, 2017 at 3:41 PM, Dave Airlie <[email protected]> wrote:
> On 15 February 2017 at 09:16, Jason Ekstrand <[email protected]> wrote: > > These make iterating over Vulkan extension structs much cleaner. > > src/util/vk_utils.h maybe :-) > > vk_struct_common and vk_foreach_struct > Sure, I can do that if you want. > Dave. > > > --- > > src/intel/vulkan/anv_device.c | 26 ++++++++++++-------------- > > src/intel/vulkan/anv_formats.c | 14 ++++++-------- > > src/intel/vulkan/anv_private.h | 8 ++++++++ > > 3 files changed, 26 insertions(+), 22 deletions(-) > > > > diff --git a/src/intel/vulkan/anv_device.c > b/src/intel/vulkan/anv_device.c > > index 46b83a3..7c2f816 100644 > > --- a/src/intel/vulkan/anv_device.c > > +++ b/src/intel/vulkan/anv_device.c > > @@ -511,10 +511,10 @@ void anv_GetPhysicalDeviceFeatures2KHR( > > { > > anv_GetPhysicalDeviceFeatures(physicalDevice, &pFeatures->features); > > > > - for (struct anv_common *c = pFeatures->pNext; c != NULL; c = > c->pNext) { > > - switch (c->sType) { > > + anv_foreach_struct(ext, pFeatures->pNext) { > > + switch (ext->sType) { > > default: > > - anv_debug_ignored_stype(c->sType); > > + anv_debug_ignored_stype(ext->sType); > > break; > > } > > } > > @@ -669,10 +669,10 @@ void anv_GetPhysicalDeviceProperties2KHR( > > { > > anv_GetPhysicalDeviceProperties(physicalDevice, > &pProperties->properties); > > > > - for (struct anv_common *c = pProperties->pNext; c != NULL; c = > c->pNext) { > > - switch (c->sType) { > > + anv_foreach_struct(ext, pProperties->pNext) { > > + switch (ext->sType) { > > default: > > - anv_debug_ignored_stype(c->sType); > > + anv_debug_ignored_stype(ext->sType); > > break; > > } > > } > > @@ -746,11 +746,10 @@ void anv_GetPhysicalDeviceQueueFamilyPr > operties2KHR( > > anv_get_queue_family_properties(phys_dev, > > &pQueueFamilyProperties->queueFamilyProperties); > > > > - for (struct anv_common *c = pQueueFamilyProperties->pNext; > > - c != NULL; c = c->pNext) { > > - switch (c->sType) { > > + anv_foreach_struct(ext, pQueueFamilyProperties->pNext) { > > + switch (ext->sType) { > > default: > > - anv_debug_ignored_stype(c->sType); > > + anv_debug_ignored_stype(ext->sType); > > break; > > } > > } > > @@ -815,11 +814,10 @@ void anv_GetPhysicalDeviceMemoryProperties2KHR( > > anv_GetPhysicalDeviceMemoryProperties(physicalDevice, > > &pMemoryProperties-> > memoryProperties); > > > > - for (struct anv_common *c = pMemoryProperties->pNext; > > - c != NULL; c = c->pNext) { > > - switch (c->sType) { > > + anv_foreach_struct(ext, pMemoryProperties->pNext) { > > + switch (ext->sType) { > > default: > > - anv_debug_ignored_stype(c->sType); > > + anv_debug_ignored_stype(ext->sType); > > break; > > } > > } > > diff --git a/src/intel/vulkan/anv_formats.c b/src/intel/vulkan/anv_ > formats.c > > index 0e84960..735d518 100644 > > --- a/src/intel/vulkan/anv_formats.c > > +++ b/src/intel/vulkan/anv_formats.c > > @@ -470,11 +470,10 @@ void anv_GetPhysicalDeviceFormatProperties2KHR( > > anv_GetPhysicalDeviceFormatProperties(physicalDevice, format, > > &pFormatProperties-> > formatProperties); > > > > - for (struct anv_common *c = pFormatProperties->pNext; > > - c != NULL; c = c->pNext) { > > - switch (c->sType) { > > + anv_foreach_struct(ext, pFormatProperties->pNext) { > > + switch (ext->sType) { > > default: > > - anv_debug_ignored_stype(c->sType); > > + anv_debug_ignored_stype(ext->sType); > > break; > > } > > } > > @@ -668,11 +667,10 @@ VkResult anv_GetPhysicalDeviceImageFormatPr > operties2KHR( > > if (result != VK_SUCCESS) > > return result; > > > > - for (struct anv_common *c = pImageFormatProperties->pNext; > > - c != NULL; c = c->pNext) { > > - switch (c->sType) { > > + anv_foreach_struct(ext, pImageFormatProperties->pNext) { > > + switch (ext->sType) { > > default: > > - anv_debug_ignored_stype(c->sType); > > + anv_debug_ignored_stype(ext->sType); > > break; > > } > > } > > diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_ > private.h > > index ec791a4..527f20f 100644 > > --- a/src/intel/vulkan/anv_private.h > > +++ b/src/intel/vulkan/anv_private.h > > @@ -1881,6 +1881,14 @@ struct anv_common { > > struct anv_common *pNext; > > }; > > > > +#define anv_foreach_struct(__iter, __start) > \ > > + for (struct anv_common *__iter = (struct anv_common *)(__start); > \ > > + __iter; __iter = __iter->pNext) > > + > > +#define anv_foreach_struct_const(__iter, __start) > \ > > + for (const struct anv_common *__iter = (struct anv_common > *)(__start); \ > > + __iter; __iter = __iter->pNext) > > + > > #define ANV_DEFINE_HANDLE_CASTS(__anv_type, __VkType) > \ > > > \ > > static inline struct __anv_type * > \ > > -- > > 2.5.0.400.gff86faf > > > > _______________________________________________ > > mesa-dev mailing list > > [email protected] > > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
