1 /* SPDX-License-Identifier: MIT */ 2 /* 3 * Copyright © 2021 Intel Corporation 4 */ 5 #ifndef _I915_GEM_TTM_H_ 6 #define _I915_GEM_TTM_H_ 7 8 #include "gem/i915_gem_object_types.h" 9 10 /** 11 * i915_gem_to_ttm - Convert a struct drm_i915_gem_object to a 12 * struct ttm_buffer_object. 13 * @obj: Pointer to the gem object. 14 * 15 * Return: Pointer to the embedded struct ttm_buffer_object. 16 */ 17 static inline struct ttm_buffer_object * 18 i915_gem_to_ttm(struct drm_i915_gem_object *obj) 19 { 20 return &obj->__do_not_access; 21 } 22 23 /* 24 * i915 ttm gem object destructor. Internal use only. 25 */ 26 void i915_ttm_bo_destroy(struct ttm_buffer_object *bo); 27 28 /** 29 * i915_ttm_to_gem - Convert a struct ttm_buffer_object to an embedding 30 * struct drm_i915_gem_object. 31 * 32 * Return: Pointer to the embedding struct ttm_buffer_object, or NULL 33 * if the object was not an i915 ttm object. 34 */ 35 static inline struct drm_i915_gem_object * 36 i915_ttm_to_gem(struct ttm_buffer_object *bo) 37 { 38 if (GEM_WARN_ON(bo->destroy != i915_ttm_bo_destroy)) 39 return NULL; 40 41 return container_of(bo, struct drm_i915_gem_object, __do_not_access); 42 } 43 44 int __i915_gem_ttm_object_init(struct intel_memory_region *mem, 45 struct drm_i915_gem_object *obj, 46 resource_size_t size, 47 resource_size_t page_size, 48 unsigned int flags); 49 50 int i915_gem_obj_copy_ttm(struct drm_i915_gem_object *dst, 51 struct drm_i915_gem_object *src, 52 bool allow_accel, bool intr); 53 54 /* Internal I915 TTM declarations and definitions below. */ 55 56 #define I915_PL_LMEM0 TTM_PL_PRIV 57 #define I915_PL_SYSTEM TTM_PL_SYSTEM 58 #define I915_PL_STOLEN TTM_PL_VRAM 59 #define I915_PL_GGTT TTM_PL_TT 60 61 struct ttm_placement *i915_ttm_sys_placement(void); 62 63 #endif 64