include/drm/drm_gem_vram_helper.h
Source file repositories/reference/linux-study-clean/include/drm/drm_gem_vram_helper.h
File Facts
- System
- Linux kernel
- Corpus path
include/drm/drm_gem_vram_helper.h- Extension
.h- Size
- 5736 bytes
- Lines
- 203
- Domain
- Repository Root And Misc
- Bucket
- include
- Inferred role
- Repository Root And Misc: implementation source
- Status
- source implementation candidate
Why This File Exists
Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
drm/drm_file.hdrm/drm_gem.hdrm/drm_gem_ttm_helper.hdrm/drm_ioctl.hdrm/drm_modes.hdrm/ttm/ttm_bo.hdrm/ttm/ttm_placement.hlinux/container_of.hlinux/iosys-map.h
Detected Declarations
struct drm_mode_create_dumbstruct drm_planestruct drm_plane_statestruct filpstruct vm_area_structstruct drm_gem_vram_objectstruct drm_vram_mmfunction drm_vram_mm_of_bdev
Annotated Snippet
struct drm_gem_vram_object {
struct ttm_buffer_object bo;
struct iosys_map map;
/**
* @vmap_use_count:
*
* Reference count on the virtual address.
* The address are un-mapped when the count reaches zero.
*/
unsigned int vmap_use_count;
/* Supported placements are %TTM_PL_VRAM and %TTM_PL_SYSTEM */
struct ttm_placement placement;
struct ttm_place placements[2];
};
/**
* drm_gem_vram_of_bo - Returns the container of type
* &struct drm_gem_vram_object for field bo.
* @bo: the VRAM buffer object
* Returns: The containing GEM VRAM object
*/
static inline struct drm_gem_vram_object *drm_gem_vram_of_bo(
struct ttm_buffer_object *bo)
{
return container_of(bo, struct drm_gem_vram_object, bo);
}
/**
* drm_gem_vram_of_gem - Returns the container of type
* &struct drm_gem_vram_object for field gem.
* @gem: the GEM object
* Returns: The containing GEM VRAM object
*/
static inline struct drm_gem_vram_object *drm_gem_vram_of_gem(
struct drm_gem_object *gem)
{
return container_of(gem, struct drm_gem_vram_object, bo.base);
}
struct drm_gem_vram_object *drm_gem_vram_create(struct drm_device *dev,
size_t size,
unsigned long pg_align);
void drm_gem_vram_put(struct drm_gem_vram_object *gbo);
s64 drm_gem_vram_offset(struct drm_gem_vram_object *gbo);
int drm_gem_vram_vmap(struct drm_gem_vram_object *gbo, struct iosys_map *map);
void drm_gem_vram_vunmap(struct drm_gem_vram_object *gbo,
struct iosys_map *map);
int drm_gem_vram_fill_create_dumb(struct drm_file *file,
struct drm_device *dev,
unsigned long pg_align,
unsigned long pitch_align,
struct drm_mode_create_dumb *args);
/*
* Helpers for struct drm_driver
*/
int drm_gem_vram_driver_dumb_create(struct drm_file *file,
struct drm_device *dev,
struct drm_mode_create_dumb *args);
/*
* Helpers for struct drm_plane_helper_funcs
*/
int
drm_gem_vram_plane_helper_prepare_fb(struct drm_plane *plane,
struct drm_plane_state *new_state);
void
drm_gem_vram_plane_helper_cleanup_fb(struct drm_plane *plane,
struct drm_plane_state *old_state);
/**
* DRM_GEM_VRAM_PLANE_HELPER_FUNCS - Initializes struct drm_plane_helper_funcs
* for VRAM handling
*
* Drivers may use GEM BOs as VRAM helpers for the framebuffer memory. This
* macro initializes struct drm_plane_helper_funcs to use the respective helper
* functions.
*/
#define DRM_GEM_VRAM_PLANE_HELPER_FUNCS \
.prepare_fb = drm_gem_vram_plane_helper_prepare_fb, \
.cleanup_fb = drm_gem_vram_plane_helper_cleanup_fb
/**
* define DRM_GEM_VRAM_DRIVER - default callback functions for
* &struct drm_driver
*
Annotation
- Immediate include surface: `drm/drm_file.h`, `drm/drm_gem.h`, `drm/drm_gem_ttm_helper.h`, `drm/drm_ioctl.h`, `drm/drm_modes.h`, `drm/ttm/ttm_bo.h`, `drm/ttm/ttm_placement.h`, `linux/container_of.h`.
- Detected declarations: `struct drm_mode_create_dumb`, `struct drm_plane`, `struct drm_plane_state`, `struct filp`, `struct vm_area_struct`, `struct drm_gem_vram_object`, `struct drm_vram_mm`, `function drm_vram_mm_of_bdev`.
- Atlas domain: Repository Root And Misc / include.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.