java webview 内核_android4.4 webview chromium实现硬件渲染的chromium内核结构

本文深入解析了Android 4.4 Webview中Chromium内核的硬件渲染机制,包括AwContents.java如何设置draw_gl_functor.cpp的全局变量,SynchronousCompositorImpl的作用,WebGraphicsContext3DInProcessCommandBufferImpl的创建过程,以及InProcessCommandBuffer和CommandBufferService在硬件渲染中的角色。通过对关键函数和类的分析,展示了WebView硬件加速的实现路径。
摘要由CSDN通过智能技术生成

eba143e4c98f971de640992bd1e26dad.png

draw_gl_functor.cpp中定义了全局函数:

void SetChromiumAwDrawGLFunction() {

g_aw_drawgl_function = reinterpret_cast(draw_function);

}

设置给draw_gl_functor.cpp的全局变量g_aw_drawgl_function的是AwContents.java中

nativeGetAwDrawGLFunction()返回的函数标识。

我们看AwContents.java::nativeGetAwDrawGLFunction()得到的具体是那个函数。

aw_contents.cc

static jint GetAwDrawGLFunction(JNIEnv* env, jclass) {

return reinterpret_cast(&DrawGLFunction);

}

aw_contents.cc中定义了全局的函数指针变量DrawGLFunction:

extern "C" {

static AwDrawGLFunction DrawGLFunction;

static void DrawGLFunction(int view_context,

AwDrawGLInfo* draw_info,

void* spare) {

// |view_context| is the value that was returned from the java

// AwContents.onPrepareDrawGL; this cast must match the code there.

reinterpret_cast<:browserviewrenderer>(view_context)->DrawGL(

draw_info);

}

}

所以aw_contents.cc中GetAwDrawGLFunction()得到的是

android_webview::InProcessViewRenderer::DrawGL()的函数地址。

设置给draw_gl_functor.cpp的全局变量g_aw_drawgl_function的就是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值