Re: [Mesa-dev] [RFC PATCH 13/13] RFC: anv: Drop unneeded struct anv_image_create_info
Yes please! On Mon, Mar 6, 2017 at 12:40 PM, Chad Versacewrote: > Now that anv_image_create() is gone, there is no need for struct > anv_image_create_info. The struct just adds an unused layer of > indirection. > --- > src/intel/vulkan/anv_image.c | 38 +++--- > > src/intel/vulkan/anv_private.h | 9 - > 2 files changed, 11 insertions(+), 36 deletions(-) > > diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c > index 998b0b43391..e5e93f702f6 100644 > --- a/src/intel/vulkan/anv_image.c > +++ b/src/intel/vulkan/anv_image.c > @@ -106,7 +106,7 @@ get_surface(struct anv_image *image, > VkImageAspectFlags aspect) > } > > static isl_tiling_flags_t > -choose_isl_tiling_flags(const struct anv_image_create_info *anv_info, > +choose_isl_tiling_flags(const VkImageCreateInfo *base_info, > const VkImportImageDmaBufInfoMESAX > *import_dma_buf_info, > const VkExportImageDmaBufInfoMESAX > *export_dma_buf_info) > { > @@ -122,15 +122,12 @@ choose_isl_tiling_flags(const struct > anv_image_create_info *anv_info, > uint64_t mod = export_dma_buf_info->pDrmFormatModifiers[i]; > flags |= 1 << isl_tiling_from_drm_format_mod(mod); >} > - } else if (anv_info->vk_info->tiling == VK_IMAGE_TILING_LINEAR) { > + } else if (base_info->tiling == VK_IMAGE_TILING_LINEAR) { >flags = ISL_TILING_LINEAR_BIT; > } else { >flags = ISL_TILING_ANY_MASK; > } > > - if (anv_info->isl_tiling_flags) > - flags &= anv_info->isl_tiling_flags; > - > assert(flags != 0); > > return flags; > @@ -158,22 +155,6 @@ choose_isl_format(const struct anv_device *dev, > } > } > > -static uint32_t > -choose_row_pitch(const struct anv_image_create_info *anv_info, > - const VkImportImageDmaBufPlaneInfoMESAX *plane_info) > -{ > - if (anv_info->stride != 0) > - return anv_info->stride; > - > - if (plane_info) { > - assert(plane_info->rowPitch > 0); > - return plane_info->rowPitch; > - } > - > - /* Let isl choose the pitch. */ > - return 0; > -} > - > static void > set_min_surface_offset(const struct anv_image *image, struct anv_surface > *surf) > { > @@ -318,14 +299,13 @@ make_aux_surface_maybe(const struct anv_device *dev, > */ > static void > make_main_surface(const struct anv_device *dev, > - const struct anv_image_create_info *anv_info, > + const VkImageCreateInfo *base_info, >const VkImportImageDmaBufInfoMESAX *import_dma_buf_info, >const VkExportImageDmaBufInfoMESAX *export_dma_buf_info, >VkImageAspectFlags aspect, >VkExternalMemoryHandleTypeFlagsKHX handle_types, >struct anv_image *image) > { > - const VkImageCreateInfo *base_info = anv_info->vk_info; > bool ok UNUSED; > > static const enum isl_surf_dim vk_to_isl_surf_dim[] = { > @@ -339,8 +319,13 @@ make_main_surface(const struct anv_device *dev, >plane_info = _dma_buf_info->pPlanes[0]; > > const isl_tiling_flags_t tiling_flags = > - choose_isl_tiling_flags(anv_info, import_dma_buf_info, > export_dma_buf_info); > - const uint32_t row_pitch = choose_row_pitch(anv_info, plane_info); > + choose_isl_tiling_flags(base_info, import_dma_buf_info, > export_dma_buf_info); > + > + uint32_t row_pitch = 0; > + if (plane_info) { > + assert(plane_info->rowPitch > 0); > + row_pitch = plane_info->rowPitch; > + } > > struct anv_surface *anv_surf = get_surface(image, aspect); > > @@ -386,7 +371,6 @@ anv_CreateImage(VkDevice _device, > VkImage *pImage) > { > ANV_FROM_HANDLE(anv_device, device, _device); > - const struct anv_image_create_info anv_info = { .vk_info = base_info }; > const VkImportImageDmaBufInfoMESAX *import_dma_buf_info = NULL; > const VkExportImageDmaBufInfoMESAX *export_dma_buf_info = NULL; > VkExternalMemoryHandleTypeFlagsKHX handle_types = 0; > @@ -444,7 +428,7 @@ anv_CreateImage(VkDevice _device, > uint32_t b; > for_each_bit(b, image->aspects) { >VkImageAspectFlagBits aspect = 1 << b; > - make_main_surface(device, _info, import_dma_buf_info, > + make_main_surface(device, base_info, import_dma_buf_info, > export_dma_buf_info, aspect, handle_types, image); >make_aux_surface_maybe(device, base_info, aspect, handle_types, > image); > } > diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_ > private.h > index 2f62ec50c5b..a5dd0f72de1 100644 > --- a/src/intel/vulkan/anv_private.h > +++ b/src/intel/vulkan/anv_private.h > @@ -1860,15 +1860,6 @@ struct anv_image_view { > struct brw_image_param storage_image_param; > }; > > -struct anv_image_create_info { > - const VkImageCreateInfo *vk_info; > - > - /** An opt-in bitmask which filters an ISL-mapping of
[Mesa-dev] [RFC PATCH 13/13] RFC: anv: Drop unneeded struct anv_image_create_info
Now that anv_image_create() is gone, there is no need for struct anv_image_create_info. The struct just adds an unused layer of indirection. --- src/intel/vulkan/anv_image.c | 38 +++--- src/intel/vulkan/anv_private.h | 9 - 2 files changed, 11 insertions(+), 36 deletions(-) diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index 998b0b43391..e5e93f702f6 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -106,7 +106,7 @@ get_surface(struct anv_image *image, VkImageAspectFlags aspect) } static isl_tiling_flags_t -choose_isl_tiling_flags(const struct anv_image_create_info *anv_info, +choose_isl_tiling_flags(const VkImageCreateInfo *base_info, const VkImportImageDmaBufInfoMESAX *import_dma_buf_info, const VkExportImageDmaBufInfoMESAX *export_dma_buf_info) { @@ -122,15 +122,12 @@ choose_isl_tiling_flags(const struct anv_image_create_info *anv_info, uint64_t mod = export_dma_buf_info->pDrmFormatModifiers[i]; flags |= 1 << isl_tiling_from_drm_format_mod(mod); } - } else if (anv_info->vk_info->tiling == VK_IMAGE_TILING_LINEAR) { + } else if (base_info->tiling == VK_IMAGE_TILING_LINEAR) { flags = ISL_TILING_LINEAR_BIT; } else { flags = ISL_TILING_ANY_MASK; } - if (anv_info->isl_tiling_flags) - flags &= anv_info->isl_tiling_flags; - assert(flags != 0); return flags; @@ -158,22 +155,6 @@ choose_isl_format(const struct anv_device *dev, } } -static uint32_t -choose_row_pitch(const struct anv_image_create_info *anv_info, - const VkImportImageDmaBufPlaneInfoMESAX *plane_info) -{ - if (anv_info->stride != 0) - return anv_info->stride; - - if (plane_info) { - assert(plane_info->rowPitch > 0); - return plane_info->rowPitch; - } - - /* Let isl choose the pitch. */ - return 0; -} - static void set_min_surface_offset(const struct anv_image *image, struct anv_surface *surf) { @@ -318,14 +299,13 @@ make_aux_surface_maybe(const struct anv_device *dev, */ static void make_main_surface(const struct anv_device *dev, - const struct anv_image_create_info *anv_info, + const VkImageCreateInfo *base_info, const VkImportImageDmaBufInfoMESAX *import_dma_buf_info, const VkExportImageDmaBufInfoMESAX *export_dma_buf_info, VkImageAspectFlags aspect, VkExternalMemoryHandleTypeFlagsKHX handle_types, struct anv_image *image) { - const VkImageCreateInfo *base_info = anv_info->vk_info; bool ok UNUSED; static const enum isl_surf_dim vk_to_isl_surf_dim[] = { @@ -339,8 +319,13 @@ make_main_surface(const struct anv_device *dev, plane_info = _dma_buf_info->pPlanes[0]; const isl_tiling_flags_t tiling_flags = - choose_isl_tiling_flags(anv_info, import_dma_buf_info, export_dma_buf_info); - const uint32_t row_pitch = choose_row_pitch(anv_info, plane_info); + choose_isl_tiling_flags(base_info, import_dma_buf_info, export_dma_buf_info); + + uint32_t row_pitch = 0; + if (plane_info) { + assert(plane_info->rowPitch > 0); + row_pitch = plane_info->rowPitch; + } struct anv_surface *anv_surf = get_surface(image, aspect); @@ -386,7 +371,6 @@ anv_CreateImage(VkDevice _device, VkImage *pImage) { ANV_FROM_HANDLE(anv_device, device, _device); - const struct anv_image_create_info anv_info = { .vk_info = base_info }; const VkImportImageDmaBufInfoMESAX *import_dma_buf_info = NULL; const VkExportImageDmaBufInfoMESAX *export_dma_buf_info = NULL; VkExternalMemoryHandleTypeFlagsKHX handle_types = 0; @@ -444,7 +428,7 @@ anv_CreateImage(VkDevice _device, uint32_t b; for_each_bit(b, image->aspects) { VkImageAspectFlagBits aspect = 1 << b; - make_main_surface(device, _info, import_dma_buf_info, + make_main_surface(device, base_info, import_dma_buf_info, export_dma_buf_info, aspect, handle_types, image); make_aux_surface_maybe(device, base_info, aspect, handle_types, image); } diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 2f62ec50c5b..a5dd0f72de1 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -1860,15 +1860,6 @@ struct anv_image_view { struct brw_image_param storage_image_param; }; -struct anv_image_create_info { - const VkImageCreateInfo *vk_info; - - /** An opt-in bitmask which filters an ISL-mapping of the Vulkan tiling. */ - isl_tiling_flags_t isl_tiling_flags; - - uint32_t stride; -}; - const struct anv_surface * anv_image_get_surface_for_aspect_mask(const struct anv_image *image, VkImageAspectFlags aspect_mask); -- 2.12.0 ___ mesa-dev