☰
附录 A:Virglrenderer API 速查
2026/10/1 2:46:56 网站建设 项目流程

以src/virglrenderer.h为准的核心导出 API 分组速查。签名以头文件为准,UNSTABLE标注的需在VIRGL_RENDERER_UNSTABLE_APIS下使用。详细语义见各章。

初始化与生命周期

intvirgl_renderer_init(void*cookie,intflags,structvirgl_renderer_callbacks*cb);voidvirgl_renderer_cleanup(void*cookie);voidvirgl_renderer_reset(void);/* 销毁所有上下文与资源 */intvirgl_renderer_get_poll_fd(void);voidvirgl_renderer_poll(void);/* 强制推进 fence */

相关章节:第14章 VMM 集成与回调

上下文(Context)

#defineVIRGL_RENDERER_CONTEXT_FLAG_CAPSET_ID_MASK0xffintvirgl_renderer_context_create_with_flags(uint32_tctx_id,uint32_tctx_flags,uint32_tnlen,constchar*name);voidvirgl_renderer_context_destroy(uint32_tctx_id);voidvirgl_renderer_ctx_attach_resource(intctx_id,intres_handle);voidvirgl_renderer_ctx_detach_resource(intctx_id,intres_handle);

相关章节:第3章 Context 抽象层

命令提交

intvirgl_renderer_submit_cmd(void*buffer,intctx_id,intndw);/* 4字节对齐 */intvirgl_renderer_submit_cmd2(void*buffer,intctx_id,intndw,/* UNSTABLE,带 in-fence */uint64_t*in_fence_ids,uint32_tnum_in_fences);intvirgl_renderer_execute(void*execute_args,uint32_texecute_size);

相关章节:第8章 命令流与编解码

资源(传统)

intvirgl_renderer_resource_create(structvirgl_renderer_resource_create_args*args,structiovec*iov,uint32_tnum_iovs);intvirgl_renderer_resource_attach_iov(intres_handle,structiovec*iov,intnum_iovs);voidvirgl_renderer_resource_detach_iov(intres_handle,structiovec**iov,int*num_iovs);intvirgl_renderer_resource_get_info(intres_handle,structvirgl_renderer_resource_info*info);intvirgl_renderer_resource_get_info_ext(intres_handle,structvirgl_renderer_resource_info_ext*info);

相关章节:第4章 Resource 抽象层

资源(Blob / 零拷贝)

intvirgl_renderer_resource_create_blob(conststructvirgl_renderer_resource_create_blob_args*args);intvirgl_renderer_resource_map(uint32_tres_handle,void**map,uint64_t*out_size);intvirgl_renderer_resource_unmap(uint32_tres_handle);intvirgl_renderer_resource_map_fixed(uint32_tres_handle,void*addr);intvirgl_renderer_resource_get_map_info(uint32_tres_handle,uint32_t*map_info);intvirgl_renderer_resource_export_blob(uint32_tres_id,uint32_t*fd_type,int*fd);intvirgl_renderer_resource_import_blob(conststructvirgl_renderer_resource_import_blob_args*args);

相关章节:第7章 内存与零拷贝

同步(Fence)

intvirgl_renderer_create_fence(intclient_fence_id,uint32_tctx_id);/* ctx0 全局 */intvirgl_renderer_context_create_fence(uint32_tctx_id,uint32_tflags,uint32_tring_idx,uint64_tfence_id);voidvirgl_renderer_context_poll(uint32_tctx_id);intvirgl_renderer_context_get_poll_fd(uint32_tctx_id);/* UNSTABLE / 显式同步 */intvirgl_renderer_export_fence(uint64_tclient_fence_id,int*fd);intvirgl_renderer_export_signalled_fence(void);intvirgl_renderer_attach_fence(intctx_id,intfence_fd);intvirgl_renderer_get_fence_fd(uint64_tfence_id);

相关章节:第6章 同步与 Fence 机制

能力集(Capset)与日志

voidvirgl_renderer_get_cap_set(uint32_tset,uint32_t*max_ver,uint32_t*max_size);voidvirgl_renderer_fill_caps(uint32_tset,uint32_tversion,void*caps);voidvirgl_set_log_callback(virgl_log_callback_type cb,void*user_data,virgl_free_data_callback_type free_user_data_cb);

相关章节:第5章 Capset 机制

回调表(VMM 实现)

structvirgl_renderer_callbacks{intversion;void(*write_fence)(void*cookie,uint32_tfence);/* v1 */virgl_renderer_gl_context(*create_gl_context)(...);/* v1 */void(*destroy_gl_context)(...);/* v1 */int(*make_current)(...);/* v1 */int(*get_drm_fd)(void*cookie);/* v2 */void(*write_context_fence)(void*cookie,uint32_tctx_id,uint32_tring_idx,uint64_tfence_id);/* v3 */int(*get_server_fd)(void*cookie,uint32_tversion);/* v3 */void*(*get_egl_display)(void*cookie);/* v4 */};

相关章节:第14章 VMM 集成与回调

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询