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

Side by Side Diff: cc/output/gl_renderer_unittest.cc

Issue 2622243003: The great shader refactor: Clean up GLRenderer (Closed)
Patch Set: Rebase Created 3 years, 11 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 unified diff | Download patch
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/program_binding.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/output/gl_renderer.h" 5 #include "cc/output/gl_renderer.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <set> 9 #include <set>
10 #include <vector> 10 #include <vector>
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 GLRendererPixelTest::SetUp(); 125 GLRendererPixelTest::SetUp();
126 ASSERT_FALSE(renderer()->IsContextLost()); 126 ASSERT_FALSE(renderer()->IsContextLost());
127 } 127 }
128 128
129 void TearDown() override { 129 void TearDown() override {
130 GLRendererPixelTest::TearDown(); 130 GLRendererPixelTest::TearDown();
131 ASSERT_FALSE(renderer()->IsContextLost()); 131 ASSERT_FALSE(renderer()->IsContextLost());
132 } 132 }
133 133
134 void TestBasicShaders() { 134 void TestBasicShaders() {
135 EXPECT_PROGRAM_VALID(renderer()->GetDebugBorderProgram()); 135 EXPECT_PROGRAM_VALID(renderer()->GetProgram(ProgramKey::DebugBorder()));
136 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgram()); 136 EXPECT_PROGRAM_VALID(renderer()->GetProgram(ProgramKey::SolidColor(NO_AA)));
137 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgramAA()); 137 EXPECT_PROGRAM_VALID(
138 renderer()->GetProgram(ProgramKey::SolidColor(USE_AA)));
138 } 139 }
139 140
140 void TestShadersWithPrecision(TexCoordPrecision precision) { 141 void TestShadersWithPrecision(TexCoordPrecision precision) {
141 // This program uses external textures and sampler, so it won't compile 142 // This program uses external textures and sampler, so it won't compile
142 // everywhere. 143 // everywhere.
143 if (context_provider()->ContextCapabilities().egl_image_external) 144 if (context_provider()->ContextCapabilities().egl_image_external)
144 EXPECT_PROGRAM_VALID(renderer()->GetVideoStreamTextureProgram(precision)); 145 EXPECT_PROGRAM_VALID(
146 renderer()->GetProgram(ProgramKey::VideoStream(precision)));
145 } 147 }
146 148
147 void TestShadersWithPrecisionAndBlend(TexCoordPrecision precision, 149 void TestShadersWithPrecisionAndBlend(TexCoordPrecision precision,
148 BlendMode blend_mode) { 150 BlendMode blend_mode) {
149 EXPECT_PROGRAM_VALID( 151 EXPECT_PROGRAM_VALID(renderer()->GetProgram(ProgramKey::RenderPass(
150 renderer()->GetRenderPassProgram(precision, blend_mode)); 152 precision, SAMPLER_TYPE_2D, blend_mode, NO_AA, NO_MASK, false, false)));
151 EXPECT_PROGRAM_VALID( 153 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
152 renderer()->GetRenderPassProgramAA(precision, blend_mode)); 154 ProgramKey::RenderPass(precision, SAMPLER_TYPE_2D, blend_mode, USE_AA,
155 NO_MASK, false, false)));
153 } 156 }
154 157
155 void TestShadersWithPrecisionAndSampler(TexCoordPrecision precision, 158 void TestShadersWithPrecisionAndSampler(TexCoordPrecision precision,
156 SamplerType sampler) { 159 SamplerType sampler) {
157 if (!context_provider()->ContextCapabilities().egl_image_external && 160 if (!context_provider()->ContextCapabilities().egl_image_external &&
158 sampler == SAMPLER_TYPE_EXTERNAL_OES) { 161 sampler == SAMPLER_TYPE_EXTERNAL_OES) {
159 // This will likely be hit in tests due to usage of osmesa. 162 // This will likely be hit in tests due to usage of osmesa.
160 return; 163 return;
161 } 164 }
162 165
163 EXPECT_PROGRAM_VALID(renderer()->GetTextureProgram(precision, sampler)); 166 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
164 EXPECT_PROGRAM_VALID( 167 ProgramKey::Texture(precision, sampler, PREMULTIPLIED_ALPHA, false)));
165 renderer()->GetNonPremultipliedTextureProgram(precision, sampler)); 168 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
166 EXPECT_PROGRAM_VALID( 169 ProgramKey::Texture(precision, sampler, PREMULTIPLIED_ALPHA, true)));
167 renderer()->GetTextureBackgroundProgram(precision, sampler)); 170 EXPECT_PROGRAM_VALID(renderer()->GetProgram(ProgramKey::Texture(
168 EXPECT_PROGRAM_VALID( 171 precision, sampler, NON_PREMULTIPLIED_ALPHA, false)));
169 renderer()->GetNonPremultipliedTextureBackgroundProgram(precision, 172 EXPECT_PROGRAM_VALID(renderer()->GetProgram(ProgramKey::Texture(
170 sampler)); 173 precision, sampler, NON_PREMULTIPLIED_ALPHA, true)));
171 174
172 EXPECT_PROGRAM_VALID(renderer()->GetTileProgram(precision, sampler)); 175 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
173 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramOpaque(precision, sampler)); 176 ProgramKey::Tile(precision, sampler, NO_AA, NO_SWIZZLE, false)));
174 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramAA(precision, sampler)); 177 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
175 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramSwizzle(precision, sampler)); 178 ProgramKey::Tile(precision, sampler, NO_AA, DO_SWIZZLE, false)));
176 EXPECT_PROGRAM_VALID( 179 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
177 renderer()->GetTileProgramSwizzleOpaque(precision, sampler)); 180 ProgramKey::Tile(precision, sampler, USE_AA, NO_SWIZZLE, false)));
178 EXPECT_PROGRAM_VALID( 181 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
179 renderer()->GetTileProgramSwizzleAA(precision, sampler)); 182 ProgramKey::Tile(precision, sampler, USE_AA, DO_SWIZZLE, false)));
183 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
184 ProgramKey::Tile(precision, sampler, NO_AA, NO_SWIZZLE, true)));
185 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
186 ProgramKey::Tile(precision, sampler, NO_AA, DO_SWIZZLE, true)));
187
180 for (int j = 0; j < 2; j++) { 188 for (int j = 0; j < 2; j++) {
181 for (int k = 0; k < 2; k++) { 189 for (int k = 0; k < 2; k++) {
182 for (int l = 0; l < 2; l++) { 190 for (int l = 0; l < 2; l++) {
183 EXPECT_PROGRAM_VALID( 191 EXPECT_PROGRAM_VALID(
184 renderer()->GetVideoYUVProgram(precision, sampler, j, k, l)); 192 renderer()->GetVideoYUVProgram(precision, sampler, j, k, l));
185 } 193 }
186 } 194 }
187 } 195 }
188 } 196 }
189 197
190 void TestShadersWithMasks(TexCoordPrecision precision, 198 void TestShadersWithMasks(TexCoordPrecision precision,
191 SamplerType sampler, 199 SamplerType sampler,
192 BlendMode blend_mode, 200 BlendMode blend_mode,
193 bool mask_for_background) { 201 bool mask_for_background) {
194 if (!context_provider()->ContextCapabilities().egl_image_external && 202 if (!context_provider()->ContextCapabilities().egl_image_external &&
195 sampler == SAMPLER_TYPE_EXTERNAL_OES) { 203 sampler == SAMPLER_TYPE_EXTERNAL_OES) {
196 // This will likely be hit in tests due to usage of osmesa. 204 // This will likely be hit in tests due to usage of osmesa.
197 return; 205 return;
198 } 206 }
199 207
200 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskProgram( 208 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
201 precision, sampler, blend_mode, mask_for_background)); 209 ProgramKey::RenderPass(precision, sampler, blend_mode, NO_AA, HAS_MASK,
202 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskProgramAA( 210 mask_for_background, false)));
203 precision, sampler, blend_mode, mask_for_background)); 211 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
204 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskColorMatrixProgramAA( 212 ProgramKey::RenderPass(precision, sampler, blend_mode, NO_AA, HAS_MASK,
205 precision, sampler, blend_mode, mask_for_background)); 213 mask_for_background, true)));
206 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskColorMatrixProgram( 214 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
207 precision, sampler, blend_mode, mask_for_background)); 215 ProgramKey::RenderPass(precision, sampler, blend_mode, USE_AA, HAS_MASK,
216 mask_for_background, false)));
217 EXPECT_PROGRAM_VALID(renderer()->GetProgram(
218 ProgramKey::RenderPass(precision, sampler, blend_mode, USE_AA, HAS_MASK,
219 mask_for_background, true)));
208 } 220 }
209 }; 221 };
210 222
211 namespace { 223 namespace {
212 224
213 #if !defined(OS_ANDROID) && !defined(OS_WIN) 225 #if !defined(OS_ANDROID) && !defined(OS_WIN)
214 static const TexCoordPrecision kPrecisionList[] = {TEX_COORD_PRECISION_MEDIUM, 226 static const TexCoordPrecision kPrecisionList[] = {TEX_COORD_PRECISION_MEDIUM,
215 TEX_COORD_PRECISION_HIGH}; 227 TEX_COORD_PRECISION_HIGH};
216 228
217 static const BlendMode kBlendModeList[LAST_BLEND_MODE + 1] = { 229 static const BlendMode kBlendModeList[LAST_BLEND_MODE + 1] = {
(...skipping 1743 matching lines...) Expand 10 before | Expand all | Expand 10 after
1961 renderer_->SetVisible(true); 1973 renderer_->SetVisible(true);
1962 Mock::VerifyAndClearExpectations(context_support_ptr_); 1974 Mock::VerifyAndClearExpectations(context_support_ptr_);
1963 1975
1964 EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(true)); 1976 EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(true));
1965 renderer_->SetVisible(false); 1977 renderer_->SetVisible(false);
1966 Mock::VerifyAndClearExpectations(context_support_ptr_); 1978 Mock::VerifyAndClearExpectations(context_support_ptr_);
1967 } 1979 }
1968 1980
1969 } // namespace 1981 } // namespace
1970 } // namespace cc 1982 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/program_binding.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698