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

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

Issue 16293004: Update gpu/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years, 6 months 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 | Annotate | Revision Log
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.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include "base/atomicops.h" 7 #include "base/atomicops.h"
8 #include "gpu/command_buffer/common/gles2_cmd_format.h" 8 #include "gpu/command_buffer/common/gles2_cmd_format.h"
9 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 9 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
10 #include "gpu/command_buffer/common/id_allocator.h" 10 #include "gpu/command_buffer/common/id_allocator.h"
(...skipping 8363 matching lines...) Expand 10 before | Expand all | Expand 10 after
8374 InitDecoder( 8374 InitDecoder(
8375 "", // extensions 8375 "", // extensions
8376 false, // has alpha 8376 false, // has alpha
8377 false, // has depth 8377 false, // has depth
8378 false, // has stencil 8378 false, // has stencil
8379 false, // request alpha 8379 false, // request alpha
8380 false, // request depth 8380 false, // request depth
8381 false, // request stencil 8381 false, // request stencil
8382 true); // bind generates resource 8382 true); // bind generates resource
8383 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 8383 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
8384 EXPECT_CALL(*memory_tracker, EnsureGPUMemoryAvailable(128)) 8384 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
8385 .WillOnce(Return(true)) 8385 .WillOnce(Return(true)).RetiresOnSaturation();
8386 .RetiresOnSaturation();
8387 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 8, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 8386 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 8, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE,
8388 kSharedMemoryId, kSharedMemoryOffset); 8387 kSharedMemoryId, kSharedMemoryOffset);
8389 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 8388 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
8390 EXPECT_CALL(*memory_tracker, EnsureGPUMemoryAvailable(64)) 8389 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(64))
8391 .WillOnce(Return(true)) 8390 .WillOnce(Return(true)).RetiresOnSaturation();
8392 .RetiresOnSaturation();
8393 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 8391 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE,
8394 kSharedMemoryId, kSharedMemoryOffset); 8392 kSharedMemoryId, kSharedMemoryOffset);
8395 EXPECT_EQ(64u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 8393 EXPECT_EQ(64u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
8396 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 8394 EXPECT_EQ(GL_NO_ERROR, GetGLError());
8397 // Check we get out of memory and no call to glTexImage2D if Ensure fails. 8395 // Check we get out of memory and no call to glTexImage2D if Ensure fails.
8398 EXPECT_CALL(*memory_tracker, EnsureGPUMemoryAvailable(64)) 8396 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(64))
8399 .WillOnce(Return(false)) 8397 .WillOnce(Return(false)).RetiresOnSaturation();
8400 .RetiresOnSaturation();
8401 TexImage2D cmd; 8398 TexImage2D cmd;
8402 cmd.Init(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, 8399 cmd.Init(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE,
8403 kSharedMemoryId, kSharedMemoryOffset); 8400 kSharedMemoryId, kSharedMemoryOffset);
8404 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 8401 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
8405 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 8402 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
8406 EXPECT_EQ(64u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 8403 EXPECT_EQ(64u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
8407 } 8404 }
8408 8405
8409 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerTexStorage2DEXT) { 8406 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerTexStorage2DEXT) {
8410 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = 8407 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker =
8411 new SizeOnlyMemoryTracker(); 8408 new SizeOnlyMemoryTracker();
8412 set_memory_tracker(memory_tracker.get()); 8409 set_memory_tracker(memory_tracker.get());
8413 InitDecoder( 8410 InitDecoder(
8414 "", // extensions 8411 "", // extensions
8415 false, // has alpha 8412 false, // has alpha
8416 false, // has depth 8413 false, // has depth
8417 false, // has stencil 8414 false, // has stencil
8418 false, // request alpha 8415 false, // request alpha
8419 false, // request depth 8416 false, // request depth
8420 false, // request stencil 8417 false, // request stencil
8421 true); // bind generates resource 8418 true); // bind generates resource
8422 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 8419 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
8423 // Check we get out of memory and no call to glTexStorage2DEXT 8420 // Check we get out of memory and no call to glTexStorage2DEXT
8424 // if Ensure fails. 8421 // if Ensure fails.
8425 EXPECT_CALL(*memory_tracker, EnsureGPUMemoryAvailable(128)) 8422 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
8426 .WillOnce(Return(false)) 8423 .WillOnce(Return(false)).RetiresOnSaturation();
8427 .RetiresOnSaturation();
8428 TexStorage2DEXT cmd; 8424 TexStorage2DEXT cmd;
8429 cmd.Init(GL_TEXTURE_2D, 1, GL_RGBA8, 8, 4); 8425 cmd.Init(GL_TEXTURE_2D, 1, GL_RGBA8, 8, 4);
8430 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 8426 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
8431 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 8427 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
8432 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 8428 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
8433 } 8429 }
8434 8430
8435 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerCopyTexImage2D) { 8431 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerCopyTexImage2D) {
8436 GLenum target = GL_TEXTURE_2D; 8432 GLenum target = GL_TEXTURE_2D;
8437 GLint level = 0; 8433 GLint level = 0;
8438 GLenum internal_format = GL_RGBA; 8434 GLenum internal_format = GL_RGBA;
8439 GLsizei width = 4; 8435 GLsizei width = 4;
8440 GLsizei height = 8; 8436 GLsizei height = 8;
8441 GLint border = 0; 8437 GLint border = 0;
8442 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = 8438 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker =
8443 new SizeOnlyMemoryTracker(); 8439 new SizeOnlyMemoryTracker();
8444 set_memory_tracker(memory_tracker.get()); 8440 set_memory_tracker(memory_tracker.get());
8445 InitDecoder( 8441 InitDecoder(
8446 "", // extensions 8442 "", // extensions
8447 true, // has alpha 8443 true, // has alpha
8448 false, // has depth 8444 false, // has depth
8449 false, // has stencil 8445 false, // has stencil
8450 true, // request alpha 8446 true, // request alpha
8451 false, // request depth 8447 false, // request depth
8452 false, // request stencil 8448 false, // request stencil
8453 true); // bind generates resource 8449 true); // bind generates resource
8454 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 8450 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
8455 EXPECT_CALL(*memory_tracker, EnsureGPUMemoryAvailable(128)) 8451 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
8456 .WillOnce(Return(true)) 8452 .WillOnce(Return(true)).RetiresOnSaturation();
8457 .RetiresOnSaturation();
8458 EXPECT_CALL(*gl_, GetError()) 8453 EXPECT_CALL(*gl_, GetError())
8459 .WillOnce(Return(GL_NO_ERROR)) 8454 .WillOnce(Return(GL_NO_ERROR))
8460 .WillOnce(Return(GL_NO_ERROR)) 8455 .WillOnce(Return(GL_NO_ERROR))
8461 .RetiresOnSaturation(); 8456 .RetiresOnSaturation();
8462 EXPECT_CALL(*gl_, CopyTexImage2D( 8457 EXPECT_CALL(*gl_, CopyTexImage2D(
8463 target, level, internal_format, 0, 0, width, height, border)) 8458 target, level, internal_format, 0, 0, width, height, border))
8464 .Times(1) 8459 .Times(1)
8465 .RetiresOnSaturation(); 8460 .RetiresOnSaturation();
8466 CopyTexImage2D cmd; 8461 CopyTexImage2D cmd;
8467 cmd.Init(target, level, internal_format, 0, 0, width, height, border); 8462 cmd.Init(target, level, internal_format, 0, 0, width, height, border);
8468 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 8463 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
8469 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 8464 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
8470 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 8465 EXPECT_EQ(GL_NO_ERROR, GetGLError());
8471 // Check we get out of memory and no call to glCopyTexImage2D if Ensure fails. 8466 // Check we get out of memory and no call to glCopyTexImage2D if Ensure fails.
8472 EXPECT_CALL(*memory_tracker, EnsureGPUMemoryAvailable(128)) 8467 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
8473 .WillOnce(Return(false)) 8468 .WillOnce(Return(false)).RetiresOnSaturation();
8474 .RetiresOnSaturation();
8475 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 8469 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
8476 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 8470 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
8477 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 8471 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
8478 } 8472 }
8479 8473
8480 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerRenderbufferStorage) { 8474 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerRenderbufferStorage) {
8481 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = 8475 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker =
8482 new SizeOnlyMemoryTracker(); 8476 new SizeOnlyMemoryTracker();
8483 set_memory_tracker(memory_tracker.get()); 8477 set_memory_tracker(memory_tracker.get());
8484 InitDecoder( 8478 InitDecoder(
8485 "", // extensions 8479 "", // extensions
8486 false, // has alpha 8480 false, // has alpha
8487 false, // has depth 8481 false, // has depth
8488 false, // has stencil 8482 false, // has stencil
8489 false, // request alpha 8483 false, // request alpha
8490 false, // request depth 8484 false, // request depth
8491 false, // request stencil 8485 false, // request stencil
8492 true); // bind generates resource 8486 true); // bind generates resource
8493 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, 8487 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_,
8494 kServiceRenderbufferId); 8488 kServiceRenderbufferId);
8495 EXPECT_CALL(*gl_, GetError()) 8489 EXPECT_CALL(*gl_, GetError())
8496 .WillOnce(Return(GL_NO_ERROR)) 8490 .WillOnce(Return(GL_NO_ERROR))
8497 .WillOnce(Return(GL_NO_ERROR)) 8491 .WillOnce(Return(GL_NO_ERROR))
8498 .RetiresOnSaturation(); 8492 .RetiresOnSaturation();
8499 EXPECT_CALL(*memory_tracker, EnsureGPUMemoryAvailable(128)) 8493 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
8500 .WillOnce(Return(true)) 8494 .WillOnce(Return(true)).RetiresOnSaturation();
8501 .RetiresOnSaturation();
8502 EXPECT_CALL(*gl_, RenderbufferStorageEXT( 8495 EXPECT_CALL(*gl_, RenderbufferStorageEXT(
8503 GL_RENDERBUFFER, GL_RGBA, 8, 4)) 8496 GL_RENDERBUFFER, GL_RGBA, 8, 4))
8504 .Times(1) 8497 .Times(1)
8505 .RetiresOnSaturation(); 8498 .RetiresOnSaturation();
8506 RenderbufferStorage cmd; 8499 RenderbufferStorage cmd;
8507 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 8, 4); 8500 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 8, 4);
8508 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 8501 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
8509 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 8502 EXPECT_EQ(GL_NO_ERROR, GetGLError());
8510 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 8503 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
8511 // Check we get out of memory and no call to glRenderbufferStorage if Ensure 8504 // Check we get out of memory and no call to glRenderbufferStorage if Ensure
8512 // fails. 8505 // fails.
8513 EXPECT_CALL(*memory_tracker, EnsureGPUMemoryAvailable(128)) 8506 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
8514 .WillOnce(Return(false)) 8507 .WillOnce(Return(false)).RetiresOnSaturation();
8515 .RetiresOnSaturation();
8516 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 8508 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
8517 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 8509 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
8518 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 8510 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
8519 } 8511 }
8520 8512
8521 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerBufferData) { 8513 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerBufferData) {
8522 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = 8514 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker =
8523 new SizeOnlyMemoryTracker(); 8515 new SizeOnlyMemoryTracker();
8524 set_memory_tracker(memory_tracker.get()); 8516 set_memory_tracker(memory_tracker.get());
8525 InitDecoder( 8517 InitDecoder(
8526 "", // extensions 8518 "", // extensions
8527 false, // has alpha 8519 false, // has alpha
8528 false, // has depth 8520 false, // has depth
8529 false, // has stencil 8521 false, // has stencil
8530 false, // request alpha 8522 false, // request alpha
8531 false, // request depth 8523 false, // request depth
8532 false, // request stencil 8524 false, // request stencil
8533 true); // bind generates resource 8525 true); // bind generates resource
8534 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, 8526 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_,
8535 kServiceBufferId); 8527 kServiceBufferId);
8536 EXPECT_CALL(*gl_, GetError()) 8528 EXPECT_CALL(*gl_, GetError())
8537 .WillOnce(Return(GL_NO_ERROR)) 8529 .WillOnce(Return(GL_NO_ERROR))
8538 .WillOnce(Return(GL_NO_ERROR)) 8530 .WillOnce(Return(GL_NO_ERROR))
8539 .RetiresOnSaturation(); 8531 .RetiresOnSaturation();
8540 EXPECT_CALL(*memory_tracker, EnsureGPUMemoryAvailable(128)) 8532 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
8541 .WillOnce(Return(true)) 8533 .WillOnce(Return(true)).RetiresOnSaturation();
8542 .RetiresOnSaturation();
8543 EXPECT_CALL(*gl_, BufferData(GL_ARRAY_BUFFER, 128, _, GL_STREAM_DRAW)) 8534 EXPECT_CALL(*gl_, BufferData(GL_ARRAY_BUFFER, 128, _, GL_STREAM_DRAW))
8544 .Times(1) 8535 .Times(1)
8545 .RetiresOnSaturation(); 8536 .RetiresOnSaturation();
8546 BufferData cmd; 8537 BufferData cmd;
8547 cmd.Init(GL_ARRAY_BUFFER, 128, 0, 0, GL_STREAM_DRAW); 8538 cmd.Init(GL_ARRAY_BUFFER, 128, 0, 0, GL_STREAM_DRAW);
8548 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 8539 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
8549 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 8540 EXPECT_EQ(GL_NO_ERROR, GetGLError());
8550 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); 8541 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kManaged));
8551 // Check we get out of memory and no call to glBufferData if Ensure 8542 // Check we get out of memory and no call to glBufferData if Ensure
8552 // fails. 8543 // fails.
8553 EXPECT_CALL(*memory_tracker, EnsureGPUMemoryAvailable(128)) 8544 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
8554 .WillOnce(Return(false)) 8545 .WillOnce(Return(false)).RetiresOnSaturation();
8555 .RetiresOnSaturation();
8556 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 8546 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
8557 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 8547 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
8558 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); 8548 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kManaged));
8559 } 8549 }
8560 8550
8561 TEST_F(GLES2DecoderTest, DrawBuffersEXTImmediateSuccceeds) { 8551 TEST_F(GLES2DecoderTest, DrawBuffersEXTImmediateSuccceeds) {
8562 const GLsizei count = 1; 8552 const GLsizei count = 1;
8563 const GLenum bufs[] = { GL_COLOR_ATTACHMENT0 }; 8553 const GLenum bufs[] = { GL_COLOR_ATTACHMENT0 };
8564 DrawBuffersEXTImmediate& cmd = 8554 DrawBuffersEXTImmediate& cmd =
8565 *GetImmediateAs<DrawBuffersEXTImmediate>(); 8555 *GetImmediateAs<DrawBuffersEXTImmediate>();
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
8642 // TODO(gman): TexImage2DImmediate 8632 // TODO(gman): TexImage2DImmediate
8643 8633
8644 // TODO(gman): TexSubImage2DImmediate 8634 // TODO(gman): TexSubImage2DImmediate
8645 8635
8646 // TODO(gman): UseProgram 8636 // TODO(gman): UseProgram
8647 8637
8648 // TODO(gman): SwapBuffers 8638 // TODO(gman): SwapBuffers
8649 8639
8650 } // namespace gles2 8640 } // namespace gles2
8651 } // namespace gpu 8641 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698