| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 ASSERT_TRUE(bucket != NULL); | 72 ASSERT_TRUE(bucket != NULL); |
| 73 EXPECT_EQ(sizeof(ProgramInfoHeader), bucket->size()); | 73 EXPECT_EQ(sizeof(ProgramInfoHeader), bucket->size()); |
| 74 ProgramInfoHeader* info = | 74 ProgramInfoHeader* info = |
| 75 bucket->GetDataAs<ProgramInfoHeader*>(0, sizeof(ProgramInfoHeader)); | 75 bucket->GetDataAs<ProgramInfoHeader*>(0, sizeof(ProgramInfoHeader)); |
| 76 ASSERT_TRUE(info != 0); | 76 ASSERT_TRUE(info != 0); |
| 77 EXPECT_EQ(0u, info->link_status); | 77 EXPECT_EQ(0u, info->link_status); |
| 78 EXPECT_EQ(0u, info->num_attribs); | 78 EXPECT_EQ(0u, info->num_attribs); |
| 79 EXPECT_EQ(0u, info->num_uniforms); | 79 EXPECT_EQ(0u, info->num_uniforms); |
| 80 } | 80 } |
| 81 | 81 |
| 82 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlocksCHROMIUMValidArgs) { | 82 TEST_P(GLES3DecoderWithShaderTest, GetUniformBlocksCHROMIUMValidArgs) { |
| 83 const uint32_t kBucketId = 123; | 83 const uint32_t kBucketId = 123; |
| 84 GetUniformBlocksCHROMIUM cmd; | 84 GetUniformBlocksCHROMIUM cmd; |
| 85 cmd.Init(client_program_id_, kBucketId); | 85 cmd.Init(client_program_id_, kBucketId); |
| 86 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 86 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 87 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 87 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 88 .RetiresOnSaturation(); | 88 .RetiresOnSaturation(); |
| 89 EXPECT_CALL(*gl_, | 89 EXPECT_CALL(*gl_, |
| 90 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORM_BLOCKS, _)) | 90 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORM_BLOCKS, _)) |
| 91 .WillOnce(SetArgPointee<2>(0)) | 91 .WillOnce(SetArgPointee<2>(0)) |
| 92 .RetiresOnSaturation(); | 92 .RetiresOnSaturation(); |
| 93 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 94 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 93 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 95 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 94 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 96 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size()); | 95 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size()); |
| 97 UniformBlocksHeader* header = | 96 UniformBlocksHeader* header = |
| 98 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader)); | 97 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader)); |
| 99 EXPECT_TRUE(header != NULL); | 98 EXPECT_TRUE(header != NULL); |
| 100 EXPECT_EQ(0u, header->num_uniform_blocks); | 99 EXPECT_EQ(0u, header->num_uniform_blocks); |
| 101 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 102 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 103 } | 100 } |
| 104 | 101 |
| 105 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlocksCHROMIUMInvalidArgs) { | 102 TEST_P(GLES3DecoderWithShaderTest, GetUniformBlocksCHROMIUMInvalidArgs) { |
| 106 const uint32_t kBucketId = 123; | 103 const uint32_t kBucketId = 123; |
| 107 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 104 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 108 EXPECT_TRUE(bucket == NULL); | 105 EXPECT_TRUE(bucket == NULL); |
| 109 GetUniformBlocksCHROMIUM cmd; | 106 GetUniformBlocksCHROMIUM cmd; |
| 110 cmd.Init(kInvalidClientId, kBucketId); | 107 cmd.Init(kInvalidClientId, kBucketId); |
| 111 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 112 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 108 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 113 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 109 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 114 bucket = decoder_->GetBucket(kBucketId); | 110 bucket = decoder_->GetBucket(kBucketId); |
| 115 ASSERT_TRUE(bucket != NULL); | 111 ASSERT_TRUE(bucket != NULL); |
| 116 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size()); | 112 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size()); |
| 117 UniformBlocksHeader* header = | 113 UniformBlocksHeader* header = |
| 118 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader)); | 114 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader)); |
| 119 ASSERT_TRUE(header != NULL); | 115 ASSERT_TRUE(header != NULL); |
| 120 EXPECT_EQ(0u, header->num_uniform_blocks); | 116 EXPECT_EQ(0u, header->num_uniform_blocks); |
| 121 } | 117 } |
| 122 | 118 |
| 123 TEST_P(GLES2DecoderWithShaderTest, GetUniformsES3CHROMIUMValidArgs) { | 119 TEST_P(GLES3DecoderWithShaderTest, GetUniformsES3CHROMIUMValidArgs) { |
| 124 const uint32_t kBucketId = 123; | 120 const uint32_t kBucketId = 123; |
| 125 GetUniformsES3CHROMIUM cmd; | 121 GetUniformsES3CHROMIUM cmd; |
| 126 cmd.Init(client_program_id_, kBucketId); | 122 cmd.Init(client_program_id_, kBucketId); |
| 127 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 123 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 128 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 124 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 129 .RetiresOnSaturation(); | 125 .RetiresOnSaturation(); |
| 130 EXPECT_CALL(*gl_, | 126 EXPECT_CALL(*gl_, |
| 131 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORMS, _)) | 127 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORMS, _)) |
| 132 .WillOnce(SetArgPointee<2>(0)) | 128 .WillOnce(SetArgPointee<2>(0)) |
| 133 .RetiresOnSaturation(); | 129 .RetiresOnSaturation(); |
| 134 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 135 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 130 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 136 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 131 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 137 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size()); | 132 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size()); |
| 138 UniformsES3Header* header = | 133 UniformsES3Header* header = |
| 139 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header)); | 134 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header)); |
| 140 EXPECT_TRUE(header != NULL); | 135 EXPECT_TRUE(header != NULL); |
| 141 EXPECT_EQ(0u, header->num_uniforms); | 136 EXPECT_EQ(0u, header->num_uniforms); |
| 142 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 143 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 144 } | 137 } |
| 145 | 138 |
| 146 TEST_P(GLES2DecoderWithShaderTest, GetUniformsES3CHROMIUMInvalidArgs) { | 139 TEST_P(GLES3DecoderWithShaderTest, GetUniformsES3CHROMIUMInvalidArgs) { |
| 147 const uint32_t kBucketId = 123; | 140 const uint32_t kBucketId = 123; |
| 148 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 141 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 149 EXPECT_TRUE(bucket == NULL); | 142 EXPECT_TRUE(bucket == NULL); |
| 150 GetUniformsES3CHROMIUM cmd; | 143 GetUniformsES3CHROMIUM cmd; |
| 151 cmd.Init(kInvalidClientId, kBucketId); | 144 cmd.Init(kInvalidClientId, kBucketId); |
| 152 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 153 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 145 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 154 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 146 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 155 bucket = decoder_->GetBucket(kBucketId); | 147 bucket = decoder_->GetBucket(kBucketId); |
| 156 ASSERT_TRUE(bucket != NULL); | 148 ASSERT_TRUE(bucket != NULL); |
| 157 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size()); | 149 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size()); |
| 158 UniformsES3Header* header = | 150 UniformsES3Header* header = |
| 159 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header)); | 151 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header)); |
| 160 ASSERT_TRUE(header != NULL); | 152 ASSERT_TRUE(header != NULL); |
| 161 EXPECT_EQ(0u, header->num_uniforms); | 153 EXPECT_EQ(0u, header->num_uniforms); |
| 162 } | 154 } |
| 163 | 155 |
| 164 TEST_P(GLES2DecoderWithShaderTest, | 156 TEST_P(GLES3DecoderWithShaderTest, |
| 165 GetTransformFeedbackVaryingsCHROMIUMValidArgs) { | 157 GetTransformFeedbackVaryingsCHROMIUMValidArgs) { |
| 166 const uint32_t kBucketId = 123; | 158 const uint32_t kBucketId = 123; |
| 167 GetTransformFeedbackVaryingsCHROMIUM cmd; | 159 GetTransformFeedbackVaryingsCHROMIUM cmd; |
| 168 cmd.Init(client_program_id_, kBucketId); | 160 cmd.Init(client_program_id_, kBucketId); |
| 169 EXPECT_CALL(*(gl_.get()), | 161 EXPECT_CALL(*(gl_.get()), |
| 170 GetProgramiv(kServiceProgramId, | 162 GetProgramiv(kServiceProgramId, |
| 171 GL_TRANSFORM_FEEDBACK_BUFFER_MODE, | 163 GL_TRANSFORM_FEEDBACK_BUFFER_MODE, |
| 172 _)) | 164 _)) |
| 173 .WillOnce(SetArgPointee<2>(GL_INTERLEAVED_ATTRIBS)) | 165 .WillOnce(SetArgPointee<2>(GL_INTERLEAVED_ATTRIBS)) |
| 174 .RetiresOnSaturation(); | 166 .RetiresOnSaturation(); |
| 175 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 167 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 176 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 168 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 177 .RetiresOnSaturation(); | 169 .RetiresOnSaturation(); |
| 178 EXPECT_CALL(*gl_, | 170 EXPECT_CALL(*gl_, |
| 179 GetProgramiv( | 171 GetProgramiv( |
| 180 kServiceProgramId, GL_TRANSFORM_FEEDBACK_VARYINGS, _)) | 172 kServiceProgramId, GL_TRANSFORM_FEEDBACK_VARYINGS, _)) |
| 181 .WillOnce(SetArgPointee<2>(0)) | 173 .WillOnce(SetArgPointee<2>(0)) |
| 182 .RetiresOnSaturation(); | 174 .RetiresOnSaturation(); |
| 183 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 184 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 175 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 185 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 176 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 186 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size()); | 177 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size()); |
| 187 TransformFeedbackVaryingsHeader* header = | 178 TransformFeedbackVaryingsHeader* header = |
| 188 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>( | 179 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>( |
| 189 0, sizeof(TransformFeedbackVaryingsHeader)); | 180 0, sizeof(TransformFeedbackVaryingsHeader)); |
| 190 EXPECT_TRUE(header != NULL); | 181 EXPECT_TRUE(header != NULL); |
| 191 EXPECT_EQ(static_cast<uint32_t>(GL_INTERLEAVED_ATTRIBS), | 182 EXPECT_EQ(static_cast<uint32_t>(GL_INTERLEAVED_ATTRIBS), |
| 192 header->transform_feedback_buffer_mode); | 183 header->transform_feedback_buffer_mode); |
| 193 EXPECT_EQ(0u, header->num_transform_feedback_varyings); | 184 EXPECT_EQ(0u, header->num_transform_feedback_varyings); |
| 194 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 195 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 196 } | 185 } |
| 197 | 186 |
| 198 TEST_P(GLES2DecoderWithShaderTest, | 187 TEST_P(GLES3DecoderWithShaderTest, |
| 199 GetTransformFeedbackVaryingsCHROMIUMInvalidArgs) { | 188 GetTransformFeedbackVaryingsCHROMIUMInvalidArgs) { |
| 200 const uint32_t kBucketId = 123; | 189 const uint32_t kBucketId = 123; |
| 201 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 190 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 202 EXPECT_TRUE(bucket == NULL); | 191 EXPECT_TRUE(bucket == NULL); |
| 203 GetTransformFeedbackVaryingsCHROMIUM cmd; | 192 GetTransformFeedbackVaryingsCHROMIUM cmd; |
| 204 cmd.Init(kInvalidClientId, kBucketId); | 193 cmd.Init(kInvalidClientId, kBucketId); |
| 205 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 206 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 194 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 207 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 195 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 208 bucket = decoder_->GetBucket(kBucketId); | 196 bucket = decoder_->GetBucket(kBucketId); |
| 209 ASSERT_TRUE(bucket != NULL); | 197 ASSERT_TRUE(bucket != NULL); |
| 210 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size()); | 198 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size()); |
| 211 TransformFeedbackVaryingsHeader* header = | 199 TransformFeedbackVaryingsHeader* header = |
| 212 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>( | 200 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>( |
| 213 0, sizeof(TransformFeedbackVaryingsHeader)); | 201 0, sizeof(TransformFeedbackVaryingsHeader)); |
| 214 ASSERT_TRUE(header != NULL); | 202 ASSERT_TRUE(header != NULL); |
| 215 EXPECT_EQ(0u, header->num_transform_feedback_varyings); | 203 EXPECT_EQ(0u, header->num_transform_feedback_varyings); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 kSharedMemoryOffset); | 304 kSharedMemoryOffset); |
| 317 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0); | 305 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0); |
| 318 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 306 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 319 cmd.Init(client_program_id_, | 307 cmd.Init(client_program_id_, |
| 320 kUniform2FakeLocation, | 308 kUniform2FakeLocation, |
| 321 kSharedMemoryId, | 309 kSharedMemoryId, |
| 322 kInvalidSharedMemoryOffset); | 310 kInvalidSharedMemoryOffset); |
| 323 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 311 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 324 }; | 312 }; |
| 325 | 313 |
| 326 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivSucceeds) { | 314 TEST_P(GLES3DecoderWithShaderTest, GetUniformuivSucceeds) { |
| 327 GetUniformuiv::Result* result = | 315 GetUniformuiv::Result* result = |
| 328 static_cast<GetUniformuiv::Result*>(shared_memory_address_); | 316 static_cast<GetUniformuiv::Result*>(shared_memory_address_); |
| 329 result->size = 0; | 317 result->size = 0; |
| 330 GetUniformuiv cmd; | 318 GetUniformuiv cmd; |
| 331 cmd.Init(client_program_id_, | 319 cmd.Init(client_program_id_, |
| 332 kUniform2FakeLocation, | 320 kUniform2FakeLocation, |
| 333 kSharedMemoryId, | 321 kSharedMemoryId, |
| 334 kSharedMemoryOffset); | 322 kSharedMemoryOffset); |
| 335 EXPECT_CALL(*gl_, GetUniformuiv(kServiceProgramId, kUniform2RealLocation, _)) | 323 EXPECT_CALL(*gl_, GetUniformuiv(kServiceProgramId, kUniform2RealLocation, _)) |
| 336 .Times(1); | 324 .Times(1); |
| 337 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 338 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 339 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type), | 326 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type), |
| 340 static_cast<uint32_t>(result->GetNumResults())); | 327 static_cast<uint32_t>(result->GetNumResults())); |
| 341 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 342 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 343 } | 328 } |
| 344 | 329 |
| 345 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivArrayElementSucceeds) { | 330 TEST_P(GLES3DecoderWithShaderTest, GetUniformuivArrayElementSucceeds) { |
| 346 GetUniformuiv::Result* result = | 331 GetUniformuiv::Result* result = |
| 347 static_cast<GetUniformuiv::Result*>(shared_memory_address_); | 332 static_cast<GetUniformuiv::Result*>(shared_memory_address_); |
| 348 result->size = 0; | 333 result->size = 0; |
| 349 GetUniformuiv cmd; | 334 GetUniformuiv cmd; |
| 350 cmd.Init(client_program_id_, | 335 cmd.Init(client_program_id_, |
| 351 kUniform2ElementFakeLocation, | 336 kUniform2ElementFakeLocation, |
| 352 kSharedMemoryId, | 337 kSharedMemoryId, |
| 353 kSharedMemoryOffset); | 338 kSharedMemoryOffset); |
| 354 EXPECT_CALL(*gl_, | 339 EXPECT_CALL(*gl_, |
| 355 GetUniformuiv(kServiceProgramId, kUniform2ElementRealLocation, _)) | 340 GetUniformuiv(kServiceProgramId, kUniform2ElementRealLocation, _)) |
| 356 .Times(1); | 341 .Times(1); |
| 357 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 358 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 342 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 359 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type), | 343 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type), |
| 360 static_cast<uint32_t>(result->GetNumResults())); | 344 static_cast<uint32_t>(result->GetNumResults())); |
| 361 } | 345 } |
| 362 | 346 |
| 363 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadProgramFails) { | 347 TEST_P(GLES3DecoderWithShaderTest, GetUniformuivBadProgramFails) { |
| 364 GetUniformuiv::Result* result = | 348 GetUniformuiv::Result* result = |
| 365 static_cast<GetUniformuiv::Result*>(shared_memory_address_); | 349 static_cast<GetUniformuiv::Result*>(shared_memory_address_); |
| 366 result->size = 0; | 350 result->size = 0; |
| 367 GetUniformuiv cmd; | 351 GetUniformuiv cmd; |
| 368 // non-existant program | 352 // non-existant program |
| 369 cmd.Init(kInvalidClientId, | 353 cmd.Init(kInvalidClientId, |
| 370 kUniform2FakeLocation, | 354 kUniform2FakeLocation, |
| 371 kSharedMemoryId, | 355 kSharedMemoryId, |
| 372 kSharedMemoryOffset); | 356 kSharedMemoryOffset); |
| 373 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); | 357 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); |
| 374 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 375 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 358 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 376 EXPECT_EQ(0U, result->size); | 359 EXPECT_EQ(0U, result->size); |
| 377 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 360 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 378 // Valid id that is not a program. The GL spec requires a different error for | 361 // Valid id that is not a program. The GL spec requires a different error for |
| 379 // this case. | 362 // this case. |
| 380 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 363 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 381 result->size = kInitialResult; | 364 result->size = kInitialResult; |
| 382 cmd.Init(client_shader_id_, | 365 cmd.Init(client_shader_id_, |
| 383 kUniform2FakeLocation, | 366 kUniform2FakeLocation, |
| 384 kSharedMemoryId, | 367 kSharedMemoryId, |
| (...skipping 13 matching lines...) Expand all Loading... |
| 398 result->size = kInitialResult; | 381 result->size = kInitialResult; |
| 399 cmd.Init(kNewClientId, | 382 cmd.Init(kNewClientId, |
| 400 kUniform2FakeLocation, | 383 kUniform2FakeLocation, |
| 401 kSharedMemoryId, | 384 kSharedMemoryId, |
| 402 kSharedMemoryOffset); | 385 kSharedMemoryOffset); |
| 403 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 386 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 404 EXPECT_EQ(0U, result->size); | 387 EXPECT_EQ(0U, result->size); |
| 405 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 388 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 406 } | 389 } |
| 407 | 390 |
| 408 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadLocationFails) { | 391 TEST_P(GLES3DecoderWithShaderTest, GetUniformuivBadLocationFails) { |
| 409 GetUniformuiv::Result* result = | 392 GetUniformuiv::Result* result = |
| 410 static_cast<GetUniformuiv::Result*>(shared_memory_address_); | 393 static_cast<GetUniformuiv::Result*>(shared_memory_address_); |
| 411 result->size = 0; | 394 result->size = 0; |
| 412 GetUniformuiv cmd; | 395 GetUniformuiv cmd; |
| 413 // invalid location | 396 // invalid location |
| 414 cmd.Init(client_program_id_, | 397 cmd.Init(client_program_id_, |
| 415 kInvalidUniformLocation, | 398 kInvalidUniformLocation, |
| 416 kSharedMemoryId, | 399 kSharedMemoryId, |
| 417 kSharedMemoryOffset); | 400 kSharedMemoryOffset); |
| 418 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); | 401 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); |
| 419 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 402 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 421 EXPECT_EQ(0U, result->size); | 403 EXPECT_EQ(0U, result->size); |
| 422 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 404 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 423 } | 405 } |
| 424 | 406 |
| 425 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadSharedMemoryFails) { | 407 TEST_P(GLES3DecoderWithShaderTest, GetUniformuivBadSharedMemoryFails) { |
| 426 GetUniformuiv cmd; | 408 GetUniformuiv cmd; |
| 427 cmd.Init(client_program_id_, | 409 cmd.Init(client_program_id_, |
| 428 kUniform2FakeLocation, | 410 kUniform2FakeLocation, |
| 429 kInvalidSharedMemoryId, | 411 kInvalidSharedMemoryId, |
| 430 kSharedMemoryOffset); | 412 kSharedMemoryOffset); |
| 431 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); | 413 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); |
| 432 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 414 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 433 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 434 cmd.Init(client_program_id_, | 415 cmd.Init(client_program_id_, |
| 435 kUniform2FakeLocation, | 416 kUniform2FakeLocation, |
| 436 kSharedMemoryId, | 417 kSharedMemoryId, |
| 437 kInvalidSharedMemoryOffset); | 418 kInvalidSharedMemoryOffset); |
| 438 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 419 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 439 }; | 420 }; |
| 440 | 421 |
| 441 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { | 422 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { |
| 442 GetUniformfv::Result* result = | 423 GetUniformfv::Result* result = |
| 443 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 424 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 778 shared_memory_offset_); | 759 shared_memory_offset_); |
| 779 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 760 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 780 cmd.Init(client_program_id_, | 761 cmd.Init(client_program_id_, |
| 781 kUniformIndex, | 762 kUniformIndex, |
| 782 kBucketId, | 763 kBucketId, |
| 783 shared_memory_id_, | 764 shared_memory_id_, |
| 784 kInvalidSharedMemoryOffset); | 765 kInvalidSharedMemoryOffset); |
| 785 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 766 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 786 } | 767 } |
| 787 | 768 |
| 788 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameSucceeds) { | 769 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockNameSucceeds) { |
| 789 const uint32_t kBucketId = 123; | 770 const uint32_t kBucketId = 123; |
| 790 GetActiveUniformBlockName cmd; | 771 GetActiveUniformBlockName cmd; |
| 791 typedef GetActiveUniformBlockName::Result Result; | 772 typedef GetActiveUniformBlockName::Result Result; |
| 792 Result* result = static_cast<Result*>(shared_memory_address_); | 773 Result* result = static_cast<Result*>(shared_memory_address_); |
| 793 *result = 0; | 774 *result = 0; |
| 794 cmd.Init(client_program_id_, | 775 cmd.Init(client_program_id_, |
| 795 0, | 776 0, |
| 796 kBucketId, | 777 kBucketId, |
| 797 shared_memory_id_, | 778 shared_memory_id_, |
| 798 shared_memory_offset_); | 779 shared_memory_offset_); |
| 799 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 780 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 800 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 781 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 801 .RetiresOnSaturation(); | 782 .RetiresOnSaturation(); |
| 802 const char kName[] = "HolyCow"; | 783 const char kName[] = "HolyCow"; |
| 803 const GLsizei kMaxLength = strlen(kName) + 1; | 784 const GLsizei kMaxLength = strlen(kName) + 1; |
| 804 EXPECT_CALL(*gl_, | 785 EXPECT_CALL(*gl_, |
| 805 GetProgramiv(kServiceProgramId, | 786 GetProgramiv(kServiceProgramId, |
| 806 GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, _)) | 787 GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, _)) |
| 807 .WillOnce(SetArgPointee<2>(kMaxLength)) | 788 .WillOnce(SetArgPointee<2>(kMaxLength)) |
| 808 .RetiresOnSaturation(); | 789 .RetiresOnSaturation(); |
| 809 EXPECT_CALL(*gl_, | 790 EXPECT_CALL(*gl_, |
| 810 GetActiveUniformBlockName(kServiceProgramId, 0, _, _, _)) | 791 GetActiveUniformBlockName(kServiceProgramId, 0, _, _, _)) |
| 811 .WillOnce(DoAll(SetArgPointee<3>(strlen(kName)), | 792 .WillOnce(DoAll(SetArgPointee<3>(strlen(kName)), |
| 812 SetArrayArgument<4>(kName, kName + strlen(kName) + 1))) | 793 SetArrayArgument<4>(kName, kName + strlen(kName) + 1))) |
| 813 .RetiresOnSaturation(); | 794 .RetiresOnSaturation(); |
| 814 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 815 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 795 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 816 EXPECT_NE(0, *result); | 796 EXPECT_NE(0, *result); |
| 817 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 797 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 818 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 798 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 819 ASSERT_TRUE(bucket != NULL); | 799 ASSERT_TRUE(bucket != NULL); |
| 820 EXPECT_EQ(0, | 800 EXPECT_EQ(0, |
| 821 memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size())); | 801 memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size())); |
| 822 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 823 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 824 } | 802 } |
| 825 | 803 |
| 826 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameUnlinkedProgram) { | 804 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockNameUnlinkedProgram) { |
| 827 const uint32_t kBucketId = 123; | 805 const uint32_t kBucketId = 123; |
| 828 GetActiveUniformBlockName cmd; | 806 GetActiveUniformBlockName cmd; |
| 829 typedef GetActiveUniformBlockName::Result Result; | 807 typedef GetActiveUniformBlockName::Result Result; |
| 830 Result* result = static_cast<Result*>(shared_memory_address_); | 808 Result* result = static_cast<Result*>(shared_memory_address_); |
| 831 *result = 0; | 809 *result = 0; |
| 832 cmd.Init(client_program_id_, | 810 cmd.Init(client_program_id_, |
| 833 0, | 811 0, |
| 834 kBucketId, | 812 kBucketId, |
| 835 shared_memory_id_, | 813 shared_memory_id_, |
| 836 shared_memory_offset_); | 814 shared_memory_offset_); |
| 837 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 815 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 838 .WillOnce(SetArgPointee<2>(GL_FALSE)) | 816 .WillOnce(SetArgPointee<2>(GL_FALSE)) |
| 839 .RetiresOnSaturation(); | 817 .RetiresOnSaturation(); |
| 840 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 841 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 818 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 842 EXPECT_EQ(0, *result); | 819 EXPECT_EQ(0, *result); |
| 843 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 820 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 844 } | 821 } |
| 845 | 822 |
| 846 TEST_P(GLES2DecoderWithShaderTest, | 823 TEST_P(GLES3DecoderWithShaderTest, |
| 847 GetActiveUniformBlockNameResultNotInitFails) { | 824 GetActiveUniformBlockNameResultNotInitFails) { |
| 848 const uint32_t kBucketId = 123; | 825 const uint32_t kBucketId = 123; |
| 849 GetActiveUniformBlockName cmd; | 826 GetActiveUniformBlockName cmd; |
| 850 typedef GetActiveUniformBlockName::Result Result; | 827 typedef GetActiveUniformBlockName::Result Result; |
| 851 Result* result = static_cast<Result*>(shared_memory_address_); | 828 Result* result = static_cast<Result*>(shared_memory_address_); |
| 852 *result = 1; | 829 *result = 1; |
| 853 cmd.Init(client_program_id_, | 830 cmd.Init(client_program_id_, |
| 854 0, | 831 0, |
| 855 kBucketId, | 832 kBucketId, |
| 856 shared_memory_id_, | 833 shared_memory_id_, |
| 857 shared_memory_offset_); | 834 shared_memory_offset_); |
| 858 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 859 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 835 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 860 } | 836 } |
| 861 | 837 |
| 862 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameBadProgramFails) { | 838 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockNameBadProgramFails) { |
| 863 const uint32_t kBucketId = 123; | 839 const uint32_t kBucketId = 123; |
| 864 GetActiveUniformBlockName cmd; | 840 GetActiveUniformBlockName cmd; |
| 865 typedef GetActiveUniformBlockName::Result Result; | 841 typedef GetActiveUniformBlockName::Result Result; |
| 866 Result* result = static_cast<Result*>(shared_memory_address_); | 842 Result* result = static_cast<Result*>(shared_memory_address_); |
| 867 *result = 0; | 843 *result = 0; |
| 868 cmd.Init(kInvalidClientId, | 844 cmd.Init(kInvalidClientId, |
| 869 0, | 845 0, |
| 870 kBucketId, | 846 kBucketId, |
| 871 shared_memory_id_, | 847 shared_memory_id_, |
| 872 shared_memory_offset_); | 848 shared_memory_offset_); |
| 873 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 874 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 849 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 875 EXPECT_EQ(0, *result); | 850 EXPECT_EQ(0, *result); |
| 876 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 851 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 877 } | 852 } |
| 878 | 853 |
| 879 TEST_P(GLES2DecoderWithShaderTest, | 854 TEST_P(GLES3DecoderWithShaderTest, |
| 880 GetActiveUniformBlockNameBadSharedMemoryFails) { | 855 GetActiveUniformBlockNameBadSharedMemoryFails) { |
| 881 const uint32_t kBucketId = 123; | 856 const uint32_t kBucketId = 123; |
| 882 GetActiveUniformBlockName cmd; | 857 GetActiveUniformBlockName cmd; |
| 883 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 884 cmd.Init(client_program_id_, | 858 cmd.Init(client_program_id_, |
| 885 0, | 859 0, |
| 886 kBucketId, | 860 kBucketId, |
| 887 kInvalidSharedMemoryId, | 861 kInvalidSharedMemoryId, |
| 888 shared_memory_offset_); | 862 shared_memory_offset_); |
| 889 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 863 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 890 cmd.Init(client_program_id_, | 864 cmd.Init(client_program_id_, |
| 891 0, | 865 0, |
| 892 kBucketId, | 866 kBucketId, |
| 893 shared_memory_id_, | 867 shared_memory_id_, |
| 894 kInvalidSharedMemoryOffset); | 868 kInvalidSharedMemoryOffset); |
| 895 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 869 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 896 } | 870 } |
| 897 | 871 |
| 898 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivSucceeds) { | 872 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockivSucceeds) { |
| 899 GetActiveUniformBlockiv cmd; | 873 GetActiveUniformBlockiv cmd; |
| 900 typedef GetActiveUniformBlockiv::Result Result; | 874 typedef GetActiveUniformBlockiv::Result Result; |
| 901 Result* result = static_cast<Result*>(shared_memory_address_); | 875 Result* result = static_cast<Result*>(shared_memory_address_); |
| 902 GLenum kPname[] { | 876 GLenum kPname[] { |
| 903 GL_UNIFORM_BLOCK_BINDING, | 877 GL_UNIFORM_BLOCK_BINDING, |
| 904 GL_UNIFORM_BLOCK_DATA_SIZE, | 878 GL_UNIFORM_BLOCK_DATA_SIZE, |
| 905 GL_UNIFORM_BLOCK_NAME_LENGTH, | 879 GL_UNIFORM_BLOCK_NAME_LENGTH, |
| 906 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, | 880 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, |
| 907 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, | 881 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, |
| 908 GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER, | 882 GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 930 GetActiveUniformBlockiv(kServiceProgramId, 0, | 904 GetActiveUniformBlockiv(kServiceProgramId, 0, |
| 931 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) | 905 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) |
| 932 .WillOnce(SetArgPointee<3>(1)) | 906 .WillOnce(SetArgPointee<3>(1)) |
| 933 .RetiresOnSaturation(); | 907 .RetiresOnSaturation(); |
| 934 } | 908 } |
| 935 EXPECT_CALL(*gl_, | 909 EXPECT_CALL(*gl_, |
| 936 GetActiveUniformBlockiv( | 910 GetActiveUniformBlockiv( |
| 937 kServiceProgramId, 0, kPname[ii], _)) | 911 kServiceProgramId, 0, kPname[ii], _)) |
| 938 .WillOnce(SetArgPointee<3>(1976)) | 912 .WillOnce(SetArgPointee<3>(1976)) |
| 939 .RetiresOnSaturation(); | 913 .RetiresOnSaturation(); |
| 940 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 914 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 942 EXPECT_EQ(1, result->GetNumResults()); | 915 EXPECT_EQ(1, result->GetNumResults()); |
| 943 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 916 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 944 EXPECT_EQ(1976, result->GetData()[0]); | 917 EXPECT_EQ(1976, result->GetData()[0]); |
| 945 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 946 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 947 } | 918 } |
| 948 } | 919 } |
| 949 | 920 |
| 950 TEST_P(GLES2DecoderWithShaderTest, | 921 TEST_P(GLES3DecoderWithShaderTest, |
| 951 GetActiveUniformBlockivSucceedsZeroUniforms) { | 922 GetActiveUniformBlockivSucceedsZeroUniforms) { |
| 952 GetActiveUniformBlockiv cmd; | 923 GetActiveUniformBlockiv cmd; |
| 953 typedef GetActiveUniformBlockiv::Result Result; | 924 typedef GetActiveUniformBlockiv::Result Result; |
| 954 Result* result = static_cast<Result*>(shared_memory_address_); | 925 Result* result = static_cast<Result*>(shared_memory_address_); |
| 955 result->SetNumResults(0); | 926 result->SetNumResults(0); |
| 956 cmd.Init(client_program_id_, | 927 cmd.Init(client_program_id_, |
| 957 0, | 928 0, |
| 958 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, | 929 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, |
| 959 shared_memory_id_, | 930 shared_memory_id_, |
| 960 shared_memory_offset_); | 931 shared_memory_offset_); |
| 961 EXPECT_CALL(*gl_, GetError()) | 932 EXPECT_CALL(*gl_, GetError()) |
| 962 .WillOnce(Return(GL_NO_ERROR)) | 933 .WillOnce(Return(GL_NO_ERROR)) |
| 963 .WillOnce(Return(GL_NO_ERROR)) | 934 .WillOnce(Return(GL_NO_ERROR)) |
| 964 .WillOnce(Return(GL_NO_ERROR)) | 935 .WillOnce(Return(GL_NO_ERROR)) |
| 965 .RetiresOnSaturation(); | 936 .RetiresOnSaturation(); |
| 966 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 937 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 967 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 938 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 968 .RetiresOnSaturation(); | 939 .RetiresOnSaturation(); |
| 969 EXPECT_CALL(*gl_, | 940 EXPECT_CALL(*gl_, |
| 970 GetActiveUniformBlockiv( | 941 GetActiveUniformBlockiv( |
| 971 kServiceProgramId, 0, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) | 942 kServiceProgramId, 0, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) |
| 972 .WillOnce(SetArgPointee<3>(0)) | 943 .WillOnce(SetArgPointee<3>(0)) |
| 973 .RetiresOnSaturation(); | 944 .RetiresOnSaturation(); |
| 974 EXPECT_CALL(*gl_, | 945 EXPECT_CALL(*gl_, |
| 975 GetActiveUniformBlockiv(kServiceProgramId, 0, | 946 GetActiveUniformBlockiv(kServiceProgramId, 0, |
| 976 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, _)) | 947 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, _)) |
| 977 .Times(1) | 948 .Times(1) |
| 978 .RetiresOnSaturation(); | 949 .RetiresOnSaturation(); |
| 979 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 980 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 950 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 981 EXPECT_EQ(0, result->GetNumResults()); | 951 EXPECT_EQ(0, result->GetNumResults()); |
| 982 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 952 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 983 } | 953 } |
| 984 | 954 |
| 985 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivUnlinkedProgram) { | 955 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockivUnlinkedProgram) { |
| 986 GetActiveUniformBlockiv cmd; | 956 GetActiveUniformBlockiv cmd; |
| 987 typedef GetActiveUniformBlockiv::Result Result; | 957 typedef GetActiveUniformBlockiv::Result Result; |
| 988 Result* result = static_cast<Result*>(shared_memory_address_); | 958 Result* result = static_cast<Result*>(shared_memory_address_); |
| 989 result->SetNumResults(0); | 959 result->SetNumResults(0); |
| 990 cmd.Init(client_program_id_, | 960 cmd.Init(client_program_id_, |
| 991 0, | 961 0, |
| 992 GL_UNIFORM_BLOCK_BINDING, | 962 GL_UNIFORM_BLOCK_BINDING, |
| 993 shared_memory_id_, | 963 shared_memory_id_, |
| 994 shared_memory_offset_); | 964 shared_memory_offset_); |
| 995 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 965 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 996 .WillOnce(SetArgPointee<2>(GL_FALSE)) | 966 .WillOnce(SetArgPointee<2>(GL_FALSE)) |
| 997 .RetiresOnSaturation(); | 967 .RetiresOnSaturation(); |
| 998 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 999 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 968 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1000 EXPECT_EQ(0, result->GetNumResults()); | 969 EXPECT_EQ(0, result->GetNumResults()); |
| 1001 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 970 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1002 } | 971 } |
| 1003 | 972 |
| 1004 TEST_P(GLES2DecoderWithShaderTest, | 973 TEST_P(GLES3DecoderWithShaderTest, |
| 1005 GetActiveUniformBlockivResultNotInitFails) { | 974 GetActiveUniformBlockivResultNotInitFails) { |
| 1006 GetActiveUniformBlockiv cmd; | 975 GetActiveUniformBlockiv cmd; |
| 1007 typedef GetActiveUniformBlockiv::Result Result; | 976 typedef GetActiveUniformBlockiv::Result Result; |
| 1008 Result* result = static_cast<Result*>(shared_memory_address_); | 977 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1009 result->SetNumResults(1); // Should be initialized to 0. | 978 result->SetNumResults(1); // Should be initialized to 0. |
| 1010 cmd.Init(client_program_id_, | 979 cmd.Init(client_program_id_, |
| 1011 0, | 980 0, |
| 1012 GL_UNIFORM_BLOCK_BINDING, | 981 GL_UNIFORM_BLOCK_BINDING, |
| 1013 shared_memory_id_, | 982 shared_memory_id_, |
| 1014 shared_memory_offset_); | 983 shared_memory_offset_); |
| 1015 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1016 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 984 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1017 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 985 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1018 .RetiresOnSaturation(); | 986 .RetiresOnSaturation(); |
| 1019 EXPECT_CALL(*gl_, GetError()) | 987 EXPECT_CALL(*gl_, GetError()) |
| 1020 .WillOnce(Return(GL_NO_ERROR)) | 988 .WillOnce(Return(GL_NO_ERROR)) |
| 1021 .RetiresOnSaturation(); | 989 .RetiresOnSaturation(); |
| 1022 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 990 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1023 } | 991 } |
| 1024 | 992 |
| 1025 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivBadProgramFails) { | 993 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockivBadProgramFails) { |
| 1026 GetActiveUniformBlockiv cmd; | 994 GetActiveUniformBlockiv cmd; |
| 1027 typedef GetActiveUniformBlockiv::Result Result; | 995 typedef GetActiveUniformBlockiv::Result Result; |
| 1028 Result* result = static_cast<Result*>(shared_memory_address_); | 996 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1029 result->SetNumResults(0); | 997 result->SetNumResults(0); |
| 1030 cmd.Init(kInvalidClientId, | 998 cmd.Init(kInvalidClientId, |
| 1031 0, | 999 0, |
| 1032 GL_UNIFORM_BLOCK_BINDING, | 1000 GL_UNIFORM_BLOCK_BINDING, |
| 1033 shared_memory_id_, | 1001 shared_memory_id_, |
| 1034 shared_memory_offset_); | 1002 shared_memory_offset_); |
| 1035 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1036 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1003 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1037 EXPECT_EQ(0, result->GetNumResults()); | 1004 EXPECT_EQ(0, result->GetNumResults()); |
| 1038 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1005 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1039 } | 1006 } |
| 1040 | 1007 |
| 1041 TEST_P(GLES2DecoderWithShaderTest, | 1008 TEST_P(GLES3DecoderWithShaderTest, |
| 1042 GetActiveUniformBlockivBadSharedMemoryFails) { | 1009 GetActiveUniformBlockivBadSharedMemoryFails) { |
| 1043 GetActiveUniformBlockiv cmd; | 1010 GetActiveUniformBlockiv cmd; |
| 1044 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1045 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1011 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1046 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1012 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1047 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1013 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1048 .RetiresOnSaturation(); | 1014 .RetiresOnSaturation(); |
| 1049 EXPECT_CALL(*gl_, GetError()) | 1015 EXPECT_CALL(*gl_, GetError()) |
| 1050 .WillOnce(Return(GL_NO_ERROR)) | 1016 .WillOnce(Return(GL_NO_ERROR)) |
| 1051 .WillOnce(Return(GL_NO_ERROR)) | 1017 .WillOnce(Return(GL_NO_ERROR)) |
| 1052 .RetiresOnSaturation(); | 1018 .RetiresOnSaturation(); |
| 1053 cmd.Init(client_program_id_, | 1019 cmd.Init(client_program_id_, |
| 1054 0, | 1020 0, |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1158 shared_memory_offset_); | 1124 shared_memory_offset_); |
| 1159 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1125 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1160 cmd.Init(client_program_id_, | 1126 cmd.Init(client_program_id_, |
| 1161 kAttribIndex, | 1127 kAttribIndex, |
| 1162 kBucketId, | 1128 kBucketId, |
| 1163 shared_memory_id_, | 1129 shared_memory_id_, |
| 1164 kInvalidSharedMemoryOffset); | 1130 kInvalidSharedMemoryOffset); |
| 1165 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1131 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1166 } | 1132 } |
| 1167 | 1133 |
| 1168 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesSucceeds) { | 1134 TEST_P(GLES3DecoderWithShaderTest, GetUniformIndicesSucceeds) { |
| 1169 const uint32_t kBucketId = 123; | 1135 const uint32_t kBucketId = 123; |
| 1170 const char kName0[] = "Cow"; | 1136 const char kName0[] = "Cow"; |
| 1171 const char kName1[] = "Chicken"; | 1137 const char kName1[] = "Chicken"; |
| 1172 const char* kNames[] = { kName0, kName1 }; | 1138 const char* kNames[] = { kName0, kName1 }; |
| 1173 const size_t kCount = arraysize(kNames); | 1139 const size_t kCount = arraysize(kNames); |
| 1174 const char kValidStrEnd = 0; | 1140 const char kValidStrEnd = 0; |
| 1175 const GLuint kIndices[] = { 1, 2 }; | 1141 const GLuint kIndices[] = { 1, 2 }; |
| 1176 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); | 1142 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); |
| 1177 GetUniformIndices::Result* result = | 1143 GetUniformIndices::Result* result = |
| 1178 static_cast<GetUniformIndices::Result*>(shared_memory_address_); | 1144 static_cast<GetUniformIndices::Result*>(shared_memory_address_); |
| 1179 GetUniformIndices cmd; | 1145 GetUniformIndices cmd; |
| 1180 cmd.Init(client_program_id_, | 1146 cmd.Init(client_program_id_, |
| 1181 kBucketId, | 1147 kBucketId, |
| 1182 kSharedMemoryId, | 1148 kSharedMemoryId, |
| 1183 kSharedMemoryOffset); | 1149 kSharedMemoryOffset); |
| 1184 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _)) | 1150 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _)) |
| 1185 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount)) | 1151 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount)) |
| 1186 .RetiresOnSaturation(); | 1152 .RetiresOnSaturation(); |
| 1187 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1153 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1188 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1154 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1189 .RetiresOnSaturation(); | 1155 .RetiresOnSaturation(); |
| 1190 EXPECT_CALL(*gl_, GetError()) | 1156 EXPECT_CALL(*gl_, GetError()) |
| 1191 .WillOnce(Return(GL_NO_ERROR)) | 1157 .WillOnce(Return(GL_NO_ERROR)) |
| 1192 .WillOnce(Return(GL_NO_ERROR)) | 1158 .WillOnce(Return(GL_NO_ERROR)) |
| 1193 .RetiresOnSaturation(); | 1159 .RetiresOnSaturation(); |
| 1194 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1195 result->size = 0; | 1160 result->size = 0; |
| 1196 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1161 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1197 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); | 1162 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); |
| 1198 for (size_t ii = 0; ii < kCount; ++ii) { | 1163 for (size_t ii = 0; ii < kCount; ++ii) { |
| 1199 EXPECT_EQ(kIndices[ii], result->GetData()[ii]); | 1164 EXPECT_EQ(kIndices[ii], result->GetData()[ii]); |
| 1200 } | 1165 } |
| 1201 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1166 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1202 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 1203 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 1204 } | 1167 } |
| 1205 | 1168 |
| 1206 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadProgramFails) { | 1169 TEST_P(GLES3DecoderWithShaderTest, GetUniformIndicesBadProgramFails) { |
| 1207 const uint32_t kBucketId = 123; | 1170 const uint32_t kBucketId = 123; |
| 1208 const char kName0[] = "Cow"; | 1171 const char kName0[] = "Cow"; |
| 1209 const char kName1[] = "Chicken"; | 1172 const char kName1[] = "Chicken"; |
| 1210 const char* kNames[] = { kName0, kName1 }; | 1173 const char* kNames[] = { kName0, kName1 }; |
| 1211 const size_t kCount = arraysize(kNames); | 1174 const size_t kCount = arraysize(kNames); |
| 1212 const char kValidStrEnd = 0; | 1175 const char kValidStrEnd = 0; |
| 1213 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); | 1176 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); |
| 1214 GetUniformIndices::Result* result = | 1177 GetUniformIndices::Result* result = |
| 1215 static_cast<GetUniformIndices::Result*>(shared_memory_address_); | 1178 static_cast<GetUniformIndices::Result*>(shared_memory_address_); |
| 1216 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1217 GetUniformIndices cmd; | 1179 GetUniformIndices cmd; |
| 1218 // None-existant program | 1180 // None-existant program |
| 1219 cmd.Init(kInvalidClientId, | 1181 cmd.Init(kInvalidClientId, |
| 1220 kBucketId, | 1182 kBucketId, |
| 1221 kSharedMemoryId, | 1183 kSharedMemoryId, |
| 1222 kSharedMemoryOffset); | 1184 kSharedMemoryOffset); |
| 1223 result->size = 0; | 1185 result->size = 0; |
| 1224 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1186 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1225 EXPECT_EQ(0, result->GetNumResults()); | 1187 EXPECT_EQ(0, result->GetNumResults()); |
| 1226 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1188 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1227 // Unlinked program. | 1189 // Unlinked program. |
| 1228 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1190 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1229 .WillOnce(SetArgPointee<2>(GL_FALSE)) | 1191 .WillOnce(SetArgPointee<2>(GL_FALSE)) |
| 1230 .RetiresOnSaturation(); | 1192 .RetiresOnSaturation(); |
| 1231 cmd.Init(client_program_id_, | 1193 cmd.Init(client_program_id_, |
| 1232 kBucketId, | 1194 kBucketId, |
| 1233 kSharedMemoryId, | 1195 kSharedMemoryId, |
| 1234 kSharedMemoryOffset); | 1196 kSharedMemoryOffset); |
| 1235 result->size = 0; | 1197 result->size = 0; |
| 1236 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1198 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1237 EXPECT_EQ(0, result->GetNumResults()); | 1199 EXPECT_EQ(0, result->GetNumResults()); |
| 1238 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1200 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1239 } | 1201 } |
| 1240 | 1202 |
| 1241 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadParamsFails) { | 1203 TEST_P(GLES3DecoderWithShaderTest, GetUniformIndicesBadParamsFails) { |
| 1242 const uint32_t kBucketId = 123; | 1204 const uint32_t kBucketId = 123; |
| 1243 const char kName0[] = "Cow"; | 1205 const char kName0[] = "Cow"; |
| 1244 const char kName1[] = "Chicken"; | 1206 const char kName1[] = "Chicken"; |
| 1245 const char* kNames[] = { kName0, kName1 }; | 1207 const char* kNames[] = { kName0, kName1 }; |
| 1246 const size_t kCount = arraysize(kNames); | 1208 const size_t kCount = arraysize(kNames); |
| 1247 const char kValidStrEnd = 0; | 1209 const char kValidStrEnd = 0; |
| 1248 const GLuint kIndices[] = { 1, 2 }; | 1210 const GLuint kIndices[] = { 1, 2 }; |
| 1249 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); | 1211 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); |
| 1250 GetUniformIndices::Result* result = | 1212 GetUniformIndices::Result* result = |
| 1251 static_cast<GetUniformIndices::Result*>(shared_memory_address_); | 1213 static_cast<GetUniformIndices::Result*>(shared_memory_address_); |
| 1252 GetUniformIndices cmd; | 1214 GetUniformIndices cmd; |
| 1253 cmd.Init(client_program_id_, | 1215 cmd.Init(client_program_id_, |
| 1254 kBucketId, | 1216 kBucketId, |
| 1255 kSharedMemoryId, | 1217 kSharedMemoryId, |
| 1256 kSharedMemoryOffset); | 1218 kSharedMemoryOffset); |
| 1257 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _)) | 1219 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _)) |
| 1258 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount)) | 1220 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount)) |
| 1259 .RetiresOnSaturation(); | 1221 .RetiresOnSaturation(); |
| 1260 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1222 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1261 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1223 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1262 .RetiresOnSaturation(); | 1224 .RetiresOnSaturation(); |
| 1263 EXPECT_CALL(*gl_, GetError()) | 1225 EXPECT_CALL(*gl_, GetError()) |
| 1264 .WillOnce(Return(GL_NO_ERROR)) | 1226 .WillOnce(Return(GL_NO_ERROR)) |
| 1265 .WillOnce(Return(GL_INVALID_VALUE)) | 1227 .WillOnce(Return(GL_INVALID_VALUE)) |
| 1266 .RetiresOnSaturation(); | 1228 .RetiresOnSaturation(); |
| 1267 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1268 result->size = 0; | 1229 result->size = 0; |
| 1269 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1230 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1270 EXPECT_EQ(0, result->GetNumResults()); | 1231 EXPECT_EQ(0, result->GetNumResults()); |
| 1271 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1232 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1272 } | 1233 } |
| 1273 | 1234 |
| 1274 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesResultNotInitFails) { | 1235 TEST_P(GLES3DecoderWithShaderTest, GetUniformIndicesResultNotInitFails) { |
| 1275 const uint32_t kBucketId = 123; | 1236 const uint32_t kBucketId = 123; |
| 1276 const char kName0[] = "Cow"; | 1237 const char kName0[] = "Cow"; |
| 1277 const char kName1[] = "Chicken"; | 1238 const char kName1[] = "Chicken"; |
| 1278 const char* kNames[] = { kName0, kName1 }; | 1239 const char* kNames[] = { kName0, kName1 }; |
| 1279 const size_t kCount = arraysize(kNames); | 1240 const size_t kCount = arraysize(kNames); |
| 1280 const char kValidStrEnd = 0; | 1241 const char kValidStrEnd = 0; |
| 1281 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); | 1242 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); |
| 1282 GetUniformIndices::Result* result = | 1243 GetUniformIndices::Result* result = |
| 1283 static_cast<GetUniformIndices::Result*>(shared_memory_address_); | 1244 static_cast<GetUniformIndices::Result*>(shared_memory_address_); |
| 1284 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1285 GetUniformIndices cmd; | 1245 GetUniformIndices cmd; |
| 1286 result->size = 1976; // Any value other than 0. | 1246 result->size = 1976; // Any value other than 0. |
| 1287 cmd.Init(kInvalidClientId, | 1247 cmd.Init(kInvalidClientId, |
| 1288 kBucketId, | 1248 kBucketId, |
| 1289 kSharedMemoryId, | 1249 kSharedMemoryId, |
| 1290 kSharedMemoryOffset); | 1250 kSharedMemoryOffset); |
| 1291 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1251 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1292 } | 1252 } |
| 1293 | 1253 |
| 1294 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadSharedMemoryFails) { | 1254 TEST_P(GLES3DecoderWithShaderTest, GetUniformIndicesBadSharedMemoryFails) { |
| 1295 const uint32_t kBucketId = 123; | 1255 const uint32_t kBucketId = 123; |
| 1296 const char kName0[] = "Cow"; | 1256 const char kName0[] = "Cow"; |
| 1297 const char kName1[] = "Chicken"; | 1257 const char kName1[] = "Chicken"; |
| 1298 const char* kNames[] = { kName0, kName1 }; | 1258 const char* kNames[] = { kName0, kName1 }; |
| 1299 const size_t kCount = arraysize(kNames); | 1259 const size_t kCount = arraysize(kNames); |
| 1300 const char kValidStrEnd = 0; | 1260 const char kValidStrEnd = 0; |
| 1301 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); | 1261 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); |
| 1302 GetUniformIndices::Result* result = | 1262 GetUniformIndices::Result* result = |
| 1303 static_cast<GetUniformIndices::Result*>(shared_memory_address_); | 1263 static_cast<GetUniformIndices::Result*>(shared_memory_address_); |
| 1304 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1305 GetUniformIndices cmd; | 1264 GetUniformIndices cmd; |
| 1306 cmd.Init(client_program_id_, | 1265 cmd.Init(client_program_id_, |
| 1307 kBucketId, | 1266 kBucketId, |
| 1308 kInvalidSharedMemoryId, | 1267 kInvalidSharedMemoryId, |
| 1309 kSharedMemoryOffset); | 1268 kSharedMemoryOffset); |
| 1310 result->size = 0; | 1269 result->size = 0; |
| 1311 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1270 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1312 cmd.Init(client_program_id_, | 1271 cmd.Init(client_program_id_, |
| 1313 kBucketId, | 1272 kBucketId, |
| 1314 kSharedMemoryId, | 1273 kSharedMemoryId, |
| 1315 kInvalidSharedMemoryOffset); | 1274 kInvalidSharedMemoryOffset); |
| 1316 result->size = 0; | 1275 result->size = 0; |
| 1317 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1276 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1318 } | 1277 } |
| 1319 | 1278 |
| 1320 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivSucceeds) { | 1279 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivSucceeds) { |
| 1321 const uint32_t kBucketId = 123; | 1280 const uint32_t kBucketId = 123; |
| 1322 const GLuint kIndices[] = { 1, 2 }; | 1281 const GLuint kIndices[] = { 1, 2 }; |
| 1323 const GLint kResults[] = { 1976, 321 }; | 1282 const GLint kResults[] = { 1976, 321 }; |
| 1324 const size_t kCount = arraysize(kIndices); | 1283 const size_t kCount = arraysize(kIndices); |
| 1325 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); | 1284 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); |
| 1326 GetActiveUniformsiv::Result* result = | 1285 GetActiveUniformsiv::Result* result = |
| 1327 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); | 1286 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); |
| 1328 GetActiveUniformsiv cmd; | 1287 GetActiveUniformsiv cmd; |
| 1329 cmd.Init(client_program_id_, | 1288 cmd.Init(client_program_id_, |
| 1330 kBucketId, | 1289 kBucketId, |
| 1331 GL_UNIFORM_TYPE, | 1290 GL_UNIFORM_TYPE, |
| 1332 kSharedMemoryId, | 1291 kSharedMemoryId, |
| 1333 kSharedMemoryOffset); | 1292 kSharedMemoryOffset); |
| 1334 EXPECT_CALL(*gl_, | 1293 EXPECT_CALL(*gl_, |
| 1335 GetActiveUniformsiv( | 1294 GetActiveUniformsiv( |
| 1336 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) | 1295 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) |
| 1337 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) | 1296 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) |
| 1338 .RetiresOnSaturation(); | 1297 .RetiresOnSaturation(); |
| 1339 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1298 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1340 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1299 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1341 .RetiresOnSaturation(); | 1300 .RetiresOnSaturation(); |
| 1342 EXPECT_CALL(*gl_, GetError()) | 1301 EXPECT_CALL(*gl_, GetError()) |
| 1343 .WillOnce(Return(GL_NO_ERROR)) | 1302 .WillOnce(Return(GL_NO_ERROR)) |
| 1344 .WillOnce(Return(GL_NO_ERROR)) | 1303 .WillOnce(Return(GL_NO_ERROR)) |
| 1345 .RetiresOnSaturation(); | 1304 .RetiresOnSaturation(); |
| 1346 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1347 result->size = 0; | 1305 result->size = 0; |
| 1348 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1306 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1349 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); | 1307 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); |
| 1350 for (size_t ii = 0; ii < kCount; ++ii) { | 1308 for (size_t ii = 0; ii < kCount; ++ii) { |
| 1351 EXPECT_EQ(kResults[ii], result->GetData()[ii]); | 1309 EXPECT_EQ(kResults[ii], result->GetData()[ii]); |
| 1352 } | 1310 } |
| 1353 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1311 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1354 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 1355 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 1356 } | 1312 } |
| 1357 | 1313 |
| 1358 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadProgramFails) { | 1314 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadProgramFails) { |
| 1359 const uint32_t kBucketId = 123; | 1315 const uint32_t kBucketId = 123; |
| 1360 const GLuint kIndices[] = { 1, 2 }; | 1316 const GLuint kIndices[] = { 1, 2 }; |
| 1361 const size_t kCount = arraysize(kIndices); | 1317 const size_t kCount = arraysize(kIndices); |
| 1362 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); | 1318 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); |
| 1363 GetActiveUniformsiv::Result* result = | 1319 GetActiveUniformsiv::Result* result = |
| 1364 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); | 1320 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); |
| 1365 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1366 GetActiveUniformsiv cmd; | 1321 GetActiveUniformsiv cmd; |
| 1367 // None-existant program | 1322 // None-existant program |
| 1368 cmd.Init(kInvalidClientId, | 1323 cmd.Init(kInvalidClientId, |
| 1369 kBucketId, | 1324 kBucketId, |
| 1370 GL_UNIFORM_TYPE, | 1325 GL_UNIFORM_TYPE, |
| 1371 kSharedMemoryId, | 1326 kSharedMemoryId, |
| 1372 kSharedMemoryOffset); | 1327 kSharedMemoryOffset); |
| 1373 result->size = 0; | 1328 result->size = 0; |
| 1374 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1329 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1375 EXPECT_EQ(0, result->GetNumResults()); | 1330 EXPECT_EQ(0, result->GetNumResults()); |
| 1376 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1331 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1377 // Unlinked program. | 1332 // Unlinked program. |
| 1378 cmd.Init(client_program_id_, | 1333 cmd.Init(client_program_id_, |
| 1379 kBucketId, | 1334 kBucketId, |
| 1380 GL_UNIFORM_TYPE, | 1335 GL_UNIFORM_TYPE, |
| 1381 kSharedMemoryId, | 1336 kSharedMemoryId, |
| 1382 kSharedMemoryOffset); | 1337 kSharedMemoryOffset); |
| 1383 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1338 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1384 .WillOnce(SetArgPointee<2>(GL_FALSE)) | 1339 .WillOnce(SetArgPointee<2>(GL_FALSE)) |
| 1385 .RetiresOnSaturation(); | 1340 .RetiresOnSaturation(); |
| 1386 result->size = 0; | 1341 result->size = 0; |
| 1387 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1342 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1388 EXPECT_EQ(0, result->GetNumResults()); | 1343 EXPECT_EQ(0, result->GetNumResults()); |
| 1389 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1344 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1390 } | 1345 } |
| 1391 | 1346 |
| 1392 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadParamsFails) { | 1347 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadParamsFails) { |
| 1393 const uint32_t kBucketId = 123; | 1348 const uint32_t kBucketId = 123; |
| 1394 const GLuint kIndices[] = { 1, 2 }; | 1349 const GLuint kIndices[] = { 1, 2 }; |
| 1395 const GLint kResults[] = { 1976, 321 }; | 1350 const GLint kResults[] = { 1976, 321 }; |
| 1396 const size_t kCount = arraysize(kIndices); | 1351 const size_t kCount = arraysize(kIndices); |
| 1397 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); | 1352 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); |
| 1398 GetActiveUniformsiv::Result* result = | 1353 GetActiveUniformsiv::Result* result = |
| 1399 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); | 1354 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); |
| 1400 GetActiveUniformsiv cmd; | 1355 GetActiveUniformsiv cmd; |
| 1401 cmd.Init(client_program_id_, | 1356 cmd.Init(client_program_id_, |
| 1402 kBucketId, | 1357 kBucketId, |
| 1403 GL_UNIFORM_TYPE, | 1358 GL_UNIFORM_TYPE, |
| 1404 kSharedMemoryId, | 1359 kSharedMemoryId, |
| 1405 kSharedMemoryOffset); | 1360 kSharedMemoryOffset); |
| 1406 EXPECT_CALL(*gl_, | 1361 EXPECT_CALL(*gl_, |
| 1407 GetActiveUniformsiv( | 1362 GetActiveUniformsiv( |
| 1408 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) | 1363 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) |
| 1409 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) | 1364 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) |
| 1410 .RetiresOnSaturation(); | 1365 .RetiresOnSaturation(); |
| 1411 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1366 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1412 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1367 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1413 .RetiresOnSaturation(); | 1368 .RetiresOnSaturation(); |
| 1414 EXPECT_CALL(*gl_, GetError()) | 1369 EXPECT_CALL(*gl_, GetError()) |
| 1415 .WillOnce(Return(GL_NO_ERROR)) | 1370 .WillOnce(Return(GL_NO_ERROR)) |
| 1416 .WillOnce(Return(GL_INVALID_VALUE)) | 1371 .WillOnce(Return(GL_INVALID_VALUE)) |
| 1417 .RetiresOnSaturation(); | 1372 .RetiresOnSaturation(); |
| 1418 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1419 result->size = 0; | 1373 result->size = 0; |
| 1420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1374 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1421 EXPECT_EQ(0, result->GetNumResults()); | 1375 EXPECT_EQ(0, result->GetNumResults()); |
| 1422 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1376 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1423 } | 1377 } |
| 1424 | 1378 |
| 1425 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadPnameFails) { | 1379 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadPnameFails) { |
| 1426 const uint32_t kBucketId = 123; | 1380 const uint32_t kBucketId = 123; |
| 1427 const GLuint kIndices[] = { 1, 2 }; | 1381 const GLuint kIndices[] = { 1, 2 }; |
| 1428 const size_t kCount = arraysize(kIndices); | 1382 const size_t kCount = arraysize(kIndices); |
| 1429 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); | 1383 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); |
| 1430 GetActiveUniformsiv::Result* result = | 1384 GetActiveUniformsiv::Result* result = |
| 1431 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); | 1385 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); |
| 1432 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1433 GetActiveUniformsiv cmd; | 1386 GetActiveUniformsiv cmd; |
| 1434 // GL_UNIFORM_BLOCK_NAME_LENGTH should not be supported. | 1387 // GL_UNIFORM_BLOCK_NAME_LENGTH should not be supported. |
| 1435 cmd.Init(client_program_id_, | 1388 cmd.Init(client_program_id_, |
| 1436 kBucketId, | 1389 kBucketId, |
| 1437 GL_UNIFORM_BLOCK_NAME_LENGTH, | 1390 GL_UNIFORM_BLOCK_NAME_LENGTH, |
| 1438 kSharedMemoryId, | 1391 kSharedMemoryId, |
| 1439 kSharedMemoryOffset); | 1392 kSharedMemoryOffset); |
| 1440 result->size = 0; | 1393 result->size = 0; |
| 1441 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1394 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1442 EXPECT_EQ(0, result->GetNumResults()); | 1395 EXPECT_EQ(0, result->GetNumResults()); |
| 1443 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 1396 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 1444 // Invalid pname | 1397 // Invalid pname |
| 1445 cmd.Init(client_program_id_, | 1398 cmd.Init(client_program_id_, |
| 1446 kBucketId, | 1399 kBucketId, |
| 1447 1, | 1400 1, |
| 1448 kSharedMemoryId, | 1401 kSharedMemoryId, |
| 1449 kSharedMemoryOffset); | 1402 kSharedMemoryOffset); |
| 1450 result->size = 0; | 1403 result->size = 0; |
| 1451 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1404 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1452 EXPECT_EQ(0, result->GetNumResults()); | 1405 EXPECT_EQ(0, result->GetNumResults()); |
| 1453 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 1406 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 1454 } | 1407 } |
| 1455 | 1408 |
| 1456 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivResultNotInitFails) { | 1409 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivResultNotInitFails) { |
| 1457 const uint32_t kBucketId = 123; | 1410 const uint32_t kBucketId = 123; |
| 1458 const GLuint kIndices[] = { 1, 2 }; | 1411 const GLuint kIndices[] = { 1, 2 }; |
| 1459 const size_t kCount = arraysize(kIndices); | 1412 const size_t kCount = arraysize(kIndices); |
| 1460 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); | 1413 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); |
| 1461 GetActiveUniformsiv::Result* result = | 1414 GetActiveUniformsiv::Result* result = |
| 1462 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); | 1415 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); |
| 1463 GetActiveUniformsiv cmd; | 1416 GetActiveUniformsiv cmd; |
| 1464 cmd.Init(client_program_id_, | 1417 cmd.Init(client_program_id_, |
| 1465 kBucketId, | 1418 kBucketId, |
| 1466 GL_UNIFORM_TYPE, | 1419 GL_UNIFORM_TYPE, |
| 1467 kSharedMemoryId, | 1420 kSharedMemoryId, |
| 1468 kSharedMemoryOffset); | 1421 kSharedMemoryOffset); |
| 1469 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1470 result->size = 1976; // Any value other than 0. | 1422 result->size = 1976; // Any value other than 0. |
| 1471 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1423 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1472 } | 1424 } |
| 1473 | 1425 |
| 1474 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadSharedMemoryFails) { | 1426 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadSharedMemoryFails) { |
| 1475 const uint32_t kBucketId = 123; | 1427 const uint32_t kBucketId = 123; |
| 1476 const GLuint kIndices[] = { 1, 2 }; | 1428 const GLuint kIndices[] = { 1, 2 }; |
| 1477 const size_t kCount = arraysize(kIndices); | 1429 const size_t kCount = arraysize(kIndices); |
| 1478 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); | 1430 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); |
| 1479 GetActiveUniformsiv::Result* result = | 1431 GetActiveUniformsiv::Result* result = |
| 1480 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); | 1432 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); |
| 1481 GetActiveUniformsiv cmd; | 1433 GetActiveUniformsiv cmd; |
| 1482 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1483 result->size = 0; | 1434 result->size = 0; |
| 1484 cmd.Init(client_program_id_, | 1435 cmd.Init(client_program_id_, |
| 1485 kBucketId, | 1436 kBucketId, |
| 1486 GL_UNIFORM_TYPE, | 1437 GL_UNIFORM_TYPE, |
| 1487 kInvalidSharedMemoryId, | 1438 kInvalidSharedMemoryId, |
| 1488 kSharedMemoryOffset); | 1439 kSharedMemoryOffset); |
| 1489 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1440 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1490 result->size = 0; | 1441 result->size = 0; |
| 1491 cmd.Init(client_program_id_, | 1442 cmd.Init(client_program_id_, |
| 1492 kBucketId, | 1443 kBucketId, |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1534 } | 1485 } |
| 1535 | 1486 |
| 1536 TEST_P(GLES2DecoderWithShaderTest, GetShaderInfoLogInvalidArgs) { | 1487 TEST_P(GLES2DecoderWithShaderTest, GetShaderInfoLogInvalidArgs) { |
| 1537 const uint32_t kBucketId = 123; | 1488 const uint32_t kBucketId = 123; |
| 1538 GetShaderInfoLog cmd; | 1489 GetShaderInfoLog cmd; |
| 1539 cmd.Init(kInvalidClientId, kBucketId); | 1490 cmd.Init(kInvalidClientId, kBucketId); |
| 1540 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1491 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1541 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1492 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1542 } | 1493 } |
| 1543 | 1494 |
| 1544 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingSucceeds) { | 1495 TEST_P(GLES3DecoderWithShaderTest, GetTransformFeedbackVaryingSucceeds) { |
| 1545 const GLuint kIndex = 1; | 1496 const GLuint kIndex = 1; |
| 1546 const uint32_t kBucketId = 123; | 1497 const uint32_t kBucketId = 123; |
| 1547 const char kName[] = "HolyCow"; | 1498 const char kName[] = "HolyCow"; |
| 1548 const GLsizei kBufferSize = static_cast<GLsizei>(strlen(kName) + 1); | 1499 const GLsizei kBufferSize = static_cast<GLsizei>(strlen(kName) + 1); |
| 1549 const GLsizei kSize = 2; | 1500 const GLsizei kSize = 2; |
| 1550 const GLenum kType = GL_FLOAT_VEC2; | 1501 const GLenum kType = GL_FLOAT_VEC2; |
| 1551 GetTransformFeedbackVarying cmd; | 1502 GetTransformFeedbackVarying cmd; |
| 1552 typedef GetTransformFeedbackVarying::Result Result; | 1503 typedef GetTransformFeedbackVarying::Result Result; |
| 1553 Result* result = static_cast<Result*>(shared_memory_address_); | 1504 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1554 result->success = 0; | 1505 result->success = 0; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1569 .WillOnce(DoAll(SetArgPointee<3>(kBufferSize - 1), | 1520 .WillOnce(DoAll(SetArgPointee<3>(kBufferSize - 1), |
| 1570 SetArgPointee<4>(kSize), | 1521 SetArgPointee<4>(kSize), |
| 1571 SetArgPointee<5>(kType), | 1522 SetArgPointee<5>(kType), |
| 1572 SetArrayArgument<6>(kName, kName + kBufferSize))) | 1523 SetArrayArgument<6>(kName, kName + kBufferSize))) |
| 1573 .RetiresOnSaturation(); | 1524 .RetiresOnSaturation(); |
| 1574 cmd.Init(client_program_id_, | 1525 cmd.Init(client_program_id_, |
| 1575 kIndex, | 1526 kIndex, |
| 1576 kBucketId, | 1527 kBucketId, |
| 1577 shared_memory_id_, | 1528 shared_memory_id_, |
| 1578 shared_memory_offset_); | 1529 shared_memory_offset_); |
| 1579 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1580 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1530 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1581 EXPECT_NE(0, result->success); | 1531 EXPECT_NE(0, result->success); |
| 1582 EXPECT_EQ(kSize, static_cast<GLsizei>(result->size)); | 1532 EXPECT_EQ(kSize, static_cast<GLsizei>(result->size)); |
| 1583 EXPECT_EQ(kType, static_cast<GLenum>(result->type)); | 1533 EXPECT_EQ(kType, static_cast<GLenum>(result->type)); |
| 1584 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1534 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1585 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 1535 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 1586 ASSERT_TRUE(bucket != NULL); | 1536 ASSERT_TRUE(bucket != NULL); |
| 1587 EXPECT_EQ( | 1537 EXPECT_EQ( |
| 1588 0, memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size())); | 1538 0, memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size())); |
| 1589 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 1590 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 1591 } | 1539 } |
| 1592 | 1540 |
| 1593 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingNotInitFails) { | 1541 TEST_P(GLES3DecoderWithShaderTest, GetTransformFeedbackVaryingNotInitFails) { |
| 1594 const GLuint kIndex = 1; | 1542 const GLuint kIndex = 1; |
| 1595 const uint32_t kBucketId = 123; | 1543 const uint32_t kBucketId = 123; |
| 1596 GetTransformFeedbackVarying cmd; | 1544 GetTransformFeedbackVarying cmd; |
| 1597 typedef GetTransformFeedbackVarying::Result Result; | 1545 typedef GetTransformFeedbackVarying::Result Result; |
| 1598 Result* result = static_cast<Result*>(shared_memory_address_); | 1546 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1599 result->success = 1; | 1547 result->success = 1; |
| 1600 cmd.Init(client_program_id_, | 1548 cmd.Init(client_program_id_, |
| 1601 kIndex, | 1549 kIndex, |
| 1602 kBucketId, | 1550 kBucketId, |
| 1603 shared_memory_id_, | 1551 shared_memory_id_, |
| 1604 shared_memory_offset_); | 1552 shared_memory_offset_); |
| 1605 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1606 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1553 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1607 } | 1554 } |
| 1608 | 1555 |
| 1609 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingBadProgramFails) { | 1556 TEST_P(GLES3DecoderWithShaderTest, GetTransformFeedbackVaryingBadProgramFails) { |
| 1610 const GLuint kIndex = 1; | 1557 const GLuint kIndex = 1; |
| 1611 const uint32_t kBucketId = 123; | 1558 const uint32_t kBucketId = 123; |
| 1612 GetTransformFeedbackVarying cmd; | 1559 GetTransformFeedbackVarying cmd; |
| 1613 typedef GetTransformFeedbackVarying::Result Result; | 1560 typedef GetTransformFeedbackVarying::Result Result; |
| 1614 Result* result = static_cast<Result*>(shared_memory_address_); | 1561 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1615 result->success = 0; | 1562 result->success = 0; |
| 1616 cmd.Init(kInvalidClientId, | 1563 cmd.Init(kInvalidClientId, |
| 1617 kIndex, | 1564 kIndex, |
| 1618 kBucketId, | 1565 kBucketId, |
| 1619 shared_memory_id_, | 1566 shared_memory_id_, |
| 1620 shared_memory_offset_); | 1567 shared_memory_offset_); |
| 1621 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1622 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1568 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1623 EXPECT_EQ(0, result->success); | 1569 EXPECT_EQ(0, result->success); |
| 1624 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1570 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1625 } | 1571 } |
| 1626 | 1572 |
| 1627 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingBadParamsFails) { | 1573 TEST_P(GLES3DecoderWithShaderTest, GetTransformFeedbackVaryingBadParamsFails) { |
| 1628 const GLuint kIndex = 1; | 1574 const GLuint kIndex = 1; |
| 1629 const uint32_t kBucketId = 123; | 1575 const uint32_t kBucketId = 123; |
| 1630 const GLsizei kBufferSize = 10; | 1576 const GLsizei kBufferSize = 10; |
| 1631 GetTransformFeedbackVarying cmd; | 1577 GetTransformFeedbackVarying cmd; |
| 1632 typedef GetTransformFeedbackVarying::Result Result; | 1578 typedef GetTransformFeedbackVarying::Result Result; |
| 1633 Result* result = static_cast<Result*>(shared_memory_address_); | 1579 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1634 result->success = 0; | 1580 result->success = 0; |
| 1635 cmd.Init(client_program_id_, | 1581 cmd.Init(client_program_id_, |
| 1636 kIndex, | 1582 kIndex, |
| 1637 kBucketId, | 1583 kBucketId, |
| 1638 shared_memory_id_, | 1584 shared_memory_id_, |
| 1639 shared_memory_offset_); | 1585 shared_memory_offset_); |
| 1640 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1586 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1641 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1587 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1642 .RetiresOnSaturation(); | 1588 .RetiresOnSaturation(); |
| 1643 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, | 1589 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, |
| 1644 GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH, _)) | 1590 GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH, _)) |
| 1645 .WillOnce(SetArgPointee<2>(kBufferSize)) | 1591 .WillOnce(SetArgPointee<2>(kBufferSize)) |
| 1646 .RetiresOnSaturation(); | 1592 .RetiresOnSaturation(); |
| 1647 EXPECT_CALL(*gl_, GetError()) | 1593 EXPECT_CALL(*gl_, GetError()) |
| 1648 .WillOnce(Return(GL_NO_ERROR)) | 1594 .WillOnce(Return(GL_NO_ERROR)) |
| 1649 .WillOnce(Return(GL_INVALID_VALUE)) | 1595 .WillOnce(Return(GL_INVALID_VALUE)) |
| 1650 .RetiresOnSaturation(); | 1596 .RetiresOnSaturation(); |
| 1651 EXPECT_CALL(*gl_, | 1597 EXPECT_CALL(*gl_, |
| 1652 GetTransformFeedbackVarying( | 1598 GetTransformFeedbackVarying( |
| 1653 kServiceProgramId, kIndex, _, _, _, _, _)) | 1599 kServiceProgramId, kIndex, _, _, _, _, _)) |
| 1654 .Times(1) | 1600 .Times(1) |
| 1655 .RetiresOnSaturation(); | 1601 .RetiresOnSaturation(); |
| 1656 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1657 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1602 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1658 EXPECT_EQ(0, result->success); | 1603 EXPECT_EQ(0, result->success); |
| 1659 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1604 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1660 } | 1605 } |
| 1661 | 1606 |
| 1662 TEST_P(GLES2DecoderWithShaderTest, | 1607 TEST_P(GLES3DecoderWithShaderTest, |
| 1663 GetTransformFeedbackVaryingBadSharedMemoryFails) { | 1608 GetTransformFeedbackVaryingBadSharedMemoryFails) { |
| 1664 const GLuint kIndex = 1; | 1609 const GLuint kIndex = 1; |
| 1665 const uint32_t kBucketId = 123; | 1610 const uint32_t kBucketId = 123; |
| 1666 GetTransformFeedbackVarying cmd; | 1611 GetTransformFeedbackVarying cmd; |
| 1667 typedef GetTransformFeedbackVarying::Result Result; | 1612 typedef GetTransformFeedbackVarying::Result Result; |
| 1668 Result* result = static_cast<Result*>(shared_memory_address_); | 1613 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1669 result->success = 0; | 1614 result->success = 0; |
| 1670 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1671 cmd.Init(client_program_id_, | 1615 cmd.Init(client_program_id_, |
| 1672 kIndex, | 1616 kIndex, |
| 1673 kBucketId, | 1617 kBucketId, |
| 1674 kInvalidSharedMemoryId, | 1618 kInvalidSharedMemoryId, |
| 1675 shared_memory_offset_); | 1619 shared_memory_offset_); |
| 1676 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1620 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1677 cmd.Init(client_program_id_, | 1621 cmd.Init(client_program_id_, |
| 1678 kIndex, | 1622 kIndex, |
| 1679 kBucketId, | 1623 kBucketId, |
| 1680 shared_memory_id_, | 1624 shared_memory_id_, |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1779 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1723 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1780 } | 1724 } |
| 1781 | 1725 |
| 1782 TEST_P(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { | 1726 TEST_P(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { |
| 1783 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); | 1727 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); |
| 1784 Uniform1i cmd; | 1728 Uniform1i cmd; |
| 1785 cmd.Init(kUniform1FakeLocation, 2); | 1729 cmd.Init(kUniform1FakeLocation, 2); |
| 1786 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1730 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1787 } | 1731 } |
| 1788 | 1732 |
| 1789 TEST_P(GLES2DecoderWithShaderTest, Uniform1uiValidArgs) { | 1733 TEST_P(GLES3DecoderWithShaderTest, Uniform1uiValidArgs) { |
| 1790 EXPECT_CALL(*gl_, Uniform1uiv(kUniform4RealLocation, 1, _)); | 1734 EXPECT_CALL(*gl_, Uniform1uiv(kUniform4RealLocation, 1, _)); |
| 1791 Uniform1ui cmd; | 1735 Uniform1ui cmd; |
| 1792 cmd.Init(kUniform4FakeLocation, 2); | 1736 cmd.Init(kUniform4FakeLocation, 2); |
| 1793 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1794 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1737 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1795 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1738 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1796 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 1797 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 1798 } | 1739 } |
| 1799 | 1740 |
| 1800 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { | 1741 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { |
| 1801 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); | 1742 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); |
| 1802 GLint temp[1] = { | 1743 GLint temp[1] = { |
| 1803 0, | 1744 0, |
| 1804 }; | 1745 }; |
| 1805 EXPECT_CALL(*gl_, | 1746 EXPECT_CALL(*gl_, |
| 1806 Uniform1iv(kUniform1RealLocation, 1, PointsToArray(temp, 1))); | 1747 Uniform1iv(kUniform1RealLocation, 1, PointsToArray(temp, 1))); |
| 1807 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); | 1748 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1857 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1798 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1858 | 1799 |
| 1859 EXPECT_CALL(*gl_, | 1800 EXPECT_CALL(*gl_, |
| 1860 Uniform1iv(kUniform8RealLocation, 2, PointsToArray(temp, 2))); | 1801 Uniform1iv(kUniform8RealLocation, 2, PointsToArray(temp, 2))); |
| 1861 cmd.Init(kUniform8FakeLocation, 3, &temp[0]); | 1802 cmd.Init(kUniform8FakeLocation, 3, &temp[0]); |
| 1862 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1803 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1863 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1804 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1864 } | 1805 } |
| 1865 | 1806 |
| 1866 | 1807 |
| 1867 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateValidArgs) { | 1808 TEST_P(GLES3DecoderWithShaderTest, Uniform1uivImmediateValidArgs) { |
| 1868 Uniform1uivImmediate& cmd = | 1809 Uniform1uivImmediate& cmd = |
| 1869 *GetImmediateAs<Uniform1uivImmediate>(); | 1810 *GetImmediateAs<Uniform1uivImmediate>(); |
| 1870 GLuint temp[1] = { | 1811 GLuint temp[1] = { |
| 1871 0, | 1812 0, |
| 1872 }; | 1813 }; |
| 1873 EXPECT_CALL(*gl_, | 1814 EXPECT_CALL(*gl_, |
| 1874 Uniform1uiv(kUniform4RealLocation, 1, PointsToArray(temp, 1))); | 1815 Uniform1uiv(kUniform4RealLocation, 1, PointsToArray(temp, 1))); |
| 1875 cmd.Init(kUniform4FakeLocation, 1, &temp[0]); | 1816 cmd.Init(kUniform4FakeLocation, 1, &temp[0]); |
| 1876 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1877 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1817 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1878 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1818 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1879 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 1880 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); | |
| 1881 } | 1819 } |
| 1882 | 1820 |
| 1883 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateInvalidType) { | 1821 TEST_P(GLES3DecoderWithShaderTest, Uniform1uivImmediateInvalidType) { |
| 1884 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); | 1822 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); |
| 1885 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); | 1823 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); |
| 1886 GLuint temp[1 * 2] = { | 1824 GLuint temp[1 * 2] = { |
| 1887 0, | 1825 0, |
| 1888 }; | 1826 }; |
| 1889 // uniform1 is SAMPLER type. | 1827 // uniform1 is SAMPLER type. |
| 1890 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); | 1828 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); |
| 1891 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1892 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1829 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1893 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1830 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1894 } | 1831 } |
| 1895 | 1832 |
| 1896 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivZeroCount) { | 1833 TEST_P(GLES3DecoderWithShaderTest, Uniform1uivZeroCount) { |
| 1897 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); | 1834 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); |
| 1898 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); | 1835 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); |
| 1899 GLuint temp = 0; | 1836 GLuint temp = 0; |
| 1900 cmd.Init(kUniform4FakeLocation, 0, &temp); | 1837 cmd.Init(kUniform4FakeLocation, 0, &temp); |
| 1901 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1902 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1838 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1903 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1839 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1904 } | 1840 } |
| 1905 | 1841 |
| 1906 TEST_P(GLES2DecoderWithShaderTest, Uniform2uiValidArgs) { | 1842 TEST_P(GLES3DecoderWithShaderTest, Uniform2uiValidArgs) { |
| 1907 EXPECT_CALL(*gl_, Uniform2uiv(kUniform5RealLocation, 1, _)); | 1843 EXPECT_CALL(*gl_, Uniform2uiv(kUniform5RealLocation, 1, _)); |
| 1908 Uniform2ui cmd; | 1844 Uniform2ui cmd; |
| 1909 cmd.Init(kUniform5FakeLocation, 2, 3); | 1845 cmd.Init(kUniform5FakeLocation, 2, 3); |
| 1910 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1911 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1846 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1912 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1847 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1913 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 1914 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 1915 } | 1848 } |
| 1916 | 1849 |
| 1917 TEST_P(GLES2DecoderWithShaderTest, Uniform2uivImmediateValidArgs) { | 1850 TEST_P(GLES3DecoderWithShaderTest, Uniform2uivImmediateValidArgs) { |
| 1918 Uniform2uivImmediate& cmd = | 1851 Uniform2uivImmediate& cmd = |
| 1919 *GetImmediateAs<Uniform2uivImmediate>(); | 1852 *GetImmediateAs<Uniform2uivImmediate>(); |
| 1920 GLuint temp[2 * 1] = { | 1853 GLuint temp[2 * 1] = { |
| 1921 0, | 1854 0, |
| 1922 }; | 1855 }; |
| 1923 EXPECT_CALL(*gl_, | 1856 EXPECT_CALL(*gl_, |
| 1924 Uniform2uiv(kUniform5RealLocation, 1, PointsToArray(temp, 2))); | 1857 Uniform2uiv(kUniform5RealLocation, 1, PointsToArray(temp, 2))); |
| 1925 cmd.Init(kUniform5FakeLocation, 1, &temp[0]); | 1858 cmd.Init(kUniform5FakeLocation, 1, &temp[0]); |
| 1926 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1927 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1859 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1928 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1860 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1929 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 1930 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); | |
| 1931 } | 1861 } |
| 1932 | 1862 |
| 1933 TEST_P(GLES2DecoderWithShaderTest, Uniform3uiValidArgs) { | 1863 TEST_P(GLES3DecoderWithShaderTest, Uniform3uiValidArgs) { |
| 1934 EXPECT_CALL(*gl_, Uniform3uiv(kUniform6RealLocation, 1, _)); | 1864 EXPECT_CALL(*gl_, Uniform3uiv(kUniform6RealLocation, 1, _)); |
| 1935 Uniform3ui cmd; | 1865 Uniform3ui cmd; |
| 1936 cmd.Init(kUniform6FakeLocation, 2, 3, 4); | 1866 cmd.Init(kUniform6FakeLocation, 2, 3, 4); |
| 1937 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1938 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1867 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1939 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1868 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1940 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 1941 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 1942 } | 1869 } |
| 1943 | 1870 |
| 1944 TEST_P(GLES2DecoderWithShaderTest, Uniform3uivImmediateValidArgs) { | 1871 TEST_P(GLES3DecoderWithShaderTest, Uniform3uivImmediateValidArgs) { |
| 1945 Uniform3uivImmediate& cmd = | 1872 Uniform3uivImmediate& cmd = |
| 1946 *GetImmediateAs<Uniform3uivImmediate>(); | 1873 *GetImmediateAs<Uniform3uivImmediate>(); |
| 1947 GLuint temp[3 * 1] = { | 1874 GLuint temp[3 * 1] = { |
| 1948 0, | 1875 0, |
| 1949 }; | 1876 }; |
| 1950 EXPECT_CALL(*gl_, | 1877 EXPECT_CALL(*gl_, |
| 1951 Uniform3uiv(kUniform6RealLocation, 1, PointsToArray(temp, 3))); | 1878 Uniform3uiv(kUniform6RealLocation, 1, PointsToArray(temp, 3))); |
| 1952 cmd.Init(kUniform6FakeLocation, 1, &temp[0]); | 1879 cmd.Init(kUniform6FakeLocation, 1, &temp[0]); |
| 1953 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1954 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1880 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1955 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1881 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1956 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 1957 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); | |
| 1958 } | 1882 } |
| 1959 | 1883 |
| 1960 TEST_P(GLES2DecoderWithShaderTest, Uniform4uiValidArgs) { | 1884 TEST_P(GLES3DecoderWithShaderTest, Uniform4uiValidArgs) { |
| 1961 EXPECT_CALL(*gl_, Uniform4uiv(kUniform7RealLocation, 1, _)); | 1885 EXPECT_CALL(*gl_, Uniform4uiv(kUniform7RealLocation, 1, _)); |
| 1962 Uniform4ui cmd; | 1886 Uniform4ui cmd; |
| 1963 cmd.Init(kUniform7FakeLocation, 2, 3, 4, 5); | 1887 cmd.Init(kUniform7FakeLocation, 2, 3, 4, 5); |
| 1964 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1965 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1888 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1966 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1889 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1967 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 1968 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 1969 } | 1890 } |
| 1970 | 1891 |
| 1971 TEST_P(GLES2DecoderWithShaderTest, Uniform4uivImmediateValidArgs) { | 1892 TEST_P(GLES3DecoderWithShaderTest, Uniform4uivImmediateValidArgs) { |
| 1972 Uniform4uivImmediate& cmd = | 1893 Uniform4uivImmediate& cmd = |
| 1973 *GetImmediateAs<Uniform4uivImmediate>(); | 1894 *GetImmediateAs<Uniform4uivImmediate>(); |
| 1974 GLuint temp[4 * 1] = { | 1895 GLuint temp[4 * 1] = { |
| 1975 0, | 1896 0, |
| 1976 }; | 1897 }; |
| 1977 EXPECT_CALL(*gl_, | 1898 EXPECT_CALL(*gl_, |
| 1978 Uniform4uiv(kUniform7RealLocation, 1, PointsToArray(temp, 4))); | 1899 Uniform4uiv(kUniform7RealLocation, 1, PointsToArray(temp, 4))); |
| 1979 cmd.Init(kUniform7FakeLocation, 1, &temp[0]); | 1900 cmd.Init(kUniform7FakeLocation, 1, &temp[0]); |
| 1980 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 1981 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1901 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1982 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1902 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1983 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 1984 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); | |
| 1985 } | 1903 } |
| 1986 | 1904 |
| 1987 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) { | 1905 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) { |
| 1988 const uint32_t kBucketId = 123; | 1906 const uint32_t kBucketId = 123; |
| 1989 const GLint kLocation = 2; | 1907 const GLint kLocation = 2; |
| 1990 const char* kName = "testing"; | 1908 const char* kName = "testing"; |
| 1991 EXPECT_CALL(*gl_, | 1909 EXPECT_CALL(*gl_, |
| 1992 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) | 1910 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) |
| 1993 .Times(1); | 1911 .Times(1); |
| 1994 SetBucketAsCString(kBucketId, kName); | 1912 SetBucketAsCString(kBucketId, kName); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2058 kInvalidSharedMemoryId, | 1976 kInvalidSharedMemoryId, |
| 2059 kSharedMemoryOffset); | 1977 kSharedMemoryOffset); |
| 2060 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1978 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2061 cmd.Init(client_program_id_, | 1979 cmd.Init(client_program_id_, |
| 2062 kBucketId, | 1980 kBucketId, |
| 2063 kSharedMemoryId, | 1981 kSharedMemoryId, |
| 2064 kInvalidSharedMemoryOffset); | 1982 kInvalidSharedMemoryOffset); |
| 2065 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1983 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2066 } | 1984 } |
| 2067 | 1985 |
| 2068 TEST_P(GLES3DecoderWithESSL3ShaderTest, GetFragDataLocation) { | 1986 TEST_P(GLES3DecoderWithShaderTest, GetFragDataLocation) { |
| 2069 const uint32_t kBucketId = 123; | 1987 const uint32_t kBucketId = 123; |
| 2070 typedef GetFragDataLocation::Result Result; | 1988 typedef GetFragDataLocation::Result Result; |
| 2071 Result* result = GetSharedMemoryAs<Result*>(); | 1989 Result* result = GetSharedMemoryAs<Result*>(); |
| 2072 SetBucketAsCString(kBucketId, kOutputVariable1NameESSL3); | 1990 SetBucketAsCString(kBucketId, kOutputVariable1NameESSL3); |
| 2073 *result = -1; | 1991 *result = -1; |
| 2074 GetFragDataLocation cmd; | 1992 GetFragDataLocation cmd; |
| 2075 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 1993 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 2076 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 2077 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1994 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2078 EXPECT_EQ(static_cast<GLint>(kOutputVariable1ColorName), *result); | 1995 EXPECT_EQ(static_cast<GLint>(kOutputVariable1ColorName), *result); |
| 2079 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 2080 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 2081 } | 1996 } |
| 2082 | 1997 |
| 2083 TEST_P(GLES3DecoderWithESSL3ShaderTest, GetFragDataLocationInvalidArgs) { | 1998 TEST_P(GLES3DecoderWithShaderTest, GetFragDataLocationInvalidArgs) { |
| 2084 const uint32_t kBucketId = 123; | 1999 const uint32_t kBucketId = 123; |
| 2085 typedef GetFragDataLocation::Result Result; | 2000 typedef GetFragDataLocation::Result Result; |
| 2086 Result* result = GetSharedMemoryAs<Result*>(); | 2001 Result* result = GetSharedMemoryAs<Result*>(); |
| 2087 *result = -1; | 2002 *result = -1; |
| 2088 GetFragDataLocation cmd; | 2003 GetFragDataLocation cmd; |
| 2089 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 2090 // Check no bucket | 2004 // Check no bucket |
| 2091 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 2005 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 2092 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2006 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2093 EXPECT_EQ(-1, *result); | 2007 EXPECT_EQ(-1, *result); |
| 2094 // Check bad program id. | 2008 // Check bad program id. |
| 2095 const char* kName = "color"; | 2009 const char* kName = "color"; |
| 2096 SetBucketAsCString(kBucketId, kName); | 2010 SetBucketAsCString(kBucketId, kName); |
| 2097 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 2011 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 2098 *result = -1; | 2012 *result = -1; |
| 2099 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2013 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2100 EXPECT_EQ(-1, *result); | 2014 EXPECT_EQ(-1, *result); |
| 2101 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 2015 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 2102 // Check bad memory | 2016 // Check bad memory |
| 2103 cmd.Init(client_program_id_, | 2017 cmd.Init(client_program_id_, |
| 2104 kBucketId, | 2018 kBucketId, |
| 2105 kInvalidSharedMemoryId, | 2019 kInvalidSharedMemoryId, |
| 2106 kSharedMemoryOffset); | 2020 kSharedMemoryOffset); |
| 2107 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2021 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2108 cmd.Init(client_program_id_, | 2022 cmd.Init(client_program_id_, |
| 2109 kBucketId, | 2023 kBucketId, |
| 2110 kSharedMemoryId, | 2024 kSharedMemoryId, |
| 2111 kInvalidSharedMemoryOffset); | 2025 kInvalidSharedMemoryOffset); |
| 2112 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2026 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2113 } | 2027 } |
| 2114 | 2028 |
| 2115 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlockIndex) { | 2029 TEST_P(GLES3DecoderWithShaderTest, GetUniformBlockIndex) { |
| 2116 const uint32_t kBucketId = 123; | 2030 const uint32_t kBucketId = 123; |
| 2117 const GLuint kIndex = 10; | 2031 const GLuint kIndex = 10; |
| 2118 const char* kName = "color"; | 2032 const char* kName = "color"; |
| 2119 typedef GetUniformBlockIndex::Result Result; | 2033 typedef GetUniformBlockIndex::Result Result; |
| 2120 Result* result = GetSharedMemoryAs<Result*>(); | 2034 Result* result = GetSharedMemoryAs<Result*>(); |
| 2121 SetBucketAsCString(kBucketId, kName); | 2035 SetBucketAsCString(kBucketId, kName); |
| 2122 *result = GL_INVALID_INDEX; | 2036 *result = GL_INVALID_INDEX; |
| 2123 GetUniformBlockIndex cmd; | 2037 GetUniformBlockIndex cmd; |
| 2124 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 2038 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 2125 EXPECT_CALL(*gl_, GetUniformBlockIndex(kServiceProgramId, StrEq(kName))) | 2039 EXPECT_CALL(*gl_, GetUniformBlockIndex(kServiceProgramId, StrEq(kName))) |
| 2126 .WillOnce(Return(kIndex)) | 2040 .WillOnce(Return(kIndex)) |
| 2127 .RetiresOnSaturation(); | 2041 .RetiresOnSaturation(); |
| 2128 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 2129 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2042 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2130 EXPECT_EQ(kIndex, *result); | 2043 EXPECT_EQ(kIndex, *result); |
| 2131 decoder_->set_unsafe_es3_apis_enabled(false); | |
| 2132 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | |
| 2133 } | 2044 } |
| 2134 | 2045 |
| 2135 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlockIndexInvalidArgs) { | 2046 TEST_P(GLES3DecoderWithShaderTest, GetUniformBlockIndexInvalidArgs) { |
| 2136 const uint32_t kBucketId = 123; | 2047 const uint32_t kBucketId = 123; |
| 2137 typedef GetUniformBlockIndex::Result Result; | 2048 typedef GetUniformBlockIndex::Result Result; |
| 2138 Result* result = GetSharedMemoryAs<Result*>(); | 2049 Result* result = GetSharedMemoryAs<Result*>(); |
| 2139 *result = GL_INVALID_INDEX; | 2050 *result = GL_INVALID_INDEX; |
| 2140 GetUniformBlockIndex cmd; | 2051 GetUniformBlockIndex cmd; |
| 2141 decoder_->set_unsafe_es3_apis_enabled(true); | |
| 2142 // Check no bucket | 2052 // Check no bucket |
| 2143 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 2053 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 2144 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2054 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2145 EXPECT_EQ(GL_INVALID_INDEX, *result); | 2055 EXPECT_EQ(GL_INVALID_INDEX, *result); |
| 2146 // Check bad program id. | 2056 // Check bad program id. |
| 2147 const char* kName = "color"; | 2057 const char* kName = "color"; |
| 2148 SetBucketAsCString(kBucketId, kName); | 2058 SetBucketAsCString(kBucketId, kName); |
| 2149 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 2059 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 2150 *result = GL_INVALID_INDEX; | 2060 *result = GL_INVALID_INDEX; |
| 2151 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2061 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2205 kInvalidSharedMemoryId, | 2115 kInvalidSharedMemoryId, |
| 2206 kSharedMemoryOffset); | 2116 kSharedMemoryOffset); |
| 2207 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2117 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2208 cmd.Init(client_program_id_, | 2118 cmd.Init(client_program_id_, |
| 2209 kBucketId, | 2119 kBucketId, |
| 2210 kSharedMemoryId, | 2120 kSharedMemoryId, |
| 2211 kInvalidSharedMemoryOffset); | 2121 kInvalidSharedMemoryOffset); |
| 2212 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2122 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2213 } | 2123 } |
| 2214 | 2124 |
| 2215 TEST_P(GLES3DecoderWithESSL3ShaderTest, Basic) { | 2125 TEST_P(GLES3DecoderWithShaderTest, Basic) { |
| 2216 // Make sure the setup is correct for ES3. | 2126 // Make sure the setup is correct for ES3. |
| 2217 EXPECT_TRUE(decoder_->unsafe_es3_apis_enabled()); | 2127 EXPECT_TRUE(decoder_->unsafe_es3_apis_enabled()); |
| 2218 EXPECT_TRUE(feature_info()->validators()->texture_bind_target.IsValid( | 2128 EXPECT_TRUE(feature_info()->validators()->texture_bind_target.IsValid( |
| 2219 GL_TEXTURE_3D)); | 2129 GL_TEXTURE_3D)); |
| 2220 } | 2130 } |
| 2221 | 2131 |
| 2222 TEST_P(GLES3DecoderWithESSL3ShaderTest, UniformBlockBindingValidArgs) { | 2132 TEST_P(GLES3DecoderWithShaderTest, UniformBlockBindingValidArgs) { |
| 2223 EXPECT_CALL(*gl_, UniformBlockBinding(kServiceProgramId, 1, 3)); | 2133 EXPECT_CALL(*gl_, UniformBlockBinding(kServiceProgramId, 1, 3)); |
| 2224 SpecializedSetup<UniformBlockBinding, 0>(true); | 2134 SpecializedSetup<UniformBlockBinding, 0>(true); |
| 2225 UniformBlockBinding cmd; | 2135 UniformBlockBinding cmd; |
| 2226 cmd.Init(client_program_id_, 1, 3); | 2136 cmd.Init(client_program_id_, 1, 3); |
| 2227 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2137 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2228 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2138 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2229 } | 2139 } |
| 2230 | 2140 |
| 2231 TEST_P(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUMBucket) { | 2141 TEST_P(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUMBucket) { |
| 2232 const uint32_t kBucketId = 123; | 2142 const uint32_t kBucketId = 123; |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2356 } | 2266 } |
| 2357 | 2267 |
| 2358 // TODO(gman): DeleteProgram | 2268 // TODO(gman): DeleteProgram |
| 2359 | 2269 |
| 2360 // TODO(gman): UseProgram | 2270 // TODO(gman): UseProgram |
| 2361 | 2271 |
| 2362 // TODO(gman): DeleteShader | 2272 // TODO(gman): DeleteShader |
| 2363 | 2273 |
| 2364 } // namespace gles2 | 2274 } // namespace gles2 |
| 2365 } // namespace gpu | 2275 } // namespace gpu |
| OLD | NEW |