i965: Add aux_buf variable to simplify code.
authorRafael Antognolli <rafael.antognolli@intel.com>
Mon, 5 Mar 2018 19:25:12 +0000 (11:25 -0800)
committerRafael Antognolli <rafael.antognolli@intel.com>
Thu, 5 Apr 2018 14:42:45 +0000 (07:42 -0700)
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 <rafael.antognolli@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/mesa/drivers/dri/i965/brw_blorp.c
src/mesa/drivers/dri/i965/brw_wm_surface_state.c

index 44064fc0cf30a2e23869be67dcb6da73db6d3c16..566899f8ccf17a0dc3553c027647439765007345 100644 (file)
@@ -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,
index caa92d7d878aa66c305ac8531770803769d80bf4..ea85591640321122e1329306a784c7b6b251dcd3 100644 (file)
@@ -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.
        */