Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1029)

Unified Diff: content/browser/compositor/gl_helper_unittest.cc

Issue 1802383002: Move gl_helper to content/browser/compositor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/compositor/gl_helper_unittest.cc
diff --git a/content/common/gpu/client/gl_helper_unittest.cc b/content/browser/compositor/gl_helper_unittest.cc
similarity index 81%
rename from content/common/gpu/client/gl_helper_unittest.cc
rename to content/browser/compositor/gl_helper_unittest.cc
index 59ea228d101fbb774b21f00c437373a7c6740555..9ba79b7f89f09914e174fdac00e000c632a5d322 100644
--- a/content/common/gpu/client/gl_helper_unittest.cc
+++ b/content/browser/compositor/gl_helper_unittest.cc
@@ -29,9 +29,9 @@
#include "base/test/test_suite.h"
#include "base/time/time.h"
#include "base/trace_event/trace_event.h"
-#include "content/common/gpu/client/gl_helper.h"
-#include "content/common/gpu/client/gl_helper_readback_support.h"
-#include "content/common/gpu/client/gl_helper_scaling.h"
+#include "content/browser/compositor/gl_helper.h"
+#include "content/browser/compositor/gl_helper_readback_support.h"
+#include "content/browser/compositor/gl_helper_scaling.h"
#include "gpu/command_buffer/client/gl_in_process_context.h"
#include "gpu/command_buffer/client/gles2_implementation.h"
#include "media/base/video_frame.h"
@@ -45,9 +45,12 @@ namespace content {
content::GLHelper::ScalerQuality kQualities[] = {
content::GLHelper::SCALER_QUALITY_BEST,
content::GLHelper::SCALER_QUALITY_GOOD,
- content::GLHelper::SCALER_QUALITY_FAST, };
+ content::GLHelper::SCALER_QUALITY_FAST,
+};
-const char* kQualityNames[] = {"best", "good", "fast", };
+const char* kQualityNames[] = {
+ "best", "good", "fast",
+};
class GLHelperTest : public testing::Test {
protected:
@@ -116,8 +119,7 @@ class GLHelperTest : public testing::Test {
base::trace_event::TraceLog::GetInstance()->SetDisabled();
base::RunLoop run_loop;
base::trace_event::TraceLog::GetInstance()->Flush(
- base::Bind(&GLHelperTest::TraceDataCB,
- run_loop.QuitClosure(),
+ base::Bind(&GLHelperTest::TraceDataCB, run_loop.QuitClosure(),
base::Unretained(&json_data)));
run_loop.Run();
json_data.append("]");
@@ -125,9 +127,9 @@ class GLHelperTest : public testing::Test {
std::string error_msg;
scoped_ptr<base::Value> trace_data =
base::JSONReader::ReadAndReturnError(json_data, 0, NULL, &error_msg);
- CHECK(trace_data)
- << "JSON parsing failed (" << error_msg << ") JSON data:" << std::endl
- << json_data;
+ CHECK(trace_data) << "JSON parsing failed (" << error_msg
+ << ") JSON data:" << std::endl
+ << json_data;
base::ListValue* list;
CHECK(trace_data->GetAsList(&list));
@@ -216,11 +218,10 @@ class GLHelperTest : public testing::Test {
const std::vector<GLHelperScaling::ScalerStage>& scaler_stages) {
std::string ret;
for (size_t i = 0; i < scaler_stages.size(); i++) {
- ret.append(base::StringPrintf("%dx%d -> %dx%d ",
- scaler_stages[i].src_size.width(),
- scaler_stages[i].src_size.height(),
- scaler_stages[i].dst_size.width(),
- scaler_stages[i].dst_size.height()));
+ ret.append(base::StringPrintf(
+ "%dx%d -> %dx%d ", scaler_stages[i].src_size.width(),
+ scaler_stages[i].src_size.height(), scaler_stages[i].dst_size.width(),
+ scaler_stages[i].dst_size.height()));
bool xy_matters = false;
switch (scaler_stages[i].shader) {
case GLHelperScaling::SHADER_BILINEAR:
@@ -395,12 +396,12 @@ class GLHelperTest : public testing::Test {
}
if (x_samples) {
- EXPECT_TRUE(CheckScale(x_scale, x_samples, scaled_x))
- << "x_scale = " << x_scale;
+ EXPECT_TRUE(CheckScale(x_scale, x_samples, scaled_x)) << "x_scale = "
+ << x_scale;
}
if (y_samples) {
- EXPECT_TRUE(CheckScale(y_scale, y_samples, scaled_y))
- << "y_scale = " << y_scale;
+ EXPECT_TRUE(CheckScale(y_scale, y_samples, scaled_y)) << "y_scale = "
+ << y_scale;
}
if (x_scale != 1.0) {
@@ -510,8 +511,8 @@ class GLHelperTest : public testing::Test {
float value = c0 * kRGBtoGrayscaleColorWeights[0] +
c1 * kRGBtoGrayscaleColorWeights[1] +
c2 * kRGBtoGrayscaleColorWeights[2];
- SetChannel(
- output, dst_x, dst_y, 0, static_cast<int>(value * 255.0f + 0.5f));
+ SetChannel(output, dst_x, dst_y, 0,
+ static_cast<int>(value * 255.0f + 0.5f));
}
}
}
@@ -572,10 +573,9 @@ class GLHelperTest : public testing::Test {
}
for (int x = 0; x < xmag; x++) {
for (int y = 0; y < ymag; y++) {
- value += Bilinear(input,
- (dst_x * xmag + x + 0.5) * xscale / xmag,
- (dst_y * ymag + y + 0.5) * yscale / ymag,
- channel);
+ value += Bilinear(
+ input, (dst_x * xmag + x + 0.5) * xscale / xmag,
+ (dst_y * ymag + y + 0.5) * yscale / ymag, channel);
sum += 1.0;
}
}
@@ -587,10 +587,7 @@ class GLHelperTest : public testing::Test {
sum = 1.0;
}
value /= sum;
- SetChannel(output,
- dst_x,
- dst_y,
- channel,
+ SetChannel(output, dst_x, dst_y, channel,
static_cast<int>(value * 255.0f + 0.5f));
}
}
@@ -682,8 +679,8 @@ class GLHelperTest : public testing::Test {
int height,
int test_pattern) {
scoped_ptr<SkBitmap> bitmap(new SkBitmap);
- bitmap->allocPixels(SkImageInfo::Make(
- width, height, kRGBA_8888_SkColorType, kPremul_SkAlphaType));
+ bitmap->allocPixels(SkImageInfo::Make(width, height, kRGBA_8888_SkColorType,
+ kPremul_SkAlphaType));
for (int x = 0; x < width; ++x) {
for (int y = 0; y < height; ++y) {
@@ -745,21 +742,16 @@ class GLHelperTest : public testing::Test {
gl_->GenFramebuffers(1, &framebuffer);
scoped_ptr<SkBitmap> input_pixels =
CreateTestBitmap(xsize, ysize, test_pattern);
- BindTextureAndFrameBuffer(
- src_texture, framebuffer, input_pixels.get(), xsize, ysize);
+ BindTextureAndFrameBuffer(src_texture, framebuffer, input_pixels.get(),
+ xsize, ysize);
std::string message = base::StringPrintf(
"input size: %dx%d "
"output size: %dx%d "
"pattern: %d , quality: %s, "
"out_color_type: %d",
- xsize,
- ysize,
- scaled_xsize,
- scaled_ysize,
- test_pattern,
- kQualityNames[quality_index],
- out_color_type);
+ xsize, ysize, scaled_xsize, scaled_ysize, test_pattern,
+ kQualityNames[quality_index], out_color_type);
// Transform the bitmap using GLHelper::CropScaleReadbackAndCleanTexture.
SkBitmap output_pixels;
@@ -768,12 +760,9 @@ class GLHelperTest : public testing::Test {
base::RunLoop run_loop;
gfx::Size encoded_texture_size;
helper_->CropScaleReadbackAndCleanTexture(
- src_texture,
- gfx::Size(xsize, ysize),
- gfx::Rect(xsize, ysize),
+ src_texture, gfx::Size(xsize, ysize), gfx::Rect(xsize, ysize),
gfx::Size(scaled_xsize, scaled_ysize),
- static_cast<unsigned char*>(output_pixels.getPixels()),
- out_color_type,
+ static_cast<unsigned char*>(output_pixels.getPixels()), out_color_type,
base::Bind(&callcallback, run_loop.QuitClosure()),
kQualities[quality_index]);
run_loop.Run();
@@ -784,25 +773,20 @@ class GLHelperTest : public testing::Test {
if (xsize == scaled_xsize && ysize == scaled_ysize &&
out_color_type != kAlpha_8_SkColorType) {
const std::vector<GLHelperScaling::ScalerStage> dummy_stages;
- Compare(input_pixels.get(),
- &output_pixels,
- 0,
- NULL,
- dummy_stages,
+ Compare(input_pixels.get(), &output_pixels, 0, NULL, dummy_stages,
message + " comparing against input");
return;
}
// Now transform the bitmap using the reference implementation.
SkBitmap scaled_pixels;
- scaled_pixels.allocPixels(SkImageInfo::Make(scaled_xsize,
- scaled_ysize,
+ scaled_pixels.allocPixels(SkImageInfo::Make(scaled_xsize, scaled_ysize,
kRGBA_8888_SkColorType,
kPremul_SkAlphaType));
SkBitmap truth_pixels;
// Step 1: Scale
- ScaleSlowRecursive(
- input_pixels.get(), &scaled_pixels, kQualities[quality_index]);
+ ScaleSlowRecursive(input_pixels.get(), &scaled_pixels,
+ kQualities[quality_index]);
// Step 2: Encode to grayscale if needed.
if (out_color_type == kAlpha_8_SkColorType) {
truth_pixels.allocPixels(SkImageInfo::Make(
@@ -815,11 +799,7 @@ class GLHelperTest : public testing::Test {
// Now compare the results.
SkAutoLockPixels lock_input(truth_pixels);
const std::vector<GLHelperScaling::ScalerStage> dummy_stages;
- Compare(&truth_pixels,
- &output_pixels,
- 2,
- input_pixels.get(),
- dummy_stages,
+ Compare(&truth_pixels, &output_pixels, 2, input_pixels.get(), dummy_stages,
message + " comparing against transformed/scaled");
gl_->DeleteTextures(1, &src_texture);
@@ -841,18 +821,14 @@ class GLHelperTest : public testing::Test {
gl_->GenFramebuffers(1, &framebuffer);
scoped_ptr<SkBitmap> input_pixels =
CreateTestBitmap(xsize, ysize, test_pattern);
- BindTextureAndFrameBuffer(
- src_texture, framebuffer, input_pixels.get(), xsize, ysize);
+ BindTextureAndFrameBuffer(src_texture, framebuffer, input_pixels.get(),
+ xsize, ysize);
std::string message = base::StringPrintf(
"input size: %dx%d "
"output size: %dx%d "
"pattern: %d quality: %s",
- xsize,
- ysize,
- scaled_xsize,
- scaled_ysize,
- test_pattern,
+ xsize, ysize, scaled_xsize, scaled_ysize, test_pattern,
kQualityNames[quality_index]);
std::vector<GLHelperScaling::ScalerStage> stages;
@@ -873,14 +849,12 @@ class GLHelperTest : public testing::Test {
gfx::Size(scaled_xsize, scaled_ysize), flip, kQualities[quality_index]);
SkBitmap output_pixels;
- output_pixels.allocPixels(SkImageInfo::Make(scaled_xsize,
- scaled_ysize,
+ output_pixels.allocPixels(SkImageInfo::Make(scaled_xsize, scaled_ysize,
kRGBA_8888_SkColorType,
kPremul_SkAlphaType));
helper_->ReadbackTextureSync(
- dst_texture,
- gfx::Rect(0, 0, scaled_xsize, scaled_ysize),
+ dst_texture, gfx::Rect(0, 0, scaled_xsize, scaled_ysize),
static_cast<unsigned char*>(output_pixels.getPixels()),
kRGBA_8888_SkColorType);
if (flip) {
@@ -890,28 +864,19 @@ class GLHelperTest : public testing::Test {
// If the bitmap shouldn't have changed - compare against input.
if (xsize == scaled_xsize && ysize == scaled_ysize) {
- Compare(input_pixels.get(),
- &output_pixels,
- 0,
- NULL,
- stages,
+ Compare(input_pixels.get(), &output_pixels, 0, NULL, stages,
message + " comparing against input");
return;
}
// Now scale the bitmap using the reference implementation.
SkBitmap truth_pixels;
- truth_pixels.allocPixels(SkImageInfo::Make(scaled_xsize,
- scaled_ysize,
+ truth_pixels.allocPixels(SkImageInfo::Make(scaled_xsize, scaled_ysize,
kRGBA_8888_SkColorType,
kPremul_SkAlphaType));
- ScaleSlowRecursive(
- input_pixels.get(), &truth_pixels, kQualities[quality_index]);
- Compare(&truth_pixels,
- &output_pixels,
- 2,
- input_pixels.get(),
- stages,
+ ScaleSlowRecursive(input_pixels.get(), &truth_pixels,
+ kQualities[quality_index]);
+ Compare(&truth_pixels, &output_pixels, 2, input_pixels.get(), stages,
message + " comparing against scaled");
gl_->DeleteTextures(1, &src_texture);
@@ -927,25 +892,17 @@ class GLHelperTest : public testing::Test {
int dst_xsize,
int dst_ysize) {
std::vector<GLHelperScaling::ScalerStage> stages;
- helper_scaling_->ComputeScalerStages(kQualities[quality],
- gfx::Size(xsize, ysize),
- gfx::Rect(0, 0, xsize, ysize),
- gfx::Size(dst_xsize, dst_ysize),
- false,
- false,
- &stages);
- ValidateScalerStages(kQualities[quality],
- stages,
+ helper_scaling_->ComputeScalerStages(
+ kQualities[quality], gfx::Size(xsize, ysize),
+ gfx::Rect(0, 0, xsize, ysize), gfx::Size(dst_xsize, dst_ysize), false,
+ false, &stages);
+ ValidateScalerStages(kQualities[quality], stages,
gfx::Size(dst_xsize, dst_ysize),
- base::StringPrintf(
- "input size: %dx%d "
- "output size: %dx%d "
- "quality: %s",
- xsize,
- ysize,
- dst_xsize,
- dst_ysize,
- kQualityNames[quality]));
+ base::StringPrintf("input size: %dx%d "
+ "output size: %dx%d "
+ "quality: %s",
+ xsize, ysize, dst_xsize, dst_ysize,
+ kQualityNames[quality]));
}
// Create a scaling pipeline and make sure that the steps
@@ -957,17 +914,11 @@ class GLHelperTest : public testing::Test {
int dst_ysize,
const std::string& description) {
std::vector<GLHelperScaling::ScalerStage> stages;
- helper_scaling_->ComputeScalerStages(quality,
- gfx::Size(xsize, ysize),
- gfx::Rect(0, 0, xsize, ysize),
- gfx::Size(dst_xsize, dst_ysize),
- false,
- false,
- &stages);
- ValidateScalerStages(content::GLHelper::SCALER_QUALITY_GOOD,
- stages,
- gfx::Size(dst_xsize, dst_ysize),
- "");
+ helper_scaling_->ComputeScalerStages(
+ quality, gfx::Size(xsize, ysize), gfx::Rect(0, 0, xsize, ysize),
+ gfx::Size(dst_xsize, dst_ysize), false, false, &stages);
+ ValidateScalerStages(content::GLHelper::SCALER_QUALITY_GOOD, stages,
+ gfx::Size(dst_xsize, dst_ysize), "");
EXPECT_EQ(PrintStages(stages), description);
}
@@ -1070,7 +1021,8 @@ class GLHelperTest : public testing::Test {
}
}
- void DrawGridToBitmap(int w, int h,
+ void DrawGridToBitmap(int w,
+ int h,
SkColor background_color,
SkColor grid_color,
int grid_pitch,
@@ -1096,9 +1048,12 @@ class GLHelperTest : public testing::Test {
}
}
- void DrawCheckerToBitmap(int w, int h,
- SkColor color1, SkColor color2,
- int rect_w, int rect_h,
+ void DrawCheckerToBitmap(int w,
+ int h,
+ SkColor color1,
+ SkColor color2,
+ int rect_w,
+ int rect_h,
SkBitmap& bmp) {
ASSERT_GT(rect_w, 0);
ASSERT_GT(rect_h, 0);
@@ -1142,14 +1097,14 @@ class GLHelperTest : public testing::Test {
}
bool ColorsClose(SkColor color1, SkColor color2, SkColorType color_type) {
- bool red = ColorComponentsClose(SkColorGetR(color1),
- SkColorGetR(color2), color_type);
- bool green = ColorComponentsClose(SkColorGetG(color1),
- SkColorGetG(color2), color_type);
- bool blue = ColorComponentsClose(SkColorGetB(color1),
- SkColorGetB(color2), color_type);
- bool alpha = ColorComponentsClose(SkColorGetA(color1),
- SkColorGetA(color2), color_type);
+ bool red = ColorComponentsClose(SkColorGetR(color1), SkColorGetR(color2),
+ color_type);
+ bool green = ColorComponentsClose(SkColorGetG(color1), SkColorGetG(color2),
+ color_type);
+ bool blue = ColorComponentsClose(SkColorGetB(color1), SkColorGetB(color2),
+ color_type);
+ bool alpha = ColorComponentsClose(SkColorGetA(color1), SkColorGetA(color2),
+ color_type);
if (color_type == kRGB_565_SkColorType) {
return red && blue && green;
}
@@ -1159,10 +1114,9 @@ class GLHelperTest : public testing::Test {
bool IsEqual(const SkBitmap& bmp1, const SkBitmap& bmp2) {
if (bmp1.isNull() && bmp2.isNull())
return true;
- if (bmp1.width() != bmp2.width() ||
- bmp1.height() != bmp2.height()) {
- LOG(ERROR) << "Bitmap geometry check failure";
- return false;
+ if (bmp1.width() != bmp2.width() || bmp1.height() != bmp2.height()) {
+ LOG(ERROR) << "Bitmap geometry check failure";
+ return false;
}
if (bmp1.colorType() != bmp2.colorType())
return false;
@@ -1175,8 +1129,7 @@ class GLHelperTest : public testing::Test {
}
for (int y = 0; y < bmp1.height(); ++y) {
for (int x = 0; x < bmp1.width(); ++x) {
- if (!ColorsClose(bmp1.getColor(x,y),
- bmp2.getColor(x,y),
+ if (!ColorsClose(bmp1.getColor(x, y), bmp2.getColor(x, y),
bmp1.colorType())) {
LOG(ERROR) << "Bitmap color comparision failure";
return false;
@@ -1219,29 +1172,21 @@ class GLHelperTest : public testing::Test {
bool async) {
if (async) {
base::RunLoop run_loop;
- helper_->ReadbackTextureAsync(src_texture,
- src_size,
- pixels,
- color_type,
- base::Bind(&callcallback,
- run_loop.QuitClosure()));
+ helper_->ReadbackTextureAsync(
+ src_texture, src_size, pixels, color_type,
+ base::Bind(&callcallback, run_loop.QuitClosure()));
run_loop.Run();
} else {
- helper_->ReadbackTextureSync(src_texture,
- gfx::Rect(src_size),
- pixels,
+ helper_->ReadbackTextureSync(src_texture, gfx::Rect(src_size), pixels,
color_type);
}
}
// Test basic format readback.
bool TestTextureFormatReadback(const gfx::Size& src_size,
- SkColorType color_type,
- bool async) {
- SkImageInfo info =
- SkImageInfo::Make(src_size.width(),
- src_size.height(),
- color_type,
- kPremul_SkAlphaType);
+ SkColorType color_type,
+ bool async) {
+ SkImageInfo info = SkImageInfo::Make(src_size.width(), src_size.height(),
+ color_type, kPremul_SkAlphaType);
if (!helper_->IsReadbackConfigSupported(color_type)) {
LOG(INFO) << "Skipping test format not supported" << color_type;
return true;
@@ -1253,9 +1198,7 @@ class GLHelperTest : public testing::Test {
// Test Pattern-1, Fill with Plain color pattern.
// Erase the input bitmap with red color.
input_pixels.eraseColor(SK_ColorRED);
- BindAndAttachTextureWithPixels(src_texture,
- color_type,
- src_size,
+ BindAndAttachTextureWithPixels(src_texture, color_type, src_size,
input_pixels);
SkBitmap output_pixels;
output_pixels.allocPixels(info);
@@ -1272,13 +1215,9 @@ class GLHelperTest : public testing::Test {
const int rect_w = 10, rect_h = 4, src_grid_pitch = 10, src_grid_width = 4;
const SkColor color1 = SK_ColorRED, color2 = SK_ColorBLUE;
// Test Pattern-2, Fill with Grid Pattern.
- DrawGridToBitmap(src_size.width(), src_size.height(),
- color2, color1,
- src_grid_pitch, src_grid_width,
- input_pixels);
- BindAndAttachTextureWithPixels(src_texture,
- color_type,
- src_size,
+ DrawGridToBitmap(src_size.width(), src_size.height(), color2, color1,
+ src_grid_pitch, src_grid_width, input_pixels);
+ BindAndAttachTextureWithPixels(src_texture, color_type, src_size,
input_pixels);
ReadBackTexture(src_texture, src_size, pixels, color_type, async);
result = IsEqual(input_pixels, output_pixels);
@@ -1287,13 +1226,9 @@ class GLHelperTest : public testing::Test {
return false;
}
// Test Pattern-3, Fill with CheckerBoard Pattern.
- DrawCheckerToBitmap(src_size.width(),
- src_size.height(),
- color1,
- color2, rect_w, rect_h, input_pixels);
- BindAndAttachTextureWithPixels(src_texture,
- color_type,
- src_size,
+ DrawCheckerToBitmap(src_size.width(), src_size.height(), color1, color2,
+ rect_w, rect_h, input_pixels);
+ BindAndAttachTextureWithPixels(src_texture, color_type, src_size,
input_pixels);
ReadBackTexture(src_texture, src_size, pixels, color_type, async);
result = IsEqual(input_pixels, output_pixels);
@@ -1370,23 +1305,12 @@ class GLHelperTest : public testing::Test {
"output size: %dx%d "
"margin: %dx%d "
"pattern: %d %s %s",
- xsize,
- ysize,
- output_xsize,
- output_ysize,
- xmargin,
- ymargin,
- test_pattern,
- flip ? "flip" : "noflip",
- flip ? "mrt" : "nomrt");
+ xsize, ysize, output_xsize, output_ysize, xmargin, ymargin,
+ test_pattern, flip ? "flip" : "noflip", flip ? "mrt" : "nomrt");
scoped_ptr<ReadbackYUVInterface> yuv_reader(
helper_->CreateReadbackPipelineYUV(
- quality,
- gfx::Size(xsize, ysize),
- gfx::Rect(0, 0, xsize, ysize),
- gfx::Size(xsize, ysize),
- flip,
- use_mrt));
+ quality, gfx::Size(xsize, ysize), gfx::Rect(0, 0, xsize, ysize),
+ gfx::Size(xsize, ysize), flip, use_mrt));
scoped_refptr<media::VideoFrame> output_frame =
media::VideoFrame::CreateFrame(
@@ -1461,33 +1385,18 @@ class GLHelperTest : public testing::Test {
}
}
- ComparePlane(Y,
- y_stride,
- output_frame->visible_data(media::VideoFrame::kYPlane),
- output_frame->stride(media::VideoFrame::kYPlane),
- 2,
- output_xsize,
- output_ysize,
- &input_pixels,
- message + " Y plane");
- ComparePlane(U,
- u_stride,
- output_frame->visible_data(media::VideoFrame::kUPlane),
- output_frame->stride(media::VideoFrame::kUPlane),
- 2,
- output_xsize / 2,
- output_ysize / 2,
- &input_pixels,
- message + " U plane");
- ComparePlane(V,
- v_stride,
- output_frame->visible_data(media::VideoFrame::kVPlane),
- output_frame->stride(media::VideoFrame::kVPlane),
- 2,
- output_xsize / 2,
- output_ysize / 2,
- &input_pixels,
- message + " V plane");
+ ComparePlane(
+ Y, y_stride, output_frame->visible_data(media::VideoFrame::kYPlane),
+ output_frame->stride(media::VideoFrame::kYPlane), 2, output_xsize,
+ output_ysize, &input_pixels, message + " Y plane");
+ ComparePlane(
+ U, u_stride, output_frame->visible_data(media::VideoFrame::kUPlane),
+ output_frame->stride(media::VideoFrame::kUPlane), 2, output_xsize / 2,
+ output_ysize / 2, &input_pixels, message + " U plane");
+ ComparePlane(
+ V, v_stride, output_frame->visible_data(media::VideoFrame::kVPlane),
+ output_frame->stride(media::VideoFrame::kVPlane), 2, output_xsize / 2,
+ output_ysize / 2, &input_pixels, message + " V plane");
gl_->DeleteTextures(1, &src_texture);
}
@@ -1538,21 +1447,13 @@ class GLHelperTest : public testing::Test {
const std::string& description) {
std::vector<GLHelperScaling::ScalerStage> stages;
helper_scaling_->ConvertScalerOpsToScalerStages(
- content::GLHelper::SCALER_QUALITY_GOOD,
- gfx::Size(xsize, ysize),
- gfx::Rect(0, 0, xsize, ysize),
- gfx::Size(dst_xsize, dst_ysize),
- false,
- false,
- &x_ops_,
- &y_ops_,
- &stages);
+ content::GLHelper::SCALER_QUALITY_GOOD, gfx::Size(xsize, ysize),
+ gfx::Rect(0, 0, xsize, ysize), gfx::Size(dst_xsize, dst_ysize), false,
+ false, &x_ops_, &y_ops_, &stages);
EXPECT_EQ(x_ops_.size(), 0U);
EXPECT_EQ(y_ops_.size(), 0U);
- ValidateScalerStages(content::GLHelper::SCALER_QUALITY_GOOD,
- stages,
- gfx::Size(dst_xsize, dst_ysize),
- "");
+ ValidateScalerStages(content::GLHelper::SCALER_QUALITY_GOOD, stages,
+ gfx::Size(dst_xsize, dst_ysize), "");
EXPECT_EQ(PrintStages(stages), description);
}
@@ -1599,10 +1500,7 @@ class GLHelperTest : public testing::Test {
// X scaled to 40%, Y scaled 40%, two bilinear3 passes.
x_ops_.push_back(GLHelperScaling::ScaleOp(3, true, 40));
y_ops_.push_back(GLHelperScaling::ScaleOp(3, false, 40));
- CheckPipeline2(100,
- 100,
- 40,
- 40,
+ CheckPipeline2(100, 100, 40, 40,
"100x100 -> 100x40 bilinear3 Y\n"
"100x40 -> 40x40 bilinear3 X\n");
@@ -1610,10 +1508,7 @@ class GLHelperTest : public testing::Test {
x_ops_.push_back(GLHelperScaling::ScaleOp(0, true, 120));
x_ops_.push_back(GLHelperScaling::ScaleOp(2, true, 60));
y_ops_.push_back(GLHelperScaling::ScaleOp(3, false, 40));
- CheckPipeline2(100,
- 100,
- 60,
- 40,
+ CheckPipeline2(100, 100, 60, 40,
"100x100 -> 100x40 bilinear3 Y\n"
"100x40 -> 60x40 bilinear2 X\n");
@@ -1621,10 +1516,7 @@ class GLHelperTest : public testing::Test {
x_ops_.push_back(GLHelperScaling::ScaleOp(3, true, 40));
y_ops_.push_back(GLHelperScaling::ScaleOp(0, false, 120));
y_ops_.push_back(GLHelperScaling::ScaleOp(2, false, 60));
- CheckPipeline2(100,
- 100,
- 40,
- 60,
+ CheckPipeline2(100, 100, 40, 60,
"100x100 -> 100x60 bilinear2 Y\n"
"100x60 -> 40x60 bilinear3 X\n");
@@ -1635,10 +1527,7 @@ class GLHelperTest : public testing::Test {
y_ops_.push_back(GLHelperScaling::ScaleOp(0, false, 120));
y_ops_.push_back(GLHelperScaling::ScaleOp(2, false, 60));
y_ops_.push_back(GLHelperScaling::ScaleOp(2, false, 30));
- CheckPipeline2(100,
- 100,
- 30,
- 30,
+ CheckPipeline2(100, 100, 30, 30,
"100x100 -> 100x30 bilinear4 Y\n"
"100x30 -> 30x30 bilinear4 X\n");
@@ -1656,10 +1545,7 @@ class GLHelperTest : public testing::Test {
y_ops_.push_back(GLHelperScaling::ScaleOp(0, false, 120));
y_ops_.push_back(GLHelperScaling::ScaleOp(2, false, 60));
y_ops_.push_back(GLHelperScaling::ScaleOp(2, false, 30));
- CheckPipeline2(100,
- 100,
- 150,
- 30,
+ CheckPipeline2(100, 100, 150, 30,
"100x100 -> 100x30 bilinear4 Y\n"
"100x30 -> 150x30 bilinear\n");
@@ -1680,10 +1566,7 @@ class GLHelperTest : public testing::Test {
y_ops_.push_back(GLHelperScaling::ScaleOp(2, false, 4));
y_ops_.push_back(GLHelperScaling::ScaleOp(2, false, 2));
y_ops_.push_back(GLHelperScaling::ScaleOp(2, false, 1));
- CheckPipeline2(100,
- 100,
- 1,
- 1,
+ CheckPipeline2(100, 100, 1, 1,
"100x100 -> 100x32 bilinear4 Y\n"
"100x32 -> 100x4 bilinear4 Y\n"
"100x4 -> 64x1 bilinear2x2\n"
@@ -1705,68 +1588,53 @@ class GLHelperPixelTest : public GLHelperTest {
TEST_F(GLHelperTest, RGBASyncReadbackTest) {
const int kTestSize = 64;
- bool result = TestTextureFormatReadback(gfx::Size(kTestSize,kTestSize),
- kRGBA_8888_SkColorType,
- false);
+ bool result = TestTextureFormatReadback(gfx::Size(kTestSize, kTestSize),
+ kRGBA_8888_SkColorType, false);
EXPECT_EQ(result, true);
}
-
TEST_F(GLHelperTest, BGRASyncReadbackTest) {
const int kTestSize = 64;
- bool result = TestTextureFormatReadback(gfx::Size(kTestSize,kTestSize),
- kBGRA_8888_SkColorType,
- false);
+ bool result = TestTextureFormatReadback(gfx::Size(kTestSize, kTestSize),
+ kBGRA_8888_SkColorType, false);
EXPECT_EQ(result, true);
}
TEST_F(GLHelperTest, RGB565SyncReadbackTest) {
const int kTestSize = 64;
- bool result = TestTextureFormatReadback(gfx::Size(kTestSize,kTestSize),
- kRGB_565_SkColorType,
- false);
+ bool result = TestTextureFormatReadback(gfx::Size(kTestSize, kTestSize),
+ kRGB_565_SkColorType, false);
EXPECT_EQ(result, true);
}
TEST_F(GLHelperTest, RGBAASyncReadbackTest) {
const int kTestSize = 64;
- bool result = TestTextureFormatReadback(gfx::Size(kTestSize,kTestSize),
- kRGBA_8888_SkColorType,
- true);
+ bool result = TestTextureFormatReadback(gfx::Size(kTestSize, kTestSize),
+ kRGBA_8888_SkColorType, true);
EXPECT_EQ(result, true);
}
TEST_F(GLHelperTest, BGRAASyncReadbackTest) {
const int kTestSize = 64;
- bool result = TestTextureFormatReadback(gfx::Size(kTestSize,kTestSize),
- kBGRA_8888_SkColorType,
- true);
+ bool result = TestTextureFormatReadback(gfx::Size(kTestSize, kTestSize),
+ kBGRA_8888_SkColorType, true);
EXPECT_EQ(result, true);
}
TEST_F(GLHelperTest, RGB565ASyncReadbackTest) {
const int kTestSize = 64;
- bool result = TestTextureFormatReadback(gfx::Size(kTestSize,kTestSize),
- kRGB_565_SkColorType,
- true);
+ bool result = TestTextureFormatReadback(gfx::Size(kTestSize, kTestSize),
+ kRGB_565_SkColorType, true);
EXPECT_EQ(result, true);
}
TEST_F(GLHelperPixelTest, YUVReadbackOptTest) {
// This test uses the gpu.service/gpu_decoder tracing events to detect how
// many scaling passes are actually performed by the YUV readback pipeline.
- StartTracing(TRACE_DISABLED_BY_DEFAULT("gpu.service") ","
- TRACE_DISABLED_BY_DEFAULT("gpu_decoder"));
-
- TestYUVReadback(800,
- 400,
- 800,
- 400,
- 0,
- 0,
- 1,
- false,
- true,
+ StartTracing(TRACE_DISABLED_BY_DEFAULT(
+ "gpu.service") "," TRACE_DISABLED_BY_DEFAULT("gpu_decoder"));
+
+ TestYUVReadback(800, 400, 800, 400, 0, 0, 1, false, true,
content::GLHelper::SCALER_QUALITY_FAST);
std::map<std::string, int> event_counts;
@@ -1789,10 +1657,10 @@ TEST_F(GLHelperPixelTest, YUVReadbackOptTest) {
}
}
-class GLHelperPixelYuvReadback :
- public GLHelperPixelTest,
- public ::testing::WithParamInterface<
- std::tr1::tuple<bool, bool, unsigned int, unsigned int>> {};
+class GLHelperPixelYuvReadback
+ : public GLHelperPixelTest,
+ public ::testing::WithParamInterface<
+ std::tr1::tuple<bool, bool, unsigned int, unsigned int>> {};
int kYUVReadBackSizes[] = {2, 4, 14};
@@ -1806,25 +1674,17 @@ TEST_P(GLHelperPixelYuvReadback, Test) {
for (unsigned int oy = y; oy < arraysize(kYUVReadBackSizes); oy++) {
// If output is a subsection of the destination frame, (letterbox)
// then try different variations of where the subsection goes.
- for (Margin xm = x < ox ? MarginLeft : MarginRight;
- xm <= MarginRight;
+ for (Margin xm = x < ox ? MarginLeft : MarginRight; xm <= MarginRight;
xm = NextMargin(xm)) {
- for (Margin ym = y < oy ? MarginLeft : MarginRight;
- ym <= MarginRight;
+ for (Margin ym = y < oy ? MarginLeft : MarginRight; ym <= MarginRight;
ym = NextMargin(ym)) {
for (int pattern = 0; pattern < 3; pattern++) {
- TestYUVReadback(kYUVReadBackSizes[x],
- kYUVReadBackSizes[y],
- kYUVReadBackSizes[ox],
- kYUVReadBackSizes[oy],
- compute_margin(kYUVReadBackSizes[x],
- kYUVReadBackSizes[ox], xm),
- compute_margin(kYUVReadBackSizes[y],
- kYUVReadBackSizes[oy], ym),
- pattern,
- flip,
- use_mrt,
- content::GLHelper::SCALER_QUALITY_GOOD);
+ TestYUVReadback(
+ kYUVReadBackSizes[x], kYUVReadBackSizes[y],
+ kYUVReadBackSizes[ox], kYUVReadBackSizes[oy],
+ compute_margin(kYUVReadBackSizes[x], kYUVReadBackSizes[ox], xm),
+ compute_margin(kYUVReadBackSizes[y], kYUVReadBackSizes[oy], ym),
+ pattern, flip, use_mrt, content::GLHelper::SCALER_QUALITY_GOOD);
if (HasFailure()) {
return;
}
@@ -1840,22 +1700,20 @@ INSTANTIATE_TEST_CASE_P(
,
GLHelperPixelYuvReadback,
::testing::Combine(
- ::testing::Bool(),
- ::testing::Bool(),
- ::testing::Range<unsigned int>(0, arraysize(kYUVReadBackSizes)),
- ::testing::Range<unsigned int>(0, arraysize(kYUVReadBackSizes))));
-
+ ::testing::Bool(),
+ ::testing::Bool(),
+ ::testing::Range<unsigned int>(0, arraysize(kYUVReadBackSizes)),
+ ::testing::Range<unsigned int>(0, arraysize(kYUVReadBackSizes))));
int kRGBReadBackSizes[] = {3, 6, 16};
-class GLHelperPixelReadbackTest :
- public GLHelperPixelTest,
- public ::testing::WithParamInterface<
- std::tr1::tuple<unsigned int,
- unsigned int,
- unsigned int,
- unsigned int,
- unsigned int>> {};
+class GLHelperPixelReadbackTest
+ : public GLHelperPixelTest,
+ public ::testing::WithParamInterface<std::tr1::tuple<unsigned int,
+ unsigned int,
+ unsigned int,
+ unsigned int,
+ unsigned int>> {};
// Per pixel tests, all sizes are small so that we can print
// out the generated bitmaps.
@@ -1868,13 +1726,9 @@ TEST_P(GLHelperPixelReadbackTest, ScaleTest) {
for (int flip = 0; flip <= 1; flip++) {
for (int pattern = 0; pattern < 3; pattern++) {
- TestScale(kRGBReadBackSizes[x],
- kRGBReadBackSizes[y],
- kRGBReadBackSizes[dst_x],
- kRGBReadBackSizes[dst_y],
- pattern,
- q_index,
- flip == 1);
+ TestScale(kRGBReadBackSizes[x], kRGBReadBackSizes[y],
+ kRGBReadBackSizes[dst_x], kRGBReadBackSizes[dst_y], pattern,
+ q_index, flip == 1);
if (HasFailure()) {
return;
}
@@ -1882,7 +1736,6 @@ TEST_P(GLHelperPixelReadbackTest, ScaleTest) {
}
}
-
// Per pixel tests, all sizes are small so that we can print
// out the generated bitmaps.
TEST_P(GLHelperPixelReadbackTest, CropScaleReadbackAndCleanTextureTest) {
@@ -1897,14 +1750,10 @@ TEST_P(GLHelperPixelReadbackTest, CropScaleReadbackAndCleanTextureTest) {
for (size_t color_type = 0; color_type < arraysize(kColorTypes);
color_type++) {
for (int pattern = 0; pattern < 3; pattern++) {
- TestCropScaleReadbackAndCleanTexture(kRGBReadBackSizes[x],
- kRGBReadBackSizes[y],
- kRGBReadBackSizes[dst_x],
- kRGBReadBackSizes[dst_y],
- pattern,
- kColorTypes[color_type],
- false,
- q_index);
+ TestCropScaleReadbackAndCleanTexture(
+ kRGBReadBackSizes[x], kRGBReadBackSizes[y], kRGBReadBackSizes[dst_x],
+ kRGBReadBackSizes[dst_y], pattern, kColorTypes[color_type], false,
+ q_index);
if (HasFailure())
return;
}
@@ -1915,11 +1764,11 @@ INSTANTIATE_TEST_CASE_P(
,
GLHelperPixelReadbackTest,
::testing::Combine(
- ::testing::Range<unsigned int>(0, arraysize(kQualities)),
- ::testing::Range<unsigned int>(0, arraysize(kRGBReadBackSizes)),
- ::testing::Range<unsigned int>(0, arraysize(kRGBReadBackSizes)),
- ::testing::Range<unsigned int>(0, arraysize(kRGBReadBackSizes)),
- ::testing::Range<unsigned int>(0, arraysize(kRGBReadBackSizes))));
+ ::testing::Range<unsigned int>(0, arraysize(kQualities)),
+ ::testing::Range<unsigned int>(0, arraysize(kRGBReadBackSizes)),
+ ::testing::Range<unsigned int>(0, arraysize(kRGBReadBackSizes)),
+ ::testing::Range<unsigned int>(0, arraysize(kRGBReadBackSizes)),
+ ::testing::Range<unsigned int>(0, arraysize(kRGBReadBackSizes))));
// Validate that all scaling generates valid pipelines.
TEST_F(GLHelperTest, ValidateScalerPipelines) {
@@ -1929,8 +1778,8 @@ TEST_F(GLHelperTest, ValidateScalerPipelines) {
for (size_t y = 0; y < arraysize(sizes); y++) {
for (size_t dst_x = 0; dst_x < arraysize(sizes); dst_x++) {
for (size_t dst_y = 0; dst_y < arraysize(sizes); dst_y++) {
- TestScalerPipeline(
- q, sizes[x], sizes[y], sizes[dst_x], sizes[dst_y]);
+ TestScalerPipeline(q, sizes[x], sizes[y], sizes[dst_x],
+ sizes[dst_y]);
if (HasFailure()) {
return;
}
@@ -1945,26 +1794,14 @@ TEST_F(GLHelperTest, ValidateScalerPipelines) {
// for a few common use cases.
TEST_F(GLHelperTest, CheckSpecificPipelines) {
// Upscale should be single pass.
- CheckPipeline(content::GLHelper::SCALER_QUALITY_GOOD,
- 1024,
- 700,
- 1280,
- 720,
+ CheckPipeline(content::GLHelper::SCALER_QUALITY_GOOD, 1024, 700, 1280, 720,
"1024x700 -> 1280x720 bilinear\n");
// Slight downscale should use BILINEAR2X2.
- CheckPipeline(content::GLHelper::SCALER_QUALITY_GOOD,
- 1280,
- 720,
- 1024,
- 700,
+ CheckPipeline(content::GLHelper::SCALER_QUALITY_GOOD, 1280, 720, 1024, 700,
"1280x720 -> 1024x700 bilinear2x2\n");
// Most common tab capture pipeline on the Pixel.
// Should be using two BILINEAR3 passes.
- CheckPipeline(content::GLHelper::SCALER_QUALITY_GOOD,
- 2560,
- 1476,
- 1249,
- 720,
+ CheckPipeline(content::GLHelper::SCALER_QUALITY_GOOD, 2560, 1476, 1249, 720,
"2560x1476 -> 2560x720 bilinear3 Y\n"
"2560x720 -> 1249x720 bilinear3 X\n");
}
« no previous file with comments | « content/browser/compositor/gl_helper_scaling.cc ('k') | content/browser/compositor/gpu_process_transport_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698