| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/gles2_cmd_decoder.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
| 9 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 9 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
| 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 using ::testing::SetArgumentPointee; | 47 using ::testing::SetArgumentPointee; |
| 48 using ::testing::SetArgPointee; | 48 using ::testing::SetArgPointee; |
| 49 using ::testing::StrEq; | 49 using ::testing::StrEq; |
| 50 using ::testing::StrictMock; | 50 using ::testing::StrictMock; |
| 51 | 51 |
| 52 namespace gpu { | 52 namespace gpu { |
| 53 namespace gles2 { | 53 namespace gles2 { |
| 54 | 54 |
| 55 using namespace cmds; | 55 using namespace cmds; |
| 56 | 56 |
| 57 TEST_F(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMValidArgs) { | 57 TEST_P(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMValidArgs) { |
| 58 const uint32 kBucketId = 123; | 58 const uint32 kBucketId = 123; |
| 59 GetProgramInfoCHROMIUM cmd; | 59 GetProgramInfoCHROMIUM cmd; |
| 60 cmd.Init(client_program_id_, kBucketId); | 60 cmd.Init(client_program_id_, kBucketId); |
| 61 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 61 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 62 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 62 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 63 EXPECT_GT(bucket->size(), 0u); | 63 EXPECT_GT(bucket->size(), 0u); |
| 64 } | 64 } |
| 65 | 65 |
| 66 TEST_F(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMInvalidArgs) { | 66 TEST_P(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMInvalidArgs) { |
| 67 const uint32 kBucketId = 123; | 67 const uint32 kBucketId = 123; |
| 68 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 68 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 69 EXPECT_TRUE(bucket == NULL); | 69 EXPECT_TRUE(bucket == NULL); |
| 70 GetProgramInfoCHROMIUM cmd; | 70 GetProgramInfoCHROMIUM cmd; |
| 71 cmd.Init(kInvalidClientId, kBucketId); | 71 cmd.Init(kInvalidClientId, kBucketId); |
| 72 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 72 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 73 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 73 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 74 bucket = decoder_->GetBucket(kBucketId); | 74 bucket = decoder_->GetBucket(kBucketId); |
| 75 ASSERT_TRUE(bucket != NULL); | 75 ASSERT_TRUE(bucket != NULL); |
| 76 EXPECT_EQ(sizeof(ProgramInfoHeader), bucket->size()); | 76 EXPECT_EQ(sizeof(ProgramInfoHeader), bucket->size()); |
| 77 ProgramInfoHeader* info = | 77 ProgramInfoHeader* info = |
| 78 bucket->GetDataAs<ProgramInfoHeader*>(0, sizeof(ProgramInfoHeader)); | 78 bucket->GetDataAs<ProgramInfoHeader*>(0, sizeof(ProgramInfoHeader)); |
| 79 ASSERT_TRUE(info != 0); | 79 ASSERT_TRUE(info != 0); |
| 80 EXPECT_EQ(0u, info->link_status); | 80 EXPECT_EQ(0u, info->link_status); |
| 81 EXPECT_EQ(0u, info->num_attribs); | 81 EXPECT_EQ(0u, info->num_attribs); |
| 82 EXPECT_EQ(0u, info->num_uniforms); | 82 EXPECT_EQ(0u, info->num_uniforms); |
| 83 } | 83 } |
| 84 | 84 |
| 85 TEST_F(GLES2DecoderWithShaderTest, GetUniformivSucceeds) { | 85 TEST_P(GLES2DecoderWithShaderTest, GetUniformivSucceeds) { |
| 86 GetUniformiv::Result* result = | 86 GetUniformiv::Result* result = |
| 87 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 87 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
| 88 result->size = 0; | 88 result->size = 0; |
| 89 GetUniformiv cmd; | 89 GetUniformiv cmd; |
| 90 cmd.Init(client_program_id_, | 90 cmd.Init(client_program_id_, |
| 91 kUniform2FakeLocation, | 91 kUniform2FakeLocation, |
| 92 kSharedMemoryId, | 92 kSharedMemoryId, |
| 93 kSharedMemoryOffset); | 93 kSharedMemoryOffset); |
| 94 EXPECT_CALL(*gl_, GetUniformiv(kServiceProgramId, kUniform2RealLocation, _)) | 94 EXPECT_CALL(*gl_, GetUniformiv(kServiceProgramId, kUniform2RealLocation, _)) |
| 95 .Times(1); | 95 .Times(1); |
| 96 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 96 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 97 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 97 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
| 98 result->size); | 98 result->size); |
| 99 } | 99 } |
| 100 | 100 |
| 101 TEST_F(GLES2DecoderWithShaderTest, GetUniformivArrayElementSucceeds) { | 101 TEST_P(GLES2DecoderWithShaderTest, GetUniformivArrayElementSucceeds) { |
| 102 GetUniformiv::Result* result = | 102 GetUniformiv::Result* result = |
| 103 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 103 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
| 104 result->size = 0; | 104 result->size = 0; |
| 105 GetUniformiv cmd; | 105 GetUniformiv cmd; |
| 106 cmd.Init(client_program_id_, | 106 cmd.Init(client_program_id_, |
| 107 kUniform2ElementFakeLocation, | 107 kUniform2ElementFakeLocation, |
| 108 kSharedMemoryId, | 108 kSharedMemoryId, |
| 109 kSharedMemoryOffset); | 109 kSharedMemoryOffset); |
| 110 EXPECT_CALL(*gl_, | 110 EXPECT_CALL(*gl_, |
| 111 GetUniformiv(kServiceProgramId, kUniform2ElementRealLocation, _)) | 111 GetUniformiv(kServiceProgramId, kUniform2ElementRealLocation, _)) |
| 112 .Times(1); | 112 .Times(1); |
| 113 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 113 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 114 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 114 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
| 115 result->size); | 115 result->size); |
| 116 } | 116 } |
| 117 | 117 |
| 118 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadProgramFails) { | 118 TEST_P(GLES2DecoderWithShaderTest, GetUniformivBadProgramFails) { |
| 119 GetUniformiv::Result* result = | 119 GetUniformiv::Result* result = |
| 120 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 120 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
| 121 result->size = 0; | 121 result->size = 0; |
| 122 GetUniformiv cmd; | 122 GetUniformiv cmd; |
| 123 // non-existant program | 123 // non-existant program |
| 124 cmd.Init(kInvalidClientId, | 124 cmd.Init(kInvalidClientId, |
| 125 kUniform2FakeLocation, | 125 kUniform2FakeLocation, |
| 126 kSharedMemoryId, | 126 kSharedMemoryId, |
| 127 kSharedMemoryOffset); | 127 kSharedMemoryOffset); |
| 128 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0); | 128 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 152 result->size = kInitialResult; | 152 result->size = kInitialResult; |
| 153 cmd.Init(kNewClientId, | 153 cmd.Init(kNewClientId, |
| 154 kUniform2FakeLocation, | 154 kUniform2FakeLocation, |
| 155 kSharedMemoryId, | 155 kSharedMemoryId, |
| 156 kSharedMemoryOffset); | 156 kSharedMemoryOffset); |
| 157 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 157 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 158 EXPECT_EQ(0U, result->size); | 158 EXPECT_EQ(0U, result->size); |
| 159 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 159 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 160 } | 160 } |
| 161 | 161 |
| 162 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadLocationFails) { | 162 TEST_P(GLES2DecoderWithShaderTest, GetUniformivBadLocationFails) { |
| 163 GetUniformiv::Result* result = | 163 GetUniformiv::Result* result = |
| 164 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 164 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
| 165 result->size = 0; | 165 result->size = 0; |
| 166 GetUniformiv cmd; | 166 GetUniformiv cmd; |
| 167 // invalid location | 167 // invalid location |
| 168 cmd.Init(client_program_id_, | 168 cmd.Init(client_program_id_, |
| 169 kInvalidUniformLocation, | 169 kInvalidUniformLocation, |
| 170 kSharedMemoryId, | 170 kSharedMemoryId, |
| 171 kSharedMemoryOffset); | 171 kSharedMemoryOffset); |
| 172 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0); | 172 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0); |
| 173 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 173 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 174 EXPECT_EQ(0U, result->size); | 174 EXPECT_EQ(0U, result->size); |
| 175 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 175 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 176 } | 176 } |
| 177 | 177 |
| 178 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadSharedMemoryFails) { | 178 TEST_P(GLES2DecoderWithShaderTest, GetUniformivBadSharedMemoryFails) { |
| 179 GetUniformiv cmd; | 179 GetUniformiv cmd; |
| 180 cmd.Init(client_program_id_, | 180 cmd.Init(client_program_id_, |
| 181 kUniform2FakeLocation, | 181 kUniform2FakeLocation, |
| 182 kInvalidSharedMemoryId, | 182 kInvalidSharedMemoryId, |
| 183 kSharedMemoryOffset); | 183 kSharedMemoryOffset); |
| 184 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0); | 184 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0); |
| 185 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 185 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 186 cmd.Init(client_program_id_, | 186 cmd.Init(client_program_id_, |
| 187 kUniform2FakeLocation, | 187 kUniform2FakeLocation, |
| 188 kSharedMemoryId, | 188 kSharedMemoryId, |
| 189 kInvalidSharedMemoryOffset); | 189 kInvalidSharedMemoryOffset); |
| 190 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 190 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 191 }; | 191 }; |
| 192 | 192 |
| 193 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { | 193 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { |
| 194 GetUniformfv::Result* result = | 194 GetUniformfv::Result* result = |
| 195 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 195 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| 196 result->size = 0; | 196 result->size = 0; |
| 197 GetUniformfv cmd; | 197 GetUniformfv cmd; |
| 198 cmd.Init(client_program_id_, | 198 cmd.Init(client_program_id_, |
| 199 kUniform2FakeLocation, | 199 kUniform2FakeLocation, |
| 200 kSharedMemoryId, | 200 kSharedMemoryId, |
| 201 kSharedMemoryOffset); | 201 kSharedMemoryOffset); |
| 202 EXPECT_CALL(*gl_, GetUniformfv(kServiceProgramId, kUniform2RealLocation, _)) | 202 EXPECT_CALL(*gl_, GetUniformfv(kServiceProgramId, kUniform2RealLocation, _)) |
| 203 .Times(1); | 203 .Times(1); |
| 204 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 204 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 205 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 205 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
| 206 result->size); | 206 result->size); |
| 207 } | 207 } |
| 208 | 208 |
| 209 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvArrayElementSucceeds) { | 209 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvArrayElementSucceeds) { |
| 210 GetUniformfv::Result* result = | 210 GetUniformfv::Result* result = |
| 211 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 211 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| 212 result->size = 0; | 212 result->size = 0; |
| 213 GetUniformfv cmd; | 213 GetUniformfv cmd; |
| 214 cmd.Init(client_program_id_, | 214 cmd.Init(client_program_id_, |
| 215 kUniform2ElementFakeLocation, | 215 kUniform2ElementFakeLocation, |
| 216 kSharedMemoryId, | 216 kSharedMemoryId, |
| 217 kSharedMemoryOffset); | 217 kSharedMemoryOffset); |
| 218 EXPECT_CALL(*gl_, | 218 EXPECT_CALL(*gl_, |
| 219 GetUniformfv(kServiceProgramId, kUniform2ElementRealLocation, _)) | 219 GetUniformfv(kServiceProgramId, kUniform2ElementRealLocation, _)) |
| 220 .Times(1); | 220 .Times(1); |
| 221 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 221 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 222 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 222 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
| 223 result->size); | 223 result->size); |
| 224 } | 224 } |
| 225 | 225 |
| 226 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadProgramFails) { | 226 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvBadProgramFails) { |
| 227 GetUniformfv::Result* result = | 227 GetUniformfv::Result* result = |
| 228 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 228 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| 229 result->size = 0; | 229 result->size = 0; |
| 230 GetUniformfv cmd; | 230 GetUniformfv cmd; |
| 231 // non-existant program | 231 // non-existant program |
| 232 cmd.Init(kInvalidClientId, | 232 cmd.Init(kInvalidClientId, |
| 233 kUniform2FakeLocation, | 233 kUniform2FakeLocation, |
| 234 kSharedMemoryId, | 234 kSharedMemoryId, |
| 235 kSharedMemoryOffset); | 235 kSharedMemoryOffset); |
| 236 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)).Times(0); | 236 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)).Times(0); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 260 result->size = kInitialResult; | 260 result->size = kInitialResult; |
| 261 cmd.Init(kNewClientId, | 261 cmd.Init(kNewClientId, |
| 262 kUniform2FakeLocation, | 262 kUniform2FakeLocation, |
| 263 kSharedMemoryId, | 263 kSharedMemoryId, |
| 264 kSharedMemoryOffset); | 264 kSharedMemoryOffset); |
| 265 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 265 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 266 EXPECT_EQ(0U, result->size); | 266 EXPECT_EQ(0U, result->size); |
| 267 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 267 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 268 } | 268 } |
| 269 | 269 |
| 270 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadLocationFails) { | 270 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvBadLocationFails) { |
| 271 GetUniformfv::Result* result = | 271 GetUniformfv::Result* result = |
| 272 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 272 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| 273 result->size = 0; | 273 result->size = 0; |
| 274 GetUniformfv cmd; | 274 GetUniformfv cmd; |
| 275 // invalid location | 275 // invalid location |
| 276 cmd.Init(client_program_id_, | 276 cmd.Init(client_program_id_, |
| 277 kInvalidUniformLocation, | 277 kInvalidUniformLocation, |
| 278 kSharedMemoryId, | 278 kSharedMemoryId, |
| 279 kSharedMemoryOffset); | 279 kSharedMemoryOffset); |
| 280 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)).Times(0); | 280 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)).Times(0); |
| 281 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 281 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 282 EXPECT_EQ(0U, result->size); | 282 EXPECT_EQ(0U, result->size); |
| 283 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 283 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 284 } | 284 } |
| 285 | 285 |
| 286 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadSharedMemoryFails) { | 286 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvBadSharedMemoryFails) { |
| 287 GetUniformfv cmd; | 287 GetUniformfv cmd; |
| 288 cmd.Init(client_program_id_, | 288 cmd.Init(client_program_id_, |
| 289 kUniform2FakeLocation, | 289 kUniform2FakeLocation, |
| 290 kInvalidSharedMemoryId, | 290 kInvalidSharedMemoryId, |
| 291 kSharedMemoryOffset); | 291 kSharedMemoryOffset); |
| 292 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)).Times(0); | 292 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)).Times(0); |
| 293 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 293 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 294 cmd.Init(client_program_id_, | 294 cmd.Init(client_program_id_, |
| 295 kUniform2FakeLocation, | 295 kUniform2FakeLocation, |
| 296 kSharedMemoryId, | 296 kSharedMemoryId, |
| 297 kInvalidSharedMemoryOffset); | 297 kInvalidSharedMemoryOffset); |
| 298 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 298 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 299 }; | 299 }; |
| 300 | 300 |
| 301 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersSucceeds) { | 301 TEST_P(GLES2DecoderWithShaderTest, GetAttachedShadersSucceeds) { |
| 302 GetAttachedShaders cmd; | 302 GetAttachedShaders cmd; |
| 303 typedef GetAttachedShaders::Result Result; | 303 typedef GetAttachedShaders::Result Result; |
| 304 Result* result = static_cast<Result*>(shared_memory_address_); | 304 Result* result = static_cast<Result*>(shared_memory_address_); |
| 305 result->size = 0; | 305 result->size = 0; |
| 306 EXPECT_CALL(*gl_, GetAttachedShaders(kServiceProgramId, 1, _, _)).WillOnce( | 306 EXPECT_CALL(*gl_, GetAttachedShaders(kServiceProgramId, 1, _, _)).WillOnce( |
| 307 DoAll(SetArgumentPointee<2>(1), SetArgumentPointee<3>(kServiceShaderId))); | 307 DoAll(SetArgumentPointee<2>(1), SetArgumentPointee<3>(kServiceShaderId))); |
| 308 cmd.Init(client_program_id_, | 308 cmd.Init(client_program_id_, |
| 309 shared_memory_id_, | 309 shared_memory_id_, |
| 310 shared_memory_offset_, | 310 shared_memory_offset_, |
| 311 Result::ComputeSize(1)); | 311 Result::ComputeSize(1)); |
| 312 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 312 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 313 EXPECT_EQ(1, result->GetNumResults()); | 313 EXPECT_EQ(1, result->GetNumResults()); |
| 314 EXPECT_EQ(client_shader_id_, result->GetData()[0]); | 314 EXPECT_EQ(client_shader_id_, result->GetData()[0]); |
| 315 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 315 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 316 } | 316 } |
| 317 | 317 |
| 318 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersResultNotInitFail) { | 318 TEST_P(GLES2DecoderWithShaderTest, GetAttachedShadersResultNotInitFail) { |
| 319 GetAttachedShaders cmd; | 319 GetAttachedShaders cmd; |
| 320 typedef GetAttachedShaders::Result Result; | 320 typedef GetAttachedShaders::Result Result; |
| 321 Result* result = static_cast<Result*>(shared_memory_address_); | 321 Result* result = static_cast<Result*>(shared_memory_address_); |
| 322 result->size = 1; | 322 result->size = 1; |
| 323 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)).Times(0); | 323 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)).Times(0); |
| 324 cmd.Init(client_program_id_, | 324 cmd.Init(client_program_id_, |
| 325 shared_memory_id_, | 325 shared_memory_id_, |
| 326 shared_memory_offset_, | 326 shared_memory_offset_, |
| 327 Result::ComputeSize(1)); | 327 Result::ComputeSize(1)); |
| 328 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 328 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 329 } | 329 } |
| 330 | 330 |
| 331 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersBadProgramFails) { | 331 TEST_P(GLES2DecoderWithShaderTest, GetAttachedShadersBadProgramFails) { |
| 332 GetAttachedShaders cmd; | 332 GetAttachedShaders cmd; |
| 333 typedef GetAttachedShaders::Result Result; | 333 typedef GetAttachedShaders::Result Result; |
| 334 Result* result = static_cast<Result*>(shared_memory_address_); | 334 Result* result = static_cast<Result*>(shared_memory_address_); |
| 335 result->size = 0; | 335 result->size = 0; |
| 336 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)).Times(0); | 336 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)).Times(0); |
| 337 cmd.Init(kInvalidClientId, | 337 cmd.Init(kInvalidClientId, |
| 338 shared_memory_id_, | 338 shared_memory_id_, |
| 339 shared_memory_offset_, | 339 shared_memory_offset_, |
| 340 Result::ComputeSize(1)); | 340 Result::ComputeSize(1)); |
| 341 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 341 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 342 EXPECT_EQ(0U, result->size); | 342 EXPECT_EQ(0U, result->size); |
| 343 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 343 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 344 } | 344 } |
| 345 | 345 |
| 346 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersBadSharedMemoryFails) { | 346 TEST_P(GLES2DecoderWithShaderTest, GetAttachedShadersBadSharedMemoryFails) { |
| 347 GetAttachedShaders cmd; | 347 GetAttachedShaders cmd; |
| 348 typedef GetAttachedShaders::Result Result; | 348 typedef GetAttachedShaders::Result Result; |
| 349 cmd.Init(client_program_id_, | 349 cmd.Init(client_program_id_, |
| 350 kInvalidSharedMemoryId, | 350 kInvalidSharedMemoryId, |
| 351 shared_memory_offset_, | 351 shared_memory_offset_, |
| 352 Result::ComputeSize(1)); | 352 Result::ComputeSize(1)); |
| 353 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)).Times(0); | 353 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)).Times(0); |
| 354 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 354 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 355 cmd.Init(client_program_id_, | 355 cmd.Init(client_program_id_, |
| 356 shared_memory_id_, | 356 shared_memory_id_, |
| 357 kInvalidSharedMemoryOffset, | 357 kInvalidSharedMemoryOffset, |
| 358 Result::ComputeSize(1)); | 358 Result::ComputeSize(1)); |
| 359 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 359 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 360 } | 360 } |
| 361 | 361 |
| 362 TEST_F(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatSucceeds) { | 362 TEST_P(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatSucceeds) { |
| 363 ScopedGLImplementationSetter gl_impl(::gfx::kGLImplementationEGLGLES2); | 363 ScopedGLImplementationSetter gl_impl(::gfx::kGLImplementationEGLGLES2); |
| 364 GetShaderPrecisionFormat cmd; | 364 GetShaderPrecisionFormat cmd; |
| 365 typedef GetShaderPrecisionFormat::Result Result; | 365 typedef GetShaderPrecisionFormat::Result Result; |
| 366 Result* result = static_cast<Result*>(shared_memory_address_); | 366 Result* result = static_cast<Result*>(shared_memory_address_); |
| 367 result->success = 0; | 367 result->success = 0; |
| 368 const GLint range[2] = {62, 62}; | 368 const GLint range[2] = {62, 62}; |
| 369 const GLint precision = 16; | 369 const GLint precision = 16; |
| 370 EXPECT_CALL(*gl_, GetShaderPrecisionFormat(_, _, _, _)) | 370 EXPECT_CALL(*gl_, GetShaderPrecisionFormat(_, _, _, _)) |
| 371 .WillOnce(DoAll(SetArrayArgument<2>(range, range + 2), | 371 .WillOnce(DoAll(SetArrayArgument<2>(range, range + 2), |
| 372 SetArgumentPointee<3>(precision))) | 372 SetArgumentPointee<3>(precision))) |
| 373 .RetiresOnSaturation(); | 373 .RetiresOnSaturation(); |
| 374 cmd.Init(GL_VERTEX_SHADER, | 374 cmd.Init(GL_VERTEX_SHADER, |
| 375 GL_HIGH_FLOAT, | 375 GL_HIGH_FLOAT, |
| 376 shared_memory_id_, | 376 shared_memory_id_, |
| 377 shared_memory_offset_); | 377 shared_memory_offset_); |
| 378 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 378 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 379 EXPECT_NE(0, result->success); | 379 EXPECT_NE(0, result->success); |
| 380 EXPECT_EQ(range[0], result->min_range); | 380 EXPECT_EQ(range[0], result->min_range); |
| 381 EXPECT_EQ(range[1], result->max_range); | 381 EXPECT_EQ(range[1], result->max_range); |
| 382 EXPECT_EQ(precision, result->precision); | 382 EXPECT_EQ(precision, result->precision); |
| 383 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 383 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 384 } | 384 } |
| 385 | 385 |
| 386 TEST_F(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatResultNotInitFails) { | 386 TEST_P(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatResultNotInitFails) { |
| 387 GetShaderPrecisionFormat cmd; | 387 GetShaderPrecisionFormat cmd; |
| 388 typedef GetShaderPrecisionFormat::Result Result; | 388 typedef GetShaderPrecisionFormat::Result Result; |
| 389 Result* result = static_cast<Result*>(shared_memory_address_); | 389 Result* result = static_cast<Result*>(shared_memory_address_); |
| 390 result->success = 1; | 390 result->success = 1; |
| 391 // NOTE: GL might not be called. There is no Desktop OpenGL equivalent | 391 // NOTE: GL might not be called. There is no Desktop OpenGL equivalent |
| 392 cmd.Init(GL_VERTEX_SHADER, | 392 cmd.Init(GL_VERTEX_SHADER, |
| 393 GL_HIGH_FLOAT, | 393 GL_HIGH_FLOAT, |
| 394 shared_memory_id_, | 394 shared_memory_id_, |
| 395 shared_memory_offset_); | 395 shared_memory_offset_); |
| 396 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 396 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 397 } | 397 } |
| 398 | 398 |
| 399 TEST_F(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatBadArgsFails) { | 399 TEST_P(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatBadArgsFails) { |
| 400 typedef GetShaderPrecisionFormat::Result Result; | 400 typedef GetShaderPrecisionFormat::Result Result; |
| 401 Result* result = static_cast<Result*>(shared_memory_address_); | 401 Result* result = static_cast<Result*>(shared_memory_address_); |
| 402 result->success = 0; | 402 result->success = 0; |
| 403 GetShaderPrecisionFormat cmd; | 403 GetShaderPrecisionFormat cmd; |
| 404 cmd.Init( | 404 cmd.Init( |
| 405 GL_TEXTURE_2D, GL_HIGH_FLOAT, shared_memory_id_, shared_memory_offset_); | 405 GL_TEXTURE_2D, GL_HIGH_FLOAT, shared_memory_id_, shared_memory_offset_); |
| 406 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 406 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 407 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 407 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 408 result->success = 0; | 408 result->success = 0; |
| 409 cmd.Init(GL_VERTEX_SHADER, | 409 cmd.Init(GL_VERTEX_SHADER, |
| 410 GL_TEXTURE_2D, | 410 GL_TEXTURE_2D, |
| 411 shared_memory_id_, | 411 shared_memory_id_, |
| 412 shared_memory_offset_); | 412 shared_memory_offset_); |
| 413 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 413 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 414 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 414 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 415 } | 415 } |
| 416 | 416 |
| 417 TEST_F(GLES2DecoderWithShaderTest, | 417 TEST_P(GLES2DecoderWithShaderTest, |
| 418 GetShaderPrecisionFormatBadSharedMemoryFails) { | 418 GetShaderPrecisionFormatBadSharedMemoryFails) { |
| 419 GetShaderPrecisionFormat cmd; | 419 GetShaderPrecisionFormat cmd; |
| 420 cmd.Init(GL_VERTEX_SHADER, | 420 cmd.Init(GL_VERTEX_SHADER, |
| 421 GL_HIGH_FLOAT, | 421 GL_HIGH_FLOAT, |
| 422 kInvalidSharedMemoryId, | 422 kInvalidSharedMemoryId, |
| 423 shared_memory_offset_); | 423 shared_memory_offset_); |
| 424 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 424 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 425 cmd.Init(GL_VERTEX_SHADER, | 425 cmd.Init(GL_VERTEX_SHADER, |
| 426 GL_TEXTURE_2D, | 426 GL_TEXTURE_2D, |
| 427 shared_memory_id_, | 427 shared_memory_id_, |
| 428 kInvalidSharedMemoryOffset); | 428 kInvalidSharedMemoryOffset); |
| 429 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 429 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 430 } | 430 } |
| 431 | 431 |
| 432 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformSucceeds) { | 432 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformSucceeds) { |
| 433 const GLuint kUniformIndex = 1; | 433 const GLuint kUniformIndex = 1; |
| 434 const uint32 kBucketId = 123; | 434 const uint32 kBucketId = 123; |
| 435 GetActiveUniform cmd; | 435 GetActiveUniform cmd; |
| 436 typedef GetActiveUniform::Result Result; | 436 typedef GetActiveUniform::Result Result; |
| 437 Result* result = static_cast<Result*>(shared_memory_address_); | 437 Result* result = static_cast<Result*>(shared_memory_address_); |
| 438 result->success = 0; | 438 result->success = 0; |
| 439 cmd.Init(client_program_id_, | 439 cmd.Init(client_program_id_, |
| 440 kUniformIndex, | 440 kUniformIndex, |
| 441 kBucketId, | 441 kBucketId, |
| 442 shared_memory_id_, | 442 shared_memory_id_, |
| 443 shared_memory_offset_); | 443 shared_memory_offset_); |
| 444 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 444 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 445 EXPECT_NE(0, result->success); | 445 EXPECT_NE(0, result->success); |
| 446 EXPECT_EQ(kUniform2Size, result->size); | 446 EXPECT_EQ(kUniform2Size, result->size); |
| 447 EXPECT_EQ(kUniform2Type, result->type); | 447 EXPECT_EQ(kUniform2Type, result->type); |
| 448 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 448 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 449 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 449 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 450 ASSERT_TRUE(bucket != NULL); | 450 ASSERT_TRUE(bucket != NULL); |
| 451 EXPECT_EQ( | 451 EXPECT_EQ( |
| 452 0, | 452 0, |
| 453 memcmp( | 453 memcmp( |
| 454 bucket->GetData(0, bucket->size()), kUniform2Name, bucket->size())); | 454 bucket->GetData(0, bucket->size()), kUniform2Name, bucket->size())); |
| 455 } | 455 } |
| 456 | 456 |
| 457 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformResultNotInitFails) { | 457 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformResultNotInitFails) { |
| 458 const GLuint kUniformIndex = 1; | 458 const GLuint kUniformIndex = 1; |
| 459 const uint32 kBucketId = 123; | 459 const uint32 kBucketId = 123; |
| 460 GetActiveUniform cmd; | 460 GetActiveUniform cmd; |
| 461 typedef GetActiveUniform::Result Result; | 461 typedef GetActiveUniform::Result Result; |
| 462 Result* result = static_cast<Result*>(shared_memory_address_); | 462 Result* result = static_cast<Result*>(shared_memory_address_); |
| 463 result->success = 1; | 463 result->success = 1; |
| 464 cmd.Init(client_program_id_, | 464 cmd.Init(client_program_id_, |
| 465 kUniformIndex, | 465 kUniformIndex, |
| 466 kBucketId, | 466 kBucketId, |
| 467 shared_memory_id_, | 467 shared_memory_id_, |
| 468 shared_memory_offset_); | 468 shared_memory_offset_); |
| 469 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 469 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 470 } | 470 } |
| 471 | 471 |
| 472 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformBadProgramFails) { | 472 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBadProgramFails) { |
| 473 const GLuint kUniformIndex = 1; | 473 const GLuint kUniformIndex = 1; |
| 474 const uint32 kBucketId = 123; | 474 const uint32 kBucketId = 123; |
| 475 GetActiveUniform cmd; | 475 GetActiveUniform cmd; |
| 476 typedef GetActiveUniform::Result Result; | 476 typedef GetActiveUniform::Result Result; |
| 477 Result* result = static_cast<Result*>(shared_memory_address_); | 477 Result* result = static_cast<Result*>(shared_memory_address_); |
| 478 result->success = 0; | 478 result->success = 0; |
| 479 cmd.Init(kInvalidClientId, | 479 cmd.Init(kInvalidClientId, |
| 480 kUniformIndex, | 480 kUniformIndex, |
| 481 kBucketId, | 481 kBucketId, |
| 482 shared_memory_id_, | 482 shared_memory_id_, |
| 483 shared_memory_offset_); | 483 shared_memory_offset_); |
| 484 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 484 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 485 EXPECT_EQ(0, result->success); | 485 EXPECT_EQ(0, result->success); |
| 486 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 486 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 487 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 487 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 488 result->success = 0; | 488 result->success = 0; |
| 489 cmd.Init(client_shader_id_, | 489 cmd.Init(client_shader_id_, |
| 490 kUniformIndex, | 490 kUniformIndex, |
| 491 kBucketId, | 491 kBucketId, |
| 492 shared_memory_id_, | 492 shared_memory_id_, |
| 493 shared_memory_offset_); | 493 shared_memory_offset_); |
| 494 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 494 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 495 EXPECT_EQ(0, result->success); | 495 EXPECT_EQ(0, result->success); |
| 496 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 496 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 497 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS | 497 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 498 } | 498 } |
| 499 | 499 |
| 500 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformBadIndexFails) { | 500 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBadIndexFails) { |
| 501 const uint32 kBucketId = 123; | 501 const uint32 kBucketId = 123; |
| 502 GetActiveUniform cmd; | 502 GetActiveUniform cmd; |
| 503 typedef GetActiveUniform::Result Result; | 503 typedef GetActiveUniform::Result Result; |
| 504 Result* result = static_cast<Result*>(shared_memory_address_); | 504 Result* result = static_cast<Result*>(shared_memory_address_); |
| 505 result->success = 0; | 505 result->success = 0; |
| 506 cmd.Init(client_program_id_, | 506 cmd.Init(client_program_id_, |
| 507 kBadUniformIndex, | 507 kBadUniformIndex, |
| 508 kBucketId, | 508 kBucketId, |
| 509 shared_memory_id_, | 509 shared_memory_id_, |
| 510 shared_memory_offset_); | 510 shared_memory_offset_); |
| 511 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 511 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 512 EXPECT_EQ(0, result->success); | 512 EXPECT_EQ(0, result->success); |
| 513 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 513 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 514 } | 514 } |
| 515 | 515 |
| 516 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformBadSharedMemoryFails) { | 516 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBadSharedMemoryFails) { |
| 517 const GLuint kUniformIndex = 1; | 517 const GLuint kUniformIndex = 1; |
| 518 const uint32 kBucketId = 123; | 518 const uint32 kBucketId = 123; |
| 519 GetActiveUniform cmd; | 519 GetActiveUniform cmd; |
| 520 cmd.Init(client_program_id_, | 520 cmd.Init(client_program_id_, |
| 521 kUniformIndex, | 521 kUniformIndex, |
| 522 kBucketId, | 522 kBucketId, |
| 523 kInvalidSharedMemoryId, | 523 kInvalidSharedMemoryId, |
| 524 shared_memory_offset_); | 524 shared_memory_offset_); |
| 525 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 525 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 526 cmd.Init(client_program_id_, | 526 cmd.Init(client_program_id_, |
| 527 kUniformIndex, | 527 kUniformIndex, |
| 528 kBucketId, | 528 kBucketId, |
| 529 shared_memory_id_, | 529 shared_memory_id_, |
| 530 kInvalidSharedMemoryOffset); | 530 kInvalidSharedMemoryOffset); |
| 531 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 531 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 532 } | 532 } |
| 533 | 533 |
| 534 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribSucceeds) { | 534 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribSucceeds) { |
| 535 const GLuint kAttribIndex = 1; | 535 const GLuint kAttribIndex = 1; |
| 536 const uint32 kBucketId = 123; | 536 const uint32 kBucketId = 123; |
| 537 GetActiveAttrib cmd; | 537 GetActiveAttrib cmd; |
| 538 typedef GetActiveAttrib::Result Result; | 538 typedef GetActiveAttrib::Result Result; |
| 539 Result* result = static_cast<Result*>(shared_memory_address_); | 539 Result* result = static_cast<Result*>(shared_memory_address_); |
| 540 result->success = 0; | 540 result->success = 0; |
| 541 cmd.Init(client_program_id_, | 541 cmd.Init(client_program_id_, |
| 542 kAttribIndex, | 542 kAttribIndex, |
| 543 kBucketId, | 543 kBucketId, |
| 544 shared_memory_id_, | 544 shared_memory_id_, |
| 545 shared_memory_offset_); | 545 shared_memory_offset_); |
| 546 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 546 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 547 EXPECT_NE(0, result->success); | 547 EXPECT_NE(0, result->success); |
| 548 EXPECT_EQ(kAttrib2Size, result->size); | 548 EXPECT_EQ(kAttrib2Size, result->size); |
| 549 EXPECT_EQ(kAttrib2Type, result->type); | 549 EXPECT_EQ(kAttrib2Type, result->type); |
| 550 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 550 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 551 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 551 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 552 ASSERT_TRUE(bucket != NULL); | 552 ASSERT_TRUE(bucket != NULL); |
| 553 EXPECT_EQ( | 553 EXPECT_EQ( |
| 554 0, | 554 0, |
| 555 memcmp(bucket->GetData(0, bucket->size()), kAttrib2Name, bucket->size())); | 555 memcmp(bucket->GetData(0, bucket->size()), kAttrib2Name, bucket->size())); |
| 556 } | 556 } |
| 557 | 557 |
| 558 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribResultNotInitFails) { | 558 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribResultNotInitFails) { |
| 559 const GLuint kAttribIndex = 1; | 559 const GLuint kAttribIndex = 1; |
| 560 const uint32 kBucketId = 123; | 560 const uint32 kBucketId = 123; |
| 561 GetActiveAttrib cmd; | 561 GetActiveAttrib cmd; |
| 562 typedef GetActiveAttrib::Result Result; | 562 typedef GetActiveAttrib::Result Result; |
| 563 Result* result = static_cast<Result*>(shared_memory_address_); | 563 Result* result = static_cast<Result*>(shared_memory_address_); |
| 564 result->success = 1; | 564 result->success = 1; |
| 565 cmd.Init(client_program_id_, | 565 cmd.Init(client_program_id_, |
| 566 kAttribIndex, | 566 kAttribIndex, |
| 567 kBucketId, | 567 kBucketId, |
| 568 shared_memory_id_, | 568 shared_memory_id_, |
| 569 shared_memory_offset_); | 569 shared_memory_offset_); |
| 570 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 570 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 571 } | 571 } |
| 572 | 572 |
| 573 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribBadProgramFails) { | 573 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribBadProgramFails) { |
| 574 const GLuint kAttribIndex = 1; | 574 const GLuint kAttribIndex = 1; |
| 575 const uint32 kBucketId = 123; | 575 const uint32 kBucketId = 123; |
| 576 GetActiveAttrib cmd; | 576 GetActiveAttrib cmd; |
| 577 typedef GetActiveAttrib::Result Result; | 577 typedef GetActiveAttrib::Result Result; |
| 578 Result* result = static_cast<Result*>(shared_memory_address_); | 578 Result* result = static_cast<Result*>(shared_memory_address_); |
| 579 result->success = 0; | 579 result->success = 0; |
| 580 cmd.Init(kInvalidClientId, | 580 cmd.Init(kInvalidClientId, |
| 581 kAttribIndex, | 581 kAttribIndex, |
| 582 kBucketId, | 582 kBucketId, |
| 583 shared_memory_id_, | 583 shared_memory_id_, |
| 584 shared_memory_offset_); | 584 shared_memory_offset_); |
| 585 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 585 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 586 EXPECT_EQ(0, result->success); | 586 EXPECT_EQ(0, result->success); |
| 587 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 587 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 588 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 588 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 589 result->success = 0; | 589 result->success = 0; |
| 590 cmd.Init(client_shader_id_, | 590 cmd.Init(client_shader_id_, |
| 591 kAttribIndex, | 591 kAttribIndex, |
| 592 kBucketId, | 592 kBucketId, |
| 593 shared_memory_id_, | 593 shared_memory_id_, |
| 594 shared_memory_offset_); | 594 shared_memory_offset_); |
| 595 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 595 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 596 EXPECT_EQ(0, result->success); | 596 EXPECT_EQ(0, result->success); |
| 597 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 597 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 598 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS | 598 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 599 } | 599 } |
| 600 | 600 |
| 601 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribBadIndexFails) { | 601 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribBadIndexFails) { |
| 602 const uint32 kBucketId = 123; | 602 const uint32 kBucketId = 123; |
| 603 GetActiveAttrib cmd; | 603 GetActiveAttrib cmd; |
| 604 typedef GetActiveAttrib::Result Result; | 604 typedef GetActiveAttrib::Result Result; |
| 605 Result* result = static_cast<Result*>(shared_memory_address_); | 605 Result* result = static_cast<Result*>(shared_memory_address_); |
| 606 result->success = 0; | 606 result->success = 0; |
| 607 cmd.Init(client_program_id_, | 607 cmd.Init(client_program_id_, |
| 608 kBadAttribIndex, | 608 kBadAttribIndex, |
| 609 kBucketId, | 609 kBucketId, |
| 610 shared_memory_id_, | 610 shared_memory_id_, |
| 611 shared_memory_offset_); | 611 shared_memory_offset_); |
| 612 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 612 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 613 EXPECT_EQ(0, result->success); | 613 EXPECT_EQ(0, result->success); |
| 614 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 614 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 615 } | 615 } |
| 616 | 616 |
| 617 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribBadSharedMemoryFails) { | 617 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribBadSharedMemoryFails) { |
| 618 const GLuint kAttribIndex = 1; | 618 const GLuint kAttribIndex = 1; |
| 619 const uint32 kBucketId = 123; | 619 const uint32 kBucketId = 123; |
| 620 GetActiveAttrib cmd; | 620 GetActiveAttrib cmd; |
| 621 cmd.Init(client_program_id_, | 621 cmd.Init(client_program_id_, |
| 622 kAttribIndex, | 622 kAttribIndex, |
| 623 kBucketId, | 623 kBucketId, |
| 624 kInvalidSharedMemoryId, | 624 kInvalidSharedMemoryId, |
| 625 shared_memory_offset_); | 625 shared_memory_offset_); |
| 626 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 626 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 627 cmd.Init(client_program_id_, | 627 cmd.Init(client_program_id_, |
| 628 kAttribIndex, | 628 kAttribIndex, |
| 629 kBucketId, | 629 kBucketId, |
| 630 shared_memory_id_, | 630 shared_memory_id_, |
| 631 kInvalidSharedMemoryOffset); | 631 kInvalidSharedMemoryOffset); |
| 632 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 632 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 633 } | 633 } |
| 634 | 634 |
| 635 TEST_F(GLES2DecoderWithShaderTest, GetShaderInfoLogValidArgs) { | 635 TEST_P(GLES2DecoderWithShaderTest, GetShaderInfoLogValidArgs) { |
| 636 const char* kInfo = "hello"; | 636 const char* kInfo = "hello"; |
| 637 const uint32 kBucketId = 123; | 637 const uint32 kBucketId = 123; |
| 638 CompileShader compile_cmd; | 638 CompileShader compile_cmd; |
| 639 GetShaderInfoLog cmd; | 639 GetShaderInfoLog cmd; |
| 640 EXPECT_CALL(*gl_, ShaderSource(kServiceShaderId, 1, _, _)); | 640 EXPECT_CALL(*gl_, ShaderSource(kServiceShaderId, 1, _, _)); |
| 641 EXPECT_CALL(*gl_, CompileShader(kServiceShaderId)); | 641 EXPECT_CALL(*gl_, CompileShader(kServiceShaderId)); |
| 642 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_COMPILE_STATUS, _)) | 642 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_COMPILE_STATUS, _)) |
| 643 .WillOnce(SetArgumentPointee<2>(GL_FALSE)) | 643 .WillOnce(SetArgumentPointee<2>(GL_FALSE)) |
| 644 .RetiresOnSaturation(); | 644 .RetiresOnSaturation(); |
| 645 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_INFO_LOG_LENGTH, _)) | 645 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_INFO_LOG_LENGTH, _)) |
| 646 .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1)) | 646 .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1)) |
| 647 .RetiresOnSaturation(); | 647 .RetiresOnSaturation(); |
| 648 EXPECT_CALL(*gl_, GetShaderInfoLog(kServiceShaderId, strlen(kInfo) + 1, _, _)) | 648 EXPECT_CALL(*gl_, GetShaderInfoLog(kServiceShaderId, strlen(kInfo) + 1, _, _)) |
| 649 .WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)), | 649 .WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)), |
| 650 SetArrayArgument<3>(kInfo, kInfo + strlen(kInfo) + 1))); | 650 SetArrayArgument<3>(kInfo, kInfo + strlen(kInfo) + 1))); |
| 651 compile_cmd.Init(client_shader_id_); | 651 compile_cmd.Init(client_shader_id_); |
| 652 cmd.Init(client_shader_id_, kBucketId); | 652 cmd.Init(client_shader_id_, kBucketId); |
| 653 EXPECT_EQ(error::kNoError, ExecuteCmd(compile_cmd)); | 653 EXPECT_EQ(error::kNoError, ExecuteCmd(compile_cmd)); |
| 654 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 654 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 655 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 655 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 656 ASSERT_TRUE(bucket != NULL); | 656 ASSERT_TRUE(bucket != NULL); |
| 657 EXPECT_EQ(strlen(kInfo) + 1, bucket->size()); | 657 EXPECT_EQ(strlen(kInfo) + 1, bucket->size()); |
| 658 EXPECT_EQ(0, | 658 EXPECT_EQ(0, |
| 659 memcmp(bucket->GetData(0, bucket->size()), kInfo, bucket->size())); | 659 memcmp(bucket->GetData(0, bucket->size()), kInfo, bucket->size())); |
| 660 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 660 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 661 } | 661 } |
| 662 | 662 |
| 663 TEST_F(GLES2DecoderWithShaderTest, GetShaderInfoLogInvalidArgs) { | 663 TEST_P(GLES2DecoderWithShaderTest, GetShaderInfoLogInvalidArgs) { |
| 664 const uint32 kBucketId = 123; | 664 const uint32 kBucketId = 123; |
| 665 GetShaderInfoLog cmd; | 665 GetShaderInfoLog cmd; |
| 666 cmd.Init(kInvalidClientId, kBucketId); | 666 cmd.Init(kInvalidClientId, kBucketId); |
| 667 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 667 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 668 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 668 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 669 } | 669 } |
| 670 | 670 |
| 671 TEST_F(GLES2DecoderTest, CompileShaderValidArgs) { | 671 TEST_P(GLES2DecoderTest, CompileShaderValidArgs) { |
| 672 EXPECT_CALL(*gl_, ShaderSource(kServiceShaderId, 1, _, _)); | 672 EXPECT_CALL(*gl_, ShaderSource(kServiceShaderId, 1, _, _)); |
| 673 EXPECT_CALL(*gl_, CompileShader(kServiceShaderId)); | 673 EXPECT_CALL(*gl_, CompileShader(kServiceShaderId)); |
| 674 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_COMPILE_STATUS, _)) | 674 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_COMPILE_STATUS, _)) |
| 675 .WillOnce(SetArgumentPointee<2>(GL_TRUE)) | 675 .WillOnce(SetArgumentPointee<2>(GL_TRUE)) |
| 676 .RetiresOnSaturation(); | 676 .RetiresOnSaturation(); |
| 677 CompileShader cmd; | 677 CompileShader cmd; |
| 678 cmd.Init(client_shader_id_); | 678 cmd.Init(client_shader_id_); |
| 679 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 679 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 680 } | 680 } |
| 681 | 681 |
| 682 TEST_F(GLES2DecoderTest, CompileShaderInvalidArgs) { | 682 TEST_P(GLES2DecoderTest, CompileShaderInvalidArgs) { |
| 683 CompileShader cmd; | 683 CompileShader cmd; |
| 684 cmd.Init(kInvalidClientId); | 684 cmd.Init(kInvalidClientId); |
| 685 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 685 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 686 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 686 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 687 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 687 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 688 cmd.Init(client_program_id_); | 688 cmd.Init(client_program_id_); |
| 689 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 689 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 690 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 690 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 691 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS | 691 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 692 } | 692 } |
| 693 | 693 |
| 694 TEST_F(GLES2DecoderTest, ShaderSourceAndGetShaderSourceValidArgs) { | 694 TEST_P(GLES2DecoderTest, ShaderSourceAndGetShaderSourceValidArgs) { |
| 695 const uint32 kBucketId = 123; | 695 const uint32 kBucketId = 123; |
| 696 const char kSource[] = "hello"; | 696 const char kSource[] = "hello"; |
| 697 const uint32 kSourceSize = sizeof(kSource) - 1; | 697 const uint32 kSourceSize = sizeof(kSource) - 1; |
| 698 memcpy(shared_memory_address_, kSource, kSourceSize); | 698 memcpy(shared_memory_address_, kSource, kSourceSize); |
| 699 ShaderSource cmd; | 699 ShaderSource cmd; |
| 700 cmd.Init( | 700 cmd.Init( |
| 701 client_shader_id_, kSharedMemoryId, kSharedMemoryOffset, kSourceSize); | 701 client_shader_id_, kSharedMemoryId, kSharedMemoryOffset, kSourceSize); |
| 702 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 702 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 703 memset(shared_memory_address_, 0, kSourceSize); | 703 memset(shared_memory_address_, 0, kSourceSize); |
| 704 GetShaderSource get_cmd; | 704 GetShaderSource get_cmd; |
| 705 get_cmd.Init(client_shader_id_, kBucketId); | 705 get_cmd.Init(client_shader_id_, kBucketId); |
| 706 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd)); | 706 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd)); |
| 707 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 707 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 708 ASSERT_TRUE(bucket != NULL); | 708 ASSERT_TRUE(bucket != NULL); |
| 709 EXPECT_EQ(kSourceSize + 1, bucket->size()); | 709 EXPECT_EQ(kSourceSize + 1, bucket->size()); |
| 710 EXPECT_EQ( | 710 EXPECT_EQ( |
| 711 0, memcmp(bucket->GetData(0, bucket->size()), kSource, bucket->size())); | 711 0, memcmp(bucket->GetData(0, bucket->size()), kSource, bucket->size())); |
| 712 } | 712 } |
| 713 | 713 |
| 714 TEST_F(GLES2DecoderTest, ShaderSourceInvalidArgs) { | 714 TEST_P(GLES2DecoderTest, ShaderSourceInvalidArgs) { |
| 715 const char kSource[] = "hello"; | 715 const char kSource[] = "hello"; |
| 716 const uint32 kSourceSize = sizeof(kSource) - 1; | 716 const uint32 kSourceSize = sizeof(kSource) - 1; |
| 717 memcpy(shared_memory_address_, kSource, kSourceSize); | 717 memcpy(shared_memory_address_, kSource, kSourceSize); |
| 718 ShaderSource cmd; | 718 ShaderSource cmd; |
| 719 cmd.Init(kInvalidClientId, kSharedMemoryId, kSharedMemoryOffset, kSourceSize); | 719 cmd.Init(kInvalidClientId, kSharedMemoryId, kSharedMemoryOffset, kSourceSize); |
| 720 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 720 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 721 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 721 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 722 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 722 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 723 cmd.Init( | 723 cmd.Init( |
| 724 client_program_id_, kSharedMemoryId, kSharedMemoryOffset, kSourceSize); | 724 client_program_id_, kSharedMemoryId, kSharedMemoryOffset, kSourceSize); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 735 kInvalidSharedMemoryOffset, | 735 kInvalidSharedMemoryOffset, |
| 736 kSourceSize); | 736 kSourceSize); |
| 737 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 737 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 738 cmd.Init(client_shader_id_, | 738 cmd.Init(client_shader_id_, |
| 739 kSharedMemoryId, | 739 kSharedMemoryId, |
| 740 kSharedMemoryOffset, | 740 kSharedMemoryOffset, |
| 741 kSharedBufferSize); | 741 kSharedBufferSize); |
| 742 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 742 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 743 } | 743 } |
| 744 | 744 |
| 745 TEST_F(GLES2DecoderTest, ShaderSourceBucketAndGetShaderSourceValidArgs) { | 745 TEST_P(GLES2DecoderTest, ShaderSourceBucketAndGetShaderSourceValidArgs) { |
| 746 const uint32 kInBucketId = 123; | 746 const uint32 kInBucketId = 123; |
| 747 const uint32 kOutBucketId = 125; | 747 const uint32 kOutBucketId = 125; |
| 748 const char kSource[] = "hello"; | 748 const char kSource[] = "hello"; |
| 749 const uint32 kSourceSize = sizeof(kSource) - 1; | 749 const uint32 kSourceSize = sizeof(kSource) - 1; |
| 750 SetBucketAsCString(kInBucketId, kSource); | 750 SetBucketAsCString(kInBucketId, kSource); |
| 751 ShaderSourceBucket cmd; | 751 ShaderSourceBucket cmd; |
| 752 cmd.Init(client_shader_id_, kInBucketId); | 752 cmd.Init(client_shader_id_, kInBucketId); |
| 753 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 753 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 754 ClearSharedMemory(); | 754 ClearSharedMemory(); |
| 755 GetShaderSource get_cmd; | 755 GetShaderSource get_cmd; |
| 756 get_cmd.Init(client_shader_id_, kOutBucketId); | 756 get_cmd.Init(client_shader_id_, kOutBucketId); |
| 757 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd)); | 757 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd)); |
| 758 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kOutBucketId); | 758 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kOutBucketId); |
| 759 ASSERT_TRUE(bucket != NULL); | 759 ASSERT_TRUE(bucket != NULL); |
| 760 EXPECT_EQ(kSourceSize + 1, bucket->size()); | 760 EXPECT_EQ(kSourceSize + 1, bucket->size()); |
| 761 EXPECT_EQ( | 761 EXPECT_EQ( |
| 762 0, memcmp(bucket->GetData(0, bucket->size()), kSource, bucket->size())); | 762 0, memcmp(bucket->GetData(0, bucket->size()), kSource, bucket->size())); |
| 763 } | 763 } |
| 764 | 764 |
| 765 TEST_F(GLES2DecoderTest, ShaderSourceBucketInvalidArgs) { | 765 TEST_P(GLES2DecoderTest, ShaderSourceBucketInvalidArgs) { |
| 766 const uint32 kBucketId = 123; | 766 const uint32 kBucketId = 123; |
| 767 const char kSource[] = "hello"; | 767 const char kSource[] = "hello"; |
| 768 const uint32 kSourceSize = sizeof(kSource) - 1; | 768 const uint32 kSourceSize = sizeof(kSource) - 1; |
| 769 memcpy(shared_memory_address_, kSource, kSourceSize); | 769 memcpy(shared_memory_address_, kSource, kSourceSize); |
| 770 ShaderSourceBucket cmd; | 770 ShaderSourceBucket cmd; |
| 771 // Test no bucket. | 771 // Test no bucket. |
| 772 cmd.Init(client_texture_id_, kBucketId); | 772 cmd.Init(client_texture_id_, kBucketId); |
| 773 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 773 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 774 // Test invalid client. | 774 // Test invalid client. |
| 775 SetBucketAsCString(kBucketId, kSource); | 775 SetBucketAsCString(kBucketId, kSource); |
| 776 cmd.Init(kInvalidClientId, kBucketId); | 776 cmd.Init(kInvalidClientId, kBucketId); |
| 777 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 777 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 778 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 778 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 779 } | 779 } |
| 780 | 780 |
| 781 TEST_F(GLES2DecoderTest, ShaderSourceStripComments) { | 781 TEST_P(GLES2DecoderTest, ShaderSourceStripComments) { |
| 782 const uint32 kInBucketId = 123; | 782 const uint32 kInBucketId = 123; |
| 783 const char kSource[] = "hello/*te\ast*/world//a\ab"; | 783 const char kSource[] = "hello/*te\ast*/world//a\ab"; |
| 784 SetBucketAsCString(kInBucketId, kSource); | 784 SetBucketAsCString(kInBucketId, kSource); |
| 785 ShaderSourceBucket cmd; | 785 ShaderSourceBucket cmd; |
| 786 cmd.Init(client_shader_id_, kInBucketId); | 786 cmd.Init(client_shader_id_, kInBucketId); |
| 787 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 787 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 788 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 788 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 789 } | 789 } |
| 790 | 790 |
| 791 TEST_F(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { | 791 TEST_P(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { |
| 792 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); | 792 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); |
| 793 Uniform1i cmd; | 793 Uniform1i cmd; |
| 794 cmd.Init(kUniform1FakeLocation, 2); | 794 cmd.Init(kUniform1FakeLocation, 2); |
| 795 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 795 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 796 } | 796 } |
| 797 | 797 |
| 798 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivValidArgs) { | 798 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivValidArgs) { |
| 799 EXPECT_CALL( | 799 EXPECT_CALL( |
| 800 *gl_, | 800 *gl_, |
| 801 Uniform1iv(kUniform1RealLocation, | 801 Uniform1iv(kUniform1RealLocation, |
| 802 1, | 802 1, |
| 803 reinterpret_cast<const GLint*>(shared_memory_address_))); | 803 reinterpret_cast<const GLint*>(shared_memory_address_))); |
| 804 Uniform1iv cmd; | 804 Uniform1iv cmd; |
| 805 cmd.Init(kUniform1FakeLocation, 1, shared_memory_id_, shared_memory_offset_); | 805 cmd.Init(kUniform1FakeLocation, 1, shared_memory_id_, shared_memory_offset_); |
| 806 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 806 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 807 } | 807 } |
| 808 | 808 |
| 809 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_0) { | 809 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_0) { |
| 810 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 810 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 811 Uniform1iv cmd; | 811 Uniform1iv cmd; |
| 812 cmd.Init(kUniform1FakeLocation, 1, kInvalidSharedMemoryId, 0); | 812 cmd.Init(kUniform1FakeLocation, 1, kInvalidSharedMemoryId, 0); |
| 813 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); | 813 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); |
| 814 } | 814 } |
| 815 | 815 |
| 816 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_1) { | 816 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_1) { |
| 817 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 817 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 818 Uniform1iv cmd; | 818 Uniform1iv cmd; |
| 819 cmd.Init( | 819 cmd.Init( |
| 820 kUniform1FakeLocation, 1, shared_memory_id_, kInvalidSharedMemoryOffset); | 820 kUniform1FakeLocation, 1, shared_memory_id_, kInvalidSharedMemoryOffset); |
| 821 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); | 821 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); |
| 822 } | 822 } |
| 823 | 823 |
| 824 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { | 824 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { |
| 825 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); | 825 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); |
| 826 EXPECT_CALL(*gl_, | 826 EXPECT_CALL(*gl_, |
| 827 Uniform1iv(kUniform1RealLocation, | 827 Uniform1iv(kUniform1RealLocation, |
| 828 1, | 828 1, |
| 829 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); | 829 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); |
| 830 GLint temp[1 * 2] = { | 830 GLint temp[1 * 2] = { |
| 831 0, | 831 0, |
| 832 }; | 832 }; |
| 833 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); | 833 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); |
| 834 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 834 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 835 } | 835 } |
| 836 | 836 |
| 837 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidValidArgs) { | 837 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivInvalidValidArgs) { |
| 838 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 838 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 839 Uniform1iv cmd; | 839 Uniform1iv cmd; |
| 840 cmd.Init(kUniform1FakeLocation, 2, shared_memory_id_, shared_memory_offset_); | 840 cmd.Init(kUniform1FakeLocation, 2, shared_memory_id_, shared_memory_offset_); |
| 841 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 841 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 842 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 842 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 843 } | 843 } |
| 844 | 844 |
| 845 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivZeroCount) { | 845 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivZeroCount) { |
| 846 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 846 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 847 Uniform1iv cmd; | 847 Uniform1iv cmd; |
| 848 cmd.Init(kUniform1FakeLocation, 0, shared_memory_id_, shared_memory_offset_); | 848 cmd.Init(kUniform1FakeLocation, 0, shared_memory_id_, shared_memory_offset_); |
| 849 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 849 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 850 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 850 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 851 } | 851 } |
| 852 | 852 |
| 853 TEST_F(GLES2DecoderWithShaderTest, Uniform1iSamplerIsLmited) { | 853 TEST_P(GLES2DecoderWithShaderTest, Uniform1iSamplerIsLmited) { |
| 854 EXPECT_CALL(*gl_, Uniform1i(_, _)).Times(0); | 854 EXPECT_CALL(*gl_, Uniform1i(_, _)).Times(0); |
| 855 Uniform1i cmd; | 855 Uniform1i cmd; |
| 856 cmd.Init(kUniform1FakeLocation, kNumTextureUnits); | 856 cmd.Init(kUniform1FakeLocation, kNumTextureUnits); |
| 857 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 857 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 858 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 858 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 859 } | 859 } |
| 860 | 860 |
| 861 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivSamplerIsLimited) { | 861 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivSamplerIsLimited) { |
| 862 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 862 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 863 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); | 863 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); |
| 864 GLint temp[] = {kNumTextureUnits}; | 864 GLint temp[] = {kNumTextureUnits}; |
| 865 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); | 865 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); |
| 866 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 866 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 867 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 867 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 868 } | 868 } |
| 869 | 869 |
| 870 TEST_F(GLES2DecoderTest, BindAttribLocation) { | 870 TEST_P(GLES2DecoderTest, BindAttribLocation) { |
| 871 const GLint kLocation = 2; | 871 const GLint kLocation = 2; |
| 872 const char* kName = "testing"; | 872 const char* kName = "testing"; |
| 873 const uint32 kNameSize = strlen(kName); | 873 const uint32 kNameSize = strlen(kName); |
| 874 EXPECT_CALL(*gl_, | 874 EXPECT_CALL(*gl_, |
| 875 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) | 875 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) |
| 876 .Times(1); | 876 .Times(1); |
| 877 memcpy(shared_memory_address_, kName, kNameSize); | 877 memcpy(shared_memory_address_, kName, kNameSize); |
| 878 BindAttribLocation cmd; | 878 BindAttribLocation cmd; |
| 879 cmd.Init(client_program_id_, | 879 cmd.Init(client_program_id_, |
| 880 kLocation, | 880 kLocation, |
| 881 kSharedMemoryId, | 881 kSharedMemoryId, |
| 882 kSharedMemoryOffset, | 882 kSharedMemoryOffset, |
| 883 kNameSize); | 883 kNameSize); |
| 884 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 884 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 885 } | 885 } |
| 886 | 886 |
| 887 TEST_F(GLES2DecoderTest, BindAttribLocationInvalidArgs) { | 887 TEST_P(GLES2DecoderTest, BindAttribLocationInvalidArgs) { |
| 888 const GLint kLocation = 2; | 888 const GLint kLocation = 2; |
| 889 const char* kName = "testing"; | 889 const char* kName = "testing"; |
| 890 const char* kBadName = "test\aing"; | 890 const char* kBadName = "test\aing"; |
| 891 const uint32 kNameSize = strlen(kName); | 891 const uint32 kNameSize = strlen(kName); |
| 892 const uint32 kBadNameSize = strlen(kBadName); | 892 const uint32 kBadNameSize = strlen(kBadName); |
| 893 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0); | 893 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0); |
| 894 memcpy(shared_memory_address_, kName, kNameSize); | 894 memcpy(shared_memory_address_, kName, kNameSize); |
| 895 BindAttribLocation cmd; | 895 BindAttribLocation cmd; |
| 896 cmd.Init(kInvalidClientId, | 896 cmd.Init(kInvalidClientId, |
| 897 kLocation, | 897 kLocation, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 921 memcpy(shared_memory_address_, kBadName, kBadNameSize); | 921 memcpy(shared_memory_address_, kBadName, kBadNameSize); |
| 922 cmd.Init(client_program_id_, | 922 cmd.Init(client_program_id_, |
| 923 kLocation, | 923 kLocation, |
| 924 kSharedMemoryId, | 924 kSharedMemoryId, |
| 925 kSharedMemoryOffset, | 925 kSharedMemoryOffset, |
| 926 kBadNameSize); | 926 kBadNameSize); |
| 927 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 927 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 928 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 928 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 929 } | 929 } |
| 930 | 930 |
| 931 TEST_F(GLES2DecoderTest, BindAttribLocationBucket) { | 931 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) { |
| 932 const uint32 kBucketId = 123; | 932 const uint32 kBucketId = 123; |
| 933 const GLint kLocation = 2; | 933 const GLint kLocation = 2; |
| 934 const char* kName = "testing"; | 934 const char* kName = "testing"; |
| 935 EXPECT_CALL(*gl_, | 935 EXPECT_CALL(*gl_, |
| 936 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) | 936 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) |
| 937 .Times(1); | 937 .Times(1); |
| 938 SetBucketAsCString(kBucketId, kName); | 938 SetBucketAsCString(kBucketId, kName); |
| 939 BindAttribLocationBucket cmd; | 939 BindAttribLocationBucket cmd; |
| 940 cmd.Init(client_program_id_, kLocation, kBucketId); | 940 cmd.Init(client_program_id_, kLocation, kBucketId); |
| 941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 942 } | 942 } |
| 943 | 943 |
| 944 TEST_F(GLES2DecoderTest, BindAttribLocationBucketInvalidArgs) { | 944 TEST_P(GLES2DecoderTest, BindAttribLocationBucketInvalidArgs) { |
| 945 const uint32 kBucketId = 123; | 945 const uint32 kBucketId = 123; |
| 946 const GLint kLocation = 2; | 946 const GLint kLocation = 2; |
| 947 const char* kName = "testing"; | 947 const char* kName = "testing"; |
| 948 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0); | 948 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0); |
| 949 BindAttribLocationBucket cmd; | 949 BindAttribLocationBucket cmd; |
| 950 // check bucket does not exist. | 950 // check bucket does not exist. |
| 951 cmd.Init(client_program_id_, kLocation, kBucketId); | 951 cmd.Init(client_program_id_, kLocation, kBucketId); |
| 952 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 952 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 953 // check bucket is empty. | 953 // check bucket is empty. |
| 954 SetBucketAsCString(kBucketId, NULL); | 954 SetBucketAsCString(kBucketId, NULL); |
| 955 cmd.Init(client_program_id_, kLocation, kBucketId); | 955 cmd.Init(client_program_id_, kLocation, kBucketId); |
| 956 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 956 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 957 // Check bad program id | 957 // Check bad program id |
| 958 SetBucketAsCString(kBucketId, kName); | 958 SetBucketAsCString(kBucketId, kName); |
| 959 cmd.Init(kInvalidClientId, kLocation, kBucketId); | 959 cmd.Init(kInvalidClientId, kLocation, kBucketId); |
| 960 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 960 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 961 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 961 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 962 } | 962 } |
| 963 | 963 |
| 964 TEST_F(GLES2DecoderWithShaderTest, GetAttribLocation) { | 964 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocation) { |
| 965 const uint32 kNameSize = strlen(kAttrib2Name); | 965 const uint32 kNameSize = strlen(kAttrib2Name); |
| 966 const char* kNonExistentName = "foobar"; | 966 const char* kNonExistentName = "foobar"; |
| 967 const uint32 kNonExistentNameSize = strlen(kNonExistentName); | 967 const uint32 kNonExistentNameSize = strlen(kNonExistentName); |
| 968 typedef GetAttribLocation::Result Result; | 968 typedef GetAttribLocation::Result Result; |
| 969 Result* result = GetSharedMemoryAs<Result*>(); | 969 Result* result = GetSharedMemoryAs<Result*>(); |
| 970 *result = -1; | 970 *result = -1; |
| 971 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); | 971 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); |
| 972 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); | 972 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); |
| 973 memcpy(name, kAttrib2Name, kNameSize); | 973 memcpy(name, kAttrib2Name, kNameSize); |
| 974 GetAttribLocation cmd; | 974 GetAttribLocation cmd; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 985 cmd.Init(client_program_id_, | 985 cmd.Init(client_program_id_, |
| 986 kSharedMemoryId, | 986 kSharedMemoryId, |
| 987 kNameOffset, | 987 kNameOffset, |
| 988 kSharedMemoryId, | 988 kSharedMemoryId, |
| 989 kSharedMemoryOffset, | 989 kSharedMemoryOffset, |
| 990 kNonExistentNameSize); | 990 kNonExistentNameSize); |
| 991 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 991 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 992 EXPECT_EQ(-1, *result); | 992 EXPECT_EQ(-1, *result); |
| 993 } | 993 } |
| 994 | 994 |
| 995 TEST_F(GLES2DecoderWithShaderTest, GetAttribLocationInvalidArgs) { | 995 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationInvalidArgs) { |
| 996 const uint32 kNameSize = strlen(kAttrib2Name); | 996 const uint32 kNameSize = strlen(kAttrib2Name); |
| 997 const char* kBadName = "foo\abar"; | 997 const char* kBadName = "foo\abar"; |
| 998 const uint32 kBadNameSize = strlen(kBadName); | 998 const uint32 kBadNameSize = strlen(kBadName); |
| 999 typedef GetAttribLocation::Result Result; | 999 typedef GetAttribLocation::Result Result; |
| 1000 Result* result = GetSharedMemoryAs<Result*>(); | 1000 Result* result = GetSharedMemoryAs<Result*>(); |
| 1001 *result = -1; | 1001 *result = -1; |
| 1002 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); | 1002 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); |
| 1003 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); | 1003 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); |
| 1004 memcpy(name, kAttrib2Name, kNameSize); | 1004 memcpy(name, kAttrib2Name, kNameSize); |
| 1005 GetAttribLocation cmd; | 1005 GetAttribLocation cmd; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1057 cmd.Init(client_program_id_, | 1057 cmd.Init(client_program_id_, |
| 1058 kSharedMemoryId, | 1058 kSharedMemoryId, |
| 1059 kNameOffset, | 1059 kNameOffset, |
| 1060 kSharedMemoryId, | 1060 kSharedMemoryId, |
| 1061 kSharedMemoryOffset, | 1061 kSharedMemoryOffset, |
| 1062 kBadNameSize); | 1062 kBadNameSize); |
| 1063 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1063 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1064 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1064 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1065 } | 1065 } |
| 1066 | 1066 |
| 1067 TEST_F(GLES2DecoderWithShaderTest, GetAttribLocationBucket) { | 1067 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationBucket) { |
| 1068 const uint32 kBucketId = 123; | 1068 const uint32 kBucketId = 123; |
| 1069 const char* kNonExistentName = "foobar"; | 1069 const char* kNonExistentName = "foobar"; |
| 1070 typedef GetAttribLocationBucket::Result Result; | 1070 typedef GetAttribLocationBucket::Result Result; |
| 1071 Result* result = GetSharedMemoryAs<Result*>(); | 1071 Result* result = GetSharedMemoryAs<Result*>(); |
| 1072 SetBucketAsCString(kBucketId, kAttrib2Name); | 1072 SetBucketAsCString(kBucketId, kAttrib2Name); |
| 1073 *result = -1; | 1073 *result = -1; |
| 1074 GetAttribLocationBucket cmd; | 1074 GetAttribLocationBucket cmd; |
| 1075 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 1075 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 1076 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1076 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1077 EXPECT_EQ(kAttrib2Location, *result); | 1077 EXPECT_EQ(kAttrib2Location, *result); |
| 1078 SetBucketAsCString(kBucketId, kNonExistentName); | 1078 SetBucketAsCString(kBucketId, kNonExistentName); |
| 1079 *result = -1; | 1079 *result = -1; |
| 1080 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 1080 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 1081 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1081 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1082 EXPECT_EQ(-1, *result); | 1082 EXPECT_EQ(-1, *result); |
| 1083 } | 1083 } |
| 1084 | 1084 |
| 1085 TEST_F(GLES2DecoderWithShaderTest, GetAttribLocationBucketInvalidArgs) { | 1085 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationBucketInvalidArgs) { |
| 1086 const uint32 kBucketId = 123; | 1086 const uint32 kBucketId = 123; |
| 1087 typedef GetAttribLocationBucket::Result Result; | 1087 typedef GetAttribLocationBucket::Result Result; |
| 1088 Result* result = GetSharedMemoryAs<Result*>(); | 1088 Result* result = GetSharedMemoryAs<Result*>(); |
| 1089 *result = -1; | 1089 *result = -1; |
| 1090 GetAttribLocationBucket cmd; | 1090 GetAttribLocationBucket cmd; |
| 1091 // Check no bucket | 1091 // Check no bucket |
| 1092 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 1092 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 1093 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1093 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1094 EXPECT_EQ(-1, *result); | 1094 EXPECT_EQ(-1, *result); |
| 1095 // Check bad program id. | 1095 // Check bad program id. |
| 1096 SetBucketAsCString(kBucketId, kAttrib2Name); | 1096 SetBucketAsCString(kBucketId, kAttrib2Name); |
| 1097 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 1097 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 1098 *result = -1; | 1098 *result = -1; |
| 1099 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1099 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1100 EXPECT_EQ(-1, *result); | 1100 EXPECT_EQ(-1, *result); |
| 1101 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1101 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1102 // Check bad memory | 1102 // Check bad memory |
| 1103 cmd.Init(client_program_id_, | 1103 cmd.Init(client_program_id_, |
| 1104 kBucketId, | 1104 kBucketId, |
| 1105 kInvalidSharedMemoryId, | 1105 kInvalidSharedMemoryId, |
| 1106 kSharedMemoryOffset); | 1106 kSharedMemoryOffset); |
| 1107 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1107 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1108 cmd.Init(client_program_id_, | 1108 cmd.Init(client_program_id_, |
| 1109 kBucketId, | 1109 kBucketId, |
| 1110 kSharedMemoryId, | 1110 kSharedMemoryId, |
| 1111 kInvalidSharedMemoryOffset); | 1111 kInvalidSharedMemoryOffset); |
| 1112 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1112 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1113 } | 1113 } |
| 1114 | 1114 |
| 1115 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocation) { | 1115 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocation) { |
| 1116 const uint32 kNameSize = strlen(kUniform2Name); | 1116 const uint32 kNameSize = strlen(kUniform2Name); |
| 1117 const char* kNonExistentName = "foobar"; | 1117 const char* kNonExistentName = "foobar"; |
| 1118 const uint32 kNonExistentNameSize = strlen(kNonExistentName); | 1118 const uint32 kNonExistentNameSize = strlen(kNonExistentName); |
| 1119 typedef GetUniformLocation::Result Result; | 1119 typedef GetUniformLocation::Result Result; |
| 1120 Result* result = GetSharedMemoryAs<Result*>(); | 1120 Result* result = GetSharedMemoryAs<Result*>(); |
| 1121 *result = -1; | 1121 *result = -1; |
| 1122 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); | 1122 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); |
| 1123 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); | 1123 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); |
| 1124 memcpy(name, kUniform2Name, kNameSize); | 1124 memcpy(name, kUniform2Name, kNameSize); |
| 1125 GetUniformLocation cmd; | 1125 GetUniformLocation cmd; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1136 cmd.Init(client_program_id_, | 1136 cmd.Init(client_program_id_, |
| 1137 kSharedMemoryId, | 1137 kSharedMemoryId, |
| 1138 kNameOffset, | 1138 kNameOffset, |
| 1139 kSharedMemoryId, | 1139 kSharedMemoryId, |
| 1140 kSharedMemoryOffset, | 1140 kSharedMemoryOffset, |
| 1141 kNonExistentNameSize); | 1141 kNonExistentNameSize); |
| 1142 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1142 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1143 EXPECT_EQ(-1, *result); | 1143 EXPECT_EQ(-1, *result); |
| 1144 } | 1144 } |
| 1145 | 1145 |
| 1146 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationInvalidArgs) { | 1146 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationInvalidArgs) { |
| 1147 const uint32 kNameSize = strlen(kUniform2Name); | 1147 const uint32 kNameSize = strlen(kUniform2Name); |
| 1148 const char* kBadName = "foo\abar"; | 1148 const char* kBadName = "foo\abar"; |
| 1149 const uint32 kBadNameSize = strlen(kBadName); | 1149 const uint32 kBadNameSize = strlen(kBadName); |
| 1150 typedef GetUniformLocation::Result Result; | 1150 typedef GetUniformLocation::Result Result; |
| 1151 Result* result = GetSharedMemoryAs<Result*>(); | 1151 Result* result = GetSharedMemoryAs<Result*>(); |
| 1152 *result = -1; | 1152 *result = -1; |
| 1153 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); | 1153 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); |
| 1154 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); | 1154 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); |
| 1155 memcpy(name, kUniform2Name, kNameSize); | 1155 memcpy(name, kUniform2Name, kNameSize); |
| 1156 GetUniformLocation cmd; | 1156 GetUniformLocation cmd; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1208 cmd.Init(client_program_id_, | 1208 cmd.Init(client_program_id_, |
| 1209 kSharedMemoryId, | 1209 kSharedMemoryId, |
| 1210 kNameOffset, | 1210 kNameOffset, |
| 1211 kSharedMemoryId, | 1211 kSharedMemoryId, |
| 1212 kSharedMemoryOffset, | 1212 kSharedMemoryOffset, |
| 1213 kBadNameSize); | 1213 kBadNameSize); |
| 1214 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1214 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1215 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1215 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1216 } | 1216 } |
| 1217 | 1217 |
| 1218 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationBucket) { | 1218 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationBucket) { |
| 1219 const uint32 kBucketId = 123; | 1219 const uint32 kBucketId = 123; |
| 1220 const char* kNonExistentName = "foobar"; | 1220 const char* kNonExistentName = "foobar"; |
| 1221 typedef GetUniformLocationBucket::Result Result; | 1221 typedef GetUniformLocationBucket::Result Result; |
| 1222 Result* result = GetSharedMemoryAs<Result*>(); | 1222 Result* result = GetSharedMemoryAs<Result*>(); |
| 1223 SetBucketAsCString(kBucketId, kUniform2Name); | 1223 SetBucketAsCString(kBucketId, kUniform2Name); |
| 1224 *result = -1; | 1224 *result = -1; |
| 1225 GetUniformLocationBucket cmd; | 1225 GetUniformLocationBucket cmd; |
| 1226 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 1226 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 1227 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1227 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1228 EXPECT_EQ(kUniform2FakeLocation, *result); | 1228 EXPECT_EQ(kUniform2FakeLocation, *result); |
| 1229 SetBucketAsCString(kBucketId, kNonExistentName); | 1229 SetBucketAsCString(kBucketId, kNonExistentName); |
| 1230 *result = -1; | 1230 *result = -1; |
| 1231 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 1231 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 1232 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1232 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1233 EXPECT_EQ(-1, *result); | 1233 EXPECT_EQ(-1, *result); |
| 1234 } | 1234 } |
| 1235 | 1235 |
| 1236 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationBucketInvalidArgs) { | 1236 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationBucketInvalidArgs) { |
| 1237 const uint32 kBucketId = 123; | 1237 const uint32 kBucketId = 123; |
| 1238 typedef GetUniformLocationBucket::Result Result; | 1238 typedef GetUniformLocationBucket::Result Result; |
| 1239 Result* result = GetSharedMemoryAs<Result*>(); | 1239 Result* result = GetSharedMemoryAs<Result*>(); |
| 1240 *result = -1; | 1240 *result = -1; |
| 1241 GetUniformLocationBucket cmd; | 1241 GetUniformLocationBucket cmd; |
| 1242 // Check no bucket | 1242 // Check no bucket |
| 1243 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 1243 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 1244 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1244 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1245 EXPECT_EQ(-1, *result); | 1245 EXPECT_EQ(-1, *result); |
| 1246 // Check bad program id. | 1246 // Check bad program id. |
| 1247 SetBucketAsCString(kBucketId, kUniform2Name); | 1247 SetBucketAsCString(kBucketId, kUniform2Name); |
| 1248 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 1248 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 1249 *result = -1; | 1249 *result = -1; |
| 1250 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1250 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1251 EXPECT_EQ(-1, *result); | 1251 EXPECT_EQ(-1, *result); |
| 1252 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1252 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1253 // Check bad memory | 1253 // Check bad memory |
| 1254 cmd.Init(client_program_id_, | 1254 cmd.Init(client_program_id_, |
| 1255 kBucketId, | 1255 kBucketId, |
| 1256 kInvalidSharedMemoryId, | 1256 kInvalidSharedMemoryId, |
| 1257 kSharedMemoryOffset); | 1257 kSharedMemoryOffset); |
| 1258 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1258 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1259 cmd.Init(client_program_id_, | 1259 cmd.Init(client_program_id_, |
| 1260 kBucketId, | 1260 kBucketId, |
| 1261 kSharedMemoryId, | 1261 kSharedMemoryId, |
| 1262 kInvalidSharedMemoryOffset); | 1262 kInvalidSharedMemoryOffset); |
| 1263 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1263 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1264 } | 1264 } |
| 1265 | 1265 |
| 1266 TEST_F(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUM) { | 1266 TEST_P(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUM) { |
| 1267 const GLint kLocation = 2; | 1267 const GLint kLocation = 2; |
| 1268 const char* kName = "testing"; | 1268 const char* kName = "testing"; |
| 1269 const uint32 kNameSize = strlen(kName); | 1269 const uint32 kNameSize = strlen(kName); |
| 1270 const char* kBadName1 = "gl_testing"; | 1270 const char* kBadName1 = "gl_testing"; |
| 1271 const uint32 kBadName1Size = strlen(kBadName1); | 1271 const uint32 kBadName1Size = strlen(kBadName1); |
| 1272 const char* kBadName2 = "testing[1]"; | 1272 const char* kBadName2 = "testing[1]"; |
| 1273 const uint32 kBadName2Size = strlen(kBadName2); | 1273 const uint32 kBadName2Size = strlen(kBadName2); |
| 1274 memcpy(shared_memory_address_, kName, kNameSize); | 1274 memcpy(shared_memory_address_, kName, kNameSize); |
| 1275 BindUniformLocationCHROMIUM cmd; | 1275 BindUniformLocationCHROMIUM cmd; |
| 1276 cmd.Init(client_program_id_, | 1276 cmd.Init(client_program_id_, |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1319 memcpy(shared_memory_address_, kBadName2, kBadName2Size); | 1319 memcpy(shared_memory_address_, kBadName2, kBadName2Size); |
| 1320 cmd.Init(client_program_id_, | 1320 cmd.Init(client_program_id_, |
| 1321 kLocation, | 1321 kLocation, |
| 1322 kSharedMemoryId, | 1322 kSharedMemoryId, |
| 1323 kSharedMemoryOffset, | 1323 kSharedMemoryOffset, |
| 1324 kBadName2Size); | 1324 kBadName2Size); |
| 1325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1326 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1326 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1327 } | 1327 } |
| 1328 | 1328 |
| 1329 TEST_F(GLES2DecoderManualInitTest, ClearUniformsBeforeFirstProgramUse) { | 1329 TEST_P(GLES2DecoderManualInitTest, ClearUniformsBeforeFirstProgramUse) { |
| 1330 CommandLine command_line(0, NULL); | 1330 CommandLine command_line(0, NULL); |
| 1331 command_line.AppendSwitchASCII( | 1331 command_line.AppendSwitchASCII( |
| 1332 switches::kGpuDriverBugWorkarounds, | 1332 switches::kGpuDriverBugWorkarounds, |
| 1333 base::IntToString(gpu::CLEAR_UNIFORMS_BEFORE_FIRST_PROGRAM_USE)); | 1333 base::IntToString(gpu::CLEAR_UNIFORMS_BEFORE_FIRST_PROGRAM_USE)); |
| 1334 InitState init; | 1334 InitState init; |
| 1335 init.gl_version = "3.0"; | 1335 init.gl_version = "3.0"; |
| 1336 init.has_alpha = true; | 1336 init.has_alpha = true; |
| 1337 init.request_alpha = true; | 1337 init.request_alpha = true; |
| 1338 init.bind_generates_resource = true; | 1338 init.bind_generates_resource = true; |
| 1339 InitDecoderWithCommandLine(init, &command_line); | 1339 InitDecoderWithCommandLine(init, &command_line); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1382 } | 1382 } |
| 1383 | 1383 |
| 1384 // TODO(gman): DeleteProgram | 1384 // TODO(gman): DeleteProgram |
| 1385 | 1385 |
| 1386 // TODO(gman): UseProgram | 1386 // TODO(gman): UseProgram |
| 1387 | 1387 |
| 1388 // TODO(gman): DeleteShader | 1388 // TODO(gman): DeleteShader |
| 1389 | 1389 |
| 1390 } // namespace gles2 | 1390 } // namespace gles2 |
| 1391 } // namespace gpu | 1391 } // namespace gpu |
| OLD | NEW |