mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-12 13:40:38 +01:00
radv: cleanup some image view descriptor setup.
Avoid passing the vulkan image creation into the image view descriptor setup. This cleans up the usage of range inside the init, instead using the properly inited values in the image view. This is just a cleanup but some future vega changes will depend on it. Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Cc: "17.2" <mesa-stable@lists.freedesktop.org> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
9c080100d3
commit
5378b5d071
2 changed files with 21 additions and 13 deletions
|
|
@ -862,11 +862,10 @@ radv_image_create(VkDevice _device,
|
|||
static void
|
||||
radv_image_view_make_descriptor(struct radv_image_view *iview,
|
||||
struct radv_device *device,
|
||||
const VkImageViewCreateInfo* pCreateInfo,
|
||||
const VkComponentMapping *components,
|
||||
bool is_storage_image)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_image, image, pCreateInfo->image);
|
||||
const VkImageSubresourceRange *range = &pCreateInfo->subresourceRange;
|
||||
struct radv_image *image = iview->image;
|
||||
bool is_stencil = iview->aspect_mask == VK_IMAGE_ASPECT_STENCIL_BIT;
|
||||
uint32_t blk_w;
|
||||
uint32_t *descriptor;
|
||||
|
|
@ -886,20 +885,27 @@ radv_image_view_make_descriptor(struct radv_image_view *iview,
|
|||
si_make_texture_descriptor(device, image, is_storage_image,
|
||||
iview->type,
|
||||
iview->vk_format,
|
||||
&pCreateInfo->components,
|
||||
0, radv_get_levelCount(image, range) - 1,
|
||||
range->baseArrayLayer,
|
||||
range->baseArrayLayer + radv_get_layerCount(image, range) - 1,
|
||||
components,
|
||||
0, iview->level_count - 1,
|
||||
iview->base_layer,
|
||||
iview->base_layer + iview->layer_count - 1,
|
||||
iview->extent.width,
|
||||
iview->extent.height,
|
||||
iview->extent.depth,
|
||||
descriptor,
|
||||
fmask_descriptor);
|
||||
|
||||
const struct legacy_surf_level *base_level_info = NULL;
|
||||
if (device->physical_device->rad_info.chip_class <= GFX9) {
|
||||
if (is_stencil)
|
||||
base_level_info = &image->surface.u.legacy.stencil_level[iview->base_mip];
|
||||
else
|
||||
base_level_info = &image->surface.u.legacy.level[iview->base_mip];
|
||||
}
|
||||
si_set_mutable_tex_desc_fields(device, image,
|
||||
is_stencil ? &image->surface.u.legacy.stencil_level[range->baseMipLevel]
|
||||
: &image->surface.u.legacy.level[range->baseMipLevel],
|
||||
range->baseMipLevel,
|
||||
range->baseMipLevel,
|
||||
base_level_info,
|
||||
iview->base_mip,
|
||||
iview->base_mip,
|
||||
blk_w, is_stencil, descriptor);
|
||||
}
|
||||
|
||||
|
|
@ -949,9 +955,10 @@ radv_image_view_init(struct radv_image_view *iview,
|
|||
iview->base_layer = range->baseArrayLayer;
|
||||
iview->layer_count = radv_get_layerCount(image, range);
|
||||
iview->base_mip = range->baseMipLevel;
|
||||
iview->level_count = radv_get_levelCount(image, range);
|
||||
|
||||
radv_image_view_make_descriptor(iview, device, pCreateInfo, false);
|
||||
radv_image_view_make_descriptor(iview, device, pCreateInfo, true);
|
||||
radv_image_view_make_descriptor(iview, device, &pCreateInfo->components, false);
|
||||
radv_image_view_make_descriptor(iview, device, &pCreateInfo->components, true);
|
||||
}
|
||||
|
||||
bool radv_layout_has_htile(const struct radv_image *image,
|
||||
|
|
|
|||
|
|
@ -1305,6 +1305,7 @@ struct radv_image_view {
|
|||
uint32_t base_layer;
|
||||
uint32_t layer_count;
|
||||
uint32_t base_mip;
|
||||
uint32_t level_count;
|
||||
VkExtent3D extent; /**< Extent of VkImageViewCreateInfo::baseMipLevel. */
|
||||
|
||||
uint32_t descriptor[8];
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue