自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

夕月风

专注Android 多媒体 & Graphics&Display

  • 博客(29)
  • 收藏
  • 关注

翻译 10 . XDG shell 深入探讨

到目前为止,我们已经成功地在顶级应用程序窗口中显示了一些内容,但XDG shell的功能远不止于此。即使是最简单的应用程序也应该正确地实现配置生命周期,而xdg-shell为更复杂的应用程序提供了有用的功能。xdg-shell功能的完整范围包括窗口大小、多窗口层次结构、客户端装饰和上下文菜单等窗口的语义定位的客户端/服务器协商。

2023-12-16 21:52:05 196

翻译 7. XDG shell 基础

XDG(跨桌面组)shell是Wayland的标准协议扩展,它描述了应用程序窗口的语义。它定义了两个wl_surface角色:“toplevel”,用于顶层应用程序窗口,以及“popup”,用于上下文菜单、下拉菜单、工具提示等顶级窗口的子项。将它们放在一起,您可以形成surface的树,顶级位于顶部,弹出窗口或额外的顶级位于叶子上。该协议还定义了一个定位器接口,用于帮助定位弹出窗口,并限制有关窗口周围事物的信息。xdg-shell作为协议扩展,不在wayland.xml中定义。

2023-12-15 09:58:25 189

翻译 6. Buffer和Surface

显然,这个系统的全部目的是向用户显示信息,并接收他们的反馈以进行额外的处理。在本章中,我们将探讨这些任务中的第一个:在屏幕上显示像素。为此,我们使用两个原始对象,即缓冲区和表面,它们分别由wl_buffer和wl_surface接口管理。缓冲区充当不透明容器,用于存储一些底层像素,并且客户端通过一系列方法提供这些缓冲区 - 最常见的是共享内存缓冲区和GPU句柄。

2023-12-15 09:57:15 116

翻译 2. Wayland协议设计

Wayland协议是由几层抽象构建的。它从基本的线路协议格式开始,这是一种可解码的消息流,使用事先商定的接口。然后我们有更高级的程序来列举接口,创建符合这些接口的资源,并交换有关它们的消息-Wayland协议及其扩展。在此之上,我们有一些更广泛的模式,这些模式在Wayland协议设计中经常使用。我们将在本章中介绍所有这些。让我们从下到上开始工作吧。

2023-12-12 11:03:37 76

翻译 1.Wayland介绍

Wayland是Unix类系统的下一代显示服务器,由可敬的Xorg-Server的校友设计和建造,是将您的应用程序窗口放到用户屏幕上的最佳方式。过去使用过X11的读者将会对Wayland的改进感到惊喜,而那些在Unix上进行图形处理的新手将会发现它是一个构建图形应用程序和桌面的灵活且强大的系统。这本书将帮助您对Wayland的概念、设计和实现有一个坚实的基础,并为您提供构建自己的Wayland客户端和服务端应用程序的工具。在您的阅读过程中,我们将建立一个对Wayland的心理模型,并建立其设计的理由。

2023-12-12 11:00:33 147

翻译 5. 全局对象和注册器

如果你记得第2.1章,每个请求和事件都与一个对象ID相关联,但到目前为止,我们还没有讨论对象是如何创建的。当我们收到Wayland消息时,我们必须知道对象ID代表什么接口才能解码它。我们还必须以某种方式协商可用的对象、创建新对象以及将ID分配给它们。在Wayland中,我们同时解决了这两个问题——当我们绑定一个对象ID时,我们在所有未来的消息中同意它所使用的接口,并将对象ID到接口的映射存储在我们的本地状态中。为了引导这些,服务器提供了一个全局对象的列表。

2023-12-04 11:43:36 67

翻译 4. Wayland中的display

现在,我们忽略了Wayland协议如何管理客户端和服务器之间对象的共同所有权的一个重要细节:这些对象是如何创建的。Wayland显示或wl_display在每个Wayland连接上隐式存在。对于普通Wayland用户来说,这些中最有趣的是get_registry,我们将在下一章中详细讨论它。简而言之,注册表用于分配其他对象。接口的其余部分用于维护连接,除非您正在编写自己的libwayland替代品,否则它们通常不重要。

2023-12-01 14:28:09 289

翻译 3. Wayland库的实现

我们在1.3章简单介绍过Wayland库——这是最流行的Wayland实现。本书的大部分内容适用于任何实现,但我们将用接下来的两章来让您熟悉这一实现。Wayland软件包包括用于wayland-client和wayland-server的pkg-config规范——请查阅您的构建系统文档以了解如何链接它们。当然,大多数应用程序只会链接到其中一个。该库包括一些简单的原语(例如链表)和预先编译的wayland.xml版本——这是核心的Wayland协议。我们将从介绍原语开始。

2023-11-29 11:31:14 278

原创 Android 图形显示系统(十四)OpenGLES 纯Native实现PNG图片贴图

