- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有两个不同的平台,CPU 频率相同的设置,发现时间成本canvas->flush()
rasterizer线程在YT启动时间有很大的差异,快的最多只有1.632ms,慢的最多有7.292ms,那么有没有办法找到差异的根本原因并对其进行优化?
钴版本:Cobalt 11.132145 with ARM-Linux and Opengl
1.
2.canvas代码->flush()
void HardwareRasterizer::Impl::Submit(
const scoped_refptr<render_tree::Node>& render_tree,
const scoped_refptr<backend::RenderTarget>& render_target,
const Options& options) {
DCHECK(thread_checker_.CalledOnValidThread());
scoped_refptr<backend::RenderTargetEGL> render_target_egl(
base::polymorphic_downcast<backend::RenderTargetEGL*>(
render_target.get()));
// Skip rendering if we lost the surface. This can happen just before suspend
// on Android, so now we're just waiting for the suspend to clean up.
if (render_target_egl->is_surface_bad()) {
return;
}
backend::GraphicsContextEGL::ScopedMakeCurrent scoped_make_current(
graphics_context_, render_target_egl);
// Make sure the render target's framebuffer is bound before continuing.
// Skia will usually do this, but it is possible for some render trees to
// have non-skia draw calls only, in which case this needs to be done.
GL_CALL(glBindFramebuffer(GL_FRAMEBUFFER,
render_target_egl->GetPlatformHandle()));
// First reset the graphics context state for the pending render tree
// draw calls, in case we have modified state in between.
gr_context_->resetContext();
AdvanceFrame();
// Get a SkCanvas that outputs to our hardware render target.
SkCanvas* canvas = GetCanvasFromRenderTarget(render_target);
canvas->save();
if (options.flags & Rasterizer::kSubmitFlags_Clear) {
canvas->clear(SkColorSetARGB(0, 0, 0, 0));
} else if (options.dirty) {
// Only a portion of the display is dirty. Reuse the previous frame
// if possible.
if (render_target_egl->ContentWasPreservedAfterSwap()) {
canvas->clipRect(CobaltRectFToSkiaRect(*options.dirty));
}
}
// Rasterize the passed in render tree to our hardware render target.
RasterizeRenderTreeToCanvas(render_tree, canvas, kBottomLeft_GrSurfaceOrigin);
{
TRACE_EVENT0("cobalt::renderer", "Skia Flush");
canvas->flush();
}
graphics_context_->SwapBuffers(render_target_egl);
canvas->restore();
}
最佳答案
Skia flush() 调用是将调用所有 OpenGL 函数的函数(在调用该函数之前,所有绘图函数都被简单地序列化并以内部 Skia 格式排队)。
因此,在这种情况下,我会调查您的 GL 驱动程序实现。可能是您的 CPU 正在等待您的 GPU 使用 GLES 发送给它的一些绘图命令。
关于cobalt - 有没有办法优化skia::flush时间成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49107505/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我正在 Windows 上构建 Skia,关注 this link . 对于 Windows x64,构建非常顺利。但不适用于 32 位。 1) 我尝试指定 target_cpu = "x86"而不是
我在使用 skia measureText() 函数测量文本时遇到问题。返回值不准确。 SkPaint *skPaint = new SkPaint(); SkTypeface* myFont = S
我有一个 draw(SkCanvas* canvas) 函数。 在 main() 中我写: SkBitmap myBitmap; myBitmap.allocN32Pixels(640, 480);
我正在尝试打开 JPEG 图像的远程流并将其转换为位图对象: BitmapFactory.decodeStream( new URL("http://some.url.to/source/im
你好, 我目前正在研究Android如何解码和图像文件。当我检查代码时,它似乎在调用 SKIA 库。但是,如何根据源码知道android/skia支持的图片文件格式是什么? 我不是编程专家,所以我还在
本页http://source.android.com/devices/graphics.html说: Prior to Android 3.0, Canvas used the Skia 2D dr
我尝试按照 https://skia.org/user/build 中的建议在 Windows 上编译skia 1> bin/gn gen out/Static --args='is_official
我想弄清楚如何让 Skia 从路径几何中生成网格。我查了 SkPath::dump , SkPath::writeToMemory , SkPath::serialize ,但是它们似乎都输出路径内容
我正在尝试使用 Xamarin.forms 中的 SkiaSharp 在图像上绘制一些多边形。图片是从服务器下载的,然后缓存在后台。所以我宁愿不操纵图像本身,而是绘制一个新 Canvas 并将其放置在
我正在尝试使用 Skia Windows 上的图形库需要 building it from source .但是,当我运行构建命令时: ninja -C out/Static 我得到这个构建错误: "
我正在尝试使用 Linux 构建 SKIA 库: https://code.google.com/p/skia/ 我已成功运行 ./gyp_skia 后跟 make 命令。 您经常在make 之后运行
我正在处理一个必须在位图上快速绘制文本的应用程序。我已经对渲染过程的内存使用进行了相当多的优化,但我仍然希望该过程尽可能快,那时我了解到 Skia 库,有人说它可以提供比原生 Android canv
我将 Skia 用于我的示例程序之一。我有一个 Canvas ,我在其中使用 font_size 30 编写文本,这是代码片段。 string = "Test String"; SkString t
这是我的一个与远程浏览器隔离相关的实验项目。我正在尝试拦截 Skia在正在运行的 Chromium 实例中绘制命令,然后通过 CanvasKit 在客户端的不同浏览器实例中重放它们,Skia 的 We
因此,我从 Google SIgn-in api 下载个人资料图片,并将其保存到隐藏文件中。问题是,当我尝试检索它时,它会抛出:D/skia: --- 无法创建带有消息“未实现”的图像解码器。但是,当
为什么 Skia包括 Forth interpreter ? 最佳答案 Forth 解释器包含最初是一种调用 Skia 的迷你脚本语言。 迈克·里德,software engineer and man
我想使用 SkiaSharp 绘制富文本,例如 iOS 的属性文本或 Xamarin.Forms 的 FormattedString,但我找不到方法。 我找到了 DrawText 方法,但它用于使用一
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我正在设计一个显示一些图像的 Activity 。下面的代码获取图像文件并将它们放入屏幕。 for(int i=0;idecode returned false 06-2
我是一名优秀的程序员,十分优秀!