[Mesa-dev] [PATCH] i965/gen9: Remove the halign/valign field setup code in fast copy blit

Ben Widawsky ben at bwidawsk.net
Wed May 25 18:05:08 UTC 2016


On Wed, May 25, 2016 at 10:52:31AM -0700, Anuj Phogat wrote:
> Experimentation with different values of src/dst horizontal/vertical
> alignment showed that these fileds are not used on gen9 hardware.
> 
> A recent update in graphics specs has removed these fields from
> XY_FAST_COPY_BLT command.
> 
> Cc: Ben Widawsky <ben at bwidawsk.net>
> Cc: Chad Versace <chad.versace at intel.com>
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>

I verified that the docs were changed (in March actually):
Reviewed-by: Ben Widawsky <ben at bwidawsk.net>

> ---
>  src/mesa/drivers/dri/i965/intel_blit.c | 65 ----------------------------------
>  1 file changed, 65 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/intel_blit.c b/src/mesa/drivers/dri/i965/intel_blit.c
> index 38af598..42cdb36 100644
> --- a/src/mesa/drivers/dri/i965/intel_blit.c
> +++ b/src/mesa/drivers/dri/i965/intel_blit.c
> @@ -104,64 +104,6 @@ br13_for_cpp(int cpp)
>     }
>  }
>  
> -static uint32_t
> -get_tr_horizontal_align(uint32_t tr_mode, uint32_t cpp, bool is_src) {
> -   /* Alignment tables for YF/YS tiled surfaces. */
> -   const uint32_t align_2d_yf[] = {64, 64, 32, 32, 16};
> -   const uint32_t bpp = cpp * 8;
> -   const uint32_t shift = is_src ? 17 : 10;
> -   uint32_t align;
> -   int i = 0;
> -
> -   if (tr_mode == INTEL_MIPTREE_TRMODE_NONE)
> -      return 0;
> -
> -   /* Compute array index. */
> -   assert (bpp >= 8 && bpp <= 128 && _mesa_is_pow_two(bpp));
> -   i = ffs(bpp / 8) - 1;
> -
> -   align = tr_mode == INTEL_MIPTREE_TRMODE_YF ?
> -           align_2d_yf[i] :
> -           4 * align_2d_yf[i];
> -
> -   assert(_mesa_is_pow_two(align));
> -
> -   /* XY_FAST_COPY_BLT doesn't support horizontal alignment of 16. */
> -   if (align == 16)
> -      align = 32;
> -
> -   return (ffs(align) - 6) << shift;
> -}
> -
> -static uint32_t
> -get_tr_vertical_align(uint32_t tr_mode, uint32_t cpp, bool is_src) {
> -   /* Vertical alignment tables for YF/YS tiled surfaces. */
> -   const unsigned align_2d_yf[] = {64, 32, 32, 16, 16};
> -   const uint32_t bpp = cpp * 8;
> -   const uint32_t shift = is_src ? 15 : 8;
> -   uint32_t align;
> -   int i = 0;
> -
> -   if (tr_mode == INTEL_MIPTREE_TRMODE_NONE)
> -      return 0;
> -
> -   /* Compute array index. */
> -   assert (bpp >= 8 && bpp <= 128 && _mesa_is_pow_two(bpp));
> -   i = ffs(bpp / 8) - 1;
> -
> -   align = tr_mode == INTEL_MIPTREE_TRMODE_YF ?
> -           align_2d_yf[i] :
> -           4 * align_2d_yf[i];
> -
> -   assert(_mesa_is_pow_two(align));
> -
> -   /* XY_FAST_COPY_BLT doesn't support vertical alignments of 16 and 32. */
> -   if (align == 16 || align == 32)
> -      align = 64;
> -
> -   return (ffs(align) - 7) << shift;
> -}
> -
>  /**
>   * Emits the packet for switching the blitter from X to Y tiled or back.
>   *
> @@ -449,13 +391,6 @@ xy_blit_cmd(uint32_t src_tiling, uint32_t src_tr_mode,
>  
>        if (src_tiling != I915_TILING_NONE)
>           SET_TILING_XY_FAST_COPY_BLT(src_tiling, src_tr_mode, XY_FAST_SRC);
> -
> -      CMD |= get_tr_horizontal_align(src_tr_mode, cpp, true /* is_src */);
> -      CMD |= get_tr_vertical_align(src_tr_mode, cpp, true /* is_src */);
> -
> -      CMD |= get_tr_horizontal_align(dst_tr_mode, cpp, false /* is_src */);
> -      CMD |= get_tr_vertical_align(dst_tr_mode, cpp, false /* is_src */);
> -
>     } else {
>        assert(cpp <= 4);
>        switch (cpp) {
> -- 
> 2.5.5
> 


More information about the mesa-dev mailing list