[Mesa-dev] [PATCH 00/16] anv: Fix our 48-bit problems

Jason Ekstrand jason at jlekstrand.net
Thu May 18 21:00:47 UTC 2017


This patch series aims to fix the remaining 48-bit problems in the Vulkan
driver.  As such, the entire thing will be CC'd to stable before landing.

The first 5 patches fix the driver to handle memory aliasing correctly.
Vulkan allows you to bind multiple buffers or images to overlapping memory
regions so long as you get your layout transitions correct.  Up until now,
we've been doing a memset at vkBindImageMemory time to initialize auxiliary
surfaces which isn't valid in light of aliasing.  Instead, these patches
provide actual support for layout transitions from UNDEFINED to other
layouts.  This isn't actually a 48-bit issue but the other patches cause a
change in the behavior of some CTS tests which makes them start failing due
to memory aliasing problems.

The next 10 patches refactor memory type setup and make us advertise 2
heaps on platforms with a lot of memory.  For justification, see the
comment in patch 15.

The last patch just extends the new pass added in patch 2 for gen7-8.  It's
fairly straightforward but completely untested.  Hopefully it will help
Nanley or someone else if they ever need it.

Cc: "17.1" <mesa-stable at lists.freedesktop.org>
Cc: Nanley Chery <nanley.g.chery at intel.com>

Jason Ekstrand (16):
  isl: Make get_intratile_offset_el take the element size in bits
  intel/blorp: Add a CCS ambiguation pass
  anv: Handle color layout transitions from the UNINITIALIZED layout
  anv: Handle transitioning depth from UNDEFINED to other layouts
  anv/image: Get rid of the memset(aux, 0, sizeof(aux)) hack
  anv: Predicate 48bit support on gen >= 8
  anv: Set up memory types and heaps during physical device init
  anv: Determine the type of mapping based on type metadata
  anv: Add valid_bufer_usage to the memory type metadata
  anv: Set image memory types based on the type count
  anv: Stop setting BO flags in bo_init_new
  anv: Make supports_48bit_addresses a heap property
  anv: Refactor memory type setup
  anv: Advertise both 32-bit and 48-bit heaps when we have enough memory
  anv: Require vertex buffers to come from a 32-bit heap
  intel/blorp: Add gen7-8 support to ccs_ambiguate

 src/intel/blorp/blorp.h                |   5 +
 src/intel/blorp/blorp_clear.c          | 159 +++++++++++++++++++++++++-
 src/intel/isl/isl.c                    |   7 +-
 src/intel/isl/isl.h                    |   6 +-
 src/intel/vulkan/anv_allocator.c       |  17 +--
 src/intel/vulkan/anv_blorp.c           |  40 +++++++
 src/intel/vulkan/anv_device.c          | 201 ++++++++++++++++++++++++---------
 src/intel/vulkan/anv_image.c           |  40 ++-----
 src/intel/vulkan/anv_private.h         |  33 +++++-
 src/intel/vulkan/anv_queue.c           |   4 +-
 src/intel/vulkan/genX_cmd_buffer.c     |  33 ++++--
 src/mesa/drivers/dri/i965/intel_blit.c |   2 +-
 12 files changed, 428 insertions(+), 119 deletions(-)

-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list