summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2026-02-25 17:49:08 +0300
committerJani Nikula <jani.nikula@intel.com>2026-02-27 00:28:57 +0300
commitb3e523e5deb56d10feb83fe20e223763dcfd18d4 (patch)
treeb739649313621a9619de4a79b2fc8af95416717a
parentdc88f63aeada8eea011af15b8fab4b61bf334e93 (diff)
downloadlinux-b3e523e5deb56d10feb83fe20e223763dcfd18d4.tar.xz
drm/i915/dpt: pass obj, size instead of framebuffer to intel_dpt_create()
Split the size determination between caller and callee to drop the dependency on struct intel_framebuffer from DPT code, but avoid adding a dependency on I915_GTT_PAGE_SIZE in the caller side. Pass zero size to let intel_dpt_create() handle the regular obj->size case, but remapped size if fb needs stride remap. Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Link: https://patch.msgid.link/3a6e987ce8bb9f2c8d90c35342de14494a64de1b.1772030909.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
-rw-r--r--drivers/gpu/drm/i915/display/intel_dpt.h5
-rw-r--r--drivers/gpu/drm/i915/display/intel_fb.c7
-rw-r--r--drivers/gpu/drm/i915/i915_dpt.c8
-rw-r--r--drivers/gpu/drm/xe/display/xe_fb_pin.c2
4 files changed, 11 insertions, 11 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_dpt.h b/drivers/gpu/drm/i915/display/intel_dpt.h
index db521401b828..79d9bb80941a 100644
--- a/drivers/gpu/drm/i915/display/intel_dpt.h
+++ b/drivers/gpu/drm/i915/display/intel_dpt.h
@@ -8,10 +8,10 @@
#include <linux/types.h>
+struct drm_gem_object;
struct i915_address_space;
struct i915_vma;
struct intel_display;
-struct intel_framebuffer;
void intel_dpt_destroy(struct i915_address_space *vm);
struct i915_vma *intel_dpt_pin_to_ggtt(struct i915_address_space *vm,
@@ -19,8 +19,7 @@ struct i915_vma *intel_dpt_pin_to_ggtt(struct i915_address_space *vm,
void intel_dpt_unpin_from_ggtt(struct i915_address_space *vm);
void intel_dpt_suspend(struct intel_display *display);
void intel_dpt_resume(struct intel_display *display);
-struct i915_address_space *
-intel_dpt_create(struct intel_framebuffer *fb);
+struct i915_address_space *intel_dpt_create(struct drm_gem_object *obj, size_t size);
u64 intel_dpt_offset(struct i915_vma *dpt_vma);
#endif /* __INTEL_DPT_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
index 38c33f2ca05c..4ee884639ac2 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.c
+++ b/drivers/gpu/drm/i915/display/intel_fb.c
@@ -2304,9 +2304,14 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
goto err_bo_framebuffer_fini;
if (intel_fb_uses_dpt(fb)) {
+ struct drm_gem_object *obj = intel_fb_bo(&intel_fb->base);
struct i915_address_space *vm;
+ size_t size = 0;
- vm = intel_dpt_create(intel_fb);
+ if (intel_fb_needs_pot_stride_remap(intel_fb))
+ size = intel_remapped_info_size(&intel_fb->remapped_view.gtt.remapped);
+
+ vm = intel_dpt_create(obj, size);
if (IS_ERR(vm)) {
drm_dbg_kms(display->drm, "failed to create DPT\n");
ret = PTR_ERR(vm);
diff --git a/drivers/gpu/drm/i915/i915_dpt.c b/drivers/gpu/drm/i915/i915_dpt.c
index 3f764727025c..cd98b06d2685 100644
--- a/drivers/gpu/drm/i915/i915_dpt.c
+++ b/drivers/gpu/drm/i915/i915_dpt.c
@@ -243,19 +243,15 @@ void intel_dpt_suspend(struct intel_display *display)
}
struct i915_address_space *
-intel_dpt_create(struct intel_framebuffer *fb)
+intel_dpt_create(struct drm_gem_object *obj, size_t size)
{
- struct drm_gem_object *obj = intel_fb_bo(&fb->base);
struct drm_i915_private *i915 = to_i915(obj->dev);
struct drm_i915_gem_object *dpt_obj;
struct i915_address_space *vm;
struct i915_dpt *dpt;
- size_t size;
int ret;
- if (intel_fb_needs_pot_stride_remap(fb))
- size = intel_remapped_info_size(&fb->remapped_view.gtt.remapped);
- else
+ if (!size)
size = DIV_ROUND_UP_ULL(obj->size, I915_GTT_PAGE_SIZE);
size = round_up(size * sizeof(gen8_pte_t), I915_GTT_PAGE_SIZE);
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index d2c4e94180fa..36eb6c0b9d76 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -456,7 +456,7 @@ void intel_plane_unpin_fb(struct intel_plane_state *old_plane_state)
* For Xe introduce dummy intel_dpt_create which just return NULL,
* intel_dpt_destroy which does nothing, and fake intel_dpt_ofsset returning 0;
*/
-struct i915_address_space *intel_dpt_create(struct intel_framebuffer *fb)
+struct i915_address_space *intel_dpt_create(struct drm_gem_object *obj, size_t size)
{
return NULL;
}