[v5,12/19] i965: Add aux_buf variable to simplify code.

Submitted by Rafael Antognolli on March 29, 2018, 5:58 p.m.

Details

Message ID 20180329175853.23728-13-rafael.antognolli@intel.com
State New
Headers show
Series "Use clear color address in surface state." ( rev: 7 6 5 ) in Mesa

Not browsing as part of any series.

Commit Message

Rafael Antognolli March 29, 2018, 5:58 p.m.
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.

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
---
 src/mesa/drivers/dri/i965/brw_blorp.c            | 19 +++++++------------
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 15 ++++++++-------
 2 files changed, 15 insertions(+), 19 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c
index 44064fc0cf3..a0977598309 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.c
+++ b/src/mesa/drivers/dri/i965/brw_blorp.c
@@ -155,10 +155,13 @@  blorp_surf_for_miptree(struct brw_context *brw,
    };
 
    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;
+
+   aux_surf = &aux_buf->surf;
 
    if (mt->format == MESA_FORMAT_S_UINT8 && is_render_target &&
        devinfo->gen <= 7)
@@ -180,16 +183,8 @@  blorp_surf_for_miptree(struct brw_context *brw,
          .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.
        */

Comments

On Thu, Mar 29, 2018 at 10:58 AM, Rafael Antognolli <
rafael.antognolli@intel.com> wrote:

> 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.
>
> Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
> ---
>  src/mesa/drivers/dri/i965/brw_blorp.c            | 19 +++++++------------
>  src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 15 ++++++++-------
>  2 files changed, 15 insertions(+), 19 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c
> b/src/mesa/drivers/dri/i965/brw_blorp.c
> index 44064fc0cf3..a0977598309 100644
> --- a/src/mesa/drivers/dri/i965/brw_blorp.c
> +++ b/src/mesa/drivers/dri/i965/brw_blorp.c
> @@ -155,10 +155,13 @@ blorp_surf_for_miptree(struct brw_context *brw,
>     };
>
>     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;
> +
> +   aux_surf = &aux_buf->surf;
>

Let's just drop the aux_surf temporary.  It's only used a few lines below
to set surf->aux_surf and now that we have an aux_buf temporary, we can
easily just do "surf->aux_surf = &aux_buf->surf".  With that changed,

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>


>
>     if (mt->format == MESA_FORMAT_S_UINT8 && is_render_target &&
>         devinfo->gen <= 7)
> @@ -180,16 +183,8 @@ blorp_surf_for_miptree(struct brw_context *brw,
>           .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.
>         */
> --
> 2.14.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>