<dec f='src/src/sys/external/bsd/drm2/dist/include/drm/drm_crtc.h' l='940' type='int drm_framebuffer_init(struct drm_device * dev, struct drm_framebuffer * fb, const struct drm_framebuffer_funcs * funcs)'/>
<def f='src/src/sys/external/bsd/drm2/dist/drm/drm_crtc.c' l='464' ll='488' type='int drm_framebuffer_init(struct drm_device * dev, struct drm_framebuffer * fb, const struct drm_framebuffer_funcs * funcs)'/>
<doc f='src/src/sys/external/bsd/drm2/dist/drm/drm_crtc.c' l='446'>/**
 * drm_framebuffer_init - initialize a framebuffer
 * @dev: DRM device
 * @fb: framebuffer to be initialized
 * @funcs: ... with these functions
 *
 * Allocates an ID for the framebuffer&apos;s parent mode object, sets its mode
 * functions &amp; device file and adds it to the master fd list.
 *
 * IMPORTANT:
 * This functions publishes the fb and makes it available for concurrent access
 * by other users. Which means by this point the fb _must_ be fully set up -
 * since all the fb attributes are invariant over its lifetime, no further
 * locking but only correct reference counting is required.
 *
 * Returns:
 * Zero on success, error code on failure.
 */</doc>
<use f='src/src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c' l='11020' u='c' c='intel_framebuffer_init'/>
<use f='src/src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_display.c' l='290' u='c' c='nouveau_framebuffer_init'/>
<use f='src/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c' l='1285' u='c' c='radeon_framebuffer_init'/>
