radv/gfx9: only minify image view width/height/depth before gfx9.
For gfx9 the addressing for images has changed, so we need to provide the hw with the level0, however we still need to scale for format block differences (so our compressed upload paths still work). 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:
@@ -3130,8 +3130,8 @@ radv_initialise_color_surface(struct radv_device *device,
|
||||
cb->cb_color_view |= S_028C6C_MIP_LEVEL(iview->base_mip);
|
||||
cb->cb_color_attrib |= S_028C74_MIP0_DEPTH(mip0_depth) |
|
||||
S_028C74_RESOURCE_TYPE(iview->image->surface.u.gfx9.resource_type);
|
||||
cb->cb_color_attrib2 = S_028C68_MIP0_WIDTH(iview->image->info.width - 1) |
|
||||
S_028C68_MIP0_HEIGHT(iview->image->info.height - 1) |
|
||||
cb->cb_color_attrib2 = S_028C68_MIP0_WIDTH(iview->extent.width - 1) |
|
||||
S_028C68_MIP0_HEIGHT(iview->extent.height - 1) |
|
||||
S_028C68_MAX_MIP(iview->image->info.levels - 1);
|
||||
|
||||
cb->gfx9_epitch = S_0287A0_EPITCH(iview->image->surface.u.gfx9.surf.epitch);
|
||||
|
||||
@@ -941,11 +941,19 @@ radv_image_view_init(struct radv_image_view *iview,
|
||||
iview->vk_format = vk_format_depth_only(iview->vk_format);
|
||||
}
|
||||
|
||||
iview->extent = (VkExtent3D) {
|
||||
.width = radv_minify(image->info.width , range->baseMipLevel),
|
||||
.height = radv_minify(image->info.height, range->baseMipLevel),
|
||||
.depth = radv_minify(image->info.depth , range->baseMipLevel),
|
||||
};
|
||||
if (device->physical_device->rad_info.chip_class >= GFX9) {
|
||||
iview->extent = (VkExtent3D) {
|
||||
.width = image->info.width,
|
||||
.height = image->info.height,
|
||||
.depth = image->info.depth,
|
||||
};
|
||||
} else {
|
||||
iview->extent = (VkExtent3D) {
|
||||
.width = radv_minify(image->info.width , range->baseMipLevel),
|
||||
.height = radv_minify(image->info.height, range->baseMipLevel),
|
||||
.depth = radv_minify(image->info.depth , range->baseMipLevel),
|
||||
};
|
||||
}
|
||||
|
||||
if (iview->vk_format != image->vk_format) {
|
||||
iview->extent.width = round_up_u32(iview->extent.width * vk_format_get_blockwidth(iview->vk_format),
|
||||
|
||||
Reference in New Issue
Block a user