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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev