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

Side by Side Diff: gpu/command_buffer/service/program_manager_unittest.cc

Issue 153173002: Add a gpu driver bug workaround to count in all varyings in packing check. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "gpu/command_buffer/service/program_manager.h" 5 #include "gpu/command_buffer/service/program_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 1357 matching lines...) Expand 10 before | Expand all | Expand 10 after
1368 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, 1368 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying },
1369 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } 1369 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying }
1370 }; 1370 };
1371 const VarInfo kFragmentVaryings[] = { 1371 const VarInfo kFragmentVaryings[] = {
1372 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, 1372 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying },
1373 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } 1373 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying }
1374 }; 1374 };
1375 Program* program = SetupShaderVariableTest( 1375 Program* program = SetupShaderVariableTest(
1376 kVertexVaryings, 2, kFragmentVaryings, 2); 1376 kVertexVaryings, 2, kFragmentVaryings, 2);
1377 1377
1378 EXPECT_FALSE(program->CheckVaryingsPacking()); 1378 EXPECT_FALSE(
1379 program->CheckVaryingsPacking(Program::kCountOnlyStaticallyUsed));
1379 EXPECT_TRUE(LinkAsExpected(program, false)); 1380 EXPECT_TRUE(LinkAsExpected(program, false));
1380 } 1381 }
1381 1382
1382 // Varyings go over 8 rows but some are inactive 1383 // Varyings go over 8 rows but some are inactive
1383 TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) { 1384 TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) {
1384 const VarInfo kVertexVaryings[] = { 1385 const VarInfo kVertexVaryings[] = {
1385 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, 1386 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying },
1386 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } 1387 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying }
1387 }; 1388 };
1388 const VarInfo kFragmentVaryings[] = { 1389 const VarInfo kFragmentVaryings[] = {
1389 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, 1390 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying },
1390 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } 1391 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying }
1391 }; 1392 };
1392 Program* program = SetupShaderVariableTest( 1393 Program* program = SetupShaderVariableTest(
1393 kVertexVaryings, 2, kFragmentVaryings, 2); 1394 kVertexVaryings, 2, kFragmentVaryings, 2);
1394 1395
1395 EXPECT_TRUE(program->CheckVaryingsPacking()); 1396 EXPECT_TRUE(
1397 program->CheckVaryingsPacking(Program::kCountOnlyStaticallyUsed));
1396 EXPECT_TRUE(LinkAsExpected(program, true)); 1398 EXPECT_TRUE(LinkAsExpected(program, true));
1397 } 1399 }
1398 1400
1401 // Varyings go over 8 rows but some are inactive.
1402 // However, we still fail the check if kCountAll option is used.
1403 TEST_F(ProgramManagerWithShaderTest, CountAllVaryingsInPacking) {
1404 const VarInfo kVertexVaryings[] = {
1405 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying },
1406 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying }
1407 };
1408 const VarInfo kFragmentVaryings[] = {
1409 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying },
1410 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying }
1411 };
1412 Program* program = SetupShaderVariableTest(
1413 kVertexVaryings, 2, kFragmentVaryings, 2);
1414
1415 EXPECT_FALSE(program->CheckVaryingsPacking(Program::kCountAll));
1416 }
1417
1399 TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) { 1418 TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) {
1400 const GLuint kVShaderClientId = 2001; 1419 const GLuint kVShaderClientId = 2001;
1401 const GLuint kFShaderClientId = 2002; 1420 const GLuint kFShaderClientId = 2002;
1402 const GLuint kVShaderServiceId = 3001; 1421 const GLuint kVShaderServiceId = 3001;
1403 const GLuint kFShaderServiceId = 3002; 1422 const GLuint kFShaderServiceId = 3002;
1404 Shader* vshader = shader_manager_.CreateShader( 1423 Shader* vshader = shader_manager_.CreateShader(
1405 kVShaderClientId, kVShaderServiceId, GL_VERTEX_SHADER); 1424 kVShaderClientId, kVShaderServiceId, GL_VERTEX_SHADER);
1406 ASSERT_TRUE(vshader != NULL); 1425 ASSERT_TRUE(vshader != NULL);
1407 vshader->SetStatus(true, NULL, NULL); 1426 vshader->SetStatus(true, NULL, NULL);
1408 Shader* fshader = shader_manager_.CreateShader( 1427 Shader* fshader = shader_manager_.CreateShader(
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
1769 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); 1788 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS);
1770 SetExpectationsForNotCachingProgram(); 1789 SetExpectationsForNotCachingProgram();
1771 SetExpectationsForProgramLoadSuccess(); 1790 SetExpectationsForProgramLoadSuccess();
1772 1791
1773 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, NULL, 1792 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, NULL,
1774 base::Bind(&ShaderCacheCb))); 1793 base::Bind(&ShaderCacheCb)));
1775 } 1794 }
1776 1795
1777 } // namespace gles2 1796 } // namespace gles2
1778 } // namespace gpu 1797 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698