diff options
author | Rafael Antognolli <[email protected]> | 2018-03-05 11:25:12 -0800 |
---|---|---|
committer | Rafael Antognolli <[email protected]> | 2018-04-05 07:42:45 -0700 |
commit | 5449f942f20e7bd9379219532b3f7a29a55c0d55 (patch) | |
tree | 048ac54a9cb0e5558600c231ec4c6bce21c08d66 /src/mesa/drivers/dri | |
parent | 8735c86ce08155a6cd07addbc848f148d0bc82a9 (diff) |
i965: Add aux_buf variable to simplify code.
In a follow up patch, we make use of clear_color_bo, which is in
mt->mcs_buf or mt->hiz_buf. To avoid duplicating more code that does the
same thing on both aux buffers, just use aux_buf already.
v5: Add aux_buf to brw_wm_surface_state too.
v6: Drop aux_surf and use aux_buf->surf instead (Jason).
Signed-off-by: Rafael Antognolli <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_blorp.c | 20 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 15 |
2 files changed, 14 insertions, 21 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c index 44064fc0cf3..566899f8ccf 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp.c +++ b/src/mesa/drivers/dri/i965/brw_blorp.c @@ -154,11 +154,11 @@ blorp_surf_for_miptree(struct brw_context *brw, .aux_usage = aux_usage, }; - struct isl_surf *aux_surf = NULL; + struct intel_miptree_aux_buffer *aux_buf = NULL; if (mt->mcs_buf) - aux_surf = &mt->mcs_buf->surf; + aux_buf = mt->mcs_buf; else if (mt->hiz_buf) - aux_surf = &mt->hiz_buf->surf; + aux_buf = mt->hiz_buf; if (mt->format == MESA_FORMAT_S_UINT8 && is_render_target && devinfo->gen <= 7) @@ -174,22 +174,14 @@ blorp_surf_for_miptree(struct brw_context *brw, */ surf->clear_color = mt->fast_clear_color; - surf->aux_surf = aux_surf; + surf->aux_surf = &aux_buf->surf; surf->aux_addr = (struct blorp_address) { .reloc_flags = is_render_target ? EXEC_OBJECT_WRITE : 0, .mocs = surf->addr.mocs, }; - if (mt->mcs_buf) { - surf->aux_addr.buffer = mt->mcs_buf->bo; - surf->aux_addr.offset = mt->mcs_buf->offset; - } else { - assert(mt->hiz_buf); - assert(surf->aux_usage == ISL_AUX_USAGE_HIZ); - - surf->aux_addr.buffer = mt->hiz_buf->bo; - surf->aux_addr.offset = mt->hiz_buf->offset; - } + surf->aux_addr.buffer = aux_buf->bo; + surf->aux_addr.offset = aux_buf->offset; } else { surf->aux_addr = (struct blorp_address) { .buffer = NULL, diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index caa92d7d878..ea855916403 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -152,22 +152,19 @@ brw_emit_surface_state(struct brw_context *brw, union isl_color_value clear_color = { .u32 = { 0, 0, 0, 0 } }; - struct brw_bo *aux_bo; + struct brw_bo *aux_bo = NULL; struct isl_surf *aux_surf = NULL; uint64_t aux_offset = 0; + struct intel_miptree_aux_buffer *aux_buf = NULL; switch (aux_usage) { case ISL_AUX_USAGE_MCS: case ISL_AUX_USAGE_CCS_D: case ISL_AUX_USAGE_CCS_E: - aux_surf = &mt->mcs_buf->surf; - aux_bo = mt->mcs_buf->bo; - aux_offset = mt->mcs_buf->offset; + aux_buf = mt->mcs_buf; break; case ISL_AUX_USAGE_HIZ: - aux_surf = &mt->hiz_buf->surf; - aux_bo = mt->hiz_buf->bo; - aux_offset = 0; + aux_buf = mt->hiz_buf; break; case ISL_AUX_USAGE_NONE: @@ -175,6 +172,10 @@ brw_emit_surface_state(struct brw_context *brw, } if (aux_usage != ISL_AUX_USAGE_NONE) { + aux_surf = &aux_buf->surf; + aux_bo = aux_buf->bo; + aux_offset = aux_buf->offset; + /* We only really need a clear color if we also have an auxiliary * surface. Without one, it does nothing. */ |