[Mesa-dev] [PATCH 7/7] i965/blorp: Allow format conversions.

Chad Versace chad.versace at linux.intel.com
Tue Oct 8 13:44:24 PDT 2013


On 10/07/2013 04:31 PM, Kenneth Graunke wrote:
> BLORP performs blits by drawing a rectangle with a shader that samples
> from the source texture, and writes color data to the destination.
>
> The sampler always returns 32-bit RGBA float data, regardless of the
> source format's component ordering or data type.  Likewise, the render
> target write message takes 32-bit RGBA float data, and converts it
> appropriately.  So the bulk of the work is already taken care of for us.
>
> This greatly accelerates a lot of blits and CopyTexSubImage calls, and
> makes Legends of Aethereus playable on Ivybridge.  At the default
> settings, LOA continually blits between SRGBA8888 (the window format)
> and RGBA16_FLOAT.  Since neither BLORP nor our BLT paths supported this,
> it fell back to meta, spending 33% of the CPU in floorf() converting
> between floats and half-floats.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>   src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 15 ++++++++++++++-
>   1 file changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
> index 2427085..c44f7c4 100644
> --- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp



> +   /* We can't handle format conversions between Z24 and other formats since
Please clarify the comment by inserting "depth" here-------------|
> +    * we have to lie about the surface format.  See the comments in
> +    * brw_blorp_surface_info::set().
> +    */
> +   if ((src_mt->format == MESA_FORMAT_X8_Z24) ^
> +       (dst_mt->format == MESA_FORMAT_X8_Z24)) {
> +      return false;
> +   }

With Daniel's little fix, this series is
Reviewed-by: Chad Versace <chad.versace at linux.intel.com>









More information about the mesa-dev mailing list