[Mesa-dev] [PATCH 00/18] anv: Enable color compression on Sky Lake

Jason Ekstrand jason at jlekstrand.net
Fri Oct 28 09:16:56 UTC 2016

This little patch series (which applies on top of my previous series to
rework attachment surface states) enables color compression on Sky Lake.

I must say, I'm extremely pleased with how smoothly it all went.  I only
really ran into three big issues:

   1) An ISL bug that caused GPU hangs due to not allocating a big enough
      CCS (fixed by patch 5).

   2) Issues with trying to perform copy operations on compressed images.
      (See patches 15 and 16 for the solution.)

   3) Figuring out how we wanted to structure the thing.  Vulkan makes this
      a bit more difficult because of the fact that we can't actually track
      anything.  Instead, we have to just carefully turn it on in the cases
      where we can prove that it's safe.  This was one of the primary
      motivating factors for my earlier series to rework attachments.

After this series, there are really only two things left to do for
single-sampled color compression:

   1) Enable fast clears.  This should be pretty easy now that most of the
      infrastructure is in place.  I just need to write the code.

   2) Enable compression for storage images when possible.  Storage images
      are a bit strange because, due to hardware limitations, we frequently
      use a different format than the one requested and do shader
      work-arounds.  We can enable CCS for them, it will just take a little
      bit of careful thinking.

At the moment, I have no performance numbers but I hope to get some soon.
The series can be found in my review/anv-ccs-2 branch on freedesktop.org:


Jason Ekstrand (17):
  anv/image: Stop force-disabling AUX
  anv/cmd_buffer: Pull add_surface_state_reloc into genX_cmd_buffer.c
  anv/cmd_buffer: Refactor surface state relocation handling
  intel/isl: Rework the asserts and fails in isl_surf_get_ccs
  intel/isl: Allow non-2D CCS surfaces
  intel/blorp: Take a fast_clear_op in ccs_resolve
  anv/blorp: Ignore clears for attachments first used as resolve
  anv/image: Rename hiz_surface to aux_surface
  anv/image: Memset all aux surfaces (not just HiZ) to 0
  util/vk_alloc: Add a vk_zalloc2 helper
  anv/pass: Precompute some subpass usage information
  anv: Add initial for Sky Lake color compression
  anv/image: Add an aux_usage field for "default" aux
  intel/blorp: Always use UINT formats on SKL+
  intel/blorp: Properly handle color compression in blorp_copy
  anv: Enable "permanent" compression for immutable format images
  anv/TODO: Check off render buffer compression

Pohjolainen, Topi (1):
  intel/blorp: Add plumbing for color resolve slice details

 src/intel/blorp/blorp.h               |  11 +-
 src/intel/blorp/blorp_blit.c          | 233 +++++++++++++++++++++++++++++++---
 src/intel/blorp/blorp_clear.c         |  19 ++-
 src/intel/blorp/blorp_priv.h          |  13 +-
 src/intel/isl/isl.c                   |  13 +-
 src/intel/vulkan/TODO                 |   1 -
 src/intel/vulkan/anv_blorp.c          | 178 ++++++++++++++++++++------
 src/intel/vulkan/anv_image.c          |  76 ++++++++---
 src/intel/vulkan/anv_pass.c           |  39 +++++-
 src/intel/vulkan/anv_private.h        |  31 +++--
 src/intel/vulkan/genX_cmd_buffer.c    | 108 +++++++++++++---
 src/mesa/drivers/dri/i965/brw_blorp.c |  17 ++-
 src/util/vk_alloc.h                   |  16 +++
 13 files changed, 612 insertions(+), 143 deletions(-)


More information about the mesa-dev mailing list