summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorgman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-30 10:30:59 +0000
committergman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-30 10:30:59 +0000
commit0adce59f6f18578a79621e93a66e1e579e1086aa (patch)
tree35301cf6c5ade0d0f62889359884d76d1b64a647 /gpu
parent2ba5cac1799c6702cdd6ab8e628d4e8f16196fc5 (diff)
downloadchromium_src-0adce59f6f18578a79621e93a66e1e579e1086aa.zip
chromium_src-0adce59f6f18578a79621e93a66e1e579e1086aa.tar.gz
chromium_src-0adce59f6f18578a79621e93a66e1e579e1086aa.tar.bz2
Add CHECK on non-generated ids in command buffer.
For Chrome and WebGL we require that all ids are generated. This is especially important for the threaded compositor as it may be using ids that are getting deleted and those ids will get auto-reused on bind. BUG=none TEST=ran webgl conformance tests Review URL: http://codereview.chromium.org/9903029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@129819 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder.cc23
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc12
2 files changed, 16 insertions, 19 deletions
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 26c80f2..8c03173 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -3226,8 +3226,8 @@ void GLES2DecoderImpl::DoBindBuffer(GLenum target, GLuint client_id) {
info = GetBufferInfo(client_id);
if (!info) {
if (!group_->bind_generates_resource()) {
- SetGLError(GL_INVALID_VALUE,
- "glBindBuffer: id not generated by glGenBuffers");
+ LOG(ERROR) << "glBindBuffer: id not generated by glGenBuffers";
+ current_decoder_error_ = error::kGenericError;
return;
}
@@ -3321,9 +3321,10 @@ void GLES2DecoderImpl::DoBindFramebuffer(GLenum target, GLuint client_id) {
info = GetFramebufferInfo(client_id);
if (!info) {
if (!group_->bind_generates_resource()) {
- SetGLError(GL_INVALID_VALUE,
- "glBindFramebuffer: id not generated by glGenFramebuffers");
- return;
+ LOG(ERROR)
+ << "glBindFramebuffer: id not generated by glGenFramebuffers";
+ current_decoder_error_ = error::kGenericError;
+ return;
}
// It's a new id so make a framebuffer info for it.
@@ -3364,9 +3365,9 @@ void GLES2DecoderImpl::DoBindRenderbuffer(GLenum target, GLuint client_id) {
info = GetRenderbufferInfo(client_id);
if (!info) {
if (!group_->bind_generates_resource()) {
- SetGLError(
- GL_INVALID_VALUE,
- "glBindRenderbuffer: id not generated by glGenRenderbuffers");
+ LOG(ERROR)
+ << "glBindRenderbuffer: id not generated by glGenRenderbuffers";
+ current_decoder_error_ = error::kGenericError;
return;
}
@@ -3393,9 +3394,9 @@ void GLES2DecoderImpl::DoBindTexture(GLenum target, GLuint client_id) {
info = GetTextureInfo(client_id);
if (!info) {
if (!group_->bind_generates_resource()) {
- SetGLError(GL_INVALID_VALUE,
- "glBindTexture: id not generated by glGenTextures");
- return;
+ LOG(ERROR) << "glBindTexture: id not generated by glGenTextures";
+ current_decoder_error_ = error::kGenericError;
+ return;
}
// It's a new id so make a texture info for it.
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
index ca1d5c6..16246f5 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
@@ -5199,23 +5199,19 @@ TEST_F(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) {
BindTexture cmd1;
cmd1.Init(GL_TEXTURE_2D, kInvalidClientId);
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1));
- EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
+ EXPECT_NE(error::kNoError, ExecuteCmd(cmd1));
BindBuffer cmd2;
cmd2.Init(GL_ARRAY_BUFFER, kInvalidClientId);
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
- EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
+ EXPECT_NE(error::kNoError, ExecuteCmd(cmd2));
BindFramebuffer cmd3;
cmd3.Init(GL_FRAMEBUFFER, kInvalidClientId);
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd3));
- EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
+ EXPECT_NE(error::kNoError, ExecuteCmd(cmd3));
BindRenderbuffer cmd4;
cmd4.Init(GL_RENDERBUFFER, kInvalidClientId);
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd4));
- EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
+ EXPECT_NE(error::kNoError, ExecuteCmd(cmd4));
}
TEST_F(GLES2DecoderManualInitTest, CreateStreamTextureCHROMIUM) {