DRM全解析 —— ADD_FB(5)

本文详细解析DRM框架中的drm_mode_addfb2函数,包括其在drm_framebuffer.c中的实现,以及针对不同GPU厂商(Intel, AMD)的回调函数创建过程。文章探讨了framebuffer的元数据、功能支持检查和内部创建过程。" 107829737,5615974,单向循环链表的操作:创建、遍历、插入、删除与查找,"['数据结构', '链表', '循环链表', '算法']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接前一篇文章:DRM全解析 —— ADD_FB(4)

本文参考以下博文:

DRM驱动(四)之ADD_FB

特此致谢!

上一回讲解了drm_mode_addfb函数中的第二步暨第二个函数drm_driver_legacy_fb_format。本回继续对于drm_mode_addfb函数往下进行解析。为了便于理解,再次贴出其代码,在drivers/gpu/drm/drm_framebuffer.c中,如下:

/**
 * drm_mode_addfb - add an FB to the graphics configuration
 * @dev: drm device for the ioctl
 * @or: pointer to request structure
 * @file_priv: drm file
 *
 * Add a new FB to the specified CRTC, given a user request. This is the
 * original addfb ioctl which only supported RGB formats.
 *
 * Called by
[root@localhost ~]# lspci | grep -i vga 00:02.0 VGA compatible controller: Device 1234:1111 (rev 02) [root@localhost ~]# dmesg | grep -i drm [ 1.521161] ACPI: bus type drm_connector registered [ 1.542736] bochs-drm 0000:00:02.0: vgaarb: deactivate vga console [ 1.543906] [drm] Found bochs VGA, ID 0xb0c5. [ 1.543908] [drm] Framebuffer size 4096 kB @ 0xfe400000, mmio @ 0xfebd8000. [ 1.544389] [drm] Initialized bochs-drm 1.0.0 20130925 for 0000:00:02.0 on minor 0 [ 1.544688] fbcon: bochs-drmdrmfb (fb0) is primary device [ 1.546995] bochs-drm 0000:00:02.0: [drm] fb0: bochs-drmdrmfb frame buffer device [ 1185.484082] bochs-drm 0000:00:02.0: Damage blitter failed: ret=-12 [ 1185.484111] WARNING: CPU: 2 PID: 3288 at drivers/gpu/drm/drm_fbdev_generic.c:331 drm_fbdev_fb_dirty+0xe8/0x350 [drm_kms_helper] [ 1185.484123] Modules linked in: tcp_diag udp_diag inet_diag uinput xt_CHECKSUM ipt_MASQUERADE xt_conntrack ipt_REJECT nft_compat nf_nat_tftp nft_objref nf_conntrack_tftp nft_counter bridge stp llc nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nf_tables_set nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip_set nf_tables nfnetlink sunrpc snd_hda_codec_generic ledtrig_audio snd_hda_intel snd_intel_dspcfg snd_intel_sdw_acpi snd_hda_codec snd_hda_core snd_hwdep snd_seq snd_seq_device snd_pcm snd_timer joydev pcspkr snd virtio_balloon soundcore i2c_piix4 xfs libcrc32c sr_mod sd_mod cdrom t10_pi sg ata_generic bochs drm_vram_helper drm_kms_helper syscopyarea sysfillrect sysimgblt drm_ttm_helper ttm drm ata_piix ahci libahci libata virtio_net net_failover serio_raw failover virtio_console virtio_scsi dm_mirror dm_region_hash dm_log dm_mod fuse [ 1185.484177] Workqueue: events drm_fb_helper_damage_work [drm_kms_helper] [ 1185.484183] RIP: 0010:drm_fbdev_fb_dirty+0xe8/0x350 [drm_kms_helper] [ 1185.484214] ? drm_fbdev_fb_dirty+0xe8/0x350 [drm_kms_helper] [ 1185.484220] ? drm_fbdev_fb_dirty+0xe8/0x350 [drm_kms_helper] [ 1185.484233] ? drm_fbdev_fb_dirty+0xe8/0x350 [drm_kms_helper] [ 1185.484242] ? drm_fbdev_fb_dirty+0xe8/0x350 [drm_kms_helper] [ 1185.484250] drm_fb_helper_damage_work+0x86/0x160 [drm_kms_helper]
最新发布
06-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值