Android的Graphic系统分析之skia(4)

2020-04-16 09:12

uint8_t transform; uint8_t reserved[3]; };

……//省略部分代码

//双方同步

// these attributes are part of the conditions/updates volatile int32_t head; // server’s current front buffer

volatile int32_t available; // number of dequeue-able buffers volatile int32_t queued; // number of buffers waiting for post volatile int32_t reserved1;

volatile status_t status; // surface’s status code

// not part of the conditions volatile int32_t reallocMask;

volatile int8_t index[NUM_BUFFER_MAX]; int32_t identity; // surface’s identity (const) int32_t token; // surface’s token (for debugging) Statistics stats;

int8_t headBuf; // last retired buffer uint8_t reservedBytes[3]; int32_t reserved;

BufferData buffers[NUM_BUFFER_MAX]; // 16个数组元素 };

可见SharedBufferStack里面定义了几个结构体,用于保存矩形区域。如果我们把BufferData所保存的区域称为一块区域的话,那么SharedBufferStack里可以包含多达16

块区域。在Android系统里,一个Surface对应一个SharedBufferStack。而SharedClient则包含了31个SharedBufferStack:

// 32 KB max class SharedClient {

……//省略部分代码

// FIXME: this should be replaced by a lock-less primitive Mutex lock; Condition cv;

SharedBufferStack surfaces[ SharedBufferStack::NUM_LAYERS_MAX ];//31个数组元素 };

因此,上图展示了SharedClient中包含的31个Stack元素

每当client侧创建一个surface时,都要通过SharedBufferClient的dequeue从SharedBufferStack取出一个不用的slot。


Android的Graphic系统分析之skia(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:文献综述正文范例

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: