<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jul 1, 2016 at 12:24 AM, Pohjolainen, Topi <span dir="ltr"><<a href="mailto:topi.pohjolainen@intel.com" target="_blank">topi.pohjolainen@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Wed, Jun 29, 2016 at 05:37:34PM -0700, Jason Ekstrand wrote:<br>
> ---<br>
>  src/mesa/drivers/dri/i965/brw_blorp.c        | 24 ++++++++++++------------<br>
>  src/mesa/drivers/dri/i965/brw_blorp.h        | 15 ++-------------<br>
>  src/mesa/drivers/dri/i965/brw_blorp_blit.cpp |  8 ++++----<br>
>  3 files changed, 18 insertions(+), 29 deletions(-)<br>
><br>
> diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c<br>
> index d6581d0..5e433d3 100644<br>
> --- a/src/mesa/drivers/dri/i965/brw_blorp.c<br>
> +++ b/src/mesa/drivers/dri/i965/brw_blorp.c<br>
> @@ -66,9 +66,6 @@ brw_blorp_surface_info_init(struct brw_context *brw,<br>
>     info->width = minify(mt->physical_width0, level - mt->first_level);<br>
>     info->height = minify(mt->physical_height0, level - mt->first_level);<br>
><br>
> -   intel_miptree_get_image_offset(mt, level, layer,<br>
> -                                  &info->x_offset, &info->y_offset);<br>
> -<br>
>     info->swizzle = SWIZZLE_XYZW;<br>
><br>
>     if (format == MESA_FORMAT_NONE)<br>
> @@ -110,6 +107,15 @@ brw_blorp_surface_info_init(struct brw_context *brw,<br>
>        break;<br>
>     }<br>
>     }<br>
> +<br>
> +   uint32_t x_offset, y_offset;<br>
> +   intel_miptree_get_image_offset(mt, level, layer, &x_offset, &y_offset);<br>
> +<br>
> +   uint8_t bs = isl_format_get_layout(info->brw_surfaceformat)->bs;<br>
> +   isl_tiling_get_intratile_offset_el(&brw->isl_dev, info->surf.tiling, bs,<br>
> +                                      info->surf.row_pitch, x_offset, y_offset,<br>
> +                                      &info->bo_offset,<br>
> +                                      &info->tile_x_sa, &info->tile_y_sa);<br>
>  }<br>
><br>
><br>
> @@ -305,13 +311,6 @@ brw_blorp_emit_surface_state(struct brw_context *brw,<br>
>                                    ISL_SURF_USAGE_TEXTURE_BIT,<br>
>     };<br>
><br>
> -   uint32_t offset, tile_x, tile_y;<br>
> -   isl_tiling_get_intratile_offset_el(&brw->isl_dev, surf.tiling,<br>
> -                                      isl_format_get_layout(view.format)->bs,<br>
> -                                      surf.row_pitch,<br>
> -                                      surface->x_offset, surface->y_offset,<br>
> -                                      &offset, &tile_x, &tile_y);<br>
> -<br>
>     uint32_t surf_offset;<br>
>     uint32_t *dw = brw_state_batch(brw, AUB_TRACE_SURFACE_STATE,<br>
>                                    ss_info.num_dwords * 4, ss_info.ss_align,<br>
> @@ -320,11 +319,12 @@ brw_blorp_emit_surface_state(struct brw_context *brw,<br>
>     const uint32_t mocs = is_render_target ? ss_info.rb_mocs : ss_info.tex_mocs;<br>
><br>
>     isl_surf_fill_state(&brw->isl_dev, dw, .surf = &surf, .view = &view,<br>
> -                       .address = surface->mt->bo->offset64 + offset,<br>
> +                       .address = surface->mt->bo->offset64 + surface->bo_offset,<br>
>                         .aux_surf = aux_surf, .aux_usage = surface->aux_usage,<br>
>                         .aux_address = aux_offset,<br>
>                         .mocs = mocs, .clear_color = clear_color,<br>
> -                       .x_offset_sa = tile_x, .y_offset_sa = tile_y);<br>
> +                       .x_offset_sa = surface->tile_x_sa,<br>
> +                       .y_offset_sa = surface->tile_y_sa);<br>
><br>
>     /* Emit relocation to surface contents */<br>
>     drm_intel_bo_emit_reloc(brw-><a href="http://batch.bo" rel="noreferrer" target="_blank">batch.bo</a>,<br>
> diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h b/src/mesa/drivers/dri/i965/brw_blorp.h<br>
> index b8a8d06..fddd007 100644<br>
> --- a/src/mesa/drivers/dri/i965/brw_blorp.h<br>
> +++ b/src/mesa/drivers/dri/i965/brw_blorp.h<br>
> @@ -104,19 +104,8 @@ struct brw_blorp_surface_info<br>
>      */<br>
>     uint32_t height;<br>
><br>
> -   /**<br>
> -    * X offset within the surface to texture from (or render to).  For<br>
> -    * surfaces using INTEL_MSAA_LAYOUT_IMS, this is measured in samples, not<br>
> -    * pixels.<br>
> -    */<br>
> -   uint32_t x_offset;<br>
> -<br>
> -   /**<br>
> -    * Y offset within the surface to texture from (or render to).  For<br>
> -    * surfaces using INTEL_MSAA_LAYOUT_IMS, this is measured in samples, not<br>
> -    * pixels.<br>
> -    */<br>
> -   uint32_t y_offset;<br>
> +   uint32_t bo_offset;<br>
> +   uint32_t tile_x_sa, tile_y_sa;<br>
><br>
>     /**<br>
>      * Format that should be used when setting up the surface state for this<br>
> diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp<br>
> index c253412..5696d52 100644<br>
> --- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp<br>
> +++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp<br>
> @@ -1896,8 +1896,8 @@ brw_blorp_blit_miptrees(struct brw_context *brw,<br>
>        params.y1 = ALIGN(params.y1, y_align) / 2;<br>
>        params.dst.width = ALIGN(params.dst.width, x_align) * 2;<br>
>        params.dst.height = ALIGN(params.dst.height, y_align) / 2;<br>
> -      params.dst.x_offset *= 2;<br>
> -      params.dst.y_offset /= 2;<br>
> +      params.dst.tile_x_sa *= 2;<br>
> +      params.dst.tile_y_sa /= 2;<br>
<br>
</div></div>This I had to think about a little. Previously we multiplied full x/y offsets,<br>
resolved tile aligned buffer offset and intra tile offset based on that. Now<br>
we let ISL to take into account the msaa setting and we only multiply the<br>
resolved intra tile offsets. Makes sense and looks a little cleaner also:<br></blockquote><div><br></div><div>I added the middle two sentences of that to the commit message<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
(You could add that reasoning into commit message if you like). Anyway:<br>
<br>
Reviewed-by: Topi Pohjolainen <<a href="mailto:topi.pohjolainen@intel.com">topi.pohjolainen@intel.com</a>><br></blockquote><div><br></div><div>Thanks!<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
>        wm_prog_key.use_kill = true;<br>
>     }<br>
><br>
> @@ -1922,8 +1922,8 @@ brw_blorp_blit_miptrees(struct brw_context *brw,<br>
>        const unsigned x_align = 8, y_align = params.src.surf.samples != 0 ? 8 : 4;<br>
>        params.src.width = ALIGN(params.src.width, x_align) * 2;<br>
>        params.src.height = ALIGN(params.src.height, y_align) / 2;<br>
> -      params.src.x_offset *= 2;<br>
> -      params.src.y_offset /= 2;<br>
> +      params.src.tile_x_sa *= 2;<br>
> +      params.src.tile_y_sa /= 2;<br>
>     }<br>
><br>
>     /* tex_samples and rt_samples are the sample counts that are set up in<br>
> --<br>
> 2.5.0.400.gff86faf<br>
><br>
</span>> _______________________________________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div><br></div></div>