On 12/18/2025 4:27 PM, Jani Nikula wrote:
On Thu, 18 Dec 2025, Ankit Nautiyal <[email protected]> wrote:
GVT currently relies on display internals through register macros and
helpers like for_each_pipe(). This tight coupling makes modularization
difficult because GVT should not access struct intel_display directly.
Add an API for GVT code to expose DISPLAY_RUNTIME_INFO()->pipe_mask.
This series introduces changes to make GVT independent of display internals
while keeping existing macros usable:
- Abstract offset calculations in display using
INTEL_DISPLAY_DEVICE_*_OFFSET() macros.
- Add APIs for GVT to compute offsets and pipe mask via functions.
- Update GVT to use these APIs by overriding helper macros and
for_each_pipe().
Oh, this doesn't handle intel_gvt_mmio_table.c, which is part of i915.
That can be a follow-up, I guess, but still needs to be addressed.
Ohh yeah, I had looked into it earlier, but completely missed it after I
returned from my leave.
Will look into that after this series.
Regards,
Ankit
BR,
Jani.
Rev2:
- Remove conflicting headers and get rid of #ifdefs/#undefs in last
patch.
- Wrap macro arguments in paranthesis.
- Rename for_each_pipe to gvt_for_each_pipe.
PS: I have not yet addressed the question about whether we need to start
using _MMIO_TRANS2() instead of_MMIO_PIPE2() in TRANSCONF() macro.
That likely needs a separate patch and discussion.
For now, I have kept the patch#4 to deal with the
-Werror=enum-conversion:
- drm/i915/gvt/display_helpers: Cast argument to enum pipe for
pipe-offset macro
Ankit Nautiyal (7):
drm/i915/display: Abstract pipe/trans/cursor offset calculation
drm/i915/display: Add APIs to be used by gvt to get the register
offsets
drm/i915/gvt: Add header to use display offset functions in macros
drm/i915/gvt/display_helpers: Cast argument to enum pipe for
pipe-offset macro
drm/i915/gvt: Change for_each_pipe to use pipe_valid API
drm/i915/gvt: Use the appropriate header for the DPLL macro
drm/i915/gvt/display_helper: Get rid of #ifdef/#undefs
drivers/gpu/drm/i915/Makefile | 1 +
.../drm/i915/display/intel_display_device.h | 17 +++++++
.../drm/i915/display/intel_display_limits.c | 0
.../drm/i915/display/intel_display_reg_defs.h | 15 ++-----
drivers/gpu/drm/i915/display/intel_gvt_api.c | 45 +++++++++++++++++++
drivers/gpu/drm/i915/display/intel_gvt_api.h | 21 +++++++++
drivers/gpu/drm/i915/gvt/cmd_parser.c | 2 +-
drivers/gpu/drm/i915/gvt/display.c | 9 ++--
drivers/gpu/drm/i915/gvt/display_helpers.h | 27 +++++++++++
drivers/gpu/drm/i915/gvt/fb_decoder.c | 2 +-
drivers/gpu/drm/i915/gvt/handlers.c | 2 +-
11 files changed, 123 insertions(+), 18 deletions(-)
create mode 100644 drivers/gpu/drm/i915/display/intel_display_limits.c
create mode 100644 drivers/gpu/drm/i915/display/intel_gvt_api.c
create mode 100644 drivers/gpu/drm/i915/display/intel_gvt_api.h
create mode 100644 drivers/gpu/drm/i915/gvt/display_helpers.h