From: Ramalingam C <ramalingam.c@intel.com>
To: intel-gfx <intel-gfx@lists.freedesktop.org>,
dri-devel <dri-devel@lists.freedesktop.org>
Subject: [Intel-gfx] [PATCH v7 0/9] drm/i915/ttm: Evict and restore of compressed object
Date: Fri, 1 Apr 2022 18:07:42 +0530 [thread overview]
Message-ID: <20220401123751.27771-1-ramalingam.c@intel.com> (raw)
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
v7:
GEM_BUG_ON is added for catching if inflated pages are filled for
get_pages
Optimised emit_copy_clear
Engine index is directly used for the upper 32 bits of offset
Use FAT_COLOR_BLT only for FLAT_CCS capable platforms
Resending with updated igt version for test with.
Test-with: 20220401074527.15709-2-ramalingam.c@intel.com
Ramalingam C (9):
drm/i915/gt: use engine instance directly for offset
drm/i915/gt: Use XY_FAST_COLOR_BLT to clear obj on graphics ver 12+
drm/i915/gt: Optimize the migration and clear loop
drm/i915/gt: Clear compress metadata for Flat-ccs objects
drm/i915/selftest_migrate: Consider the possible roundup of size
drm/i915/selftest_migrate: Check CCS meta data clear
drm/ttm: Add a parameter to add extra pages into ttm_tt
drm/i915/gem: Add 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 | 30 +-
drivers/gpu/drm/i915/gt/intel_gpu_commands.h | 21 +
drivers/gpu/drm/i915/gt/intel_migrate.c | 387 +++++++++++++++++--
drivers/gpu/drm/i915/gt/selftest_migrate.c | 253 ++++++++++--
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 +-
10 files changed, 642 insertions(+), 73 deletions(-)
--
2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: Ramalingam C <ramalingam.c@intel.com>
To: intel-gfx <intel-gfx@lists.freedesktop.org>,
dri-devel <dri-devel@lists.freedesktop.org>
Subject: [PATCH v7 0/9] drm/i915/ttm: Evict and restore of compressed object
Date: Fri, 1 Apr 2022 18:07:42 +0530 [thread overview]
Message-ID: <20220401123751.27771-1-ramalingam.c@intel.com> (raw)
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
v7:
GEM_BUG_ON is added for catching if inflated pages are filled for
get_pages
Optimised emit_copy_clear
Engine index is directly used for the upper 32 bits of offset
Use FAT_COLOR_BLT only for FLAT_CCS capable platforms
Resending with updated igt version for test with.
Test-with: 20220401074527.15709-2-ramalingam.c@intel.com
Ramalingam C (9):
drm/i915/gt: use engine instance directly for offset
drm/i915/gt: Use XY_FAST_COLOR_BLT to clear obj on graphics ver 12+
drm/i915/gt: Optimize the migration and clear loop
drm/i915/gt: Clear compress metadata for Flat-ccs objects
drm/i915/selftest_migrate: Consider the possible roundup of size
drm/i915/selftest_migrate: Check CCS meta data clear
drm/ttm: Add a parameter to add extra pages into ttm_tt
drm/i915/gem: Add 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 | 30 +-
drivers/gpu/drm/i915/gt/intel_gpu_commands.h | 21 +
drivers/gpu/drm/i915/gt/intel_migrate.c | 387 +++++++++++++++++--
drivers/gpu/drm/i915/gt/selftest_migrate.c | 253 ++++++++++--
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 +-
10 files changed, 642 insertions(+), 73 deletions(-)
--
2.20.1
next reply other threads:[~2022-04-01 12:37 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-01 12:37 Ramalingam C [this message]
2022-04-01 12:37 ` [PATCH v7 0/9] drm/i915/ttm: Evict and restore of compressed object Ramalingam C
2022-04-01 12:37 ` [Intel-gfx] [PATCH v7 1/9] drm/i915/gt: use engine instance directly for offset Ramalingam C
2022-04-01 12:37 ` Ramalingam C
2022-04-01 12:37 ` [Intel-gfx] [PATCH v7 2/9] drm/i915/gt: Use XY_FAST_COLOR_BLT to clear obj on graphics ver 12+ Ramalingam C
2022-04-01 12:37 ` Ramalingam C
2022-04-01 12:37 ` [Intel-gfx] [PATCH v7 3/9] drm/i915/gt: Optimize the migration and clear loop Ramalingam C
2022-04-01 12:37 ` Ramalingam C
2022-04-05 9:43 ` [Intel-gfx] " Balasubramani Vivekanandan
2022-04-05 9:43 ` Balasubramani Vivekanandan
2022-04-01 12:37 ` [Intel-gfx] [PATCH v7 4/9] drm/i915/gt: Clear compress metadata for Flat-ccs objects Ramalingam C
2022-04-01 12:37 ` Ramalingam C
2022-04-01 12:37 ` [Intel-gfx] [PATCH v7 5/9] drm/i915/selftest_migrate: Consider the possible roundup of size Ramalingam C
2022-04-01 12:37 ` Ramalingam C
2022-04-01 12:37 ` [Intel-gfx] [PATCH v7 6/9] drm/i915/selftest_migrate: Check CCS meta data clear Ramalingam C
2022-04-01 12:37 ` Ramalingam C
2022-04-01 12:37 ` [Intel-gfx] [PATCH v7 7/9] drm/ttm: Add a parameter to add extra pages into ttm_tt Ramalingam C
2022-04-01 12:37 ` Ramalingam C
2022-04-01 14:28 ` [Intel-gfx] " Ramalingam C
2022-04-01 14:28 ` Ramalingam C
2022-04-01 14:31 ` [Intel-gfx] " Christian König
2022-04-01 14:31 ` Christian König
2022-04-02 3:02 ` [Intel-gfx] " Ramalingam C
2022-04-02 3:02 ` Ramalingam C
2022-04-13 8:28 ` [Intel-gfx] " Joonas Lahtinen
2022-04-13 8:28 ` Joonas Lahtinen
2022-04-13 10:03 ` [Intel-gfx] " Ramalingam C
2022-04-13 10:03 ` Ramalingam C
2022-04-01 12:37 ` [Intel-gfx] [PATCH v7 8/9] drm/i915/gem: Add extra pages in ttm_tt for ccs data Ramalingam C
2022-04-01 12:37 ` Ramalingam C
2022-04-01 12:37 ` [Intel-gfx] [PATCH v7 9/9] drm/i915/migrate: Evict and restore the flatccs capable lmem obj Ramalingam C
2022-04-01 12:37 ` Ramalingam C
2022-04-01 13:42 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/ttm: Evict and restore of compressed object (rev7) Patchwork
2022-04-01 13:43 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-04-01 14:12 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-04-01 15:59 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2022-04-01 18:49 ` Ramalingam C
-- strict thread matches above, loose matches on Subject: below --
2022-03-28 19:07 [Intel-gfx] [PATCH v7 0/9] drm/i915/ttm: Evict and restore of compressed object Ramalingam C
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220401123751.27771-1-ramalingam.c@intel.com \
--to=ramalingam.c@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.