drm/i915/dpt: Treat the DPT BO as a framebuffer
authorjsg <jsg@openbsd.org>
Fri, 7 Apr 2023 04:06:11 +0000 (04:06 +0000)
committerjsg <jsg@openbsd.org>
Fri, 7 Apr 2023 04:06:11 +0000 (04:06 +0000)
From Ville Syrjala
c781c107731fc09ce4330c8c636b8446d0f72aa4 in linux-6.1.y/6.1.23
3413881e1ecc3cba722a2e87ec099692eed5be28 in mainline linux

sys/dev/pci/drm/i915/display/intel_dpt.c
sys/dev/pci/drm/i915/gem/i915_gem_object.h
sys/dev/pci/drm/i915/gem/i915_gem_object_types.h

index ac58764..a3893af 100644 (file)
@@ -300,6 +300,7 @@ intel_dpt_create(struct intel_framebuffer *fb)
        vm->pte_encode = gen8_ggtt_pte_encode;
 
        dpt->obj = dpt_obj;
+       dpt->obj->is_dpt = true;
 
        return &dpt->vm;
 }
@@ -308,5 +309,6 @@ void intel_dpt_destroy(struct i915_address_space *vm)
 {
        struct i915_dpt *dpt = i915_vm_to_dpt(vm);
 
+       dpt->obj->is_dpt = false;
        i915_vm_put(&dpt->vm);
 }
index 7f84f11..e35c582 100644 (file)
@@ -319,7 +319,7 @@ i915_gem_object_never_mmap(const struct drm_i915_gem_object *obj)
 static inline bool
 i915_gem_object_is_framebuffer(const struct drm_i915_gem_object *obj)
 {
-       return READ_ONCE(obj->frontbuffer);
+       return READ_ONCE(obj->frontbuffer) || obj->is_dpt;
 }
 
 static inline unsigned int
index 13effa9..2684551 100644 (file)
@@ -491,6 +491,9 @@ struct drm_i915_gem_object {
         */
        unsigned int cache_dirty:1;
 
+       /* @is_dpt: Object houses a display page table (DPT) */
+       unsigned int is_dpt:1;
+
        /**
         * @read_domains: Read memory domains.
         *