[PATCH v5 00/19] drm/i915/dg2: Enabling 64k page size and flat ccs
Ramalingam C
ramalingam.c at intel.com
Fri Feb 18 19:04:20 UTC 2022
Just a note here. To enable the dg2 with basic support sooner on CI we
have taken a subset of this series separtely at
https://patchwork.freedesktop.org/series/100419/
Remaining patches will be pursued on top the above series. Thanks for
the review comments. We will fix them working with reviewers. Thanks.
Ram.
On 2022-02-01 at 16:11:13 +0530, Ramalingam C wrote:
> This series introduces the enabling patches for new memory compression
> feature Flat CCS and 64k page support for i915 local memory, along with
> documentation on the uAPI impact. Included the details of the feature and
> the implications on the uAPI below. Which is also added into
> Documentation/gpu/rfc/i915_dg2.rst
>
> DG2 64K page size support:
> =========================
>
> On discrete platforms, starting from DG2, we have to contend with GTT
> page size restrictions when dealing with I915_MEMORY_CLASS_DEVICE
> objects. Specifically the hardware only supports 64K or larger GTT
> page sizes for such memory. The kernel will already ensure that all
> I915_MEMORY_CLASS_DEVICE memory is allocated using 64K or larger page
> sizes underneath.
>
> Note that the returned size here will always reflect any required
> rounding up done by the kernel, i.e 4K will now become 64K on devices
> such as DG2.
>
> Special DG2 GTT address alignment requirement:
>
> The GTT alignment will also need to be at least 2M for such objects.
>
> Note that due to how the hardware implements 64K GTT page support, we
> have some further complications:
>
> 1) The entire PDE (which covers a 2MB virtual address range), must
> contain only 64K PTEs, i.e mixing 4K and 64K PTEs in the same
> PDE is forbidden by the hardware.
>
> 2) We still need to support 4K PTEs for I915_MEMORY_CLASS_SYSTEM
> objects.
>
> To keep things simple for userland, we mandate that any GTT mappings
> must be aligned to and rounded up to 2MB. As this only wastes virtual
> address space and avoids userland having to copy any needlessly
> complicated PDE sharing scheme (coloring) and only affects DG2, this
> is deemed to be a good compromise.
>
> Flat CCS support for lmem
> =========================
> On Xe-HP and later devices, we use dedicated compression control state
> (CCS) stored in local memory for each surface, to support the 3D and
> media compression formats.
>
> The memory required for the CCS of the entire local memory is 1/256 of
> the local memory size. So before the kernel boot, the required memory is
> reserved for the CCS data and a secure register will be programmed with
> the CCS base address.
>
> Flat CCS data needs to be cleared when a lmem object is allocated. And
> CCS data can be copied in and out of CCS region through
> XY_CTRL_SURF_COPY_BLT. CPU can’t access the CCS data directly.
>
> When we exaust the lmem, if the object’s placements support smem, then
> we can directly decompress the compressed lmem object into smem and
> start using it from smem itself.
>
> But when we need to swapout the compressed lmem object into a smem
> region though objects’ placement doesn’t support smem, then we copy the
> lmem content as it is into smem region along with ccs data (using
> XY_CTRL_SURF_COPY_BLT). When the object is referred, lmem content will
> be swaped in along with restoration of the CCS data (using
> XY_CTRL_SURF_COPY_BLT) at corresponding location.
>
> Flat-CCS Modifiers for different compression formats
> ====================================================
> I915_FORMAT_MOD_4_TILED_DG2_RC_CCS - used to indicate the buffers of
> Flat CCS render compression formats. Though the general layout is same
> as I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, new hashing/compression
> algorithm is used. Render compression uses 128 byte compression blocks
>
> I915_FORMAT_MOD_4_TILED_DG2_MC_CCS -used to indicate the buffers of Flat
> CCS media compression formats. Though the general layout is same as
> I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS, new hashing/compression algorithm
> is used. Media compression uses 256 byte compression blocks.
>
> I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC - used to indicate the buffers of
> Flat CCS clear color render compression formats. Unified compression
> format for clear color render compression. The genral layout is a tiled
> layout using 4Kb tiles i.e Tile4 layout. Fast clear color value expected
> by HW is located in fb at offset 0 of plane#1
>
> v2:
> Fixed some formatting issues and platform naming issues
> Added some more documentation on Flat-CCS
>
> v3:
> Plane programming is handled for flat-ccs and clear color
> Tile4 and flat ccs modifier patches are rebased on table based
> modifier reference method
> Three patches are squashed
> Y tile is pruned for DG2.
> flat_ccs_cc plane format info is added
> Added mesa, compute and media ppl for required uAPI ack.
>
> v4:
> Rebasing of the patches
>
> v5:
> KDoc is enhanced for cc modifier. [Nanley & Lionel]
> inbuild macro usage for functional fix [Bob]
> Addressed review comments from Matt
> Platform coverage fix for modifiers [Imre]
>
> Abdiel Janulgue (1):
> drm/i915/lmem: Enable lmem for platforms with Flat CCS
>
> Anshuman Gupta (1):
> drm/i915/dg2: Flat CCS Support
>
> Ayaz A Siddiqui (1):
> drm/i915/gt: Clear compress metadata for Xe_HP platforms
>
> CQ Tang (1):
> drm/i915/xehpsdv: Add has_flat_ccs to device info
>
> Matt Roper (1):
> drm/i915/dg2: Add DG2 unified compression
>
> Matthew Auld (6):
> drm/i915: enforce min GTT alignment for discrete cards
> drm/i915: support 64K GTT pages for discrete cards
> drm/i915/gtt: allow overriding the pt alignment
> drm/i915/gtt: add xehpsdv_ppgtt_insert_entry
> drm/i915/migrate: add acceleration support for DG2
> drm/i915/uapi: document behaviour for DG2 64K support
>
> Mika Kahola (1):
> uapi/drm/dg2: Introduce format modifier for DG2 clear color
>
> Ramalingam C (4):
> drm/i915: add needs_compact_pt flag
> Doc/gpu/rfc/i915: i915 DG2 64k pagesize uAPI
> drm/i915/Flat-CCS: Document on Flat-CCS memory compression
> Doc/gpu/rfc/i915: i915 DG2 flat-CCS uAPI
>
> Robert Beckett (1):
> drm/i915: add gtt misalignment test
>
> Stanislav Lisovskiy (2):
> drm/i915: Introduce new Tile 4 format
> drm/i915/dg2: Tile 4 plane format support
>
> Documentation/gpu/rfc/i915_dg2.rst | 32 ++
> Documentation/gpu/rfc/index.rst | 3 +
> drivers/gpu/drm/i915/display/intel_display.c | 5 +-
> drivers/gpu/drm/i915/display/intel_fb.c | 68 +++-
> drivers/gpu/drm/i915/display/intel_fb.h | 1 +
> drivers/gpu/drm/i915/display/intel_fbc.c | 1 +
> .../drm/i915/display/intel_plane_initial.c | 1 +
> .../drm/i915/display/skl_universal_plane.c | 70 +++-
> .../gpu/drm/i915/gem/selftests/huge_pages.c | 60 ++++
> .../i915/gem/selftests/i915_gem_client_blt.c | 21 +-
> drivers/gpu/drm/i915/gt/gen8_ppgtt.c | 158 +++++++-
> drivers/gpu/drm/i915/gt/intel_gpu_commands.h | 14 +
> drivers/gpu/drm/i915/gt/intel_gt.c | 19 +
> drivers/gpu/drm/i915/gt/intel_gt.h | 1 +
> drivers/gpu/drm/i915/gt/intel_gtt.c | 12 +
> drivers/gpu/drm/i915/gt/intel_gtt.h | 31 +-
> drivers/gpu/drm/i915/gt/intel_migrate.c | 336 ++++++++++++++++--
> drivers/gpu/drm/i915/gt/intel_ppgtt.c | 17 +-
> drivers/gpu/drm/i915/gt/intel_region_lmem.c | 24 +-
> drivers/gpu/drm/i915/i915_drv.h | 18 +-
> drivers/gpu/drm/i915/i915_pci.c | 4 +
> drivers/gpu/drm/i915/i915_reg.h | 4 +
> drivers/gpu/drm/i915/i915_vma.c | 9 +
> drivers/gpu/drm/i915/intel_device_info.h | 3 +
> drivers/gpu/drm/i915/intel_pm.c | 1 +
> drivers/gpu/drm/i915/selftests/i915_gem_gtt.c | 224 ++++++++++--
> include/uapi/drm/drm_fourcc.h | 43 +++
> include/uapi/drm/i915_drm.h | 44 ++-
> 28 files changed, 1102 insertions(+), 122 deletions(-)
> create mode 100644 Documentation/gpu/rfc/i915_dg2.rst
>
> --
> 2.20.1
>
More information about the dri-devel
mailing list