[Mesa-dev] [PATCH 00/29] blorp: Add support for more formats

Jason Ekstrand jason at jlekstrand.net
Thu Feb 1 04:15:02 UTC 2018


On Fri, Jan 26, 2018 at 5:59 PM, Jason Ekstrand <jason at jlekstrand.net>
wrote:

> This series adds additional format support to BLORP.  In particular,
> BLORP's blit and copy functions now handle:
>
>  * Source and destination swizzles on all gens
>  * Blitting to RGB formats (previously we only supported copying to RGB)
>  * Blitting to RGBX even if it's not supported for rendering
>  * Blitting to more exotic formats such as D24_UNORM and RGB9_E5
>  * Copying to and from 10_10_10_2 and 11_11_10 formats with CCS_E
>

I finally got around to running this series on CNL today and the 11_11_10
stuff doesn't quite work.  There are some YcBcR tests in the Vulkan CTS
which copy to/from 11_11_10 and they fail due to nan-flushing issues.  In
particular, the tests upload some pixels where one of the values is the
11-bit representation of infinity.  Somewhere in the process of converting
to/from float, the mantissa bits get lost (it's inf after all).  I could
spend a bunch of time trying to debug it or we could just leave CCS_E
disabled on ISL_FORMAT_R11G11B10_FLOAT for now.  In light of this, I've
dropped patch 28 and left the R11G11B10_FLOAT restriction in place in patch
29.  With that, this series passes the Vulkan CTS on CNL.


> As a side-effect of this, BLORP should now be capable of doing basically
> all of OpenGL format conversion for texture upload.  There are still a few
> edge-cases around packing and maybe luminance/alpha but most of it should
> be possible.  I have no intentions of actually doing this but some
> enterprising person could pick it up.
>
> This series also does some refactoring and improving of ISL since that
> seemed better than just extending everything inside blorp.  We also get a
> little format conversion library for NIR out of the deal.  If we ever want
> to do image_load_store lowering in NIR, most of the format conversion code
> is now written.
>
> Happy Friday!
>
>
> Jason Ekstrand (29):
>   blorp: Handle the RGB workaround more like other workarounds
>   i965/surface_state: Use an identity swizzle pre-Haswell
>   intel/isl: Add an isl_swizzle_supports_rendering helper
>   intel/isl: Add a helper for composing swizzles
>   intel/isl: Add a helper for inverting swizzles
>   intel/blorp: Add swizzle support for all hardware
>   nir: Add the start of a format conversion helper header
>   nir/format_convert: Add linear <-> sRGB helpers
>   nir/format_convert: Add pack/unpack for R11F_G11F_B10F
>   nir/format_convert: Add a function to pack RGB9_E5 formats
>   intel/blorp: Include nir_format_convert.h in blorp_blit.c
>   intel/blorp: Handle more exotic destination formats
>   intel/isl: Add some helpers for working with RGBX formats
>   intel/blorp: Silently convert RGBX destination formats to RGBA
>   intel/blorp: Support the RGB workaround on more formats
>   anv: Allow blitting to/from any supported format
>   i965/blorp: Remove a pile of blorp_blit restrictions
>   util/srgb: Add a float sRGB -> linear helper
>   intel/isl/format: Add a column for channel order to the table
>   intel/isl/format: Add field locations informations to channel_layout
>   intel/isl/format: Get rid of the ALPHA colorspace
>   intel/isl: Add format conversion code
>   intel/blorp: Use ISL instead of bitcast_color_value_to_uint
>   nir/format_convert: Add code for bitcasting vectors
>   intel/blorp: Use nir_format_bitcast_uint_vec_unmasked
>   intel/blorp: Add support for more format bitcasting
>   intel/blorp: Allow CCS copies of 1010102 formats
>   intel/blorp: Add blorp_copy support for ISL_FORMAT_R11G11B10_FLOAT
>   intel/isl: Allow CCS_E on more formats
>
>  src/compiler/Makefile.sources                    |   1 +
>  src/compiler/nir/meson.build                     |   1 +
>  src/compiler/nir/nir_format_convert.h            | 287 ++++++++++++
>  src/intel/Makefile.compiler.am                   |   2 +-
>  src/intel/Makefile.isl.am                        |   1 +
>  src/intel/blorp/blorp_blit.c                     | 502
> ++++++++++++--------
>  src/intel/blorp/blorp_priv.h                     |  23 +-
>  src/intel/isl/gen_format_layout.py               |  21 +-
>  src/intel/isl/isl.c                              | 118 +++++
>  src/intel/isl/isl.h                              |  37 ++
>  src/intel/isl/isl_format.c                       | 270 ++++++++++-
>  src/intel/isl/isl_format_layout.csv              | 558
> +++++++++++------------
>  src/intel/isl/isl_surface_state.c                |  37 +-
>  src/intel/isl/meson.build                        |   2 +-
>  src/intel/vulkan/anv_blorp.c                     |   3 +-
>  src/intel/vulkan/anv_formats.c                   |  10 +-
>  src/mesa/drivers/dri/i965/brw_blorp.c            |  67 ++-
>  src/mesa/drivers/dri/i965/brw_wm_surface_state.c |   6 +
>  src/util/format_srgb.h                           |  14 +
>  19 files changed, 1390 insertions(+), 570 deletions(-)
>  create mode 100644 src/compiler/nir/nir_format_convert.h
>
> --
> 2.5.0.400.gff86faf
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180131/a5404a9e/attachment.html>


More information about the mesa-dev mailing list