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

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

Issue 1813163003: Fix PRIMITIVE_RESTART_FIXED_INDEX handling in command buffer and WebGL 2.0. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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
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 <limits.h> 7 #include <limits.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <stdio.h> 10 #include <stdio.h>
(...skipping 8264 matching lines...) Expand 10 before | Expand all | Expand 10 after
8275 8275
8276 if (count == 0 || primcount == 0) { 8276 if (count == 0 || primcount == 0) {
8277 return error::kNoError; 8277 return error::kNoError;
8278 } 8278 }
8279 8279
8280 GLuint max_vertex_accessed; 8280 GLuint max_vertex_accessed;
8281 Buffer* element_array_buffer = 8281 Buffer* element_array_buffer =
8282 state_.vertex_attrib_manager->element_array_buffer(); 8282 state_.vertex_attrib_manager->element_array_buffer();
8283 8283
8284 if (!element_array_buffer->GetMaxValueForRange( 8284 if (!element_array_buffer->GetMaxValueForRange(
8285 offset, count, type, &max_vertex_accessed)) { 8285 offset, count, type,
8286 state_.GetEnabled(GL_PRIMITIVE_RESTART_FIXED_INDEX),
piman 2016/03/19 00:56:11 nit: state_.enable_flags.primitive_restart_fixed_i
Ken Russell (switch to Gerrit) 2016/03/19 04:06:53 Done here and below.
8287 &max_vertex_accessed)) {
8286 LOCAL_SET_GL_ERROR( 8288 LOCAL_SET_GL_ERROR(
8287 GL_INVALID_OPERATION, function_name, "range out of bounds for buffer"); 8289 GL_INVALID_OPERATION, function_name, "range out of bounds for buffer");
8288 return error::kNoError; 8290 return error::kNoError;
8289 } 8291 }
8290 8292
8291 if (IsDrawValid(function_name, max_vertex_accessed, instanced, primcount)) { 8293 if (IsDrawValid(function_name, max_vertex_accessed, instanced, primcount)) {
8292 if (!ClearUnclearedTextures()) { 8294 if (!ClearUnclearedTextures()) {
8293 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, function_name, "out of memory"); 8295 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, function_name, "out of memory");
8294 return error::kNoError; 8296 return error::kNoError;
8295 } 8297 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
8373 GLuint GLES2DecoderImpl::DoGetMaxValueInBufferCHROMIUM( 8375 GLuint GLES2DecoderImpl::DoGetMaxValueInBufferCHROMIUM(
8374 GLuint buffer_id, GLsizei count, GLenum type, GLuint offset) { 8376 GLuint buffer_id, GLsizei count, GLenum type, GLuint offset) {
8375 GLuint max_vertex_accessed = 0; 8377 GLuint max_vertex_accessed = 0;
8376 Buffer* buffer = GetBuffer(buffer_id); 8378 Buffer* buffer = GetBuffer(buffer_id);
8377 if (!buffer) { 8379 if (!buffer) {
8378 // TODO(gman): Should this be a GL error or a command buffer error? 8380 // TODO(gman): Should this be a GL error or a command buffer error?
8379 LOCAL_SET_GL_ERROR( 8381 LOCAL_SET_GL_ERROR(
8380 GL_INVALID_VALUE, "GetMaxValueInBufferCHROMIUM", "unknown buffer"); 8382 GL_INVALID_VALUE, "GetMaxValueInBufferCHROMIUM", "unknown buffer");
8381 } else { 8383 } else {
8382 if (!buffer->GetMaxValueForRange( 8384 if (!buffer->GetMaxValueForRange(
8383 offset, count, type, &max_vertex_accessed)) { 8385 offset, count, type,
8386 state_.GetEnabled(GL_PRIMITIVE_RESTART_FIXED_INDEX),
piman 2016/03/19 00:56:11 This is used by the client side, for client-side b
Ken Russell (switch to Gerrit) 2016/03/19 04:06:53 Added a comment about how this value is used and w
8387 &max_vertex_accessed)) {
8384 // TODO(gman): Should this be a GL error or a command buffer error? 8388 // TODO(gman): Should this be a GL error or a command buffer error?
8385 LOCAL_SET_GL_ERROR( 8389 LOCAL_SET_GL_ERROR(
8386 GL_INVALID_OPERATION, 8390 GL_INVALID_OPERATION,
8387 "GetMaxValueInBufferCHROMIUM", "range out of bounds for buffer"); 8391 "GetMaxValueInBufferCHROMIUM", "range out of bounds for buffer");
8388 } 8392 }
8389 } 8393 }
8390 return max_vertex_accessed; 8394 return max_vertex_accessed;
8391 } 8395 }
8392 8396
8393 void GLES2DecoderImpl::DoShaderSource( 8397 void GLES2DecoderImpl::DoShaderSource(
(...skipping 7857 matching lines...) Expand 10 before | Expand all | Expand 10 after
16251 } 16255 }
16252 16256
16253 // Include the auto-generated part of this file. We split this because it means 16257 // Include the auto-generated part of this file. We split this because it means
16254 // we can easily edit the non-auto generated parts right here in this file 16258 // we can easily edit the non-auto generated parts right here in this file
16255 // instead of having to edit some template or the code generator. 16259 // instead of having to edit some template or the code generator.
16256 #include "base/macros.h" 16260 #include "base/macros.h"
16257 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 16261 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
16258 16262
16259 } // namespace gles2 16263 } // namespace gles2
16260 } // namespace gpu 16264 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698