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

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

Issue 501072: Fixes VertexAttribPointer by allowing null (0) to be... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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 <vector> 5 #include <vector>
6 #include <string> 6 #include <string>
7 #include <map> 7 #include <map>
8 #include <build/build_config.h> 8 #include <build/build_config.h>
9 #include "base/scoped_ptr.h" 9 #include "base/scoped_ptr.h"
10 #define GLES2_GPU_SERVICE 1 10 #define GLES2_GPU_SERVICE 1
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after
669 switch (command) { 669 switch (command) {
670 #define GLES2_CMD_OP(name) \ 670 #define GLES2_CMD_OP(name) \
671 case name::kCmdId: \ 671 case name::kCmdId: \
672 result = Handle ## name( \ 672 result = Handle ## name( \
673 immediate_data_size, \ 673 immediate_data_size, \
674 *static_cast<const name*>(cmd_data)); \ 674 *static_cast<const name*>(cmd_data)); \
675 break; \ 675 break; \
676 676
677 GLES2_COMMAND_LIST(GLES2_CMD_OP) 677 GLES2_COMMAND_LIST(GLES2_CMD_OP)
678 #undef GLES2_CMD_OP 678 #undef GLES2_CMD_OP
679 if (debug()) { 679 }
680 if (glGetError() != 0) { 680 if (debug()) {
681 // TODO(gman): Change output to something useful for NaCl. 681 if (glGetError() != 0) {
682 printf("GL ERROR b4: %s\n", GetCommandName(command)); 682 // TODO(gman): Change output to something useful for NaCl.
683 } 683 printf("GL ERROR b4: %s\n", GetCommandName(command));
684 } 684 }
685 } 685 }
686 } else { 686 } else {
687 result = parse_error::kParseInvalidArguments; 687 result = parse_error::kParseInvalidArguments;
688 } 688 }
689 } else { 689 } else {
690 result = DoCommonCommand(command, arg_count, cmd_data); 690 result = DoCommonCommand(command, arg_count, cmd_data);
691 } 691 }
692 return result; 692 return result;
693 } 693 }
(...skipping 16 matching lines...) Expand all
710 710
711 void GLES2DecoderImpl::DoBindBuffer(GLenum target, GLuint buffer) { 711 void GLES2DecoderImpl::DoBindBuffer(GLenum target, GLuint buffer) {
712 switch (target) { 712 switch (target) {
713 case GL_ARRAY_BUFFER: 713 case GL_ARRAY_BUFFER:
714 bound_array_buffer_ = buffer; 714 bound_array_buffer_ = buffer;
715 break; 715 break;
716 case GL_ELEMENT_ARRAY_BUFFER: 716 case GL_ELEMENT_ARRAY_BUFFER:
717 bound_element_array_buffer_ = buffer; 717 bound_element_array_buffer_ = buffer;
718 break; 718 break;
719 default: 719 default:
720 DCHECK(false); // Validation should prevent us getting here.
720 break; 721 break;
721 } 722 }
722 glBindBuffer(target, buffer); 723 glBindBuffer(target, buffer);
723 } 724 }
724 725
725 parse_error::ParseError GLES2DecoderImpl::HandleDeleteShader( 726 parse_error::ParseError GLES2DecoderImpl::HandleDeleteShader(
726 uint32 immediate_data_size, const gles2::DeleteShader& c) { 727 uint32 immediate_data_size, const gles2::DeleteShader& c) {
727 GLuint shader = c.shader; 728 GLuint shader = c.shader;
728 GLuint service_id; 729 GLuint service_id;
729 if (!id_map_.GetServiceId(shader, &service_id)) { 730 if (!id_map_.GetServiceId(shader, &service_id)) {
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
868 const char** data = GetImmediateDataAs<const char**>(c); 869 const char** data = GetImmediateDataAs<const char**>(c);
869 if (!data) { 870 if (!data) {
870 return parse_error::kParseOutOfBounds; 871 return parse_error::kParseOutOfBounds;
871 } 872 }
872 return ShaderSourceHelper( 873 return ShaderSourceHelper(
873 shader, count, reinterpret_cast<const char*>(data), data_size); 874 shader, count, reinterpret_cast<const char*>(data), data_size);
874 } 875 }
875 876
876 parse_error::ParseError GLES2DecoderImpl::HandleVertexAttribPointer( 877 parse_error::ParseError GLES2DecoderImpl::HandleVertexAttribPointer(
877 uint32 immediate_data_size, const gles2::VertexAttribPointer& c) { 878 uint32 immediate_data_size, const gles2::VertexAttribPointer& c) {
879 // TODO(gman): Is this a valid check or does this check have to come
880 // at glDrawElements time.
878 if (bound_array_buffer_ != 0) { 881 if (bound_array_buffer_ != 0) {
879 GLuint indx = c.indx; 882 GLuint indx = c.indx;
880 GLint size = c.size; 883 GLint size = c.size;
881 GLenum type = c.type; 884 GLenum type = c.type;
882 GLboolean normalized = c.normalized; 885 GLboolean normalized = c.normalized;
883 GLsizei stride = c.stride; 886 GLsizei stride = c.stride;
884 GLuint offset = c.offset; 887 GLuint offset = c.offset;
885 const void* ptr = reinterpret_cast<const void*>(c.offset); 888 const void* ptr = reinterpret_cast<const void*>(c.offset);
886 // TODO(gman): Do manual validation.
887 if (!ptr) {
888 return parse_error::kParseOutOfBounds;
889 }
890 if (!ValidateGLenumVertexAttribType(type) || 889 if (!ValidateGLenumVertexAttribType(type) ||
891 !ValidateGLenumVertexAttribSize(size)) { 890 !ValidateGLenumVertexAttribSize(size)) {
892 SetGLError(GL_INVALID_VALUE); 891 SetGLError(GL_INVALID_VALUE);
893 return parse_error::kParseNoError; 892 return parse_error::kParseNoError;
894 } 893 }
895 glVertexAttribPointer(indx, size, type, normalized, stride, ptr); 894 glVertexAttribPointer(indx, size, type, normalized, stride, ptr);
896 } else { 895 } else {
897 SetGLError(GL_INVALID_VALUE); 896 SetGLError(GL_INVALID_VALUE);
898 } 897 }
899 return parse_error::kParseNoError; 898 return parse_error::kParseNoError;
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
1233 } 1232 }
1234 1233
1235 // Include the auto-generated part of this file. We split this because it means 1234 // Include the auto-generated part of this file. We split this because it means
1236 // we can easily edit the non-auto generated parts right here in this file 1235 // we can easily edit the non-auto generated parts right here in this file
1237 // instead of having to edit some template or the code generator. 1236 // instead of having to edit some template or the code generator.
1238 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 1237 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
1239 1238
1240 } // namespace gles2 1239 } // namespace gles2
1241 } // namespace gpu 1240 } // namespace gpu
1242 1241
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698