[Mesa-dev] [PATCH 09/11] intel: Add support for blitting 6 byte-per-pixel formats.

Kenneth Graunke kenneth at whitecape.org
Wed Apr 17 14:53:21 PDT 2013


On 04/16/2013 05:21 PM, Eric Anholt wrote:
> The next commit introduces what is apparently our first one, which tripped
> over this in glReadPixels.
> ---
>   src/mesa/drivers/dri/intel/intel_blit.c |   21 ++++++++++++++-------
>   1 file changed, 14 insertions(+), 7 deletions(-)

Commit message here should be "16 byte-per-pixel formats"...

> diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c
> index 1f3fad5..cc2fa70 100644
> --- a/src/mesa/drivers/dri/intel/intel_blit.c
> +++ b/src/mesa/drivers/dri/intel/intel_blit.c
> @@ -150,15 +150,22 @@ intelEmitCopyBlit(struct intel_context *intel,
>      if (src_pitch % 4 != 0 || dst_pitch % 4 != 0)
>         return false;
>
> -   /* For big formats (such as floating point), do the copy using 32bpp and
> -    * multiply the coordinates.
> +   /* For big formats (such as floating point), do the copy using 16 or 32bpp
> +    * and multiply the coordinates.
>       */
>      if (cpp > 4) {
> -      assert(cpp % 4 == 0);
> -      dst_x *= cpp / 4;
> -      dst_x2 *= cpp / 4;
> -      src_x *= cpp / 4;
> -      cpp = 4;
> +      if (cpp % 4 == 2) {
> +         dst_x *= cpp / 2;
> +         dst_x2 *= cpp / 2;
> +         src_x *= cpp / 2;
> +         cpp = 2;
> +      } else {
> +         assert(cpp % 4 == 0);
> +         dst_x *= cpp / 4;
> +         dst_x2 *= cpp / 4;
> +         src_x *= cpp / 4;
> +         cpp = 4;
> +      }
>      }
>
>      BR13 = br13_for_cpp(cpp) | translate_raster_op(logic_op) << 16;
>



More information about the mesa-dev mailing list