Commit 5b109a5d authored by nfullagar@google.com's avatar nfullagar@google.com

Add more functionality to graphics3d test (more to follow...)

  - Call Core->ReleaseResource() on multiple graphics3d resources.
Fix for NaCl ppapi graphics 3d resource, so it can be released without
crashing the untrusted plugin.
Add a few more debug prints for future use.
BUG= none
TEST= ppapi_ppb_graphics3d.cc (included)
Review URL: http://codereview.chromium.org/7736006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98686 0039d316-1c4b-4281-b951-d872f2087c98
parent a93379ad
...@@ -21,6 +21,7 @@ CommandBufferNacl::CommandBufferNacl(PP_Resource graphics_3d, ...@@ -21,6 +21,7 @@ CommandBufferNacl::CommandBufferNacl(PP_Resource graphics_3d,
} }
CommandBufferNacl::~CommandBufferNacl() { CommandBufferNacl::~CommandBufferNacl() {
DebugPrintf("CommandBufferNacl::~CommandBufferNacl()\n");
iface_core_->ReleaseResource(graphics_3d_); iface_core_->ReleaseResource(graphics_3d_);
} }
......
...@@ -146,6 +146,11 @@ __thread gpu::gles2::GLES2Implementation* ...@@ -146,6 +146,11 @@ __thread gpu::gles2::GLES2Implementation*
PluginGraphics3D::PluginGraphics3D() : instance_id_(0) { } PluginGraphics3D::PluginGraphics3D() : instance_id_(0) { }
PluginGraphics3D::~PluginGraphics3D() { PluginGraphics3D::~PluginGraphics3D() {
DebugPrintf("PluginGraphics3D::~PluginGraphics3D()\n");
// Explicitly tear down scopted pointers; ordering below matters.
gles2_implementation_.reset();
gles2_helper_.reset();
command_buffer_.reset();
// Invalidate the cache. // Invalidate the cache.
cached_graphics3d_id = 0; cached_graphics3d_id = 0;
cached_implementation = NULL; cached_implementation = NULL;
......
...@@ -60,6 +60,7 @@ void TestCreate() { ...@@ -60,6 +60,7 @@ void TestCreate() {
PP_Resource graphics3d_id = PPBGraphics3DDev()-> PP_Resource graphics3d_id = PPBGraphics3DDev()->
Create(pp_instance(), kInvalidResource, attribs); Create(pp_instance(), kInvalidResource, attribs);
EXPECT(graphics3d_id != kInvalidResource); EXPECT(graphics3d_id != kInvalidResource);
PPBCore()->ReleaseResource(graphics3d_id);
PP_Resource invalid_graphics3d_id = PPBGraphics3DDev()-> PP_Resource invalid_graphics3d_id = PPBGraphics3DDev()->
Create(0, kInvalidResource, attribs); Create(0, kInvalidResource, attribs);
EXPECT(invalid_graphics3d_id == kInvalidResource); EXPECT(invalid_graphics3d_id == kInvalidResource);
...@@ -68,9 +69,11 @@ void TestCreate() { ...@@ -68,9 +69,11 @@ void TestCreate() {
PP_Resource graphics3d_empty_attrib_id = PPBGraphics3DDev()-> PP_Resource graphics3d_empty_attrib_id = PPBGraphics3DDev()->
Create(pp_instance(), kInvalidResource, empty_attribs); Create(pp_instance(), kInvalidResource, empty_attribs);
EXPECT(graphics3d_empty_attrib_id != kInvalidResource); EXPECT(graphics3d_empty_attrib_id != kInvalidResource);
PPBCore()->ReleaseResource(graphics3d_empty_attrib_id);
PP_Resource graphics3d_null_attrib_id = PPBGraphics3DDev()-> PP_Resource graphics3d_null_attrib_id = PPBGraphics3DDev()->
Create(pp_instance(), kInvalidResource, NULL); Create(pp_instance(), kInvalidResource, NULL);
EXPECT(graphics3d_null_attrib_id != kInvalidResource); EXPECT(graphics3d_null_attrib_id != kInvalidResource);
PPBCore()->ReleaseResource(graphics3d_null_attrib_id);
TEST_PASSED; TEST_PASSED;
} }
...@@ -84,6 +87,7 @@ void TestIsGraphics3D() { ...@@ -84,6 +87,7 @@ void TestIsGraphics3D() {
Create(pp_instance(), kInvalidResource, attribs); Create(pp_instance(), kInvalidResource, attribs);
EXPECT(graphics3d_id != kInvalidResource); EXPECT(graphics3d_id != kInvalidResource);
EXPECT(PPBGraphics3DDev()->IsGraphics3D(graphics3d_id) == PP_TRUE); EXPECT(PPBGraphics3DDev()->IsGraphics3D(graphics3d_id) == PP_TRUE);
PPBCore()->ReleaseResource(graphics3d_id);
TEST_PASSED; TEST_PASSED;
} }
...@@ -109,6 +113,7 @@ void SwapCallback(void* user_data, int32_t result) { ...@@ -109,6 +113,7 @@ void SwapCallback(void* user_data, int32_t result) {
int32_t result = PPBGraphics3DDev()->SwapBuffers(info->graphics3d_id, cc); int32_t result = PPBGraphics3DDev()->SwapBuffers(info->graphics3d_id, cc);
CHECK(PP_OK_COMPLETIONPENDING == result); CHECK(PP_OK_COMPLETIONPENDING == result);
} else { } else {
PPBCore()->ReleaseResource(info->graphics3d_id);
delete info; delete info;
} }
glSetCurrentContextPPAPI(0); glSetCurrentContextPPAPI(0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment