diff options
author | Nanley Chery <[email protected]> | 2017-06-28 10:25:49 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-07-22 20:12:10 -0700 |
commit | 9c9f63d1c749bfea25d6fcd78ff17ea2c49ec809 (patch) | |
tree | 37aa18411bbf214427e196fa80f0ddbf733322b6 /src/intel/vulkan/genX_cmd_buffer.c | |
parent | 62d72bb5d0bca85f41a181c7d0e9bd6309f278ed (diff) |
anv/cmd_buffer: Move aux_usage assignment up
For readability, bring the assignment of CCS closer to the assignment of
NONE and MCS.
Signed-off-by: Nanley Chery <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/intel/vulkan/genX_cmd_buffer.c')
-rw-r--r-- | src/intel/vulkan/genX_cmd_buffer.c | 62 |
1 files changed, 30 insertions, 32 deletions
diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 10cc28446d8..36c56691521 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -253,6 +253,36 @@ color_attachment_compute_aux_usage(struct anv_device * device, att_state->input_aux_usage = ISL_AUX_USAGE_MCS; att_state->fast_clear = false; return; + } else if (iview->image->aux_usage == ISL_AUX_USAGE_CCS_E) { + att_state->aux_usage = ISL_AUX_USAGE_CCS_E; + att_state->input_aux_usage = ISL_AUX_USAGE_CCS_E; + } else { + att_state->aux_usage = ISL_AUX_USAGE_CCS_D; + /* From the Sky Lake PRM, RENDER_SURFACE_STATE::AuxiliarySurfaceMode: + * + * "If Number of Multisamples is MULTISAMPLECOUNT_1, AUX_CCS_D + * setting is only allowed if Surface Format supported for Fast + * Clear. In addition, if the surface is bound to the sampling + * engine, Surface Format must be supported for Render Target + * Compression for surfaces bound to the sampling engine." + * + * In other words, we can only sample from a fast-cleared image if it + * also supports color compression. + */ + if (isl_format_supports_ccs_e(&device->info, iview->isl.format)) { + /* TODO: Consider using a heuristic to determine if temporarily enabling + * CCS_E for this image view would be beneficial. + * + * While fast-clear resolves and partial resolves are fairly cheap in the + * case where you render to most of the pixels, full resolves are not + * because they potentially involve reading and writing the entire + * framebuffer. If we can't texture with CCS_E, we should leave it off and + * limit ourselves to fast clears. + */ + att_state->input_aux_usage = ISL_AUX_USAGE_CCS_D; + } else { + att_state->input_aux_usage = ISL_AUX_USAGE_NONE; + } } assert(iview->image->aux_surface.isl.usage & ISL_SURF_USAGE_CCS_BIT); @@ -316,38 +346,6 @@ color_attachment_compute_aux_usage(struct anv_device * device, } else { att_state->fast_clear = false; } - - /** - * TODO: Consider using a heuristic to determine if temporarily enabling - * CCS_E for this image view would be beneficial. - * - * While fast-clear resolves and partial resolves are fairly cheap in the - * case where you render to most of the pixels, full resolves are not - * because they potentially involve reading and writing the entire - * framebuffer. If we can't texture with CCS_E, we should leave it off and - * limit ourselves to fast clears. - */ - if (iview->image->aux_usage == ISL_AUX_USAGE_CCS_E) { - att_state->aux_usage = ISL_AUX_USAGE_CCS_E; - att_state->input_aux_usage = ISL_AUX_USAGE_CCS_E; - } else { - att_state->aux_usage = ISL_AUX_USAGE_CCS_D; - /* From the Sky Lake PRM, RENDER_SURFACE_STATE::AuxiliarySurfaceMode: - * - * "If Number of Multisamples is MULTISAMPLECOUNT_1, AUX_CCS_D - * setting is only allowed if Surface Format supported for Fast - * Clear. In addition, if the surface is bound to the sampling - * engine, Surface Format must be supported for Render Target - * Compression for surfaces bound to the sampling engine." - * - * In other words, we can only sample from a fast-cleared image if it - * also supports color compression. - */ - if (isl_format_supports_ccs_e(&device->info, iview->isl.format)) - att_state->input_aux_usage = ISL_AUX_USAGE_CCS_D; - else - att_state->input_aux_usage = ISL_AUX_USAGE_NONE; - } } static bool |