diff options
author | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-06 16:13:58 +0000 |
---|---|---|
committer | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-06 16:13:58 +0000 |
commit | 6b8cf1ad4ff0c7c145154d78e557eef666247a50 (patch) | |
tree | 56b75e13699c5faf75ba687624dc2dc2ac12abf0 /gpu/command_buffer/client/gles2_implementation.cc | |
parent | ab50f5225ec04327d77e9bf3fe0fbc66473c77ab (diff) | |
download | chromium_src-6b8cf1ad4ff0c7c145154d78e557eef666247a50.zip chromium_src-6b8cf1ad4ff0c7c145154d78e557eef666247a50.tar.gz chromium_src-6b8cf1ad4ff0c7c145154d78e557eef666247a50.tar.bz2 |
Various fixes for the OpenGL ES 2.0 conformance tests.
Was failing 268 of 1198
Now failing 266 of 1198
ugh! all those changes only fixed 2 tests :-(
TEST=some unit test and conformance tests.
BUG=none
Review URL: http://codereview.chromium.org/1942004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46572 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/client/gles2_implementation.cc')
-rw-r--r-- | gpu/command_buffer/client/gles2_implementation.cc | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc index 6b2efad..8e7867c 100644 --- a/gpu/command_buffer/client/gles2_implementation.cc +++ b/gpu/command_buffer/client/gles2_implementation.cc @@ -809,12 +809,10 @@ void GLES2Implementation::ShaderSource( // Compute the total size. uint32 total_size = 1; for (GLsizei ii = 0; ii < count; ++ii) { - // I shouldn't have to check for this. The spec doesn't allow this - if (!source[ii]) { - SetGLError(GL_INVALID_VALUE, "glShaderSource: null passed for string."); - return; + if (source[ii]) { + total_size += + (length && length[ii] >= 0) ? length[ii] : strlen(source[ii]); } - total_size += (length && length[ii] >= 0) ? length[ii] : strlen(source[ii]); } // Concatenate all the strings in to a bucket on the service. @@ -823,19 +821,20 @@ void GLES2Implementation::ShaderSource( uint32 offset = 0; for (GLsizei ii = 0; ii <= count; ++ii) { const char* src = ii < count ? source[ii] : ""; - - uint32 size = ii < count ? (length ? length[ii] : strlen(src)) : 1; - while (size) { - uint32 part_size = std::min(size, max_size); - void* buffer = transfer_buffer_.Alloc(part_size); - memcpy(buffer, src, part_size); - helper_->SetBucketData(kResultBucketId, offset, part_size, - transfer_buffer_id_, - transfer_buffer_.GetOffset(buffer)); - transfer_buffer_.FreePendingToken(buffer, helper_->InsertToken()); - offset += part_size; - src += part_size; - size -= part_size; + if (src) { + uint32 size = ii < count ? (length ? length[ii] : strlen(src)) : 1; + while (size) { + uint32 part_size = std::min(size, max_size); + void* buffer = transfer_buffer_.Alloc(part_size); + memcpy(buffer, src, part_size); + helper_->SetBucketData(kResultBucketId, offset, part_size, + transfer_buffer_id_, + transfer_buffer_.GetOffset(buffer)); + transfer_buffer_.FreePendingToken(buffer, helper_->InsertToken()); + offset += part_size; + src += part_size; + size -= part_size; + } } } |