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

Unified Diff: cc/output/gl_renderer_unittest.cc

Issue 2677893003: cc: Add color conversion support to all DrawQuad types (Closed)
Patch Set: Update w/2681223002 Created 3 years, 10 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: cc/output/gl_renderer_unittest.cc
diff --git a/cc/output/gl_renderer_unittest.cc b/cc/output/gl_renderer_unittest.cc
index 42cdb4fcf95bb771c530c8992bc2c5af92406df1..c468399941aeae81d21f73644a4b3a3bd0dd16d0 100644
--- a/cc/output/gl_renderer_unittest.cc
+++ b/cc/output/gl_renderer_unittest.cc
@@ -133,28 +133,47 @@ class GLRendererShaderPixelTest : public GLRendererPixelTest {
ASSERT_FALSE(renderer()->IsContextLost());
}
+ void TestShader(const ProgramKey& program_key) {
+ renderer()->SetCurrentFrameForTesting(GLRenderer::DrawingFrame());
+ const size_t kNumSrcColorSpaces = 3;
+ gfx::ColorSpace src_color_spaces[kNumSrcColorSpaces] = {
+ gfx::ColorSpace(), gfx::ColorSpace::CreateSRGB(),
+ gfx::ColorSpace::CreateREC709(),
+ };
+ const size_t kNumDstColorSpaces = 3;
+ gfx::ColorSpace dst_color_spaces[kNumDstColorSpaces] = {
+ gfx::ColorSpace(), gfx::ColorSpace::CreateSRGB(),
+ gfx::ColorSpace::CreateSCRGBLinear(),
+ };
+ for (size_t i = 0; i < kNumDstColorSpaces; ++i) {
+ for (size_t j = 0; j < kNumSrcColorSpaces; ++j) {
+ renderer()->SetUseProgram(program_key, src_color_spaces[j],
+ dst_color_spaces[i]);
+ EXPECT_TRUE(renderer()->current_program_->initialized());
+ }
+ }
+ }
+
void TestBasicShaders() {
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(ProgramKey::DebugBorder()));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(ProgramKey::SolidColor(NO_AA)));
- EXPECT_PROGRAM_VALID(
- renderer()->GetProgram(ProgramKey::SolidColor(USE_AA)));
+ TestShader(ProgramKey::DebugBorder());
+ TestShader(ProgramKey::SolidColor(NO_AA));
+ TestShader(ProgramKey::SolidColor(USE_AA));
}
void TestShadersWithPrecision(TexCoordPrecision precision) {
// This program uses external textures and sampler, so it won't compile
// everywhere.
- if (context_provider()->ContextCapabilities().egl_image_external)
- EXPECT_PROGRAM_VALID(
- renderer()->GetProgram(ProgramKey::VideoStream(precision)));
+ if (context_provider()->ContextCapabilities().egl_image_external) {
+ TestShader(ProgramKey::VideoStream(precision));
+ }
}
void TestShadersWithPrecisionAndBlend(TexCoordPrecision precision,
BlendMode blend_mode) {
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(ProgramKey::RenderPass(
- precision, SAMPLER_TYPE_2D, blend_mode, NO_AA, NO_MASK, false, false)));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::RenderPass(precision, SAMPLER_TYPE_2D, blend_mode, USE_AA,
- NO_MASK, false, false)));
+ TestShader(ProgramKey::RenderPass(precision, SAMPLER_TYPE_2D, blend_mode,
+ NO_AA, NO_MASK, false, false));
+ TestShader(ProgramKey::RenderPass(precision, SAMPLER_TYPE_2D, blend_mode,
+ USE_AA, NO_MASK, false, false));
}
void TestShadersWithPrecisionAndSampler(TexCoordPrecision precision,
@@ -165,41 +184,29 @@ class GLRendererShaderPixelTest : public GLRendererPixelTest {
return;
}
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::Texture(precision, sampler, PREMULTIPLIED_ALPHA, false)));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::Texture(precision, sampler, PREMULTIPLIED_ALPHA, true)));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(ProgramKey::Texture(
- precision, sampler, NON_PREMULTIPLIED_ALPHA, false)));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(ProgramKey::Texture(
- precision, sampler, NON_PREMULTIPLIED_ALPHA, true)));
-
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::Tile(precision, sampler, NO_AA, NO_SWIZZLE, false)));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::Tile(precision, sampler, NO_AA, DO_SWIZZLE, false)));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::Tile(precision, sampler, USE_AA, NO_SWIZZLE, false)));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::Tile(precision, sampler, USE_AA, DO_SWIZZLE, false)));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::Tile(precision, sampler, NO_AA, NO_SWIZZLE, true)));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::Tile(precision, sampler, NO_AA, DO_SWIZZLE, true)));
+ TestShader(
+ ProgramKey::Texture(precision, sampler, PREMULTIPLIED_ALPHA, false));
+ TestShader(
+ ProgramKey::Texture(precision, sampler, PREMULTIPLIED_ALPHA, true));
+ TestShader(ProgramKey::Texture(precision, sampler, NON_PREMULTIPLIED_ALPHA,
+ false));
+ TestShader(
+ ProgramKey::Texture(precision, sampler, NON_PREMULTIPLIED_ALPHA, true));
+ TestShader(ProgramKey::Tile(precision, sampler, NO_AA, NO_SWIZZLE, false));
+ TestShader(ProgramKey::Tile(precision, sampler, NO_AA, DO_SWIZZLE, false));
+ TestShader(ProgramKey::Tile(precision, sampler, USE_AA, NO_SWIZZLE, false));
+ TestShader(ProgramKey::Tile(precision, sampler, USE_AA, DO_SWIZZLE, false));
+ TestShader(ProgramKey::Tile(precision, sampler, NO_AA, NO_SWIZZLE, true));
+ TestShader(ProgramKey::Tile(precision, sampler, NO_AA, DO_SWIZZLE, true));
// Iterate over alpha plane, nv12, and color_lut parameters.
UVTextureMode uv_modes[2] = {UV_TEXTURE_MODE_UV, UV_TEXTURE_MODE_U_V};
YUVAlphaTextureMode a_modes[2] = {YUV_NO_ALPHA_TEXTURE,
YUV_HAS_ALPHA_TEXTURE};
- ColorConversionMode c_modes[2] = {COLOR_CONVERSION_MODE_NONE,
- COLOR_CONVERSION_MODE_LUT};
for (int j = 0; j < 2; j++) {
for (int k = 0; k < 2; k++) {
- for (int l = 0; l < 2; l++) {
- const Program* program = renderer()->GetProgram(ProgramKey::YUVVideo(
- precision, sampler, a_modes[j], uv_modes[k], c_modes[l]));
- EXPECT_PROGRAM_VALID(program);
- }
+ TestShader(
+ ProgramKey::YUVVideo(precision, sampler, a_modes[j], uv_modes[k]));
}
}
}
@@ -214,18 +221,14 @@ class GLRendererShaderPixelTest : public GLRendererPixelTest {
return;
}
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::RenderPass(precision, sampler, blend_mode, NO_AA, HAS_MASK,
- mask_for_background, false)));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::RenderPass(precision, sampler, blend_mode, NO_AA, HAS_MASK,
- mask_for_background, true)));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::RenderPass(precision, sampler, blend_mode, USE_AA, HAS_MASK,
- mask_for_background, false)));
- EXPECT_PROGRAM_VALID(renderer()->GetProgram(
- ProgramKey::RenderPass(precision, sampler, blend_mode, USE_AA, HAS_MASK,
- mask_for_background, true)));
+ TestShader(ProgramKey::RenderPass(precision, sampler, blend_mode, NO_AA,
+ HAS_MASK, mask_for_background, false));
+ TestShader(ProgramKey::RenderPass(precision, sampler, blend_mode, NO_AA,
+ HAS_MASK, mask_for_background, true));
+ TestShader(ProgramKey::RenderPass(precision, sampler, blend_mode, USE_AA,
+ HAS_MASK, mask_for_background, false));
+ TestShader(ProgramKey::RenderPass(precision, sampler, blend_mode, USE_AA,
+ HAS_MASK, mask_for_background, true));
}
};
@@ -410,7 +413,7 @@ class GLRendererShaderTest : public GLRendererTest {
ProgramKey::RenderPass(precision, SAMPLER_TYPE_2D, blend_mode, NO_AA,
NO_MASK, false, false));
EXPECT_PROGRAM_VALID(program);
- EXPECT_EQ(program, renderer_->program_shadow_);
+ EXPECT_EQ(program, renderer_->current_program_);
}
void TestRenderPassColorMatrixProgram(TexCoordPrecision precision,
@@ -419,7 +422,7 @@ class GLRendererShaderTest : public GLRendererTest {
ProgramKey::RenderPass(precision, SAMPLER_TYPE_2D, blend_mode, NO_AA,
NO_MASK, false, true));
EXPECT_PROGRAM_VALID(program);
- EXPECT_EQ(program, renderer_->program_shadow_);
+ EXPECT_EQ(program, renderer_->current_program_);
}
void TestRenderPassMaskProgram(TexCoordPrecision precision,
@@ -429,7 +432,7 @@ class GLRendererShaderTest : public GLRendererTest {
renderer_->GetProgramIfInitialized(ProgramKey::RenderPass(
precision, sampler, blend_mode, NO_AA, HAS_MASK, false, false));
EXPECT_PROGRAM_VALID(program);
- EXPECT_EQ(program, renderer_->program_shadow_);
+ EXPECT_EQ(program, renderer_->current_program_);
}
void TestRenderPassMaskColorMatrixProgram(TexCoordPrecision precision,
@@ -439,7 +442,7 @@ class GLRendererShaderTest : public GLRendererTest {
renderer_->GetProgramIfInitialized(ProgramKey::RenderPass(
precision, sampler, blend_mode, NO_AA, HAS_MASK, false, true));
EXPECT_PROGRAM_VALID(program);
- EXPECT_EQ(program, renderer_->program_shadow_);
+ EXPECT_EQ(program, renderer_->current_program_);
}
void TestRenderPassProgramAA(TexCoordPrecision precision,
@@ -448,7 +451,7 @@ class GLRendererShaderTest : public GLRendererTest {
ProgramKey::RenderPass(precision, SAMPLER_TYPE_2D, blend_mode, USE_AA,
NO_MASK, false, false));
EXPECT_PROGRAM_VALID(program);
- EXPECT_EQ(program, renderer_->program_shadow_);
+ EXPECT_EQ(program, renderer_->current_program_);
}
void TestRenderPassColorMatrixProgramAA(TexCoordPrecision precision,
@@ -457,7 +460,7 @@ class GLRendererShaderTest : public GLRendererTest {
ProgramKey::RenderPass(precision, SAMPLER_TYPE_2D, blend_mode, USE_AA,
NO_MASK, false, true));
EXPECT_PROGRAM_VALID(program);
- EXPECT_EQ(program, renderer_->program_shadow_);
+ EXPECT_EQ(program, renderer_->current_program_);
}
void TestRenderPassMaskProgramAA(TexCoordPrecision precision,
@@ -467,7 +470,7 @@ class GLRendererShaderTest : public GLRendererTest {
renderer_->GetProgramIfInitialized(ProgramKey::RenderPass(
precision, sampler, blend_mode, USE_AA, HAS_MASK, false, false));
EXPECT_PROGRAM_VALID(program);
- EXPECT_EQ(program, renderer_->program_shadow_);
+ EXPECT_EQ(program, renderer_->current_program_);
}
void TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecision precision,
@@ -477,14 +480,14 @@ class GLRendererShaderTest : public GLRendererTest {
renderer_->GetProgramIfInitialized(ProgramKey::RenderPass(
precision, sampler, blend_mode, USE_AA, HAS_MASK, false, true));
EXPECT_PROGRAM_VALID(program);
- EXPECT_EQ(program, renderer_->program_shadow_);
+ EXPECT_EQ(program, renderer_->current_program_);
}
void TestSolidColorProgramAA() {
const Program* program =
renderer_->GetProgramIfInitialized(ProgramKey::SolidColor(USE_AA));
EXPECT_PROGRAM_VALID(program);
- EXPECT_EQ(program, renderer_->program_shadow_);
+ EXPECT_EQ(program, renderer_->current_program_);
}
RendererSettings settings_;

Powered by Google App Engine
This is Rietveld 408576698