anv: Pipe anv_physical_device to anv_get_image_format_features2

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23776>
This commit is contained in:
Matt Turner 2023-06-21 12:54:42 -04:00 committed by Marge Bot
parent 02aaf58908
commit 727335045d
3 changed files with 22 additions and 18 deletions

View file

@ -185,7 +185,7 @@ get_ahw_buffer_format_properties2(
tiling = VK_IMAGE_TILING_LINEAR;
p->formatFeatures =
anv_get_image_format_features2(device->info, p->format, anv_format,
anv_get_image_format_features2(device->physical, p->format, anv_format,
tiling, NULL);
/* "Images can be created with an external format even if the Android hardware

View file

@ -516,12 +516,13 @@ anv_get_format_aspect(const struct intel_device_info *devinfo,
// Format capabilities
VkFormatFeatureFlags2
anv_get_image_format_features2(const struct intel_device_info *devinfo,
anv_get_image_format_features2(const struct anv_physical_device *physical_device,
VkFormat vk_format,
const struct anv_format *anv_format,
VkImageTiling vk_tiling,
const struct isl_drm_modifier_info *isl_mod_info)
{
const struct intel_device_info *devinfo = &physical_device->info;
VkFormatFeatureFlags2 flags = 0;
if (anv_format == NULL)
@ -873,7 +874,6 @@ get_drm_format_modifier_properties_list(const struct anv_physical_device *physic
VkFormat vk_format,
VkDrmFormatModifierPropertiesListEXT *list)
{
const struct intel_device_info *devinfo = &physical_device->info;
const struct anv_format *anv_format = anv_get_format(vk_format);
VK_OUTARRAY_MAKE_TYPED(VkDrmFormatModifierPropertiesEXT, out,
@ -882,7 +882,7 @@ get_drm_format_modifier_properties_list(const struct anv_physical_device *physic
isl_drm_modifier_info_for_each(isl_mod_info) {
VkFormatFeatureFlags2 features2 =
anv_get_image_format_features2(devinfo, vk_format, anv_format,
anv_get_image_format_features2(physical_device, vk_format, anv_format,
VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
isl_mod_info);
VkFormatFeatureFlags features = vk_format_features2_to_features(features2);
@ -908,7 +908,6 @@ get_drm_format_modifier_properties_list_2(const struct anv_physical_device *phys
VkFormat vk_format,
VkDrmFormatModifierPropertiesList2EXT *list)
{
const struct intel_device_info *devinfo = &physical_device->info;
const struct anv_format *anv_format = anv_get_format(vk_format);
VK_OUTARRAY_MAKE_TYPED(VkDrmFormatModifierProperties2EXT, out,
@ -917,7 +916,7 @@ get_drm_format_modifier_properties_list_2(const struct anv_physical_device *phys
isl_drm_modifier_info_for_each(isl_mod_info) {
VkFormatFeatureFlags2 features2 =
anv_get_image_format_features2(devinfo, vk_format, anv_format,
anv_get_image_format_features2(physical_device, vk_format, anv_format,
VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
isl_mod_info);
if (!features2)
@ -949,9 +948,11 @@ void anv_GetPhysicalDeviceFormatProperties2(
assert(pFormatProperties->sType == VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2);
VkFormatFeatureFlags2 linear2, optimal2, buffer2;
linear2 = anv_get_image_format_features2(devinfo, vk_format, anv_format,
linear2 = anv_get_image_format_features2(physical_device, vk_format,
anv_format,
VK_IMAGE_TILING_LINEAR, NULL);
optimal2 = anv_get_image_format_features2(devinfo, vk_format, anv_format,
optimal2 = anv_get_image_format_features2(physical_device, vk_format,
anv_format,
VK_IMAGE_TILING_OPTIMAL, NULL);
buffer2 = get_buffer_format_features2(devinfo, vk_format, anv_format);
@ -1120,13 +1121,14 @@ anv_formats_are_compatible(
*/
static VkFormatFeatureFlags2
anv_formats_gather_format_features(
const struct intel_device_info *devinfo,
const struct anv_physical_device *physical_device,
const struct anv_format *format,
VkImageTiling tiling,
const struct isl_drm_modifier_info *isl_mod_info,
const VkImageFormatListCreateInfo *format_list_info,
bool allow_texel_compatible)
{
const struct intel_device_info *devinfo = &physical_device->info;
VkFormatFeatureFlags2KHR all_formats_feature_flags = 0;
/* We need to check that each of the usage bits are allowed for at least
@ -1150,7 +1152,7 @@ anv_formats_gather_format_features(
devinfo, tiling,
allow_texel_compatible)) {
VkFormatFeatureFlags2KHR view_format_features =
anv_get_image_format_features2(devinfo,
anv_get_image_format_features2(physical_device,
possible_anv_format->vk_format,
possible_anv_format, tiling,
isl_mod_info);
@ -1169,9 +1171,9 @@ anv_formats_gather_format_features(
const struct anv_format *anv_view_format =
anv_get_format(vk_view_format);
VkFormatFeatureFlags2KHR view_format_features =
anv_get_image_format_features2(devinfo, vk_view_format,
anv_view_format, tiling,
isl_mod_info);
anv_get_image_format_features2(physical_device,
vk_view_format, anv_view_format,
tiling, isl_mod_info);
all_formats_feature_flags |= view_format_features;
}
}
@ -1280,8 +1282,9 @@ anv_get_image_format_properties(
* different usage than the image, so we can't always filter on usage.
* There is one exception to this below for storage.
*/
format_feature_flags = anv_get_image_format_features2(devinfo, info->format,
format, info->tiling,
format_feature_flags = anv_get_image_format_features2(physical_device,
info->format, format,
info->tiling,
isl_mod_info);
if (!anv_format_supports_usage(format_feature_flags, info->usage)) {
@ -1305,8 +1308,9 @@ anv_get_image_format_properties(
* the format list or all the compatible formats.
*/
VkFormatFeatureFlags2 all_formats_feature_flags = format_feature_flags |
anv_formats_gather_format_features(devinfo, format, info->tiling,
isl_mod_info, format_list_info,
anv_formats_gather_format_features(physical_device, format,
info->tiling, isl_mod_info,
format_list_info,
info->flags & VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT);
if (!anv_format_supports_usage(all_formats_feature_flags, info->usage))

View file

@ -4470,7 +4470,7 @@ anv_is_dual_src_blend_equation(const struct vk_color_blend_attachment_state *cb)
}
VkFormatFeatureFlags2
anv_get_image_format_features2(const struct intel_device_info *devinfo,
anv_get_image_format_features2(const struct anv_physical_device *physical_device,
VkFormat vk_format,
const struct anv_format *anv_format,
VkImageTiling vk_tiling,