文章目录如何实现一个纯Native的应用创建项目AndroidManifest的配置添加Native层的代码简介一下NativeActivity加载PNG图片png库的编译png库的使用OpenGLES贴图创建纹理Texture使用纹理Shader的那些事小结#OpenGLES 纯Native实现PNG图片贴图春节临近本来不想更了,但是为了纪念即将逝去的一年,还是留下点什么吧!就让我们用Ope...

2020-01-20 23:43:02 2312 1

转载 DRM显示驱动开发

版权声明:本文为CSDN博主「何小龙」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/hexiaolong2009/article/details/83720940————————————————本篇博客摘自CSDN博主「何小龙」的原创文章,很好的DRM学习进阶,也省的亲自写了!1. 最简单的DRM...

2019-09-20 15:48:30 2657

原创 [Image_Codec]常见图片格式的封装及编解码-Android平台(三)JPG

JPG图片格式压缩模式和步骤JPG文件结构libjpeg编解码Jpeg图片JPG图片格式JPG全称Jpeg(Joint Photographic Experts Group),是一种常用的,有损压缩图片格式。压缩比例可以选择,这样可以在文件大小和图片质量间做一个平衡。通常采用10:1的压缩比例。而实际上,JPEG是JPEG/Exif,JPEG/JFIF等统称,所以Jpe...

2019-09-17 13:18:58 2519

原创 [Image_Codec]常见图片格式的封装及编解码-Android平台(二)PNG

PNG图片格式PNG特点PNG文件结构PNG压缩原理PNG图片编解码 libpngPNG图片格式PNG(Portable Network Graphics) 是一种光栅化的,无损压缩的图片文件格式。其设计的目的是替换GIF,是目前网络中用得最广的无损压缩图片格式。我们可以用工具将前面的Bitmap转换为PNG。下面是从上一章所说的 BMP转换过来的png_4x2_...

2019-09-17 13:18:52 2229

原创 [Image_Codec]常见图片格式的封装及编解码-Android平台(一)BMP

概述BMP图片格式Bitmap文件结构Bitmap文件 解析Bitmap文件封装概述图片格式是计算机存储图片的格式,是图片在计算机中存放的样式。常见的存储的格式有很多,有不同的编码格式和封装方式,实用与各个平台和各种需求。bmp jpg png tiff gif pcx tga exif fpx svg psd cdr pcd dxf ufo eps ai...

2019-09-17 13:18:46 1652 1

原创 Android Audio和耳机,蓝牙耳机等音频外设

Android Audio和耳机,蓝牙耳机等音频外设蓝牙连接处理广播接收AudioManager接口Listener监听蓝牙耳机和AudioService的交互蓝牙的状态A2DP给AudioService上报连接状态SCO给AudioService上报连接状态有线耳机的连接状态Audio添加音频设备AudioPolicy处理音频设备状态音频输出设备处理音频输入...

2019-09-17 13:18:34 5491

原创 Android平台音量调节(二)Native的流程处理

Native的流程处理音频device音频流到音频策略的映射获取设备Native设置音量计算音量Db值音量生效Native的流程处理前面只是说了AudioService中的逻辑,最终是通过AudioSystem.setStreamVolumeIndex(mStreamType, index, device);设置到native层的。那么我们就来看看native是怎...

2019-09-17 13:18:21 3084 1

原创 Android P 图形显示系统(十二) BufferQueue(三)

文章目录Buffer状态acquireBuffer流程releaseBuffer流程分析小结Buffer状态对于生产者这边,BufferQueue的流程基本讲完了。简单说来,首先提需求,告诉BufferQueue需要什么样的Buffer,大小,格式,usage等等;然后dequeue Buffer出来,往Buffer里面绘制显示数据;绘制完成后,queue到BufferQueue里面,并通知消...

2019-09-17 13:15:29 1102 1

原创 Android P 图形显示系统(十一) BufferQueue(二)

文章目录BufferQueuedequeueBuffer申请buffer绘制queueBuffer处理BufferQueue我们再来看一下我们的应用代码,下面是绘制Buffer的代码。我们这里只绘制了一次,但是在Andoroid的系统中,界面的不断更新的,也就是说,这里的绘制是一个不断循环的过程。 // 11. draw the ANativeWindow for (int i...

2019-09-17 13:13:37 1346 1

原创 Android P 图形显示系统(十) BufferQueue(一)

文章目录BufferQueueNative应用绘制界面SurfaceFlinger创建LayerNative窗口ANativeWindowSurfaceSurfaceControl窗口销毁的善后处理BufferQueue前面结合应用中WindowSurfaceWrapper的,讲解了应用怎么和SurfaceFlinger建立连接,进行交互的。BufferQueue 类是 Android 中所...

2019-09-17 13:05:54 3738 1

原创 Graphics 调试工具 GAPID(一)简介

Graphics Debug Tool GAPID编译GAPID直接安装gapid组成GAPID的使用Graphics Debug Tool GAPIDGAPID (Grapphics API Debugger) 是一系列的Graphics调试工具,可以检查,微调,重播应用对图形驱动的API调用。GAPID 可以跟踪Android任何可以调试的应用,即andr...

