DRM全解析 —— ADD_FB2(0)

本文介绍了在图形系统中,KWin源码更倾向于使用drmModeAddFB2WithModifiers而不是drmModeAddFB。通过KWin的代码示例,展示了drmModeAddFB2WithModifiers的实际应用,并强调了该函数在drmModeAddFB2和drmModeAddFB中的优先级。作者计划基于前期DRM系列文章和近期对KWin、libdrm/DRM的深入研究,对drmModeAddFB2WithModifiers和drmModeAddFB2进行详细解析。

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

本文参考以下博文:

DRM驱动(四)之ADD_FB

特此致谢!

在笔者之前的libdrm全解析系列文章中,讲到了drmIoctl(fd, DRM_IOCTL_MODE_ADDFB, &f)以及其封装函数drmModeAddFB。对应的文章链接为:

libdrm全解析三十一 —— 源码全解析(28)

libdrm全解析三十二 —— 源码全解析(29)

实际上你如果看KWin源码,会发现使用更多的并不是drmModeAddFB函数,而是drmModeAddFB2WithModifiers函数。KWin源码中的代码片段如下(src/backends/drm/drm_buffer.cpp):

std::shared_ptr<DrmFramebuffer> DrmFramebuffer::cre
[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、付费专栏及课程。

余额充值