1 // SPDX-License-Identifier: MIT 2 /* Copyright © 2024 Intel Corporation */ 3 4 #include <drm/drm_panic.h> 5 6 #include "gem/i915_gem_mman.h" 7 #include "gem/i915_gem_object.h" 8 #include "gem/i915_gem_object_frontbuffer.h" 9 #include "pxp/intel_pxp.h" 10 #include "i915_debugfs.h" 11 #include "intel_bo.h" 12 13 bool intel_bo_is_tiled(struct drm_gem_object *obj) 14 { 15 return i915_gem_object_is_tiled(to_intel_bo(obj)); 16 } 17 18 bool intel_bo_is_userptr(struct drm_gem_object *obj) 19 { 20 return i915_gem_object_is_userptr(to_intel_bo(obj)); 21 } 22 23 bool intel_bo_is_shmem(struct drm_gem_object *obj) 24 { 25 return i915_gem_object_is_shmem(to_intel_bo(obj)); 26 } 27 28 bool intel_bo_is_protected(struct drm_gem_object *obj) 29 { 30 return i915_gem_object_is_protected(to_intel_bo(obj)); 31 } 32 33 int intel_bo_key_check(struct drm_gem_object *obj) 34 { 35 return intel_pxp_key_check(obj, false); 36 } 37 38 int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma) 39 { 40 return i915_gem_fb_mmap(to_intel_bo(obj), vma); 41 } 42 43 int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, int size) 44 { 45 return i915_gem_object_read_from_page(to_intel_bo(obj), offset, dst, size); 46 } 47 48 struct intel_frontbuffer *intel_bo_frontbuffer_get(struct drm_gem_object *_obj) 49 { 50 struct drm_i915_gem_object *obj = to_intel_bo(_obj); 51 struct i915_frontbuffer *front; 52 53 front = i915_gem_object_frontbuffer_get(obj); 54 if (!front) 55 return NULL; 56 57 return &front->base; 58 } 59 60 void intel_bo_frontbuffer_ref(struct intel_frontbuffer *_front) 61 { 62 struct i915_frontbuffer *front = 63 container_of(_front, typeof(*front), base); 64 65 i915_gem_object_frontbuffer_ref(front); 66 } 67 68 void intel_bo_frontbuffer_put(struct intel_frontbuffer *_front) 69 { 70 struct i915_frontbuffer *front = 71 container_of(_front, typeof(*front), base); 72 73 return i915_gem_object_frontbuffer_put(front); 74 } 75 76 void intel_bo_frontbuffer_flush_for_display(struct intel_frontbuffer *_front) 77 { 78 struct i915_frontbuffer *front = 79 container_of(_front, typeof(*front), base); 80 81 i915_gem_object_flush_if_display(front->obj); 82 } 83 84 void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj) 85 { 86 i915_debugfs_describe_obj(m, to_intel_bo(obj)); 87 } 88