[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:
https://cgit.freedesktop.org/~jekstrand/mesa/log/?h=review/anv-ccs-2
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
destinations
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(-)
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list