当前位置: 首页 > news >正文

Android SurfaceFlinger——GraphicBuffer的生成(三十二)

        通过前面的学习我们知道,在 SurfaceFlinger 中使用的生产者/消费者模型,Surface 做为生产者一方存在如下两个比较重要的函数:

  • dequeueBuffer:获取一个缓冲区(GraphicBuffer),也就是 GraphicBuffer 生成。
  • queueBuffer :把缓冲区(GraphicBuffer)放入缓冲队列中。

        这里我们就先来看看 dequeueBuffer() 函数,该函数通常由生产者调用,用于从 BufferQueue 中取出一个缓冲区以供渲染。这个函数会等待直到有一个缓冲区变为可用状态,然后将其标记为“出队”,并返回给生产者。生产者随后可以在该缓冲区上绘制图像数据。 

一、GraphicBuffer生成

        这里我们先来看一下 Surface 的核心对象之一 mSlots,这个对象是数组 BufferSlot。

1、BufferSlot

源码位置:/frameworks/native/libs/gui/include/gui/BufferSlot.h

struct BufferSlot {BufferSlot(): mGraphicBuffer(nullptr),mEglDisplay(EGL_NO_DISPLAY),mBufferState(),mRequestBufferCalled(false),mFrameNumber(0),mEglFence(EG

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Leetcode—74. 搜索二维矩阵【中等】
  • 温故而知新-C++程序员的不平凡挑战
  • 4.1.1、操作系统的概述
  • 天气预报的爬虫内容打印并存储用户操作
  • c程序杂谈系列(加减乘除模篇)
  • 【前端element-ui】对于封装el-select和checkbox-group的多选控件导致数据双向绑定失败问题的处理
  • Python基础知识笔记——常用函数
  • 机械拆装-基于Unity-本地数据持久化
  • Python面试整理-数据处理和分析
  • 丹摩智算:如何在云端开发一个AI应用——基于UNet的眼底血管分割案例
  • 从零开始学习黑客技术,看这一篇就够了
  • vue-i18n使用方法
  • RHCE之seLinux和防火墙
  • C#知识|文件与目录操作:目录的操作
  • 空指针和野指针的区别
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【刷算法】从上往下打印二叉树
  • css的样式优先级
  • dva中组件的懒加载
  • JAVA_NIO系列——Channel和Buffer详解
  • Java比较器对数组,集合排序
  • Java方法详解
  • Markdown 语法简单说明
  • 猴子数据域名防封接口降低小说被封的风险
  • 机器学习中为什么要做归一化normalization
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 前端设计模式
  • 区块链分支循环
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 我从编程教室毕业
  • 我感觉这是史上最牛的防sql注入方法类
  • 译自由幺半群
  • 源码安装memcached和php memcache扩展
  • !$boo在php中什么意思,php前戏
  • #70结构体案例1(导师,学生,成绩)
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (附源码)ssm高校实验室 毕业设计 800008
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)mysql使用Navicat 导出和导入数据库
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • ****三次握手和四次挥手
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET值类型变量“活”在哪?
  • /etc/fstab和/etc/mtab的区别
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • ::
  • :=
  • @JSONField或@JsonProperty注解使用
  • @PreAuthorize注解