anv: Enable sampling from HiZ

v2: Restrict ISL_AUX_USAGE_HIZ to depth aspects

Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Nanley Chery
2017-01-11 08:12:48 -08:00
parent 5e0902cd2a
commit 71334f494a
2 changed files with 17 additions and 4 deletions
-1
View File
@@ -8,7 +8,6 @@ Missing Features:
- Sparse memory
Performance:
- Sampling from HiZ (Nanley)
- Multi-{sampled/gen8,LOD} HiZ
- Compressed multisample support
- Pushing pieces of UBOs?
+17 -3
View File
@@ -538,10 +538,23 @@ anv_CreateImageView(VkDevice _device,
iview->isl.usage = 0;
}
/* Sampling from HiZ is not yet enabled */
/* If the HiZ buffer can be sampled from, set the constant clear color.
* If it cannot, disable the isl aux usage flag.
*/
float red_clear_color = 0.0f;
enum isl_aux_usage surf_usage = image->aux_usage;
if (surf_usage == ISL_AUX_USAGE_HIZ)
surf_usage = ISL_AUX_USAGE_NONE;
if (image->aux_usage == ISL_AUX_USAGE_HIZ) {
if (iview->aspect_mask & VK_IMAGE_ASPECT_DEPTH_BIT &&
anv_can_sample_with_hiz(device->info.gen, image->samples)) {
/* When a HiZ buffer is sampled on gen9+, ensure that
* the constant fast clear value is set in the surface state.
*/
if (device->info.gen >= 9)
red_clear_color = ANV_HZ_FC_VAL;
} else {
surf_usage = ISL_AUX_USAGE_NONE;
}
}
/* Input attachment surfaces for color are allocated and filled
* out at BeginRenderPass time because they need compression information.
@@ -560,6 +573,7 @@ anv_CreateImageView(VkDevice _device,
iview->sampler_surface_state.map,
.surf = &surface->isl,
.view = &view,
.clear_color.f32 = { red_clear_color,},
.aux_surf = &image->aux_surface.isl,
.aux_usage = surf_usage,
.mocs = device->default_mocs);