anv: Allow HiZ in TRANSFER_SRC_OPTIMAL on Gen8-9

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Jason Ekstrand
2019-12-04 15:51:34 -06:00
committed by Kenneth Graunke
parent b274469daa
commit 52ad1712ed
2 changed files with 18 additions and 11 deletions

View File

@@ -238,16 +238,23 @@ get_blorp_surf_for_anv_image(const struct anv_device *device,
const struct anv_address clear_color_addr =
anv_image_get_clear_color_addr(device, image, aspect);
blorp_surf->clear_color_addr = anv_to_blorp_address(clear_color_addr);
} else if (aspect & VK_IMAGE_ASPECT_DEPTH_BIT
&& device->info.gen >= 10) {
/* Vulkan always clears to 1.0. On gen < 10, we set that directly in
* the state packet. For gen >= 10, must provide the clear value in a
* buffer. We have a single global buffer that stores the 1.0 value.
*/
const struct anv_address clear_color_addr = (struct anv_address) {
.bo = device->hiz_clear_bo,
};
blorp_surf->clear_color_addr = anv_to_blorp_address(clear_color_addr);
} else if (aspect & VK_IMAGE_ASPECT_DEPTH_BIT) {
if (device->info.gen >= 10) {
/* Vulkan always clears to 1.0. On gen < 10, we set that directly
* in the state packet. For gen >= 10, must provide the clear
* value in a buffer. We have a single global buffer that stores
* the 1.0 value.
*/
const struct anv_address clear_color_addr = (struct anv_address) {
.bo = device->hiz_clear_bo,
};
blorp_surf->clear_color_addr =
anv_to_blorp_address(clear_color_addr);
} else {
blorp_surf->clear_color = (union isl_color_value) {
.f32 = { ANV_HZ_FC_VAL },
};
}
}
}
}