| 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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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); | 93 decoder_->set_es3_apis_enabled(true); |
| 94 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 94 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 95 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 95 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 96 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size()); | 96 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size()); |
| 97 UniformBlocksHeader* header = | 97 UniformBlocksHeader* header = |
| 98 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader)); | 98 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader)); |
| 99 EXPECT_TRUE(header != NULL); | 99 EXPECT_TRUE(header != NULL); |
| 100 EXPECT_EQ(0u, header->num_uniform_blocks); | 100 EXPECT_EQ(0u, header->num_uniform_blocks); |
| 101 decoder_->set_unsafe_es3_apis_enabled(false); | 101 decoder_->set_es3_apis_enabled(false); |
| 102 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 102 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 103 } | 103 } |
| 104 | 104 |
| 105 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlocksCHROMIUMInvalidArgs) { | 105 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlocksCHROMIUMInvalidArgs) { |
| 106 const uint32_t kBucketId = 123; | 106 const uint32_t kBucketId = 123; |
| 107 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 107 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 108 EXPECT_TRUE(bucket == NULL); | 108 EXPECT_TRUE(bucket == NULL); |
| 109 GetUniformBlocksCHROMIUM cmd; | 109 GetUniformBlocksCHROMIUM cmd; |
| 110 cmd.Init(kInvalidClientId, kBucketId); | 110 cmd.Init(kInvalidClientId, kBucketId); |
| 111 decoder_->set_unsafe_es3_apis_enabled(true); | 111 decoder_->set_es3_apis_enabled(true); |
| 112 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 112 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 113 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 113 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 114 bucket = decoder_->GetBucket(kBucketId); | 114 bucket = decoder_->GetBucket(kBucketId); |
| 115 ASSERT_TRUE(bucket != NULL); | 115 ASSERT_TRUE(bucket != NULL); |
| 116 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size()); | 116 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size()); |
| 117 UniformBlocksHeader* header = | 117 UniformBlocksHeader* header = |
| 118 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader)); | 118 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader)); |
| 119 ASSERT_TRUE(header != NULL); | 119 ASSERT_TRUE(header != NULL); |
| 120 EXPECT_EQ(0u, header->num_uniform_blocks); | 120 EXPECT_EQ(0u, header->num_uniform_blocks); |
| 121 } | 121 } |
| 122 | 122 |
| 123 TEST_P(GLES2DecoderWithShaderTest, GetUniformsES3CHROMIUMValidArgs) { | 123 TEST_P(GLES2DecoderWithShaderTest, GetUniformsES3CHROMIUMValidArgs) { |
| 124 const uint32_t kBucketId = 123; | 124 const uint32_t kBucketId = 123; |
| 125 GetUniformsES3CHROMIUM cmd; | 125 GetUniformsES3CHROMIUM cmd; |
| 126 cmd.Init(client_program_id_, kBucketId); | 126 cmd.Init(client_program_id_, kBucketId); |
| 127 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 127 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 128 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 128 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 129 .RetiresOnSaturation(); | 129 .RetiresOnSaturation(); |
| 130 EXPECT_CALL(*gl_, | 130 EXPECT_CALL(*gl_, |
| 131 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORMS, _)) | 131 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORMS, _)) |
| 132 .WillOnce(SetArgPointee<2>(0)) | 132 .WillOnce(SetArgPointee<2>(0)) |
| 133 .RetiresOnSaturation(); | 133 .RetiresOnSaturation(); |
| 134 decoder_->set_unsafe_es3_apis_enabled(true); | 134 decoder_->set_es3_apis_enabled(true); |
| 135 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 135 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 136 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 136 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 137 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size()); | 137 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size()); |
| 138 UniformsES3Header* header = | 138 UniformsES3Header* header = |
| 139 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header)); | 139 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header)); |
| 140 EXPECT_TRUE(header != NULL); | 140 EXPECT_TRUE(header != NULL); |
| 141 EXPECT_EQ(0u, header->num_uniforms); | 141 EXPECT_EQ(0u, header->num_uniforms); |
| 142 decoder_->set_unsafe_es3_apis_enabled(false); | 142 decoder_->set_es3_apis_enabled(false); |
| 143 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 143 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 144 } | 144 } |
| 145 | 145 |
| 146 TEST_P(GLES2DecoderWithShaderTest, GetUniformsES3CHROMIUMInvalidArgs) { | 146 TEST_P(GLES2DecoderWithShaderTest, GetUniformsES3CHROMIUMInvalidArgs) { |
| 147 const uint32_t kBucketId = 123; | 147 const uint32_t kBucketId = 123; |
| 148 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 148 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 149 EXPECT_TRUE(bucket == NULL); | 149 EXPECT_TRUE(bucket == NULL); |
| 150 GetUniformsES3CHROMIUM cmd; | 150 GetUniformsES3CHROMIUM cmd; |
| 151 cmd.Init(kInvalidClientId, kBucketId); | 151 cmd.Init(kInvalidClientId, kBucketId); |
| 152 decoder_->set_unsafe_es3_apis_enabled(true); | 152 decoder_->set_es3_apis_enabled(true); |
| 153 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 153 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 154 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 154 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 155 bucket = decoder_->GetBucket(kBucketId); | 155 bucket = decoder_->GetBucket(kBucketId); |
| 156 ASSERT_TRUE(bucket != NULL); | 156 ASSERT_TRUE(bucket != NULL); |
| 157 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size()); | 157 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size()); |
| 158 UniformsES3Header* header = | 158 UniformsES3Header* header = |
| 159 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header)); | 159 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header)); |
| 160 ASSERT_TRUE(header != NULL); | 160 ASSERT_TRUE(header != NULL); |
| 161 EXPECT_EQ(0u, header->num_uniforms); | 161 EXPECT_EQ(0u, header->num_uniforms); |
| 162 } | 162 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 173 .WillOnce(SetArgPointee<2>(GL_INTERLEAVED_ATTRIBS)) | 173 .WillOnce(SetArgPointee<2>(GL_INTERLEAVED_ATTRIBS)) |
| 174 .RetiresOnSaturation(); | 174 .RetiresOnSaturation(); |
| 175 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 175 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 176 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 176 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 177 .RetiresOnSaturation(); | 177 .RetiresOnSaturation(); |
| 178 EXPECT_CALL(*gl_, | 178 EXPECT_CALL(*gl_, |
| 179 GetProgramiv( | 179 GetProgramiv( |
| 180 kServiceProgramId, GL_TRANSFORM_FEEDBACK_VARYINGS, _)) | 180 kServiceProgramId, GL_TRANSFORM_FEEDBACK_VARYINGS, _)) |
| 181 .WillOnce(SetArgPointee<2>(0)) | 181 .WillOnce(SetArgPointee<2>(0)) |
| 182 .RetiresOnSaturation(); | 182 .RetiresOnSaturation(); |
| 183 decoder_->set_unsafe_es3_apis_enabled(true); | 183 decoder_->set_es3_apis_enabled(true); |
| 184 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 184 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 185 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 185 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 186 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size()); | 186 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size()); |
| 187 TransformFeedbackVaryingsHeader* header = | 187 TransformFeedbackVaryingsHeader* header = |
| 188 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>( | 188 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>( |
| 189 0, sizeof(TransformFeedbackVaryingsHeader)); | 189 0, sizeof(TransformFeedbackVaryingsHeader)); |
| 190 EXPECT_TRUE(header != NULL); | 190 EXPECT_TRUE(header != NULL); |
| 191 EXPECT_EQ(static_cast<uint32_t>(GL_INTERLEAVED_ATTRIBS), | 191 EXPECT_EQ(static_cast<uint32_t>(GL_INTERLEAVED_ATTRIBS), |
| 192 header->transform_feedback_buffer_mode); | 192 header->transform_feedback_buffer_mode); |
| 193 EXPECT_EQ(0u, header->num_transform_feedback_varyings); | 193 EXPECT_EQ(0u, header->num_transform_feedback_varyings); |
| 194 decoder_->set_unsafe_es3_apis_enabled(false); | 194 decoder_->set_es3_apis_enabled(false); |
| 195 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 195 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 196 } | 196 } |
| 197 | 197 |
| 198 TEST_P(GLES2DecoderWithShaderTest, | 198 TEST_P(GLES2DecoderWithShaderTest, |
| 199 GetTransformFeedbackVaryingsCHROMIUMInvalidArgs) { | 199 GetTransformFeedbackVaryingsCHROMIUMInvalidArgs) { |
| 200 const uint32_t kBucketId = 123; | 200 const uint32_t kBucketId = 123; |
| 201 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 201 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 202 EXPECT_TRUE(bucket == NULL); | 202 EXPECT_TRUE(bucket == NULL); |
| 203 GetTransformFeedbackVaryingsCHROMIUM cmd; | 203 GetTransformFeedbackVaryingsCHROMIUM cmd; |
| 204 cmd.Init(kInvalidClientId, kBucketId); | 204 cmd.Init(kInvalidClientId, kBucketId); |
| 205 decoder_->set_unsafe_es3_apis_enabled(true); | 205 decoder_->set_es3_apis_enabled(true); |
| 206 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 206 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 207 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 207 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 208 bucket = decoder_->GetBucket(kBucketId); | 208 bucket = decoder_->GetBucket(kBucketId); |
| 209 ASSERT_TRUE(bucket != NULL); | 209 ASSERT_TRUE(bucket != NULL); |
| 210 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size()); | 210 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size()); |
| 211 TransformFeedbackVaryingsHeader* header = | 211 TransformFeedbackVaryingsHeader* header = |
| 212 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>( | 212 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>( |
| 213 0, sizeof(TransformFeedbackVaryingsHeader)); | 213 0, sizeof(TransformFeedbackVaryingsHeader)); |
| 214 ASSERT_TRUE(header != NULL); | 214 ASSERT_TRUE(header != NULL); |
| 215 EXPECT_EQ(0u, header->num_transform_feedback_varyings); | 215 EXPECT_EQ(0u, header->num_transform_feedback_varyings); |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 GetUniformuiv::Result* result = | 327 GetUniformuiv::Result* result = |
| 328 static_cast<GetUniformuiv::Result*>(shared_memory_address_); | 328 static_cast<GetUniformuiv::Result*>(shared_memory_address_); |
| 329 result->size = 0; | 329 result->size = 0; |
| 330 GetUniformuiv cmd; | 330 GetUniformuiv cmd; |
| 331 cmd.Init(client_program_id_, | 331 cmd.Init(client_program_id_, |
| 332 kUniform2FakeLocation, | 332 kUniform2FakeLocation, |
| 333 kSharedMemoryId, | 333 kSharedMemoryId, |
| 334 kSharedMemoryOffset); | 334 kSharedMemoryOffset); |
| 335 EXPECT_CALL(*gl_, GetUniformuiv(kServiceProgramId, kUniform2RealLocation, _)) | 335 EXPECT_CALL(*gl_, GetUniformuiv(kServiceProgramId, kUniform2RealLocation, _)) |
| 336 .Times(1); | 336 .Times(1); |
| 337 decoder_->set_unsafe_es3_apis_enabled(true); | 337 decoder_->set_es3_apis_enabled(true); |
| 338 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 338 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 339 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type), | 339 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type), |
| 340 static_cast<uint32_t>(result->GetNumResults())); | 340 static_cast<uint32_t>(result->GetNumResults())); |
| 341 decoder_->set_unsafe_es3_apis_enabled(false); | 341 decoder_->set_es3_apis_enabled(false); |
| 342 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 342 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 343 } | 343 } |
| 344 | 344 |
| 345 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivArrayElementSucceeds) { | 345 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivArrayElementSucceeds) { |
| 346 GetUniformuiv::Result* result = | 346 GetUniformuiv::Result* result = |
| 347 static_cast<GetUniformuiv::Result*>(shared_memory_address_); | 347 static_cast<GetUniformuiv::Result*>(shared_memory_address_); |
| 348 result->size = 0; | 348 result->size = 0; |
| 349 GetUniformuiv cmd; | 349 GetUniformuiv cmd; |
| 350 cmd.Init(client_program_id_, | 350 cmd.Init(client_program_id_, |
| 351 kUniform2ElementFakeLocation, | 351 kUniform2ElementFakeLocation, |
| 352 kSharedMemoryId, | 352 kSharedMemoryId, |
| 353 kSharedMemoryOffset); | 353 kSharedMemoryOffset); |
| 354 EXPECT_CALL(*gl_, | 354 EXPECT_CALL(*gl_, |
| 355 GetUniformuiv(kServiceProgramId, kUniform2ElementRealLocation, _)) | 355 GetUniformuiv(kServiceProgramId, kUniform2ElementRealLocation, _)) |
| 356 .Times(1); | 356 .Times(1); |
| 357 decoder_->set_unsafe_es3_apis_enabled(true); | 357 decoder_->set_es3_apis_enabled(true); |
| 358 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 358 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 359 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type), | 359 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type), |
| 360 static_cast<uint32_t>(result->GetNumResults())); | 360 static_cast<uint32_t>(result->GetNumResults())); |
| 361 } | 361 } |
| 362 | 362 |
| 363 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadProgramFails) { | 363 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadProgramFails) { |
| 364 GetUniformuiv::Result* result = | 364 GetUniformuiv::Result* result = |
| 365 static_cast<GetUniformuiv::Result*>(shared_memory_address_); | 365 static_cast<GetUniformuiv::Result*>(shared_memory_address_); |
| 366 result->size = 0; | 366 result->size = 0; |
| 367 GetUniformuiv cmd; | 367 GetUniformuiv cmd; |
| 368 // non-existant program | 368 // non-existant program |
| 369 cmd.Init(kInvalidClientId, | 369 cmd.Init(kInvalidClientId, |
| 370 kUniform2FakeLocation, | 370 kUniform2FakeLocation, |
| 371 kSharedMemoryId, | 371 kSharedMemoryId, |
| 372 kSharedMemoryOffset); | 372 kSharedMemoryOffset); |
| 373 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); | 373 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); |
| 374 decoder_->set_unsafe_es3_apis_enabled(true); | 374 decoder_->set_es3_apis_enabled(true); |
| 375 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 375 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 376 EXPECT_EQ(0U, result->size); | 376 EXPECT_EQ(0U, result->size); |
| 377 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 377 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 378 // Valid id that is not a program. The GL spec requires a different error for | 378 // Valid id that is not a program. The GL spec requires a different error for |
| 379 // this case. | 379 // this case. |
| 380 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 380 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 381 result->size = kInitialResult; | 381 result->size = kInitialResult; |
| 382 cmd.Init(client_shader_id_, | 382 cmd.Init(client_shader_id_, |
| 383 kUniform2FakeLocation, | 383 kUniform2FakeLocation, |
| 384 kSharedMemoryId, | 384 kSharedMemoryId, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 409 GetUniformuiv::Result* result = | 409 GetUniformuiv::Result* result = |
| 410 static_cast<GetUniformuiv::Result*>(shared_memory_address_); | 410 static_cast<GetUniformuiv::Result*>(shared_memory_address_); |
| 411 result->size = 0; | 411 result->size = 0; |
| 412 GetUniformuiv cmd; | 412 GetUniformuiv cmd; |
| 413 // invalid location | 413 // invalid location |
| 414 cmd.Init(client_program_id_, | 414 cmd.Init(client_program_id_, |
| 415 kInvalidUniformLocation, | 415 kInvalidUniformLocation, |
| 416 kSharedMemoryId, | 416 kSharedMemoryId, |
| 417 kSharedMemoryOffset); | 417 kSharedMemoryOffset); |
| 418 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); | 418 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); |
| 419 decoder_->set_unsafe_es3_apis_enabled(true); | 419 decoder_->set_es3_apis_enabled(true); |
| 420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 421 EXPECT_EQ(0U, result->size); | 421 EXPECT_EQ(0U, result->size); |
| 422 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 422 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 423 } | 423 } |
| 424 | 424 |
| 425 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadSharedMemoryFails) { | 425 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadSharedMemoryFails) { |
| 426 GetUniformuiv cmd; | 426 GetUniformuiv cmd; |
| 427 cmd.Init(client_program_id_, | 427 cmd.Init(client_program_id_, |
| 428 kUniform2FakeLocation, | 428 kUniform2FakeLocation, |
| 429 kInvalidSharedMemoryId, | 429 kInvalidSharedMemoryId, |
| 430 kSharedMemoryOffset); | 430 kSharedMemoryOffset); |
| 431 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); | 431 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); |
| 432 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 432 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 433 decoder_->set_unsafe_es3_apis_enabled(true); | 433 decoder_->set_es3_apis_enabled(true); |
| 434 cmd.Init(client_program_id_, | 434 cmd.Init(client_program_id_, |
| 435 kUniform2FakeLocation, | 435 kUniform2FakeLocation, |
| 436 kSharedMemoryId, | 436 kSharedMemoryId, |
| 437 kInvalidSharedMemoryOffset); | 437 kInvalidSharedMemoryOffset); |
| 438 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 438 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 439 }; | 439 }; |
| 440 | 440 |
| 441 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { | 441 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { |
| 442 GetUniformfv::Result* result = | 442 GetUniformfv::Result* result = |
| 443 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 443 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 804 EXPECT_CALL(*gl_, | 804 EXPECT_CALL(*gl_, |
| 805 GetProgramiv(kServiceProgramId, | 805 GetProgramiv(kServiceProgramId, |
| 806 GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, _)) | 806 GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, _)) |
| 807 .WillOnce(SetArgPointee<2>(kMaxLength)) | 807 .WillOnce(SetArgPointee<2>(kMaxLength)) |
| 808 .RetiresOnSaturation(); | 808 .RetiresOnSaturation(); |
| 809 EXPECT_CALL(*gl_, | 809 EXPECT_CALL(*gl_, |
| 810 GetActiveUniformBlockName(kServiceProgramId, 0, _, _, _)) | 810 GetActiveUniformBlockName(kServiceProgramId, 0, _, _, _)) |
| 811 .WillOnce(DoAll(SetArgPointee<3>(strlen(kName)), | 811 .WillOnce(DoAll(SetArgPointee<3>(strlen(kName)), |
| 812 SetArrayArgument<4>(kName, kName + strlen(kName) + 1))) | 812 SetArrayArgument<4>(kName, kName + strlen(kName) + 1))) |
| 813 .RetiresOnSaturation(); | 813 .RetiresOnSaturation(); |
| 814 decoder_->set_unsafe_es3_apis_enabled(true); | 814 decoder_->set_es3_apis_enabled(true); |
| 815 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 815 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 816 EXPECT_NE(0, *result); | 816 EXPECT_NE(0, *result); |
| 817 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 817 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 818 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 818 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 819 ASSERT_TRUE(bucket != NULL); | 819 ASSERT_TRUE(bucket != NULL); |
| 820 EXPECT_EQ(0, | 820 EXPECT_EQ(0, |
| 821 memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size())); | 821 memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size())); |
| 822 decoder_->set_unsafe_es3_apis_enabled(false); | 822 decoder_->set_es3_apis_enabled(false); |
| 823 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 823 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 824 } | 824 } |
| 825 | 825 |
| 826 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameUnlinkedProgram) { | 826 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameUnlinkedProgram) { |
| 827 const uint32_t kBucketId = 123; | 827 const uint32_t kBucketId = 123; |
| 828 GetActiveUniformBlockName cmd; | 828 GetActiveUniformBlockName cmd; |
| 829 typedef GetActiveUniformBlockName::Result Result; | 829 typedef GetActiveUniformBlockName::Result Result; |
| 830 Result* result = static_cast<Result*>(shared_memory_address_); | 830 Result* result = static_cast<Result*>(shared_memory_address_); |
| 831 *result = 0; | 831 *result = 0; |
| 832 cmd.Init(client_program_id_, | 832 cmd.Init(client_program_id_, |
| 833 0, | 833 0, |
| 834 kBucketId, | 834 kBucketId, |
| 835 shared_memory_id_, | 835 shared_memory_id_, |
| 836 shared_memory_offset_); | 836 shared_memory_offset_); |
| 837 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 837 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 838 .WillOnce(SetArgPointee<2>(GL_FALSE)) | 838 .WillOnce(SetArgPointee<2>(GL_FALSE)) |
| 839 .RetiresOnSaturation(); | 839 .RetiresOnSaturation(); |
| 840 decoder_->set_unsafe_es3_apis_enabled(true); | 840 decoder_->set_es3_apis_enabled(true); |
| 841 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 841 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 842 EXPECT_EQ(0, *result); | 842 EXPECT_EQ(0, *result); |
| 843 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 843 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 844 } | 844 } |
| 845 | 845 |
| 846 TEST_P(GLES2DecoderWithShaderTest, | 846 TEST_P(GLES2DecoderWithShaderTest, |
| 847 GetActiveUniformBlockNameResultNotInitFails) { | 847 GetActiveUniformBlockNameResultNotInitFails) { |
| 848 const uint32_t kBucketId = 123; | 848 const uint32_t kBucketId = 123; |
| 849 GetActiveUniformBlockName cmd; | 849 GetActiveUniformBlockName cmd; |
| 850 typedef GetActiveUniformBlockName::Result Result; | 850 typedef GetActiveUniformBlockName::Result Result; |
| 851 Result* result = static_cast<Result*>(shared_memory_address_); | 851 Result* result = static_cast<Result*>(shared_memory_address_); |
| 852 *result = 1; | 852 *result = 1; |
| 853 cmd.Init(client_program_id_, | 853 cmd.Init(client_program_id_, |
| 854 0, | 854 0, |
| 855 kBucketId, | 855 kBucketId, |
| 856 shared_memory_id_, | 856 shared_memory_id_, |
| 857 shared_memory_offset_); | 857 shared_memory_offset_); |
| 858 decoder_->set_unsafe_es3_apis_enabled(true); | 858 decoder_->set_es3_apis_enabled(true); |
| 859 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 859 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 860 } | 860 } |
| 861 | 861 |
| 862 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameBadProgramFails) { | 862 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameBadProgramFails) { |
| 863 const uint32_t kBucketId = 123; | 863 const uint32_t kBucketId = 123; |
| 864 GetActiveUniformBlockName cmd; | 864 GetActiveUniformBlockName cmd; |
| 865 typedef GetActiveUniformBlockName::Result Result; | 865 typedef GetActiveUniformBlockName::Result Result; |
| 866 Result* result = static_cast<Result*>(shared_memory_address_); | 866 Result* result = static_cast<Result*>(shared_memory_address_); |
| 867 *result = 0; | 867 *result = 0; |
| 868 cmd.Init(kInvalidClientId, | 868 cmd.Init(kInvalidClientId, |
| 869 0, | 869 0, |
| 870 kBucketId, | 870 kBucketId, |
| 871 shared_memory_id_, | 871 shared_memory_id_, |
| 872 shared_memory_offset_); | 872 shared_memory_offset_); |
| 873 decoder_->set_unsafe_es3_apis_enabled(true); | 873 decoder_->set_es3_apis_enabled(true); |
| 874 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 874 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 875 EXPECT_EQ(0, *result); | 875 EXPECT_EQ(0, *result); |
| 876 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 876 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 877 } | 877 } |
| 878 | 878 |
| 879 TEST_P(GLES2DecoderWithShaderTest, | 879 TEST_P(GLES2DecoderWithShaderTest, |
| 880 GetActiveUniformBlockNameBadSharedMemoryFails) { | 880 GetActiveUniformBlockNameBadSharedMemoryFails) { |
| 881 const uint32_t kBucketId = 123; | 881 const uint32_t kBucketId = 123; |
| 882 GetActiveUniformBlockName cmd; | 882 GetActiveUniformBlockName cmd; |
| 883 decoder_->set_unsafe_es3_apis_enabled(true); | 883 decoder_->set_es3_apis_enabled(true); |
| 884 cmd.Init(client_program_id_, | 884 cmd.Init(client_program_id_, |
| 885 0, | 885 0, |
| 886 kBucketId, | 886 kBucketId, |
| 887 kInvalidSharedMemoryId, | 887 kInvalidSharedMemoryId, |
| 888 shared_memory_offset_); | 888 shared_memory_offset_); |
| 889 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 889 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 890 cmd.Init(client_program_id_, | 890 cmd.Init(client_program_id_, |
| 891 0, | 891 0, |
| 892 kBucketId, | 892 kBucketId, |
| 893 shared_memory_id_, | 893 shared_memory_id_, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 930 GetActiveUniformBlockiv(kServiceProgramId, 0, | 930 GetActiveUniformBlockiv(kServiceProgramId, 0, |
| 931 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) | 931 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) |
| 932 .WillOnce(SetArgPointee<3>(1)) | 932 .WillOnce(SetArgPointee<3>(1)) |
| 933 .RetiresOnSaturation(); | 933 .RetiresOnSaturation(); |
| 934 } | 934 } |
| 935 EXPECT_CALL(*gl_, | 935 EXPECT_CALL(*gl_, |
| 936 GetActiveUniformBlockiv( | 936 GetActiveUniformBlockiv( |
| 937 kServiceProgramId, 0, kPname[ii], _)) | 937 kServiceProgramId, 0, kPname[ii], _)) |
| 938 .WillOnce(SetArgPointee<3>(1976)) | 938 .WillOnce(SetArgPointee<3>(1976)) |
| 939 .RetiresOnSaturation(); | 939 .RetiresOnSaturation(); |
| 940 decoder_->set_unsafe_es3_apis_enabled(true); | 940 decoder_->set_es3_apis_enabled(true); |
| 941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 942 EXPECT_EQ(1, result->GetNumResults()); | 942 EXPECT_EQ(1, result->GetNumResults()); |
| 943 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 943 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 944 EXPECT_EQ(1976, result->GetData()[0]); | 944 EXPECT_EQ(1976, result->GetData()[0]); |
| 945 decoder_->set_unsafe_es3_apis_enabled(false); | 945 decoder_->set_es3_apis_enabled(false); |
| 946 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 946 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 947 } | 947 } |
| 948 } | 948 } |
| 949 | 949 |
| 950 TEST_P(GLES2DecoderWithShaderTest, | 950 TEST_P(GLES2DecoderWithShaderTest, |
| 951 GetActiveUniformBlockivSucceedsZeroUniforms) { | 951 GetActiveUniformBlockivSucceedsZeroUniforms) { |
| 952 GetActiveUniformBlockiv cmd; | 952 GetActiveUniformBlockiv cmd; |
| 953 typedef GetActiveUniformBlockiv::Result Result; | 953 typedef GetActiveUniformBlockiv::Result Result; |
| 954 Result* result = static_cast<Result*>(shared_memory_address_); | 954 Result* result = static_cast<Result*>(shared_memory_address_); |
| 955 result->SetNumResults(0); | 955 result->SetNumResults(0); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 969 EXPECT_CALL(*gl_, | 969 EXPECT_CALL(*gl_, |
| 970 GetActiveUniformBlockiv( | 970 GetActiveUniformBlockiv( |
| 971 kServiceProgramId, 0, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) | 971 kServiceProgramId, 0, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) |
| 972 .WillOnce(SetArgPointee<3>(0)) | 972 .WillOnce(SetArgPointee<3>(0)) |
| 973 .RetiresOnSaturation(); | 973 .RetiresOnSaturation(); |
| 974 EXPECT_CALL(*gl_, | 974 EXPECT_CALL(*gl_, |
| 975 GetActiveUniformBlockiv(kServiceProgramId, 0, | 975 GetActiveUniformBlockiv(kServiceProgramId, 0, |
| 976 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, _)) | 976 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, _)) |
| 977 .Times(1) | 977 .Times(1) |
| 978 .RetiresOnSaturation(); | 978 .RetiresOnSaturation(); |
| 979 decoder_->set_unsafe_es3_apis_enabled(true); | 979 decoder_->set_es3_apis_enabled(true); |
| 980 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 980 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 981 EXPECT_EQ(0, result->GetNumResults()); | 981 EXPECT_EQ(0, result->GetNumResults()); |
| 982 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 982 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 983 } | 983 } |
| 984 | 984 |
| 985 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivUnlinkedProgram) { | 985 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivUnlinkedProgram) { |
| 986 GetActiveUniformBlockiv cmd; | 986 GetActiveUniformBlockiv cmd; |
| 987 typedef GetActiveUniformBlockiv::Result Result; | 987 typedef GetActiveUniformBlockiv::Result Result; |
| 988 Result* result = static_cast<Result*>(shared_memory_address_); | 988 Result* result = static_cast<Result*>(shared_memory_address_); |
| 989 result->SetNumResults(0); | 989 result->SetNumResults(0); |
| 990 cmd.Init(client_program_id_, | 990 cmd.Init(client_program_id_, |
| 991 0, | 991 0, |
| 992 GL_UNIFORM_BLOCK_BINDING, | 992 GL_UNIFORM_BLOCK_BINDING, |
| 993 shared_memory_id_, | 993 shared_memory_id_, |
| 994 shared_memory_offset_); | 994 shared_memory_offset_); |
| 995 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 995 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 996 .WillOnce(SetArgPointee<2>(GL_FALSE)) | 996 .WillOnce(SetArgPointee<2>(GL_FALSE)) |
| 997 .RetiresOnSaturation(); | 997 .RetiresOnSaturation(); |
| 998 decoder_->set_unsafe_es3_apis_enabled(true); | 998 decoder_->set_es3_apis_enabled(true); |
| 999 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 999 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1000 EXPECT_EQ(0, result->GetNumResults()); | 1000 EXPECT_EQ(0, result->GetNumResults()); |
| 1001 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1001 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1002 } | 1002 } |
| 1003 | 1003 |
| 1004 TEST_P(GLES2DecoderWithShaderTest, | 1004 TEST_P(GLES2DecoderWithShaderTest, |
| 1005 GetActiveUniformBlockivResultNotInitFails) { | 1005 GetActiveUniformBlockivResultNotInitFails) { |
| 1006 GetActiveUniformBlockiv cmd; | 1006 GetActiveUniformBlockiv cmd; |
| 1007 typedef GetActiveUniformBlockiv::Result Result; | 1007 typedef GetActiveUniformBlockiv::Result Result; |
| 1008 Result* result = static_cast<Result*>(shared_memory_address_); | 1008 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1009 result->SetNumResults(1); // Should be initialized to 0. | 1009 result->SetNumResults(1); // Should be initialized to 0. |
| 1010 cmd.Init(client_program_id_, | 1010 cmd.Init(client_program_id_, |
| 1011 0, | 1011 0, |
| 1012 GL_UNIFORM_BLOCK_BINDING, | 1012 GL_UNIFORM_BLOCK_BINDING, |
| 1013 shared_memory_id_, | 1013 shared_memory_id_, |
| 1014 shared_memory_offset_); | 1014 shared_memory_offset_); |
| 1015 decoder_->set_unsafe_es3_apis_enabled(true); | 1015 decoder_->set_es3_apis_enabled(true); |
| 1016 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1016 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1017 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1017 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1018 .RetiresOnSaturation(); | 1018 .RetiresOnSaturation(); |
| 1019 EXPECT_CALL(*gl_, GetError()) | 1019 EXPECT_CALL(*gl_, GetError()) |
| 1020 .WillOnce(Return(GL_NO_ERROR)) | 1020 .WillOnce(Return(GL_NO_ERROR)) |
| 1021 .RetiresOnSaturation(); | 1021 .RetiresOnSaturation(); |
| 1022 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1022 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1023 } | 1023 } |
| 1024 | 1024 |
| 1025 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivBadProgramFails) { | 1025 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivBadProgramFails) { |
| 1026 GetActiveUniformBlockiv cmd; | 1026 GetActiveUniformBlockiv cmd; |
| 1027 typedef GetActiveUniformBlockiv::Result Result; | 1027 typedef GetActiveUniformBlockiv::Result Result; |
| 1028 Result* result = static_cast<Result*>(shared_memory_address_); | 1028 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1029 result->SetNumResults(0); | 1029 result->SetNumResults(0); |
| 1030 cmd.Init(kInvalidClientId, | 1030 cmd.Init(kInvalidClientId, |
| 1031 0, | 1031 0, |
| 1032 GL_UNIFORM_BLOCK_BINDING, | 1032 GL_UNIFORM_BLOCK_BINDING, |
| 1033 shared_memory_id_, | 1033 shared_memory_id_, |
| 1034 shared_memory_offset_); | 1034 shared_memory_offset_); |
| 1035 decoder_->set_unsafe_es3_apis_enabled(true); | 1035 decoder_->set_es3_apis_enabled(true); |
| 1036 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1036 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1037 EXPECT_EQ(0, result->GetNumResults()); | 1037 EXPECT_EQ(0, result->GetNumResults()); |
| 1038 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1038 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1039 } | 1039 } |
| 1040 | 1040 |
| 1041 TEST_P(GLES2DecoderWithShaderTest, | 1041 TEST_P(GLES2DecoderWithShaderTest, |
| 1042 GetActiveUniformBlockivBadSharedMemoryFails) { | 1042 GetActiveUniformBlockivBadSharedMemoryFails) { |
| 1043 GetActiveUniformBlockiv cmd; | 1043 GetActiveUniformBlockiv cmd; |
| 1044 decoder_->set_unsafe_es3_apis_enabled(true); | 1044 decoder_->set_es3_apis_enabled(true); |
| 1045 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1045 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1046 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1046 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1047 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1047 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1048 .RetiresOnSaturation(); | 1048 .RetiresOnSaturation(); |
| 1049 EXPECT_CALL(*gl_, GetError()) | 1049 EXPECT_CALL(*gl_, GetError()) |
| 1050 .WillOnce(Return(GL_NO_ERROR)) | 1050 .WillOnce(Return(GL_NO_ERROR)) |
| 1051 .WillOnce(Return(GL_NO_ERROR)) | 1051 .WillOnce(Return(GL_NO_ERROR)) |
| 1052 .RetiresOnSaturation(); | 1052 .RetiresOnSaturation(); |
| 1053 cmd.Init(client_program_id_, | 1053 cmd.Init(client_program_id_, |
| 1054 0, | 1054 0, |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1184 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _)) | 1184 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _)) |
| 1185 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount)) | 1185 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount)) |
| 1186 .RetiresOnSaturation(); | 1186 .RetiresOnSaturation(); |
| 1187 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1187 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1188 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1188 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1189 .RetiresOnSaturation(); | 1189 .RetiresOnSaturation(); |
| 1190 EXPECT_CALL(*gl_, GetError()) | 1190 EXPECT_CALL(*gl_, GetError()) |
| 1191 .WillOnce(Return(GL_NO_ERROR)) | 1191 .WillOnce(Return(GL_NO_ERROR)) |
| 1192 .WillOnce(Return(GL_NO_ERROR)) | 1192 .WillOnce(Return(GL_NO_ERROR)) |
| 1193 .RetiresOnSaturation(); | 1193 .RetiresOnSaturation(); |
| 1194 decoder_->set_unsafe_es3_apis_enabled(true); | 1194 decoder_->set_es3_apis_enabled(true); |
| 1195 result->size = 0; | 1195 result->size = 0; |
| 1196 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1196 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1197 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); | 1197 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); |
| 1198 for (size_t ii = 0; ii < kCount; ++ii) { | 1198 for (size_t ii = 0; ii < kCount; ++ii) { |
| 1199 EXPECT_EQ(kIndices[ii], result->GetData()[ii]); | 1199 EXPECT_EQ(kIndices[ii], result->GetData()[ii]); |
| 1200 } | 1200 } |
| 1201 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1201 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1202 decoder_->set_unsafe_es3_apis_enabled(false); | 1202 decoder_->set_es3_apis_enabled(false); |
| 1203 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 1203 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 1204 } | 1204 } |
| 1205 | 1205 |
| 1206 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadProgramFails) { | 1206 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadProgramFails) { |
| 1207 const uint32_t kBucketId = 123; | 1207 const uint32_t kBucketId = 123; |
| 1208 const char kName0[] = "Cow"; | 1208 const char kName0[] = "Cow"; |
| 1209 const char kName1[] = "Chicken"; | 1209 const char kName1[] = "Chicken"; |
| 1210 const char* kNames[] = { kName0, kName1 }; | 1210 const char* kNames[] = { kName0, kName1 }; |
| 1211 const size_t kCount = arraysize(kNames); | 1211 const size_t kCount = arraysize(kNames); |
| 1212 const char kValidStrEnd = 0; | 1212 const char kValidStrEnd = 0; |
| 1213 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); | 1213 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); |
| 1214 GetUniformIndices::Result* result = | 1214 GetUniformIndices::Result* result = |
| 1215 static_cast<GetUniformIndices::Result*>(shared_memory_address_); | 1215 static_cast<GetUniformIndices::Result*>(shared_memory_address_); |
| 1216 decoder_->set_unsafe_es3_apis_enabled(true); | 1216 decoder_->set_es3_apis_enabled(true); |
| 1217 GetUniformIndices cmd; | 1217 GetUniformIndices cmd; |
| 1218 // None-existant program | 1218 // None-existant program |
| 1219 cmd.Init(kInvalidClientId, | 1219 cmd.Init(kInvalidClientId, |
| 1220 kBucketId, | 1220 kBucketId, |
| 1221 kSharedMemoryId, | 1221 kSharedMemoryId, |
| 1222 kSharedMemoryOffset); | 1222 kSharedMemoryOffset); |
| 1223 result->size = 0; | 1223 result->size = 0; |
| 1224 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1224 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1225 EXPECT_EQ(0, result->GetNumResults()); | 1225 EXPECT_EQ(0, result->GetNumResults()); |
| 1226 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1226 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1257 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _)) | 1257 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _)) |
| 1258 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount)) | 1258 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount)) |
| 1259 .RetiresOnSaturation(); | 1259 .RetiresOnSaturation(); |
| 1260 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1260 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1261 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1261 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1262 .RetiresOnSaturation(); | 1262 .RetiresOnSaturation(); |
| 1263 EXPECT_CALL(*gl_, GetError()) | 1263 EXPECT_CALL(*gl_, GetError()) |
| 1264 .WillOnce(Return(GL_NO_ERROR)) | 1264 .WillOnce(Return(GL_NO_ERROR)) |
| 1265 .WillOnce(Return(GL_INVALID_VALUE)) | 1265 .WillOnce(Return(GL_INVALID_VALUE)) |
| 1266 .RetiresOnSaturation(); | 1266 .RetiresOnSaturation(); |
| 1267 decoder_->set_unsafe_es3_apis_enabled(true); | 1267 decoder_->set_es3_apis_enabled(true); |
| 1268 result->size = 0; | 1268 result->size = 0; |
| 1269 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1269 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1270 EXPECT_EQ(0, result->GetNumResults()); | 1270 EXPECT_EQ(0, result->GetNumResults()); |
| 1271 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1271 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1272 } | 1272 } |
| 1273 | 1273 |
| 1274 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesResultNotInitFails) { | 1274 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesResultNotInitFails) { |
| 1275 const uint32_t kBucketId = 123; | 1275 const uint32_t kBucketId = 123; |
| 1276 const char kName0[] = "Cow"; | 1276 const char kName0[] = "Cow"; |
| 1277 const char kName1[] = "Chicken"; | 1277 const char kName1[] = "Chicken"; |
| 1278 const char* kNames[] = { kName0, kName1 }; | 1278 const char* kNames[] = { kName0, kName1 }; |
| 1279 const size_t kCount = arraysize(kNames); | 1279 const size_t kCount = arraysize(kNames); |
| 1280 const char kValidStrEnd = 0; | 1280 const char kValidStrEnd = 0; |
| 1281 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); | 1281 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); |
| 1282 GetUniformIndices::Result* result = | 1282 GetUniformIndices::Result* result = |
| 1283 static_cast<GetUniformIndices::Result*>(shared_memory_address_); | 1283 static_cast<GetUniformIndices::Result*>(shared_memory_address_); |
| 1284 decoder_->set_unsafe_es3_apis_enabled(true); | 1284 decoder_->set_es3_apis_enabled(true); |
| 1285 GetUniformIndices cmd; | 1285 GetUniformIndices cmd; |
| 1286 result->size = 1976; // Any value other than 0. | 1286 result->size = 1976; // Any value other than 0. |
| 1287 cmd.Init(kInvalidClientId, | 1287 cmd.Init(kInvalidClientId, |
| 1288 kBucketId, | 1288 kBucketId, |
| 1289 kSharedMemoryId, | 1289 kSharedMemoryId, |
| 1290 kSharedMemoryOffset); | 1290 kSharedMemoryOffset); |
| 1291 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1291 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1292 } | 1292 } |
| 1293 | 1293 |
| 1294 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadSharedMemoryFails) { | 1294 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadSharedMemoryFails) { |
| 1295 const uint32_t kBucketId = 123; | 1295 const uint32_t kBucketId = 123; |
| 1296 const char kName0[] = "Cow"; | 1296 const char kName0[] = "Cow"; |
| 1297 const char kName1[] = "Chicken"; | 1297 const char kName1[] = "Chicken"; |
| 1298 const char* kNames[] = { kName0, kName1 }; | 1298 const char* kNames[] = { kName0, kName1 }; |
| 1299 const size_t kCount = arraysize(kNames); | 1299 const size_t kCount = arraysize(kNames); |
| 1300 const char kValidStrEnd = 0; | 1300 const char kValidStrEnd = 0; |
| 1301 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); | 1301 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); |
| 1302 GetUniformIndices::Result* result = | 1302 GetUniformIndices::Result* result = |
| 1303 static_cast<GetUniformIndices::Result*>(shared_memory_address_); | 1303 static_cast<GetUniformIndices::Result*>(shared_memory_address_); |
| 1304 decoder_->set_unsafe_es3_apis_enabled(true); | 1304 decoder_->set_es3_apis_enabled(true); |
| 1305 GetUniformIndices cmd; | 1305 GetUniformIndices cmd; |
| 1306 cmd.Init(client_program_id_, | 1306 cmd.Init(client_program_id_, |
| 1307 kBucketId, | 1307 kBucketId, |
| 1308 kInvalidSharedMemoryId, | 1308 kInvalidSharedMemoryId, |
| 1309 kSharedMemoryOffset); | 1309 kSharedMemoryOffset); |
| 1310 result->size = 0; | 1310 result->size = 0; |
| 1311 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1311 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1312 cmd.Init(client_program_id_, | 1312 cmd.Init(client_program_id_, |
| 1313 kBucketId, | 1313 kBucketId, |
| 1314 kSharedMemoryId, | 1314 kSharedMemoryId, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1336 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) | 1336 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) |
| 1337 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) | 1337 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) |
| 1338 .RetiresOnSaturation(); | 1338 .RetiresOnSaturation(); |
| 1339 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1339 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1340 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1340 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1341 .RetiresOnSaturation(); | 1341 .RetiresOnSaturation(); |
| 1342 EXPECT_CALL(*gl_, GetError()) | 1342 EXPECT_CALL(*gl_, GetError()) |
| 1343 .WillOnce(Return(GL_NO_ERROR)) | 1343 .WillOnce(Return(GL_NO_ERROR)) |
| 1344 .WillOnce(Return(GL_NO_ERROR)) | 1344 .WillOnce(Return(GL_NO_ERROR)) |
| 1345 .RetiresOnSaturation(); | 1345 .RetiresOnSaturation(); |
| 1346 decoder_->set_unsafe_es3_apis_enabled(true); | 1346 decoder_->set_es3_apis_enabled(true); |
| 1347 result->size = 0; | 1347 result->size = 0; |
| 1348 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1348 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1349 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); | 1349 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); |
| 1350 for (size_t ii = 0; ii < kCount; ++ii) { | 1350 for (size_t ii = 0; ii < kCount; ++ii) { |
| 1351 EXPECT_EQ(kResults[ii], result->GetData()[ii]); | 1351 EXPECT_EQ(kResults[ii], result->GetData()[ii]); |
| 1352 } | 1352 } |
| 1353 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1353 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1354 decoder_->set_unsafe_es3_apis_enabled(false); | 1354 decoder_->set_es3_apis_enabled(false); |
| 1355 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 1355 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 1356 } | 1356 } |
| 1357 | 1357 |
| 1358 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadProgramFails) { | 1358 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadProgramFails) { |
| 1359 const uint32_t kBucketId = 123; | 1359 const uint32_t kBucketId = 123; |
| 1360 const GLuint kIndices[] = { 1, 2 }; | 1360 const GLuint kIndices[] = { 1, 2 }; |
| 1361 const size_t kCount = arraysize(kIndices); | 1361 const size_t kCount = arraysize(kIndices); |
| 1362 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); | 1362 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); |
| 1363 GetActiveUniformsiv::Result* result = | 1363 GetActiveUniformsiv::Result* result = |
| 1364 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); | 1364 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); |
| 1365 decoder_->set_unsafe_es3_apis_enabled(true); | 1365 decoder_->set_es3_apis_enabled(true); |
| 1366 GetActiveUniformsiv cmd; | 1366 GetActiveUniformsiv cmd; |
| 1367 // None-existant program | 1367 // None-existant program |
| 1368 cmd.Init(kInvalidClientId, | 1368 cmd.Init(kInvalidClientId, |
| 1369 kBucketId, | 1369 kBucketId, |
| 1370 GL_UNIFORM_TYPE, | 1370 GL_UNIFORM_TYPE, |
| 1371 kSharedMemoryId, | 1371 kSharedMemoryId, |
| 1372 kSharedMemoryOffset); | 1372 kSharedMemoryOffset); |
| 1373 result->size = 0; | 1373 result->size = 0; |
| 1374 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1374 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1375 EXPECT_EQ(0, result->GetNumResults()); | 1375 EXPECT_EQ(0, result->GetNumResults()); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1408 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) | 1408 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) |
| 1409 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) | 1409 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) |
| 1410 .RetiresOnSaturation(); | 1410 .RetiresOnSaturation(); |
| 1411 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) | 1411 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) |
| 1412 .WillOnce(SetArgPointee<2>(GL_TRUE)) | 1412 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
| 1413 .RetiresOnSaturation(); | 1413 .RetiresOnSaturation(); |
| 1414 EXPECT_CALL(*gl_, GetError()) | 1414 EXPECT_CALL(*gl_, GetError()) |
| 1415 .WillOnce(Return(GL_NO_ERROR)) | 1415 .WillOnce(Return(GL_NO_ERROR)) |
| 1416 .WillOnce(Return(GL_INVALID_VALUE)) | 1416 .WillOnce(Return(GL_INVALID_VALUE)) |
| 1417 .RetiresOnSaturation(); | 1417 .RetiresOnSaturation(); |
| 1418 decoder_->set_unsafe_es3_apis_enabled(true); | 1418 decoder_->set_es3_apis_enabled(true); |
| 1419 result->size = 0; | 1419 result->size = 0; |
| 1420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1421 EXPECT_EQ(0, result->GetNumResults()); | 1421 EXPECT_EQ(0, result->GetNumResults()); |
| 1422 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1422 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1423 } | 1423 } |
| 1424 | 1424 |
| 1425 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadPnameFails) { | 1425 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadPnameFails) { |
| 1426 const uint32_t kBucketId = 123; | 1426 const uint32_t kBucketId = 123; |
| 1427 const GLuint kIndices[] = { 1, 2 }; | 1427 const GLuint kIndices[] = { 1, 2 }; |
| 1428 const size_t kCount = arraysize(kIndices); | 1428 const size_t kCount = arraysize(kIndices); |
| 1429 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); | 1429 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); |
| 1430 GetActiveUniformsiv::Result* result = | 1430 GetActiveUniformsiv::Result* result = |
| 1431 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); | 1431 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); |
| 1432 decoder_->set_unsafe_es3_apis_enabled(true); | 1432 decoder_->set_es3_apis_enabled(true); |
| 1433 GetActiveUniformsiv cmd; | 1433 GetActiveUniformsiv cmd; |
| 1434 // GL_UNIFORM_BLOCK_NAME_LENGTH should not be supported. | 1434 // GL_UNIFORM_BLOCK_NAME_LENGTH should not be supported. |
| 1435 cmd.Init(client_program_id_, | 1435 cmd.Init(client_program_id_, |
| 1436 kBucketId, | 1436 kBucketId, |
| 1437 GL_UNIFORM_BLOCK_NAME_LENGTH, | 1437 GL_UNIFORM_BLOCK_NAME_LENGTH, |
| 1438 kSharedMemoryId, | 1438 kSharedMemoryId, |
| 1439 kSharedMemoryOffset); | 1439 kSharedMemoryOffset); |
| 1440 result->size = 0; | 1440 result->size = 0; |
| 1441 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1441 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1442 EXPECT_EQ(0, result->GetNumResults()); | 1442 EXPECT_EQ(0, result->GetNumResults()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1459 const size_t kCount = arraysize(kIndices); | 1459 const size_t kCount = arraysize(kIndices); |
| 1460 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); | 1460 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); |
| 1461 GetActiveUniformsiv::Result* result = | 1461 GetActiveUniformsiv::Result* result = |
| 1462 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); | 1462 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); |
| 1463 GetActiveUniformsiv cmd; | 1463 GetActiveUniformsiv cmd; |
| 1464 cmd.Init(client_program_id_, | 1464 cmd.Init(client_program_id_, |
| 1465 kBucketId, | 1465 kBucketId, |
| 1466 GL_UNIFORM_TYPE, | 1466 GL_UNIFORM_TYPE, |
| 1467 kSharedMemoryId, | 1467 kSharedMemoryId, |
| 1468 kSharedMemoryOffset); | 1468 kSharedMemoryOffset); |
| 1469 decoder_->set_unsafe_es3_apis_enabled(true); | 1469 decoder_->set_es3_apis_enabled(true); |
| 1470 result->size = 1976; // Any value other than 0. | 1470 result->size = 1976; // Any value other than 0. |
| 1471 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1471 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1472 } | 1472 } |
| 1473 | 1473 |
| 1474 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadSharedMemoryFails) { | 1474 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadSharedMemoryFails) { |
| 1475 const uint32_t kBucketId = 123; | 1475 const uint32_t kBucketId = 123; |
| 1476 const GLuint kIndices[] = { 1, 2 }; | 1476 const GLuint kIndices[] = { 1, 2 }; |
| 1477 const size_t kCount = arraysize(kIndices); | 1477 const size_t kCount = arraysize(kIndices); |
| 1478 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); | 1478 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); |
| 1479 GetActiveUniformsiv::Result* result = | 1479 GetActiveUniformsiv::Result* result = |
| 1480 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); | 1480 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); |
| 1481 GetActiveUniformsiv cmd; | 1481 GetActiveUniformsiv cmd; |
| 1482 decoder_->set_unsafe_es3_apis_enabled(true); | 1482 decoder_->set_es3_apis_enabled(true); |
| 1483 result->size = 0; | 1483 result->size = 0; |
| 1484 cmd.Init(client_program_id_, | 1484 cmd.Init(client_program_id_, |
| 1485 kBucketId, | 1485 kBucketId, |
| 1486 GL_UNIFORM_TYPE, | 1486 GL_UNIFORM_TYPE, |
| 1487 kInvalidSharedMemoryId, | 1487 kInvalidSharedMemoryId, |
| 1488 kSharedMemoryOffset); | 1488 kSharedMemoryOffset); |
| 1489 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1489 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1490 result->size = 0; | 1490 result->size = 0; |
| 1491 cmd.Init(client_program_id_, | 1491 cmd.Init(client_program_id_, |
| 1492 kBucketId, | 1492 kBucketId, |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1569 .WillOnce(DoAll(SetArgPointee<3>(kBufferSize - 1), | 1569 .WillOnce(DoAll(SetArgPointee<3>(kBufferSize - 1), |
| 1570 SetArgPointee<4>(kSize), | 1570 SetArgPointee<4>(kSize), |
| 1571 SetArgPointee<5>(kType), | 1571 SetArgPointee<5>(kType), |
| 1572 SetArrayArgument<6>(kName, kName + kBufferSize))) | 1572 SetArrayArgument<6>(kName, kName + kBufferSize))) |
| 1573 .RetiresOnSaturation(); | 1573 .RetiresOnSaturation(); |
| 1574 cmd.Init(client_program_id_, | 1574 cmd.Init(client_program_id_, |
| 1575 kIndex, | 1575 kIndex, |
| 1576 kBucketId, | 1576 kBucketId, |
| 1577 shared_memory_id_, | 1577 shared_memory_id_, |
| 1578 shared_memory_offset_); | 1578 shared_memory_offset_); |
| 1579 decoder_->set_unsafe_es3_apis_enabled(true); | 1579 decoder_->set_es3_apis_enabled(true); |
| 1580 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1580 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1581 EXPECT_NE(0, result->success); | 1581 EXPECT_NE(0, result->success); |
| 1582 EXPECT_EQ(kSize, static_cast<GLsizei>(result->size)); | 1582 EXPECT_EQ(kSize, static_cast<GLsizei>(result->size)); |
| 1583 EXPECT_EQ(kType, static_cast<GLenum>(result->type)); | 1583 EXPECT_EQ(kType, static_cast<GLenum>(result->type)); |
| 1584 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1584 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1585 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 1585 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 1586 ASSERT_TRUE(bucket != NULL); | 1586 ASSERT_TRUE(bucket != NULL); |
| 1587 EXPECT_EQ( | 1587 EXPECT_EQ( |
| 1588 0, memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size())); | 1588 0, memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size())); |
| 1589 decoder_->set_unsafe_es3_apis_enabled(false); | 1589 decoder_->set_es3_apis_enabled(false); |
| 1590 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 1590 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 1591 } | 1591 } |
| 1592 | 1592 |
| 1593 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingNotInitFails) { | 1593 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingNotInitFails) { |
| 1594 const GLuint kIndex = 1; | 1594 const GLuint kIndex = 1; |
| 1595 const uint32_t kBucketId = 123; | 1595 const uint32_t kBucketId = 123; |
| 1596 GetTransformFeedbackVarying cmd; | 1596 GetTransformFeedbackVarying cmd; |
| 1597 typedef GetTransformFeedbackVarying::Result Result; | 1597 typedef GetTransformFeedbackVarying::Result Result; |
| 1598 Result* result = static_cast<Result*>(shared_memory_address_); | 1598 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1599 result->success = 1; | 1599 result->success = 1; |
| 1600 cmd.Init(client_program_id_, | 1600 cmd.Init(client_program_id_, |
| 1601 kIndex, | 1601 kIndex, |
| 1602 kBucketId, | 1602 kBucketId, |
| 1603 shared_memory_id_, | 1603 shared_memory_id_, |
| 1604 shared_memory_offset_); | 1604 shared_memory_offset_); |
| 1605 decoder_->set_unsafe_es3_apis_enabled(true); | 1605 decoder_->set_es3_apis_enabled(true); |
| 1606 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1606 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1607 } | 1607 } |
| 1608 | 1608 |
| 1609 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingBadProgramFails) { | 1609 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingBadProgramFails) { |
| 1610 const GLuint kIndex = 1; | 1610 const GLuint kIndex = 1; |
| 1611 const uint32_t kBucketId = 123; | 1611 const uint32_t kBucketId = 123; |
| 1612 GetTransformFeedbackVarying cmd; | 1612 GetTransformFeedbackVarying cmd; |
| 1613 typedef GetTransformFeedbackVarying::Result Result; | 1613 typedef GetTransformFeedbackVarying::Result Result; |
| 1614 Result* result = static_cast<Result*>(shared_memory_address_); | 1614 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1615 result->success = 0; | 1615 result->success = 0; |
| 1616 cmd.Init(kInvalidClientId, | 1616 cmd.Init(kInvalidClientId, |
| 1617 kIndex, | 1617 kIndex, |
| 1618 kBucketId, | 1618 kBucketId, |
| 1619 shared_memory_id_, | 1619 shared_memory_id_, |
| 1620 shared_memory_offset_); | 1620 shared_memory_offset_); |
| 1621 decoder_->set_unsafe_es3_apis_enabled(true); | 1621 decoder_->set_es3_apis_enabled(true); |
| 1622 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1622 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1623 EXPECT_EQ(0, result->success); | 1623 EXPECT_EQ(0, result->success); |
| 1624 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1624 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1625 } | 1625 } |
| 1626 | 1626 |
| 1627 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingBadParamsFails) { | 1627 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingBadParamsFails) { |
| 1628 const GLuint kIndex = 1; | 1628 const GLuint kIndex = 1; |
| 1629 const uint32_t kBucketId = 123; | 1629 const uint32_t kBucketId = 123; |
| 1630 const GLsizei kBufferSize = 10; | 1630 const GLsizei kBufferSize = 10; |
| 1631 GetTransformFeedbackVarying cmd; | 1631 GetTransformFeedbackVarying cmd; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1646 .RetiresOnSaturation(); | 1646 .RetiresOnSaturation(); |
| 1647 EXPECT_CALL(*gl_, GetError()) | 1647 EXPECT_CALL(*gl_, GetError()) |
| 1648 .WillOnce(Return(GL_NO_ERROR)) | 1648 .WillOnce(Return(GL_NO_ERROR)) |
| 1649 .WillOnce(Return(GL_INVALID_VALUE)) | 1649 .WillOnce(Return(GL_INVALID_VALUE)) |
| 1650 .RetiresOnSaturation(); | 1650 .RetiresOnSaturation(); |
| 1651 EXPECT_CALL(*gl_, | 1651 EXPECT_CALL(*gl_, |
| 1652 GetTransformFeedbackVarying( | 1652 GetTransformFeedbackVarying( |
| 1653 kServiceProgramId, kIndex, _, _, _, _, _)) | 1653 kServiceProgramId, kIndex, _, _, _, _, _)) |
| 1654 .Times(1) | 1654 .Times(1) |
| 1655 .RetiresOnSaturation(); | 1655 .RetiresOnSaturation(); |
| 1656 decoder_->set_unsafe_es3_apis_enabled(true); | 1656 decoder_->set_es3_apis_enabled(true); |
| 1657 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1657 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1658 EXPECT_EQ(0, result->success); | 1658 EXPECT_EQ(0, result->success); |
| 1659 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1659 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1660 } | 1660 } |
| 1661 | 1661 |
| 1662 TEST_P(GLES2DecoderWithShaderTest, | 1662 TEST_P(GLES2DecoderWithShaderTest, |
| 1663 GetTransformFeedbackVaryingBadSharedMemoryFails) { | 1663 GetTransformFeedbackVaryingBadSharedMemoryFails) { |
| 1664 const GLuint kIndex = 1; | 1664 const GLuint kIndex = 1; |
| 1665 const uint32_t kBucketId = 123; | 1665 const uint32_t kBucketId = 123; |
| 1666 GetTransformFeedbackVarying cmd; | 1666 GetTransformFeedbackVarying cmd; |
| 1667 typedef GetTransformFeedbackVarying::Result Result; | 1667 typedef GetTransformFeedbackVarying::Result Result; |
| 1668 Result* result = static_cast<Result*>(shared_memory_address_); | 1668 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1669 result->success = 0; | 1669 result->success = 0; |
| 1670 decoder_->set_unsafe_es3_apis_enabled(true); | 1670 decoder_->set_es3_apis_enabled(true); |
| 1671 cmd.Init(client_program_id_, | 1671 cmd.Init(client_program_id_, |
| 1672 kIndex, | 1672 kIndex, |
| 1673 kBucketId, | 1673 kBucketId, |
| 1674 kInvalidSharedMemoryId, | 1674 kInvalidSharedMemoryId, |
| 1675 shared_memory_offset_); | 1675 shared_memory_offset_); |
| 1676 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1676 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1677 cmd.Init(client_program_id_, | 1677 cmd.Init(client_program_id_, |
| 1678 kIndex, | 1678 kIndex, |
| 1679 kBucketId, | 1679 kBucketId, |
| 1680 shared_memory_id_, | 1680 shared_memory_id_, |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1783 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); | 1783 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); |
| 1784 Uniform1i cmd; | 1784 Uniform1i cmd; |
| 1785 cmd.Init(kUniform1FakeLocation, 2); | 1785 cmd.Init(kUniform1FakeLocation, 2); |
| 1786 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1786 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1787 } | 1787 } |
| 1788 | 1788 |
| 1789 TEST_P(GLES2DecoderWithShaderTest, Uniform1uiValidArgs) { | 1789 TEST_P(GLES2DecoderWithShaderTest, Uniform1uiValidArgs) { |
| 1790 EXPECT_CALL(*gl_, Uniform1uiv(kUniform4RealLocation, 1, _)); | 1790 EXPECT_CALL(*gl_, Uniform1uiv(kUniform4RealLocation, 1, _)); |
| 1791 Uniform1ui cmd; | 1791 Uniform1ui cmd; |
| 1792 cmd.Init(kUniform4FakeLocation, 2); | 1792 cmd.Init(kUniform4FakeLocation, 2); |
| 1793 decoder_->set_unsafe_es3_apis_enabled(true); | 1793 decoder_->set_es3_apis_enabled(true); |
| 1794 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1794 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1795 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1795 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1796 decoder_->set_unsafe_es3_apis_enabled(false); | 1796 decoder_->set_es3_apis_enabled(false); |
| 1797 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 1797 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 1798 } | 1798 } |
| 1799 | 1799 |
| 1800 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { | 1800 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { |
| 1801 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); | 1801 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); |
| 1802 GLint temp[1] = { | 1802 GLint temp[1] = { |
| 1803 0, | 1803 0, |
| 1804 }; | 1804 }; |
| 1805 EXPECT_CALL(*gl_, | 1805 EXPECT_CALL(*gl_, |
| 1806 Uniform1iv(kUniform1RealLocation, 1, PointsToArray(temp, 1))); | 1806 Uniform1iv(kUniform1RealLocation, 1, PointsToArray(temp, 1))); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1866 | 1866 |
| 1867 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateValidArgs) { | 1867 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateValidArgs) { |
| 1868 Uniform1uivImmediate& cmd = | 1868 Uniform1uivImmediate& cmd = |
| 1869 *GetImmediateAs<Uniform1uivImmediate>(); | 1869 *GetImmediateAs<Uniform1uivImmediate>(); |
| 1870 GLuint temp[1] = { | 1870 GLuint temp[1] = { |
| 1871 0, | 1871 0, |
| 1872 }; | 1872 }; |
| 1873 EXPECT_CALL(*gl_, | 1873 EXPECT_CALL(*gl_, |
| 1874 Uniform1uiv(kUniform4RealLocation, 1, PointsToArray(temp, 1))); | 1874 Uniform1uiv(kUniform4RealLocation, 1, PointsToArray(temp, 1))); |
| 1875 cmd.Init(kUniform4FakeLocation, 1, &temp[0]); | 1875 cmd.Init(kUniform4FakeLocation, 1, &temp[0]); |
| 1876 decoder_->set_unsafe_es3_apis_enabled(true); | 1876 decoder_->set_es3_apis_enabled(true); |
| 1877 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1877 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1878 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1878 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1879 decoder_->set_unsafe_es3_apis_enabled(false); | 1879 decoder_->set_es3_apis_enabled(false); |
| 1880 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1880 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1881 } | 1881 } |
| 1882 | 1882 |
| 1883 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateInvalidType) { | 1883 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateInvalidType) { |
| 1884 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); | 1884 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); |
| 1885 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); | 1885 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); |
| 1886 GLuint temp[1 * 2] = { | 1886 GLuint temp[1 * 2] = { |
| 1887 0, | 1887 0, |
| 1888 }; | 1888 }; |
| 1889 // uniform1 is SAMPLER type. | 1889 // uniform1 is SAMPLER type. |
| 1890 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); | 1890 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); |
| 1891 decoder_->set_unsafe_es3_apis_enabled(true); | 1891 decoder_->set_es3_apis_enabled(true); |
| 1892 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1892 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1893 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1893 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1894 } | 1894 } |
| 1895 | 1895 |
| 1896 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivZeroCount) { | 1896 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivZeroCount) { |
| 1897 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); | 1897 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); |
| 1898 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); | 1898 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); |
| 1899 GLuint temp = 0; | 1899 GLuint temp = 0; |
| 1900 cmd.Init(kUniform4FakeLocation, 0, &temp); | 1900 cmd.Init(kUniform4FakeLocation, 0, &temp); |
| 1901 decoder_->set_unsafe_es3_apis_enabled(true); | 1901 decoder_->set_es3_apis_enabled(true); |
| 1902 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1902 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1903 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1903 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1904 } | 1904 } |
| 1905 | 1905 |
| 1906 TEST_P(GLES2DecoderWithShaderTest, Uniform2uiValidArgs) { | 1906 TEST_P(GLES2DecoderWithShaderTest, Uniform2uiValidArgs) { |
| 1907 EXPECT_CALL(*gl_, Uniform2uiv(kUniform5RealLocation, 1, _)); | 1907 EXPECT_CALL(*gl_, Uniform2uiv(kUniform5RealLocation, 1, _)); |
| 1908 Uniform2ui cmd; | 1908 Uniform2ui cmd; |
| 1909 cmd.Init(kUniform5FakeLocation, 2, 3); | 1909 cmd.Init(kUniform5FakeLocation, 2, 3); |
| 1910 decoder_->set_unsafe_es3_apis_enabled(true); | 1910 decoder_->set_es3_apis_enabled(true); |
| 1911 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1911 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1912 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1912 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1913 decoder_->set_unsafe_es3_apis_enabled(false); | 1913 decoder_->set_es3_apis_enabled(false); |
| 1914 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 1914 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 1915 } | 1915 } |
| 1916 | 1916 |
| 1917 TEST_P(GLES2DecoderWithShaderTest, Uniform2uivImmediateValidArgs) { | 1917 TEST_P(GLES2DecoderWithShaderTest, Uniform2uivImmediateValidArgs) { |
| 1918 Uniform2uivImmediate& cmd = | 1918 Uniform2uivImmediate& cmd = |
| 1919 *GetImmediateAs<Uniform2uivImmediate>(); | 1919 *GetImmediateAs<Uniform2uivImmediate>(); |
| 1920 GLuint temp[2 * 1] = { | 1920 GLuint temp[2 * 1] = { |
| 1921 0, | 1921 0, |
| 1922 }; | 1922 }; |
| 1923 EXPECT_CALL(*gl_, | 1923 EXPECT_CALL(*gl_, |
| 1924 Uniform2uiv(kUniform5RealLocation, 1, PointsToArray(temp, 2))); | 1924 Uniform2uiv(kUniform5RealLocation, 1, PointsToArray(temp, 2))); |
| 1925 cmd.Init(kUniform5FakeLocation, 1, &temp[0]); | 1925 cmd.Init(kUniform5FakeLocation, 1, &temp[0]); |
| 1926 decoder_->set_unsafe_es3_apis_enabled(true); | 1926 decoder_->set_es3_apis_enabled(true); |
| 1927 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1927 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1928 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1928 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1929 decoder_->set_unsafe_es3_apis_enabled(false); | 1929 decoder_->set_es3_apis_enabled(false); |
| 1930 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1930 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1931 } | 1931 } |
| 1932 | 1932 |
| 1933 TEST_P(GLES2DecoderWithShaderTest, Uniform3uiValidArgs) { | 1933 TEST_P(GLES2DecoderWithShaderTest, Uniform3uiValidArgs) { |
| 1934 EXPECT_CALL(*gl_, Uniform3uiv(kUniform6RealLocation, 1, _)); | 1934 EXPECT_CALL(*gl_, Uniform3uiv(kUniform6RealLocation, 1, _)); |
| 1935 Uniform3ui cmd; | 1935 Uniform3ui cmd; |
| 1936 cmd.Init(kUniform6FakeLocation, 2, 3, 4); | 1936 cmd.Init(kUniform6FakeLocation, 2, 3, 4); |
| 1937 decoder_->set_unsafe_es3_apis_enabled(true); | 1937 decoder_->set_es3_apis_enabled(true); |
| 1938 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1938 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1939 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1939 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1940 decoder_->set_unsafe_es3_apis_enabled(false); | 1940 decoder_->set_es3_apis_enabled(false); |
| 1941 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 1941 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 1942 } | 1942 } |
| 1943 | 1943 |
| 1944 TEST_P(GLES2DecoderWithShaderTest, Uniform3uivImmediateValidArgs) { | 1944 TEST_P(GLES2DecoderWithShaderTest, Uniform3uivImmediateValidArgs) { |
| 1945 Uniform3uivImmediate& cmd = | 1945 Uniform3uivImmediate& cmd = |
| 1946 *GetImmediateAs<Uniform3uivImmediate>(); | 1946 *GetImmediateAs<Uniform3uivImmediate>(); |
| 1947 GLuint temp[3 * 1] = { | 1947 GLuint temp[3 * 1] = { |
| 1948 0, | 1948 0, |
| 1949 }; | 1949 }; |
| 1950 EXPECT_CALL(*gl_, | 1950 EXPECT_CALL(*gl_, |
| 1951 Uniform3uiv(kUniform6RealLocation, 1, PointsToArray(temp, 3))); | 1951 Uniform3uiv(kUniform6RealLocation, 1, PointsToArray(temp, 3))); |
| 1952 cmd.Init(kUniform6FakeLocation, 1, &temp[0]); | 1952 cmd.Init(kUniform6FakeLocation, 1, &temp[0]); |
| 1953 decoder_->set_unsafe_es3_apis_enabled(true); | 1953 decoder_->set_es3_apis_enabled(true); |
| 1954 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1954 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1955 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1955 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1956 decoder_->set_unsafe_es3_apis_enabled(false); | 1956 decoder_->set_es3_apis_enabled(false); |
| 1957 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1957 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1958 } | 1958 } |
| 1959 | 1959 |
| 1960 TEST_P(GLES2DecoderWithShaderTest, Uniform4uiValidArgs) { | 1960 TEST_P(GLES2DecoderWithShaderTest, Uniform4uiValidArgs) { |
| 1961 EXPECT_CALL(*gl_, Uniform4uiv(kUniform7RealLocation, 1, _)); | 1961 EXPECT_CALL(*gl_, Uniform4uiv(kUniform7RealLocation, 1, _)); |
| 1962 Uniform4ui cmd; | 1962 Uniform4ui cmd; |
| 1963 cmd.Init(kUniform7FakeLocation, 2, 3, 4, 5); | 1963 cmd.Init(kUniform7FakeLocation, 2, 3, 4, 5); |
| 1964 decoder_->set_unsafe_es3_apis_enabled(true); | 1964 decoder_->set_es3_apis_enabled(true); |
| 1965 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1965 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1966 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1966 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1967 decoder_->set_unsafe_es3_apis_enabled(false); | 1967 decoder_->set_es3_apis_enabled(false); |
| 1968 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 1968 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 1969 } | 1969 } |
| 1970 | 1970 |
| 1971 TEST_P(GLES2DecoderWithShaderTest, Uniform4uivImmediateValidArgs) { | 1971 TEST_P(GLES2DecoderWithShaderTest, Uniform4uivImmediateValidArgs) { |
| 1972 Uniform4uivImmediate& cmd = | 1972 Uniform4uivImmediate& cmd = |
| 1973 *GetImmediateAs<Uniform4uivImmediate>(); | 1973 *GetImmediateAs<Uniform4uivImmediate>(); |
| 1974 GLuint temp[4 * 1] = { | 1974 GLuint temp[4 * 1] = { |
| 1975 0, | 1975 0, |
| 1976 }; | 1976 }; |
| 1977 EXPECT_CALL(*gl_, | 1977 EXPECT_CALL(*gl_, |
| 1978 Uniform4uiv(kUniform7RealLocation, 1, PointsToArray(temp, 4))); | 1978 Uniform4uiv(kUniform7RealLocation, 1, PointsToArray(temp, 4))); |
| 1979 cmd.Init(kUniform7FakeLocation, 1, &temp[0]); | 1979 cmd.Init(kUniform7FakeLocation, 1, &temp[0]); |
| 1980 decoder_->set_unsafe_es3_apis_enabled(true); | 1980 decoder_->set_es3_apis_enabled(true); |
| 1981 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1981 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1982 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1982 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1983 decoder_->set_unsafe_es3_apis_enabled(false); | 1983 decoder_->set_es3_apis_enabled(false); |
| 1984 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1984 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1985 } | 1985 } |
| 1986 | 1986 |
| 1987 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) { | 1987 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) { |
| 1988 const uint32_t kBucketId = 123; | 1988 const uint32_t kBucketId = 123; |
| 1989 const GLint kLocation = 2; | 1989 const GLint kLocation = 2; |
| 1990 const char* kName = "testing"; | 1990 const char* kName = "testing"; |
| 1991 EXPECT_CALL(*gl_, | 1991 EXPECT_CALL(*gl_, |
| 1992 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) | 1992 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) |
| 1993 .Times(1); | 1993 .Times(1); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2066 } | 2066 } |
| 2067 | 2067 |
| 2068 TEST_P(GLES3DecoderWithESSL3ShaderTest, GetFragDataLocation) { | 2068 TEST_P(GLES3DecoderWithESSL3ShaderTest, GetFragDataLocation) { |
| 2069 const uint32_t kBucketId = 123; | 2069 const uint32_t kBucketId = 123; |
| 2070 typedef GetFragDataLocation::Result Result; | 2070 typedef GetFragDataLocation::Result Result; |
| 2071 Result* result = GetSharedMemoryAs<Result*>(); | 2071 Result* result = GetSharedMemoryAs<Result*>(); |
| 2072 SetBucketAsCString(kBucketId, kOutputVariable1NameESSL3); | 2072 SetBucketAsCString(kBucketId, kOutputVariable1NameESSL3); |
| 2073 *result = -1; | 2073 *result = -1; |
| 2074 GetFragDataLocation cmd; | 2074 GetFragDataLocation cmd; |
| 2075 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 2075 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 2076 decoder_->set_unsafe_es3_apis_enabled(true); | 2076 decoder_->set_es3_apis_enabled(true); |
| 2077 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2077 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2078 EXPECT_EQ(static_cast<GLint>(kOutputVariable1ColorName), *result); | 2078 EXPECT_EQ(static_cast<GLint>(kOutputVariable1ColorName), *result); |
| 2079 decoder_->set_unsafe_es3_apis_enabled(false); | 2079 decoder_->set_es3_apis_enabled(false); |
| 2080 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 2080 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 2081 } | 2081 } |
| 2082 | 2082 |
| 2083 TEST_P(GLES3DecoderWithESSL3ShaderTest, GetFragDataLocationInvalidArgs) { | 2083 TEST_P(GLES3DecoderWithESSL3ShaderTest, GetFragDataLocationInvalidArgs) { |
| 2084 const uint32_t kBucketId = 123; | 2084 const uint32_t kBucketId = 123; |
| 2085 typedef GetFragDataLocation::Result Result; | 2085 typedef GetFragDataLocation::Result Result; |
| 2086 Result* result = GetSharedMemoryAs<Result*>(); | 2086 Result* result = GetSharedMemoryAs<Result*>(); |
| 2087 *result = -1; | 2087 *result = -1; |
| 2088 GetFragDataLocation cmd; | 2088 GetFragDataLocation cmd; |
| 2089 decoder_->set_unsafe_es3_apis_enabled(true); | 2089 decoder_->set_es3_apis_enabled(true); |
| 2090 // Check no bucket | 2090 // Check no bucket |
| 2091 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 2091 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 2092 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2092 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2093 EXPECT_EQ(-1, *result); | 2093 EXPECT_EQ(-1, *result); |
| 2094 // Check bad program id. | 2094 // Check bad program id. |
| 2095 const char* kName = "color"; | 2095 const char* kName = "color"; |
| 2096 SetBucketAsCString(kBucketId, kName); | 2096 SetBucketAsCString(kBucketId, kName); |
| 2097 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 2097 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 2098 *result = -1; | 2098 *result = -1; |
| 2099 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2099 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 2118 const char* kName = "color"; | 2118 const char* kName = "color"; |
| 2119 typedef GetUniformBlockIndex::Result Result; | 2119 typedef GetUniformBlockIndex::Result Result; |
| 2120 Result* result = GetSharedMemoryAs<Result*>(); | 2120 Result* result = GetSharedMemoryAs<Result*>(); |
| 2121 SetBucketAsCString(kBucketId, kName); | 2121 SetBucketAsCString(kBucketId, kName); |
| 2122 *result = GL_INVALID_INDEX; | 2122 *result = GL_INVALID_INDEX; |
| 2123 GetUniformBlockIndex cmd; | 2123 GetUniformBlockIndex cmd; |
| 2124 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 2124 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 2125 EXPECT_CALL(*gl_, GetUniformBlockIndex(kServiceProgramId, StrEq(kName))) | 2125 EXPECT_CALL(*gl_, GetUniformBlockIndex(kServiceProgramId, StrEq(kName))) |
| 2126 .WillOnce(Return(kIndex)) | 2126 .WillOnce(Return(kIndex)) |
| 2127 .RetiresOnSaturation(); | 2127 .RetiresOnSaturation(); |
| 2128 decoder_->set_unsafe_es3_apis_enabled(true); | 2128 decoder_->set_es3_apis_enabled(true); |
| 2129 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2129 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2130 EXPECT_EQ(kIndex, *result); | 2130 EXPECT_EQ(kIndex, *result); |
| 2131 decoder_->set_unsafe_es3_apis_enabled(false); | 2131 decoder_->set_es3_apis_enabled(false); |
| 2132 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 2132 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 2133 } | 2133 } |
| 2134 | 2134 |
| 2135 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlockIndexInvalidArgs) { | 2135 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlockIndexInvalidArgs) { |
| 2136 const uint32_t kBucketId = 123; | 2136 const uint32_t kBucketId = 123; |
| 2137 typedef GetUniformBlockIndex::Result Result; | 2137 typedef GetUniformBlockIndex::Result Result; |
| 2138 Result* result = GetSharedMemoryAs<Result*>(); | 2138 Result* result = GetSharedMemoryAs<Result*>(); |
| 2139 *result = GL_INVALID_INDEX; | 2139 *result = GL_INVALID_INDEX; |
| 2140 GetUniformBlockIndex cmd; | 2140 GetUniformBlockIndex cmd; |
| 2141 decoder_->set_unsafe_es3_apis_enabled(true); | 2141 decoder_->set_es3_apis_enabled(true); |
| 2142 // Check no bucket | 2142 // Check no bucket |
| 2143 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 2143 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 2144 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2144 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2145 EXPECT_EQ(GL_INVALID_INDEX, *result); | 2145 EXPECT_EQ(GL_INVALID_INDEX, *result); |
| 2146 // Check bad program id. | 2146 // Check bad program id. |
| 2147 const char* kName = "color"; | 2147 const char* kName = "color"; |
| 2148 SetBucketAsCString(kBucketId, kName); | 2148 SetBucketAsCString(kBucketId, kName); |
| 2149 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); | 2149 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); |
| 2150 *result = GL_INVALID_INDEX; | 2150 *result = GL_INVALID_INDEX; |
| 2151 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2151 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2207 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2207 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2208 cmd.Init(client_program_id_, | 2208 cmd.Init(client_program_id_, |
| 2209 kBucketId, | 2209 kBucketId, |
| 2210 kSharedMemoryId, | 2210 kSharedMemoryId, |
| 2211 kInvalidSharedMemoryOffset); | 2211 kInvalidSharedMemoryOffset); |
| 2212 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2212 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2213 } | 2213 } |
| 2214 | 2214 |
| 2215 TEST_P(GLES3DecoderWithESSL3ShaderTest, Basic) { | 2215 TEST_P(GLES3DecoderWithESSL3ShaderTest, Basic) { |
| 2216 // Make sure the setup is correct for ES3. | 2216 // Make sure the setup is correct for ES3. |
| 2217 EXPECT_TRUE(decoder_->unsafe_es3_apis_enabled()); | 2217 EXPECT_TRUE(decoder_->es3_apis_enabled()); |
| 2218 EXPECT_TRUE(feature_info()->validators()->texture_bind_target.IsValid( | 2218 EXPECT_TRUE(feature_info()->validators()->texture_bind_target.IsValid( |
| 2219 GL_TEXTURE_3D)); | 2219 GL_TEXTURE_3D)); |
| 2220 } | 2220 } |
| 2221 | 2221 |
| 2222 TEST_P(GLES3DecoderWithESSL3ShaderTest, UniformBlockBindingValidArgs) { | 2222 TEST_P(GLES3DecoderWithESSL3ShaderTest, UniformBlockBindingValidArgs) { |
| 2223 EXPECT_CALL(*gl_, UniformBlockBinding(kServiceProgramId, 1, 3)); | 2223 EXPECT_CALL(*gl_, UniformBlockBinding(kServiceProgramId, 1, 3)); |
| 2224 SpecializedSetup<UniformBlockBinding, 0>(true); | 2224 SpecializedSetup<UniformBlockBinding, 0>(true); |
| 2225 UniformBlockBinding cmd; | 2225 UniformBlockBinding cmd; |
| 2226 cmd.Init(client_program_id_, 1, 3); | 2226 cmd.Init(client_program_id_, 1, 3); |
| 2227 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2227 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2356 } | 2356 } |
| 2357 | 2357 |
| 2358 // TODO(gman): DeleteProgram | 2358 // TODO(gman): DeleteProgram |
| 2359 | 2359 |
| 2360 // TODO(gman): UseProgram | 2360 // TODO(gman): UseProgram |
| 2361 | 2361 |
| 2362 // TODO(gman): DeleteShader | 2362 // TODO(gman): DeleteShader |
| 2363 | 2363 |
| 2364 } // namespace gles2 | 2364 } // namespace gles2 |
| 2365 } // namespace gpu | 2365 } // namespace gpu |
| OLD | NEW |