Message ID | 20220301215334.20543-1-ramalingam.c@intel.com (mailing list archive) |
---|---|
Headers | show |
Series | drm/i915/ttm: Evict and store of compressed object | expand |
Reviewed-by: Nirmoy Das <nirmoy.das@intel.com> for the series as well. On 01/03/2022 22:53, Ramalingam C wrote: > 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 > > So when we allocate a object in local memory we dont need to explicitly > allocate the space for ccs data. But when we evict the obj into the smem > to hold the compression related data along with the obj we need smem > space of obj_size + (obj_size/256). > > Hence when we create smem for an obj with lmem placement possibility we > create with the extra space. > > When we are swapping out the local memory obj on flat-ccs capable platform, > we need to capture the ccs data too along with main meory and we need to > restore it when we are swapping in the content. > > When lmem object is swapped into a smem obj, smem obj will > have the extra pages required to hold the ccs data corresponding to the > lmem main memory. So main memory of lmem will be copied into the initial > pages of the smem and then ccs data corresponding to the main memory > will be copied to the subsequent pages of smem. > > Swapin happens exactly in reverse order. First main memory of lmem is > restored from the smem's initial pages and the ccs data will be restored > from the subsequent pages of smem. > > Extracting and restoring the CCS data is done through a special cmd called > XY_CTRL_SURF_COPY_BLT > > Test-with: 20220301212513.30772-1-ramalingam.c@intel.com > > Ayaz A Siddiqui (1): > drm/i915/gt: Clear compress metadata for Xe_HP platforms > > Ramalingam C (3): > drm/ttm: parameter to add extra pages into ttm_tt > drm/i915/gem: Extra pages in ttm_tt for ccs data > drm/i915/migrate: Evict and restore the flatccs capable lmem obj > > drivers/gpu/drm/drm_gem_vram_helper.c | 2 +- > drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 23 +- > drivers/gpu/drm/i915/gt/intel_gpu_commands.h | 15 + > drivers/gpu/drm/i915/gt/intel_migrate.c | 327 +++++++++++++++++-- > drivers/gpu/drm/qxl/qxl_ttm.c | 2 +- > drivers/gpu/drm/ttm/ttm_agp_backend.c | 2 +- > drivers/gpu/drm/ttm/ttm_tt.c | 12 +- > drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c | 2 +- > include/drm/ttm/ttm_tt.h | 4 +- > 9 files changed, 357 insertions(+), 32 deletions(-) >