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

ic网站建设新的营销模式有哪些

ic网站建设,新的营销模式有哪些,网站txt地图怎么做,如何创办公司前面我有篇博客说了gralloc1_perform这个函数,主要是因为我知道有刷cache这个动作,但是不知道具体在哪里实现。但是gralloc1_perform这个接口是很老版本的gralloc用的。这篇博客概括一下最新版本的Gralloc接口。 Gralloc(Graphics Allocatio…

前面我有篇博客说了gralloc1_perform这个函数,主要是因为我知道有刷cache这个动作,但是不知道具体在哪里实现。但是gralloc1_perform这个接口是很老版本的gralloc用的。这篇博客概括一下最新版本的Gralloc接口。

Gralloc(Graphics Allocation)主要用于 GPU/CPU 共享图形缓冲区(buffer)。最新的 Gralloc 体系由 Allocator HAL 3.xMapper HAL 4.x 组成,分别负责 buffer 分配buffer 访问/管理


1️⃣ Gralloc 最新架构

模块作用
Allocator HAL 3.x负责 buffer 分配
Mapper HAL 4.x负责 buffer 访问、映射、缓存管理等

2️⃣ Allocator HAL 3.x(分配 Buffer)

接口类android.hardware.graphics.allocator@3.0::IAllocator

🔹 主要接口

函数作用
IAllocator::allocate()申请 buffer
IAllocator::dumpDebugInfo()获取 allocator 相关调试信息

🔹 代码示例

sp<IAllocator> allocator = IAllocator::getService();
if (allocator != nullptr) {hidl_vec<uint8_t> rawHandle;auto result = allocator->allocate(1, {/*请求参数*/}, [&](auto error, auto buffers) {if (error == Error::NONE) {rawHandle = buffers[0];}});
}

✅ 作用:向 Gralloc 请求 1 个 buffer 并返回 handle。


3️⃣ Mapper HAL 4.x(管理 Buffer)

接口类android.hardware.graphics.mapper@4.0::IMapper

🔹 主要接口

函数作用
IMapper::importBuffer()通过 native handle 获取 buffer
IMapper::freeBuffer()释放 buffer
IMapper::lock()申请 CPU 访问 buffer
IMapper::unlock()释放 CPU 访问权限
IMapper::flushLockedBuffer()刷新 CPU 缓存,确保数据写入内存
IMapper::invalidateLockedBuffer()失效缓存,确保读取最新数据

🔹 代码示例

// 1. 获取 Mapper 服务
sp<IMapper> mapper = IMapper::getService();// 2. Import Buffer
buffer_handle_t importedHandle = nullptr;
mapper->importBuffer(rawHandle, [&](auto error, auto buffer) {if (error == Error::NONE) {importedHandle = buffer;}
});// 3. Lock Buffer 进行 CPU 读写
void* data = nullptr;
mapper->lock(importedHandle, GRALLOC_USAGE_SW_WRITE_OFTEN, {}, [&](auto error, void* addr) {if (error == Error::NONE) {data = addr;}
});// 4. Unlock Buffer 释放访问权限
mapper->unlock(importedHandle, [&](auto error, auto releaseFence) {if (error != Error::NONE) {LOG(ERROR) << "Failed to unlock buffer";}
});

✅ 作用

  1. importBuffer() 获取 buffer

  2. lock() 获取 buffer 读写权限

  3. unlock() 释放权限


4️⃣ 旧版本 vs. 新版本

功能Gralloc 1.0(旧)Gralloc 3.x/4.x(新)
分配 Buffergralloc1_perform(GRALLOC1_PERFORM_ALLOCATE, …)IAllocator::allocate()
释放 Buffergralloc1_perform(GRALLOC1_PERFORM_FREE, …)IMapper::freeBuffer()
CPU 读写gralloc1_perform(GRALLOC1_PERFORM_LOCK, …)IMapper::lock() / IMapper::unlock()
缓存管理gralloc1_perform(GRALLOC1_PERFORM_FLUSH_CACHE, …)IMapper::flushLockedBuffer() / invalidateLockedBuffer()

5️⃣ 总结

  1. Gralloc 3.x/4.x 采用 IAllocator(分配)+ IMapper(管理)架构

  2. gralloc1_perform() 已被 IMapper::lock/unlock 替代

  3. 所有 buffer 访问(如 cache flush)必须使用 IMapper::flushLockedBuffer()

Gralloc 最新版本引入了更现代化的 HIDL 接口,相比旧的 gralloc1_perform 方式,更加模块化、安全、可扩展。🚀

如果追一下代码,会发现QtiMapper::flushLockedBuffer最终会调用到:

118  int DmaManager::CleanBuffer(void * /*base*/, unsigned int /*size*/, unsigned int /*offset*/,
119                              int /*handle*/, int op, int dma_buf_fd) {
120    ATRACE_CALL();
121    ATRACE_INT("operation id", op);
122  
123    struct dma_buf_sync sync;
124    int err = 0;
125  
126    switch (op) {
127      case CACHE_CLEAN:
128        sync.flags = DMA_BUF_SYNC_END | DMA_BUF_SYNC_RW;
129        break;
130      case CACHE_INVALIDATE:
131        sync.flags = DMA_BUF_SYNC_START | DMA_BUF_SYNC_RW;
132        break;
133      case CACHE_READ_DONE:
134        sync.flags = DMA_BUF_SYNC_END | DMA_BUF_SYNC_READ;
135        break;
136      default:
137        ALOGE("%s: Invalid operation %d", __FUNCTION__, op);
138        return -1;
139    }
140  
141    if (ioctl(dma_buf_fd, INT(DMA_BUF_IOCTL_SYNC), &sync)) {
142      err = -errno;
143      ALOGE("%s: DMA_BUF_IOCTL_SYNC failed with error - %s", __FUNCTION__, strerror(errno));
144      return err;
145    }
146  
147    return 0;
148  }

这里就看到具体的ioctl操作了。

http://www.dtcms.com/wzjs/86847.html

相关文章:

  • 电脑手机自适应网站的建设网站优化排名资源
  • 用腾讯云做淘宝客网站视频流程企业建站要多少钱
  • 网站建设维护去哪里学搜索引擎优化分析报告
  • 新疆建设兵团职称查询官方网站刷神马关键字排名软件
  • 网站建设的平台分析肇庆网站推广排名
  • 娄底企业网站建设制作交换免费连接
  • 网站设计制作厂家有哪些宣传平台有哪些
  • 无锡网站推广优化公司最新军事新闻事件今天
  • 文案写作网站要看网的域名是多少
  • 温州网站的优化成都私人做网站建设
  • 做网站是不是还要进行公安备案中国seo第一人
  • 万能站工具的企业网站系统windows 优化大师
  • 音乐视频怎么做mp3下载网站磁力搜索器 磁力猫在线
  • 滕州网站制作哪家好自动优化app
  • 公司做网站选择哪个公司好市场调研报告500字
  • 深圳东门动漫城成都百度推广和seo优化
  • 做公益网站赚钱吗收录优美图片
  • 网站专题怎么做呢免费涨1000粉丝网站
  • 网站招聘怎么做在seo优化中
  • 成都建设公司网站关键字c语言
  • 腾讯学生云服务器如何做网站学it什么培训机构好
  • 网页界面设计使用的单位主要是seo关键字优化软件
  • 网站怎么运营推广百度一下移动版首页
  • 珠宝网站制作灰色行业推广平台
  • 专做动漫解说的网站搜索引擎营销的主要方法包括
  • 泉州教育网站百度推广的方式
  • 合肥公司门户网站制作南宁推广公司
  • 北京网站建设报价明细佛山seo
  • 工信部 网站 备案网络推广员工作好做吗
  • 和硕网站建设baidu百度网盘