Commit 3e501c54 authored by Zhaoliang Ma's avatar Zhaoliang Ma Committed by Commit Bot

Using libyuv::CopyPlane to do an optimised copy of a linear buffer

memcpy is used to copy a linear buffer to the dst linear buffer, this CL
replaces it with libyuv::CopyPlane.

Bug: None
Change-Id: I2741aed2defe526bdba9106695933037a541bcea
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2474913Reviewed-by: default avatarDaniele Castagna <dcastagna@chromium.org>
Commit-Queue: Zhaoliang Ma <zhaoliang.ma@intel.com>
Cr-Commit-Position: refs/heads/master@{#818334}
parent 6539575e
...@@ -382,6 +382,7 @@ viz_source_set("gpu_service_dependencies") { ...@@ -382,6 +382,7 @@ viz_source_set("gpu_service_dependencies") {
deps = [ deps = [
"//base", "//base",
"//gpu/config", "//gpu/config",
"//third_party/libyuv",
] ]
if (is_win) { if (is_win) {
......
...@@ -33,6 +33,7 @@ include_rules = [ ...@@ -33,6 +33,7 @@ include_rules = [
"+third_party/dawn/src/include", "+third_party/dawn/src/include",
"+third_party/khronos/GLES2/gl2.h", "+third_party/khronos/GLES2/gl2.h",
"+third_party/khronos/GLES2/gl2ext.h", "+third_party/khronos/GLES2/gl2ext.h",
"+third_party/libyuv",
"+third_party/skia", "+third_party/skia",
"+ui/accelerated_widget_mac", "+ui/accelerated_widget_mac",
"+ui/display", "+ui/display",
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#include "gpu/ipc/common/gpu_surface_lookup.h" #include "gpu/ipc/common/gpu_surface_lookup.h"
#include "gpu/vulkan/buildflags.h" #include "gpu/vulkan/buildflags.h"
#include "skia/buildflags.h" #include "skia/buildflags.h"
#include "third_party/libyuv/include/libyuv/planar_functions.h"
#include "third_party/skia/include/core/SkDeferredDisplayList.h" #include "third_party/skia/include/core/SkDeferredDisplayList.h"
#include "ui/gfx/color_space.h" #include "ui/gfx/color_space.h"
#include "ui/gfx/geometry/rect_conversions.h" #include "ui/gfx/geometry/rect_conversions.h"
...@@ -134,21 +135,15 @@ class CopyOutputResultYUV : public CopyOutputResult { ...@@ -134,21 +135,15 @@ class CopyOutputResultYUV : public CopyOutputResult {
int u_out_stride, int u_out_stride,
uint8_t* v_out, uint8_t* v_out,
int v_out_stride) const override { int v_out_stride) const override {
const auto CopyPlane = [](const uint8_t* src, int src_stride, int width,
int height, uint8_t* out, int out_stride) {
for (int i = 0; i < height; ++i, src += src_stride, out += out_stride) {
memcpy(out, src, width);
}
};
auto* data0 = static_cast<const uint8_t*>(result_->data(0)); auto* data0 = static_cast<const uint8_t*>(result_->data(0));
auto* data1 = static_cast<const uint8_t*>(result_->data(1)); auto* data1 = static_cast<const uint8_t*>(result_->data(1));
auto* data2 = static_cast<const uint8_t*>(result_->data(2)); auto* data2 = static_cast<const uint8_t*>(result_->data(2));
CopyPlane(data0, result_->rowBytes(0), width(0), height(0), y_out, libyuv::CopyPlane(data0, result_->rowBytes(0), y_out, y_out_stride,
y_out_stride); width(0), height(0));
CopyPlane(data1, result_->rowBytes(1), width(1), height(1), u_out, libyuv::CopyPlane(data1, result_->rowBytes(1), u_out, u_out_stride,
u_out_stride); width(1), height(1));
CopyPlane(data2, result_->rowBytes(2), width(2), height(2), v_out, libyuv::CopyPlane(data2, result_->rowBytes(2), v_out, v_out_stride,
v_out_stride); width(2), height(2));
return true; return true;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment