DRM使用Property OUT_FENCE_PTR配合原子提交刷新buffer完整代码
时间: 2023-08-03 11:07:03 浏览: 102
drm_mode.rar_UP_dumb buffer
在DRM中使用Property OUT_FENCE_PTR与原子提交刷新缓冲区的完整代码如下:
```c
#include <xf86drm.h>
#include <xf86drmMode.h>
int main() {
int drm_fd;
int crtc_id;
int buffer_id;
drmModeAtomicReqPtr atomic_req;
drmModeCrtcPtr saved_crtc;
drmModeModeInfoPtr mode;
drmModePropertyPtr prop_out_fence_ptr;
// 打开DRM设备
drm_fd = drmOpen("drm", NULL);
// 获取CRTC ID
drmModeResPtr resources = drmModeGetResources(drm_fd);
crtc_id = resources->crtcs[0];
// 获取显示模式
drmModeConnectorPtr connector = drmModeGetConnector(drm_fd, resources->connectors[0]);
mode = &connector->modes[0];
// 创建原子请求
atomic_req = drmModeAtomicAlloc();
// 获取OUT_FENCE_PTR属性
drmModeObjectPropertiesPtr props = drmModeObjectGetProperties(drm_fd, crtc_id, DRM_MODE_OBJECT_CRTC);
for (int i = 0; i < props->count_props; i++) {
drmModePropertyPtr prop = drmModeGetProperty(drm_fd, props->props[i]);
if (strcmp(prop->name, "OUT_FENCE_PTR") == 0) {
prop_out_fence_ptr = prop;
break;
}
drmModeFreeProperty(prop);
}
// 创建缓冲区
// ...
// 添加设置模式的请求
drmModeAtomicSetCrtc(atomic_req, crtc_id, buffer_id, 0, 0,
&connector->connector_id, 1,
阅读全文