2019-09-03 09:59:16 8055 3

原创 Android P 图形显示系统(九) Android图形显示子系统概述

文章目录图形系统显示系统Buffer管理显示系统的架构从应用的角度理解AndroidAndroid图形显示子系统概述Android图形显示系统,是Android比较重要的一个子系统,和很多其他子系统的关联紧密。想象一下,没有图形显示系统的手机是什么样子,可能连对讲机都不如吧。图形显示系统比较复杂,从Android诞生到现在,几经修改,已经变的越来越庞大了。总的说来,图形显示系统可以分为两大部分...

2019-09-03 09:52:17 9240

原创 Android P 图形显示系统(八) SurfaceFlinger合成流程(三)

文章目录SurfaceFlinger合成流程(三)配置硬件合成 setUpHWComposer合成处理 doComposition合成后处理 postCompositionClient合成SurfaceFlinger合成流程(三)配置硬件合成 setUpHWComposer回到handleMessageRefresh,继续看Refresh消息的处理。此时需要进行合成显示的数据,在rebuil...

2019-09-03 09:47:02 3664 1

原创 Android P 图形显示系统(七) SurfaceFlinger合成流程(二)

SurfaceFlinger合成流程(二)SurfaceFlinger合成流程MessageQueue中分发两个消息,一个INVALIDATE,一个REFRESH,SurfaceFlinger对这两个消息的响应过程,就是合成的过程。消息INVALIDATE处理在onFrameAvailable时,调用signalLayerUpdate,将触发INVALIDATE消息。SurfaceFlin...

2019-09-03 09:41:28 2772 1

原创 Android P 图形显示系统(六) SurfaceFlinger合成流程(一)

文章目录SurfaceFlinger合成流程(一)Consumer端的FrameListener消息队列MessageQueue显示设备DispalyDeviceDisplay接口服务显示屏的类型DisplayDevice的热插拔处理创建DisplayDevicehotplug的流程SurfaceFlinger合成流程(一)通过前面的简单介绍,我们对HWC合成有大致的了解。下面我们根据实际代码...

2019-09-03 09:37:46 10369

原创 Android P 图形显示系统(五) 上层Client和SurfaceFlinger的交互

文章目录上层Client和SurfaceFlinger的交互Native应用建立应用和SurfaceFlinger的链接建立SurfaceFlinger的启动获取Display信息Native创建图层Layer处理状态的传送小结上层Client和SurfaceFlinger的交互为了很好的切入主题,我们这里基于Native的Framework进行应用的开发呢,不是指的NDK应用。我们直接用系统...

2019-09-03 09:32:39 2723 3

原创 Android Q 色彩(颜色)模式解析(一)

文章目录Android 色彩(颜色)模式解析(一)FrameWork色彩模式的定义及实现SurfaceFlinger对色彩模式的支持和实现看屏幕是否支持颜色管理屏幕的ColorProfileSurfaceFlinger设置ColorMode的流程小结Android 色彩(颜色)模式解析(一)Android Q 在系统设置中提供了可设置的色彩模式,当然这功能很多厂商早就有了~,落后归落后,我们还...

2019-08-29 14:33:13 7396 2

原创 Android P 图形显示系统(四) Android VirtualDisplay解析

文章目录Android VirtualDisplay解析ImageReader和VirtualDisplay使用示例ImageReader介绍VirtualDisplay的创建Native创建VirtualDisplay数据流分析ImageReader获取数据Android VirtualDisplay解析Android支持多个屏幕:主显,外显,和虚显,虚显就是我们要说的VirtualDisp...

2019-08-29 14:30:40 16160 7

原创 Android P 图像显示系统(二)GraphicBuffer和Gralloc分析

GraphicBuffer和Gralloc分析GraphicBuffer定义分配一块BufferGralloc1.0 接口介绍IAllocator接口IMapper接口Qcom高通平台Gralloc HAL实现gralloc1整体架构allocate相关流程ION Bufferheap的类型Ion APIIon Debug小结GraphicB...

2019-08-22 09:50:25 9748 13

原创 Android P 图像显示系统(三)Android HWUI 绘制流程

Android中,绘图的API很多,比如2D的绘图skia;3D的绘图OpenGLES,Vulkan等。Android 开始,的View系统中,多数都是采用2D的模式的View Widget,比如绘制一张Bitmap图片,显示一个按钮等。随着Android系统的更新,和用户对视觉效果的追求,以前的这套2D View系统,不仅不能满足要求,而且渲染非常的慢。所以Android一方面完善对3D的API...

2019-08-16 17:48:00 6551 1

原创 Android P 图形显示系统(一)硬件合成HWC2

Android P 图形显示系统(一)硬件合成HWC2SurfaceFlinger概述HWC2 概述HWC 常规准则HWC2 框架HWC2 数据结构图层Layer类型属性显示屏DisplayHWC设备 composerDevice接口指针句柄HandleHWC合成服务Client和Server的通信IComposerClient.hal 接口ICompo...

2019-08-14 14:20:43 17602 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除