Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc |
index c704c285820ed0ae98fa700f59888b0a2f3c7600..b14913504927a77a807c073fa8a53a71b4a27830 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc |
@@ -120,7 +120,8 @@ GLES2DecoderTestBase::GLES2DecoderTestBase() |
cached_color_mask_alpha_(true), |
cached_depth_mask_(true), |
cached_stencil_front_mask_(static_cast<GLuint>(-1)), |
- cached_stencil_back_mask_(static_cast<GLuint>(-1)) { |
+ cached_stencil_back_mask_(static_cast<GLuint>(-1)), |
+ shader_language_version_(100) { |
memset(immediate_buffer_, 0xEE, sizeof(immediate_buffer_)); |
} |
@@ -1498,7 +1499,10 @@ const GLenum GLES2DecoderTestBase::kUniform7Type; |
const GLenum GLES2DecoderTestBase::kUniformCubemapType; |
const GLint GLES2DecoderTestBase::kInvalidUniformLocation; |
const GLint GLES2DecoderTestBase::kBadUniformIndex; |
- |
+const GLint GLES2DecoderTestBase::kOutputVariable1Size; |
+const GLenum GLES2DecoderTestBase::kOutputVariable1Type; |
+const GLuint GLES2DecoderTestBase::kOutputVariable1ColorName; |
+const GLuint GLES2DecoderTestBase::kOutputVariable1Index; |
#endif |
const char* GLES2DecoderTestBase::kAttrib1Name = "attrib1"; |
@@ -1512,6 +1516,9 @@ const char* GLES2DecoderTestBase::kUniform5Name = "uniform5"; |
const char* GLES2DecoderTestBase::kUniform6Name = "uniform6"; |
const char* GLES2DecoderTestBase::kUniform7Name = "uniform7"; |
+const char* GLES2DecoderTestBase::kOutputVariable1Name = "gl_FragColor"; |
+const char* GLES2DecoderTestBase::kOutputVariable1NameESSL3 = "color"; |
+ |
void GLES2DecoderTestBase::SetupDefaultProgram() { |
{ |
static AttribInfo attribs[] = { |
@@ -1660,6 +1667,19 @@ void GLES2DecoderTestBase::SetupShader( |
GLuint program_client_id, GLuint program_service_id, |
GLuint vertex_shader_client_id, GLuint vertex_shader_service_id, |
GLuint fragment_shader_client_id, GLuint fragment_shader_service_id) { |
+ static TestHelper::ProgramOutputInfo kProgramOutputsESSL1[] = {{ |
+ kOutputVariable1Name, kOutputVariable1Size, kOutputVariable1Type, |
+ kOutputVariable1ColorName, kOutputVariable1Index, |
+ }}; |
+ static TestHelper::ProgramOutputInfo kProgramOutputsESSL3[] = {{ |
+ kOutputVariable1NameESSL3, kOutputVariable1Size, kOutputVariable1Type, |
+ kOutputVariable1ColorName, kOutputVariable1Index, |
+ }}; |
+ TestHelper::ProgramOutputInfo* program_outputs = |
+ shader_language_version_ == 100 ? kProgramOutputsESSL1 |
+ : kProgramOutputsESSL3; |
+ const size_t kNumProgramOutputs = 1; |
+ |
{ |
InSequence s; |
@@ -1671,9 +1691,11 @@ void GLES2DecoderTestBase::SetupShader( |
AttachShader(program_service_id, fragment_shader_service_id)) |
.Times(1) |
.RetiresOnSaturation(); |
- TestHelper::SetupShaderExpectations(gl_.get(), group_->feature_info(), |
- attribs, num_attribs, uniforms, |
- num_uniforms, program_service_id); |
+ |
+ TestHelper::SetupShaderExpectationsWithVaryings( |
+ gl_.get(), group_->feature_info(), attribs, num_attribs, uniforms, |
+ num_uniforms, nullptr, 0, program_outputs, kNumProgramOutputs, |
+ program_service_id); |
} |
DoCreateShader( |
@@ -1682,10 +1704,20 @@ void GLES2DecoderTestBase::SetupShader( |
GL_FRAGMENT_SHADER, fragment_shader_client_id, |
fragment_shader_service_id); |
- TestHelper::SetShaderStates( |
- gl_.get(), GetShader(vertex_shader_client_id), true); |
- TestHelper::SetShaderStates( |
- gl_.get(), GetShader(fragment_shader_client_id), true); |
+ TestHelper::SetShaderStates(gl_.get(), GetShader(vertex_shader_client_id), |
+ true, nullptr, nullptr, &shader_language_version_, |
+ nullptr, nullptr, nullptr, nullptr, nullptr, |
+ nullptr); |
+ |
+ OutputVariableList frag_output_variable_list; |
+ frag_output_variable_list.push_back(TestHelper::ConstructOutputVariable( |
+ program_outputs[0].type, program_outputs[0].size, GL_MEDIUM_FLOAT, true, |
+ program_outputs[0].name)); |
+ |
+ TestHelper::SetShaderStates(gl_.get(), GetShader(fragment_shader_client_id), |
+ true, nullptr, nullptr, &shader_language_version_, |
+ nullptr, nullptr, nullptr, nullptr, |
+ &frag_output_variable_list, nullptr); |
cmds::AttachShader attach_cmd; |
attach_cmd.Init(program_client_id, vertex_shader_client_id); |