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

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

Issue 2444813002: Remove unsafe mode to enable es3 api by default for WebGL2 and ES3 context (Closed)
Patch Set: remove runtime flag unsafeES3APIs from blink webgl module Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest.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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 InitState init; 96 InitState init;
97 init.gl_version = "OpenGL ES 3.0"; 97 init.gl_version = "OpenGL ES 3.0";
98 init.bind_generates_resource = true; 98 init.bind_generates_resource = true;
99 init.context_type = CONTEXT_TYPE_OPENGLES3; 99 init.context_type = CONTEXT_TYPE_OPENGLES3;
100 InitDecoderWithCommandLine(init, &command_line); 100 InitDecoderWithCommandLine(init, &command_line);
101 } 101 }
102 102
103 103
104 TEST_P(GLES3DecoderTest, Basic) { 104 TEST_P(GLES3DecoderTest, Basic) {
105 // Make sure the setup is correct for ES3. 105 // Make sure the setup is correct for ES3.
106 EXPECT_TRUE(decoder_->unsafe_es3_apis_enabled()); 106 EXPECT_TRUE(decoder_->es3_apis_enabled());
107 EXPECT_TRUE(feature_info()->validators()->texture_bind_target.IsValid( 107 EXPECT_TRUE(feature_info()->validators()->texture_bind_target.IsValid(
108 GL_TEXTURE_3D)); 108 GL_TEXTURE_3D));
109 } 109 }
110 110
111 TEST_P(GLES2DecoderTest, InvalidCommand) { 111 TEST_P(GLES2DecoderTest, InvalidCommand) {
112 cmd::Noop cmd; 112 cmd::Noop cmd;
113 cmd.header.Init(gles2::kNumCommands, 1); 113 cmd.header.Init(gles2::kNumCommands, 1);
114 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, 0)); 114 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, 0));
115 } 115 }
116 116
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 .RetiresOnSaturation(); 299 .RetiresOnSaturation();
300 EXPECT_CALL(*gl_, GetInternalformativ(GL_RENDERBUFFER, GL_RGBA8, 300 EXPECT_CALL(*gl_, GetInternalformativ(GL_RENDERBUFFER, GL_RGBA8,
301 GL_SAMPLES, kNumSampleCounts, 301 GL_SAMPLES, kNumSampleCounts,
302 result->GetData())) 302 result->GetData()))
303 .Times(1) 303 .Times(1)
304 .RetiresOnSaturation(); 304 .RetiresOnSaturation();
305 result->size = 0; 305 result->size = 0;
306 GetInternalformativ cmd; 306 GetInternalformativ cmd;
307 cmd.Init(GL_RENDERBUFFER, GL_RGBA8, GL_SAMPLES, 307 cmd.Init(GL_RENDERBUFFER, GL_RGBA8, GL_SAMPLES,
308 shared_memory_id_, shared_memory_offset_); 308 shared_memory_id_, shared_memory_offset_);
309 decoder_->set_unsafe_es3_apis_enabled(true); 309 decoder_->set_es3_apis_enabled(true);
310 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 310 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
311 EXPECT_EQ(kNumSampleCounts, result->GetNumResults()); 311 EXPECT_EQ(kNumSampleCounts, result->GetNumResults());
312 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 312 EXPECT_EQ(GL_NO_ERROR, GetGLError());
313 decoder_->set_unsafe_es3_apis_enabled(false); 313 decoder_->set_es3_apis_enabled(false);
314 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 314 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
315 } 315 }
316 316
317 TEST_P(GLES3DecoderTest, GetInternalformativValidArgsNumSampleCounts) { 317 TEST_P(GLES3DecoderTest, GetInternalformativValidArgsNumSampleCounts) {
318 const GLint kNumSampleCounts = 8; 318 const GLint kNumSampleCounts = 8;
319 typedef GetInternalformativ::Result Result; 319 typedef GetInternalformativ::Result Result;
320 Result* result = static_cast<Result*>(shared_memory_address_); 320 Result* result = static_cast<Result*>(shared_memory_address_);
321 EXPECT_CALL(*gl_, GetInternalformativ(GL_RENDERBUFFER, GL_RGBA8, 321 EXPECT_CALL(*gl_, GetInternalformativ(GL_RENDERBUFFER, GL_RGBA8,
322 GL_NUM_SAMPLE_COUNTS, 1, _)) 322 GL_NUM_SAMPLE_COUNTS, 1, _))
323 .WillOnce(SetArgPointee<4>(kNumSampleCounts)) 323 .WillOnce(SetArgPointee<4>(kNumSampleCounts))
324 .RetiresOnSaturation(); 324 .RetiresOnSaturation();
325 result->size = 0; 325 result->size = 0;
326 GetInternalformativ cmd; 326 GetInternalformativ cmd;
327 cmd.Init(GL_RENDERBUFFER, GL_RGBA8, GL_NUM_SAMPLE_COUNTS, 327 cmd.Init(GL_RENDERBUFFER, GL_RGBA8, GL_NUM_SAMPLE_COUNTS,
328 shared_memory_id_, shared_memory_offset_); 328 shared_memory_id_, shared_memory_offset_);
329 decoder_->set_unsafe_es3_apis_enabled(true); 329 decoder_->set_es3_apis_enabled(true);
330 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 330 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
331 EXPECT_EQ(1, result->GetNumResults()); 331 EXPECT_EQ(1, result->GetNumResults());
332 EXPECT_EQ(kNumSampleCounts, result->GetData()[0]); 332 EXPECT_EQ(kNumSampleCounts, result->GetData()[0]);
333 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 333 EXPECT_EQ(GL_NO_ERROR, GetGLError());
334 decoder_->set_unsafe_es3_apis_enabled(false); 334 decoder_->set_es3_apis_enabled(false);
335 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 335 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
336 } 336 }
337 337
338 TEST_P(GLES3DecoderTest, ClientWaitSyncValid) { 338 TEST_P(GLES3DecoderTest, ClientWaitSyncValid) {
339 typedef ClientWaitSync::Result Result; 339 typedef ClientWaitSync::Result Result;
340 Result* result = static_cast<Result*>(shared_memory_address_); 340 Result* result = static_cast<Result*>(shared_memory_address_);
341 ClientWaitSync cmd; 341 ClientWaitSync cmd;
342 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, 0, 342 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, 0,
343 shared_memory_id_, shared_memory_offset_); 343 shared_memory_id_, shared_memory_offset_);
344 EXPECT_CALL(*gl_, 344 EXPECT_CALL(*gl_,
345 ClientWaitSync(reinterpret_cast<GLsync>(kServiceSyncId), 345 ClientWaitSync(reinterpret_cast<GLsync>(kServiceSyncId),
346 GL_SYNC_FLUSH_COMMANDS_BIT, 0)) 346 GL_SYNC_FLUSH_COMMANDS_BIT, 0))
347 .WillOnce(Return(GL_CONDITION_SATISFIED)) 347 .WillOnce(Return(GL_CONDITION_SATISFIED))
348 .RetiresOnSaturation(); 348 .RetiresOnSaturation();
349 *result = GL_WAIT_FAILED; 349 *result = GL_WAIT_FAILED;
350 decoder_->set_unsafe_es3_apis_enabled(true); 350 decoder_->set_es3_apis_enabled(true);
351 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 351 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
352 EXPECT_EQ(static_cast<GLenum>(GL_CONDITION_SATISFIED), *result); 352 EXPECT_EQ(static_cast<GLenum>(GL_CONDITION_SATISFIED), *result);
353 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 353 EXPECT_EQ(GL_NO_ERROR, GetGLError());
354 decoder_->set_unsafe_es3_apis_enabled(false); 354 decoder_->set_es3_apis_enabled(false);
355 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 355 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
356 } 356 }
357 357
358 TEST_P(GLES2DecoderTest, ClientWaitSyncNonZeroTimeoutValid) { 358 TEST_P(GLES2DecoderTest, ClientWaitSyncNonZeroTimeoutValid) {
359 typedef ClientWaitSync::Result Result; 359 typedef ClientWaitSync::Result Result;
360 Result* result = static_cast<Result*>(shared_memory_address_); 360 Result* result = static_cast<Result*>(shared_memory_address_);
361 ClientWaitSync cmd; 361 ClientWaitSync cmd;
362 const GLuint64 kTimeout = 0xABCDEF0123456789; 362 const GLuint64 kTimeout = 0xABCDEF0123456789;
363 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, kTimeout, 363 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, kTimeout,
364 shared_memory_id_, shared_memory_offset_); 364 shared_memory_id_, shared_memory_offset_);
365 EXPECT_CALL(*gl_, 365 EXPECT_CALL(*gl_,
366 ClientWaitSync(reinterpret_cast<GLsync>(kServiceSyncId), 366 ClientWaitSync(reinterpret_cast<GLsync>(kServiceSyncId),
367 GL_SYNC_FLUSH_COMMANDS_BIT, kTimeout)) 367 GL_SYNC_FLUSH_COMMANDS_BIT, kTimeout))
368 .WillOnce(Return(GL_CONDITION_SATISFIED)) 368 .WillOnce(Return(GL_CONDITION_SATISFIED))
369 .RetiresOnSaturation(); 369 .RetiresOnSaturation();
370 *result = GL_WAIT_FAILED; 370 *result = GL_WAIT_FAILED;
371 decoder_->set_unsafe_es3_apis_enabled(true); 371 decoder_->set_es3_apis_enabled(true);
372 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 372 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
373 EXPECT_EQ(static_cast<GLenum>(GL_CONDITION_SATISFIED), *result); 373 EXPECT_EQ(static_cast<GLenum>(GL_CONDITION_SATISFIED), *result);
374 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 374 EXPECT_EQ(GL_NO_ERROR, GetGLError());
375 decoder_->set_unsafe_es3_apis_enabled(false); 375 decoder_->set_es3_apis_enabled(false);
376 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 376 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
377 } 377 }
378 378
379 TEST_P(GLES2DecoderTest, ClientWaitSyncInvalidSyncFails) { 379 TEST_P(GLES2DecoderTest, ClientWaitSyncInvalidSyncFails) {
380 typedef ClientWaitSync::Result Result; 380 typedef ClientWaitSync::Result Result;
381 Result* result = static_cast<Result*>(shared_memory_address_); 381 Result* result = static_cast<Result*>(shared_memory_address_);
382 ClientWaitSync cmd; 382 ClientWaitSync cmd;
383 decoder_->set_unsafe_es3_apis_enabled(true); 383 decoder_->set_es3_apis_enabled(true);
384 cmd.Init(kInvalidClientId, GL_SYNC_FLUSH_COMMANDS_BIT, 0, 384 cmd.Init(kInvalidClientId, GL_SYNC_FLUSH_COMMANDS_BIT, 0,
385 shared_memory_id_, shared_memory_offset_); 385 shared_memory_id_, shared_memory_offset_);
386 *result = GL_WAIT_FAILED; 386 *result = GL_WAIT_FAILED;
387 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 387 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
388 EXPECT_EQ(static_cast<GLenum>(GL_WAIT_FAILED), *result); 388 EXPECT_EQ(static_cast<GLenum>(GL_WAIT_FAILED), *result);
389 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 389 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
390 } 390 }
391 391
392 TEST_P(GLES2DecoderTest, ClientWaitSyncResultNotInitFails) { 392 TEST_P(GLES2DecoderTest, ClientWaitSyncResultNotInitFails) {
393 typedef ClientWaitSync::Result Result; 393 typedef ClientWaitSync::Result Result;
394 Result* result = static_cast<Result*>(shared_memory_address_); 394 Result* result = static_cast<Result*>(shared_memory_address_);
395 ClientWaitSync cmd; 395 ClientWaitSync cmd;
396 decoder_->set_unsafe_es3_apis_enabled(true); 396 decoder_->set_es3_apis_enabled(true);
397 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, 0, 397 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, 0,
398 shared_memory_id_, shared_memory_offset_); 398 shared_memory_id_, shared_memory_offset_);
399 *result = 1; // Any value other than GL_WAIT_FAILED 399 *result = 1; // Any value other than GL_WAIT_FAILED
400 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 400 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
401 } 401 }
402 402
403 TEST_P(GLES2DecoderTest, ClientWaitSyncBadSharedMemoryFails) { 403 TEST_P(GLES2DecoderTest, ClientWaitSyncBadSharedMemoryFails) {
404 typedef ClientWaitSync::Result Result; 404 typedef ClientWaitSync::Result Result;
405 Result* result = static_cast<Result*>(shared_memory_address_); 405 Result* result = static_cast<Result*>(shared_memory_address_);
406 ClientWaitSync cmd; 406 ClientWaitSync cmd;
407 decoder_->set_unsafe_es3_apis_enabled(true); 407 decoder_->set_es3_apis_enabled(true);
408 *result = GL_WAIT_FAILED; 408 *result = GL_WAIT_FAILED;
409 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, 0, 409 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, 0,
410 kInvalidSharedMemoryId, shared_memory_offset_); 410 kInvalidSharedMemoryId, shared_memory_offset_);
411 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 411 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
412 412
413 *result = GL_WAIT_FAILED; 413 *result = GL_WAIT_FAILED;
414 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, 0, 414 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, 0,
415 shared_memory_id_, kInvalidSharedMemoryOffset); 415 shared_memory_id_, kInvalidSharedMemoryOffset);
416 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 416 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
417 } 417 }
418 418
419 TEST_P(GLES2DecoderTest, WaitSyncValidArgs) { 419 TEST_P(GLES2DecoderTest, WaitSyncValidArgs) {
420 const GLuint64 kTimeout = GL_TIMEOUT_IGNORED; 420 const GLuint64 kTimeout = GL_TIMEOUT_IGNORED;
421 EXPECT_CALL(*gl_, WaitSync(reinterpret_cast<GLsync>(kServiceSyncId), 421 EXPECT_CALL(*gl_, WaitSync(reinterpret_cast<GLsync>(kServiceSyncId),
422 0, kTimeout)) 422 0, kTimeout))
423 .Times(1) 423 .Times(1)
424 .RetiresOnSaturation(); 424 .RetiresOnSaturation();
425 425
426 WaitSync cmd; 426 WaitSync cmd;
427 cmd.Init(client_sync_id_, 0, kTimeout); 427 cmd.Init(client_sync_id_, 0, kTimeout);
428 decoder_->set_unsafe_es3_apis_enabled(true); 428 decoder_->set_es3_apis_enabled(true);
429 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 429 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
430 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 430 EXPECT_EQ(GL_NO_ERROR, GetGLError());
431 decoder_->set_unsafe_es3_apis_enabled(false); 431 decoder_->set_es3_apis_enabled(false);
432 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 432 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
433 } 433 }
434 434
435 TEST_P(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) { 435 TEST_P(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) {
436 InitState init; 436 InitState init;
437 InitDecoder(init); 437 InitDecoder(init);
438 438
439 BindTexture cmd1; 439 BindTexture cmd1;
440 cmd1.Init(GL_TEXTURE_2D, kInvalidClientId); 440 cmd1.Init(GL_TEXTURE_2D, kInvalidClientId);
441 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); 441 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1));
(...skipping 1305 matching lines...) Expand 10 before | Expand all | Expand 10 after
1747 ::testing::Bool()); 1747 ::testing::Bool());
1748 1748
1749 INSTANTIATE_TEST_CASE_P(Service, GLES3DecoderTest, ::testing::Bool()); 1749 INSTANTIATE_TEST_CASE_P(Service, GLES3DecoderTest, ::testing::Bool());
1750 1750
1751 INSTANTIATE_TEST_CASE_P(Service, 1751 INSTANTIATE_TEST_CASE_P(Service,
1752 GLES3DecoderWithESSL3ShaderTest, 1752 GLES3DecoderWithESSL3ShaderTest,
1753 ::testing::Bool()); 1753 ::testing::Bool());
1754 1754
1755 } // namespace gles2 1755 } // namespace gles2
1756 } // namespace gpu 1756 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698