/* + 8 for storing the clear values */
image->clear_value_offset = image->htile_offset + image->planes[0].surface.htile_size;
- image->size = image->clear_value_offset + 8;
+ image->size = image->clear_value_offset + image->info.levels * 8;
if (radv_image_is_tc_compat_htile(image) &&
- device->physical_device->has_tc_compat_zrange_bug) {
+ device->physical_device->rad_info.has_tc_compat_zrange_bug) {
/* Metadata for the TC-compatible HTILE hardware bug which
* have to be fixed by updating ZRANGE_PRECISION when doing
* fast depth clears to 0.0f.
*/
image->tc_compat_zrange_offset = image->size;
- image->size = image->tc_compat_zrange_offset + 4;
+ image->size = image->tc_compat_zrange_offset + image->info.levels * 4;
}
image->alignment = align64(image->alignment, image->planes[0].surface.htile_alignment);
}
unsigned queue_mask)
{
if (radv_image_is_tc_compat_htile(image))
- return !in_render_loop;
+ return layout != VK_IMAGE_LAYOUT_GENERAL;
return radv_image_has_htile(image) &&
(layout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL ||
unsigned queue_mask)
{
if (radv_image_is_tc_compat_htile(image))
- return !in_render_loop;
+ return layout != VK_IMAGE_LAYOUT_GENERAL;
return radv_image_has_htile(image) &&
(layout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL ||
return layout == VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
}
-bool radv_layout_dcc_compressed(const struct radv_image *image,
+bool radv_layout_dcc_compressed(const struct radv_device *device,
+ const struct radv_image *image,
VkImageLayout layout,
bool in_render_loop,
unsigned queue_mask)
(queue_mask & (1u << RADV_QUEUE_COMPUTE)))
return false;
- return radv_image_has_dcc(image) &&!in_render_loop;
+ return radv_image_has_dcc(image) && layout != VK_IMAGE_LAYOUT_GENERAL;
}