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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder_autogen.h

Issue 1949303003: Improve indexed gl state related GL commands. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@tex
Patch Set: fix a DCHECK failure Created 4 years, 7 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 // This file is auto-generated from 5 // This file is auto-generated from
6 // gpu/command_buffer/build_gles2_cmd_buffer.py 6 // gpu/command_buffer/build_gles2_cmd_buffer.py
7 // It's formatted by clang-format using chromium coding style: 7 // It's formatted by clang-format using chromium coding style:
8 // clang-format -i -style=chromium filename 8 // clang-format -i -style=chromium filename
9 // DO NOT EDIT! 9 // DO NOT EDIT!
10 10
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 uint32_t immediate_data_size, 52 uint32_t immediate_data_size,
53 const void* cmd_data) { 53 const void* cmd_data) {
54 if (!unsafe_es3_apis_enabled()) 54 if (!unsafe_es3_apis_enabled())
55 return error::kUnknownCommand; 55 return error::kUnknownCommand;
56 const gles2::cmds::BindBufferBase& c = 56 const gles2::cmds::BindBufferBase& c =
57 *static_cast<const gles2::cmds::BindBufferBase*>(cmd_data); 57 *static_cast<const gles2::cmds::BindBufferBase*>(cmd_data);
58 (void)c; 58 (void)c;
59 GLenum target = static_cast<GLenum>(c.target); 59 GLenum target = static_cast<GLenum>(c.target);
60 GLuint index = static_cast<GLuint>(c.index); 60 GLuint index = static_cast<GLuint>(c.index);
61 GLuint buffer = c.buffer; 61 GLuint buffer = c.buffer;
62 if (!validators_->indexed_buffer_target.IsValid(target)) {
63 LOCAL_SET_GL_ERROR_INVALID_ENUM("glBindBufferBase", target, "target");
64 return error::kNoError;
65 }
62 DoBindBufferBase(target, index, buffer); 66 DoBindBufferBase(target, index, buffer);
63 return error::kNoError; 67 return error::kNoError;
64 } 68 }
65 69
66 error::Error GLES2DecoderImpl::HandleBindBufferRange( 70 error::Error GLES2DecoderImpl::HandleBindBufferRange(
67 uint32_t immediate_data_size, 71 uint32_t immediate_data_size,
68 const void* cmd_data) { 72 const void* cmd_data) {
69 if (!unsafe_es3_apis_enabled()) 73 if (!unsafe_es3_apis_enabled())
70 return error::kUnknownCommand; 74 return error::kUnknownCommand;
71 const gles2::cmds::BindBufferRange& c = 75 const gles2::cmds::BindBufferRange& c =
72 *static_cast<const gles2::cmds::BindBufferRange*>(cmd_data); 76 *static_cast<const gles2::cmds::BindBufferRange*>(cmd_data);
73 (void)c; 77 (void)c;
74 GLenum target = static_cast<GLenum>(c.target); 78 GLenum target = static_cast<GLenum>(c.target);
75 GLuint index = static_cast<GLuint>(c.index); 79 GLuint index = static_cast<GLuint>(c.index);
76 GLuint buffer = c.buffer; 80 GLuint buffer = c.buffer;
77 GLintptr offset = static_cast<GLintptr>(c.offset); 81 GLintptr offset = static_cast<GLintptr>(c.offset);
78 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); 82 GLsizeiptr size = static_cast<GLsizeiptr>(c.size);
83 if (!validators_->indexed_buffer_target.IsValid(target)) {
84 LOCAL_SET_GL_ERROR_INVALID_ENUM("glBindBufferRange", target, "target");
85 return error::kNoError;
86 }
79 DoBindBufferRange(target, index, buffer, offset, size); 87 DoBindBufferRange(target, index, buffer, offset, size);
80 return error::kNoError; 88 return error::kNoError;
81 } 89 }
82 90
83 error::Error GLES2DecoderImpl::HandleBindFramebuffer( 91 error::Error GLES2DecoderImpl::HandleBindFramebuffer(
84 uint32_t immediate_data_size, 92 uint32_t immediate_data_size,
85 const void* cmd_data) { 93 const void* cmd_data) {
86 const gles2::cmds::BindFramebuffer& c = 94 const gles2::cmds::BindFramebuffer& c =
87 *static_cast<const gles2::cmds::BindFramebuffer*>(cmd_data); 95 *static_cast<const gles2::cmds::BindFramebuffer*>(cmd_data);
88 (void)c; 96 (void)c;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 error::Error GLES2DecoderImpl::HandleBindTransformFeedback( 151 error::Error GLES2DecoderImpl::HandleBindTransformFeedback(
144 uint32_t immediate_data_size, 152 uint32_t immediate_data_size,
145 const void* cmd_data) { 153 const void* cmd_data) {
146 if (!unsafe_es3_apis_enabled()) 154 if (!unsafe_es3_apis_enabled())
147 return error::kUnknownCommand; 155 return error::kUnknownCommand;
148 const gles2::cmds::BindTransformFeedback& c = 156 const gles2::cmds::BindTransformFeedback& c =
149 *static_cast<const gles2::cmds::BindTransformFeedback*>(cmd_data); 157 *static_cast<const gles2::cmds::BindTransformFeedback*>(cmd_data);
150 (void)c; 158 (void)c;
151 GLenum target = static_cast<GLenum>(c.target); 159 GLenum target = static_cast<GLenum>(c.target);
152 GLuint transformfeedback = c.transformfeedback; 160 GLuint transformfeedback = c.transformfeedback;
161 if (!validators_->transform_feedback_bind_target.IsValid(target)) {
162 LOCAL_SET_GL_ERROR_INVALID_ENUM("glBindTransformFeedback", target,
163 "target");
164 return error::kNoError;
165 }
153 DoBindTransformFeedback(target, transformfeedback); 166 DoBindTransformFeedback(target, transformfeedback);
154 return error::kNoError; 167 return error::kNoError;
155 } 168 }
156 169
157 error::Error GLES2DecoderImpl::HandleBlendColor(uint32_t immediate_data_size, 170 error::Error GLES2DecoderImpl::HandleBlendColor(uint32_t immediate_data_size,
158 const void* cmd_data) { 171 const void* cmd_data) {
159 const gles2::cmds::BlendColor& c = 172 const gles2::cmds::BlendColor& c =
160 *static_cast<const gles2::cmds::BlendColor*>(cmd_data); 173 *static_cast<const gles2::cmds::BlendColor*>(cmd_data);
161 (void)c; 174 (void)c;
162 GLclampf red = static_cast<GLclampf>(c.red); 175 GLclampf red = static_cast<GLclampf>(c.red);
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 const void* cmd_data) { 366 const void* cmd_data) {
354 if (!unsafe_es3_apis_enabled()) 367 if (!unsafe_es3_apis_enabled())
355 return error::kUnknownCommand; 368 return error::kUnknownCommand;
356 const gles2::cmds::ClearBufferfi& c = 369 const gles2::cmds::ClearBufferfi& c =
357 *static_cast<const gles2::cmds::ClearBufferfi*>(cmd_data); 370 *static_cast<const gles2::cmds::ClearBufferfi*>(cmd_data);
358 (void)c; 371 (void)c;
359 GLenum buffer = static_cast<GLenum>(c.buffer); 372 GLenum buffer = static_cast<GLenum>(c.buffer);
360 GLint drawbuffers = static_cast<GLint>(c.drawbuffers); 373 GLint drawbuffers = static_cast<GLint>(c.drawbuffers);
361 GLfloat depth = static_cast<GLfloat>(c.depth); 374 GLfloat depth = static_cast<GLfloat>(c.depth);
362 GLint stencil = static_cast<GLint>(c.stencil); 375 GLint stencil = static_cast<GLint>(c.stencil);
376 if (!validators_->bufferfi.IsValid(buffer)) {
377 LOCAL_SET_GL_ERROR_INVALID_ENUM("glClearBufferfi", buffer, "buffer");
378 return error::kNoError;
379 }
363 DoClearBufferfi(buffer, drawbuffers, depth, stencil); 380 DoClearBufferfi(buffer, drawbuffers, depth, stencil);
364 return error::kNoError; 381 return error::kNoError;
365 } 382 }
366 383
367 error::Error GLES2DecoderImpl::HandleClearBufferfvImmediate( 384 error::Error GLES2DecoderImpl::HandleClearBufferfvImmediate(
368 uint32_t immediate_data_size, 385 uint32_t immediate_data_size,
369 const void* cmd_data) { 386 const void* cmd_data) {
370 if (!unsafe_es3_apis_enabled()) 387 if (!unsafe_es3_apis_enabled())
371 return error::kUnknownCommand; 388 return error::kUnknownCommand;
372 const gles2::cmds::ClearBufferfvImmediate& c = 389 const gles2::cmds::ClearBufferfvImmediate& c =
373 *static_cast<const gles2::cmds::ClearBufferfvImmediate*>(cmd_data); 390 *static_cast<const gles2::cmds::ClearBufferfvImmediate*>(cmd_data);
374 (void)c; 391 (void)c;
375 GLenum buffer = static_cast<GLenum>(c.buffer); 392 GLenum buffer = static_cast<GLenum>(c.buffer);
376 GLint drawbuffers = static_cast<GLint>(c.drawbuffers); 393 GLint drawbuffers = static_cast<GLint>(c.drawbuffers);
377 uint32_t data_size; 394 uint32_t data_size;
378 if (!ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) { 395 if (!ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) {
379 return error::kOutOfBounds; 396 return error::kOutOfBounds;
380 } 397 }
381 if (data_size > immediate_data_size) { 398 if (data_size > immediate_data_size) {
382 return error::kOutOfBounds; 399 return error::kOutOfBounds;
383 } 400 }
384 const GLfloat* value = 401 const GLfloat* value =
385 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 402 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size);
403 if (!validators_->bufferfv.IsValid(buffer)) {
404 LOCAL_SET_GL_ERROR_INVALID_ENUM("glClearBufferfv", buffer, "buffer");
405 return error::kNoError;
406 }
386 if (value == NULL) { 407 if (value == NULL) {
387 return error::kOutOfBounds; 408 return error::kOutOfBounds;
388 } 409 }
389 DoClearBufferfv(buffer, drawbuffers, value); 410 DoClearBufferfv(buffer, drawbuffers, value);
390 return error::kNoError; 411 return error::kNoError;
391 } 412 }
392 413
393 error::Error GLES2DecoderImpl::HandleClearBufferivImmediate( 414 error::Error GLES2DecoderImpl::HandleClearBufferivImmediate(
394 uint32_t immediate_data_size, 415 uint32_t immediate_data_size,
395 const void* cmd_data) { 416 const void* cmd_data) {
396 if (!unsafe_es3_apis_enabled()) 417 if (!unsafe_es3_apis_enabled())
397 return error::kUnknownCommand; 418 return error::kUnknownCommand;
398 const gles2::cmds::ClearBufferivImmediate& c = 419 const gles2::cmds::ClearBufferivImmediate& c =
399 *static_cast<const gles2::cmds::ClearBufferivImmediate*>(cmd_data); 420 *static_cast<const gles2::cmds::ClearBufferivImmediate*>(cmd_data);
400 (void)c; 421 (void)c;
401 GLenum buffer = static_cast<GLenum>(c.buffer); 422 GLenum buffer = static_cast<GLenum>(c.buffer);
402 GLint drawbuffers = static_cast<GLint>(c.drawbuffers); 423 GLint drawbuffers = static_cast<GLint>(c.drawbuffers);
403 uint32_t data_size; 424 uint32_t data_size;
404 if (!ComputeDataSize(1, sizeof(GLint), 4, &data_size)) { 425 if (!ComputeDataSize(1, sizeof(GLint), 4, &data_size)) {
405 return error::kOutOfBounds; 426 return error::kOutOfBounds;
406 } 427 }
407 if (data_size > immediate_data_size) { 428 if (data_size > immediate_data_size) {
408 return error::kOutOfBounds; 429 return error::kOutOfBounds;
409 } 430 }
410 const GLint* value = 431 const GLint* value =
411 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); 432 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size);
433 if (!validators_->bufferiv.IsValid(buffer)) {
434 LOCAL_SET_GL_ERROR_INVALID_ENUM("glClearBufferiv", buffer, "buffer");
435 return error::kNoError;
436 }
412 if (value == NULL) { 437 if (value == NULL) {
413 return error::kOutOfBounds; 438 return error::kOutOfBounds;
414 } 439 }
415 DoClearBufferiv(buffer, drawbuffers, value); 440 DoClearBufferiv(buffer, drawbuffers, value);
416 return error::kNoError; 441 return error::kNoError;
417 } 442 }
418 443
419 error::Error GLES2DecoderImpl::HandleClearBufferuivImmediate( 444 error::Error GLES2DecoderImpl::HandleClearBufferuivImmediate(
420 uint32_t immediate_data_size, 445 uint32_t immediate_data_size,
421 const void* cmd_data) { 446 const void* cmd_data) {
422 if (!unsafe_es3_apis_enabled()) 447 if (!unsafe_es3_apis_enabled())
423 return error::kUnknownCommand; 448 return error::kUnknownCommand;
424 const gles2::cmds::ClearBufferuivImmediate& c = 449 const gles2::cmds::ClearBufferuivImmediate& c =
425 *static_cast<const gles2::cmds::ClearBufferuivImmediate*>(cmd_data); 450 *static_cast<const gles2::cmds::ClearBufferuivImmediate*>(cmd_data);
426 (void)c; 451 (void)c;
427 GLenum buffer = static_cast<GLenum>(c.buffer); 452 GLenum buffer = static_cast<GLenum>(c.buffer);
428 GLint drawbuffers = static_cast<GLint>(c.drawbuffers); 453 GLint drawbuffers = static_cast<GLint>(c.drawbuffers);
429 uint32_t data_size; 454 uint32_t data_size;
430 if (!ComputeDataSize(1, sizeof(GLuint), 4, &data_size)) { 455 if (!ComputeDataSize(1, sizeof(GLuint), 4, &data_size)) {
431 return error::kOutOfBounds; 456 return error::kOutOfBounds;
432 } 457 }
433 if (data_size > immediate_data_size) { 458 if (data_size > immediate_data_size) {
434 return error::kOutOfBounds; 459 return error::kOutOfBounds;
435 } 460 }
436 const GLuint* value = 461 const GLuint* value =
437 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 462 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size);
463 if (!validators_->bufferuiv.IsValid(buffer)) {
464 LOCAL_SET_GL_ERROR_INVALID_ENUM("glClearBufferuiv", buffer, "buffer");
465 return error::kNoError;
466 }
438 if (value == NULL) { 467 if (value == NULL) {
439 return error::kOutOfBounds; 468 return error::kOutOfBounds;
440 } 469 }
441 DoClearBufferuiv(buffer, drawbuffers, value); 470 DoClearBufferuiv(buffer, drawbuffers, value);
442 return error::kNoError; 471 return error::kNoError;
443 } 472 }
444 473
445 error::Error GLES2DecoderImpl::HandleClearColor(uint32_t immediate_data_size, 474 error::Error GLES2DecoderImpl::HandleClearColor(uint32_t immediate_data_size,
446 const void* cmd_data) { 475 const void* cmd_data) {
447 const gles2::cmds::ClearColor& c = 476 const gles2::cmds::ClearColor& c =
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 GLint yoffset = static_cast<GLint>(c.yoffset); 611 GLint yoffset = static_cast<GLint>(c.yoffset);
583 GLint zoffset = static_cast<GLint>(c.zoffset); 612 GLint zoffset = static_cast<GLint>(c.zoffset);
584 GLsizei width = static_cast<GLsizei>(c.width); 613 GLsizei width = static_cast<GLsizei>(c.width);
585 GLsizei height = static_cast<GLsizei>(c.height); 614 GLsizei height = static_cast<GLsizei>(c.height);
586 GLsizei depth = static_cast<GLsizei>(c.depth); 615 GLsizei depth = static_cast<GLsizei>(c.depth);
587 GLenum format = static_cast<GLenum>(c.format); 616 GLenum format = static_cast<GLenum>(c.format);
588 GLsizei imageSize = static_cast<GLsizei>(c.imageSize); 617 GLsizei imageSize = static_cast<GLsizei>(c.imageSize);
589 uint32_t data_size = imageSize; 618 uint32_t data_size = imageSize;
590 const void* data = GetSharedMemoryAs<const void*>( 619 const void* data = GetSharedMemoryAs<const void*>(
591 c.data_shm_id, c.data_shm_offset, data_size); 620 c.data_shm_id, c.data_shm_offset, data_size);
621 if (!validators_->texture_3_d_target.IsValid(target)) {
622 LOCAL_SET_GL_ERROR_INVALID_ENUM("glCompressedTexSubImage3D", target,
623 "target");
624 return error::kNoError;
625 }
626 if (!validators_->compressed_texture_format.IsValid(format)) {
627 LOCAL_SET_GL_ERROR_INVALID_ENUM("glCompressedTexSubImage3D", format,
628 "format");
629 return error::kNoError;
630 }
592 if (data == NULL) { 631 if (data == NULL) {
593 return error::kOutOfBounds; 632 return error::kOutOfBounds;
594 } 633 }
595 DoCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, 634 DoCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width,
596 height, depth, format, imageSize, data); 635 height, depth, format, imageSize, data);
597 return error::kNoError; 636 return error::kNoError;
598 } 637 }
599 638
600 error::Error GLES2DecoderImpl::HandleCopyBufferSubData( 639 error::Error GLES2DecoderImpl::HandleCopyBufferSubData(
601 uint32_t immediate_data_size, 640 uint32_t immediate_data_size,
602 const void* cmd_data) { 641 const void* cmd_data) {
603 if (!unsafe_es3_apis_enabled()) 642 if (!unsafe_es3_apis_enabled())
604 return error::kUnknownCommand; 643 return error::kUnknownCommand;
605 const gles2::cmds::CopyBufferSubData& c = 644 const gles2::cmds::CopyBufferSubData& c =
606 *static_cast<const gles2::cmds::CopyBufferSubData*>(cmd_data); 645 *static_cast<const gles2::cmds::CopyBufferSubData*>(cmd_data);
607 (void)c; 646 (void)c;
608 GLenum readtarget = static_cast<GLenum>(c.readtarget); 647 GLenum readtarget = static_cast<GLenum>(c.readtarget);
609 GLenum writetarget = static_cast<GLenum>(c.writetarget); 648 GLenum writetarget = static_cast<GLenum>(c.writetarget);
610 GLintptr readoffset = static_cast<GLintptr>(c.readoffset); 649 GLintptr readoffset = static_cast<GLintptr>(c.readoffset);
611 GLintptr writeoffset = static_cast<GLintptr>(c.writeoffset); 650 GLintptr writeoffset = static_cast<GLintptr>(c.writeoffset);
612 GLsizeiptr size = static_cast<GLsizeiptr>(c.size); 651 GLsizeiptr size = static_cast<GLsizeiptr>(c.size);
652 if (!validators_->buffer_target.IsValid(readtarget)) {
653 LOCAL_SET_GL_ERROR_INVALID_ENUM("glCopyBufferSubData", readtarget,
654 "readtarget");
655 return error::kNoError;
656 }
657 if (!validators_->buffer_target.IsValid(writetarget)) {
658 LOCAL_SET_GL_ERROR_INVALID_ENUM("glCopyBufferSubData", writetarget,
659 "writetarget");
660 return error::kNoError;
661 }
613 glCopyBufferSubData(readtarget, writetarget, readoffset, writeoffset, size); 662 glCopyBufferSubData(readtarget, writetarget, readoffset, writeoffset, size);
614 return error::kNoError; 663 return error::kNoError;
615 } 664 }
616 665
617 error::Error GLES2DecoderImpl::HandleCopyTexImage2D( 666 error::Error GLES2DecoderImpl::HandleCopyTexImage2D(
618 uint32_t immediate_data_size, 667 uint32_t immediate_data_size,
619 const void* cmd_data) { 668 const void* cmd_data) {
620 const gles2::cmds::CopyTexImage2D& c = 669 const gles2::cmds::CopyTexImage2D& c =
621 *static_cast<const gles2::cmds::CopyTexImage2D*>(cmd_data); 670 *static_cast<const gles2::cmds::CopyTexImage2D*>(cmd_data);
622 (void)c; 671 (void)c;
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 return error; 750 return error;
702 GLenum target = static_cast<GLenum>(c.target); 751 GLenum target = static_cast<GLenum>(c.target);
703 GLint level = static_cast<GLint>(c.level); 752 GLint level = static_cast<GLint>(c.level);
704 GLint xoffset = static_cast<GLint>(c.xoffset); 753 GLint xoffset = static_cast<GLint>(c.xoffset);
705 GLint yoffset = static_cast<GLint>(c.yoffset); 754 GLint yoffset = static_cast<GLint>(c.yoffset);
706 GLint zoffset = static_cast<GLint>(c.zoffset); 755 GLint zoffset = static_cast<GLint>(c.zoffset);
707 GLint x = static_cast<GLint>(c.x); 756 GLint x = static_cast<GLint>(c.x);
708 GLint y = static_cast<GLint>(c.y); 757 GLint y = static_cast<GLint>(c.y);
709 GLsizei width = static_cast<GLsizei>(c.width); 758 GLsizei width = static_cast<GLsizei>(c.width);
710 GLsizei height = static_cast<GLsizei>(c.height); 759 GLsizei height = static_cast<GLsizei>(c.height);
760 if (!validators_->texture_3_d_target.IsValid(target)) {
761 LOCAL_SET_GL_ERROR_INVALID_ENUM("glCopyTexSubImage3D", target, "target");
762 return error::kNoError;
763 }
711 glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, 764 glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width,
712 height); 765 height);
713 return error::kNoError; 766 return error::kNoError;
714 } 767 }
715 768
716 error::Error GLES2DecoderImpl::HandleCreateProgram(uint32_t immediate_data_size, 769 error::Error GLES2DecoderImpl::HandleCreateProgram(uint32_t immediate_data_size,
717 const void* cmd_data) { 770 const void* cmd_data) {
718 const gles2::cmds::CreateProgram& c = 771 const gles2::cmds::CreateProgram& c =
719 *static_cast<const gles2::cmds::CreateProgram*>(cmd_data); 772 *static_cast<const gles2::cmds::CreateProgram*>(cmd_data);
720 (void)c; 773 (void)c;
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 if (!unsafe_es3_apis_enabled()) 1173 if (!unsafe_es3_apis_enabled())
1121 return error::kUnknownCommand; 1174 return error::kUnknownCommand;
1122 const gles2::cmds::FramebufferTextureLayer& c = 1175 const gles2::cmds::FramebufferTextureLayer& c =
1123 *static_cast<const gles2::cmds::FramebufferTextureLayer*>(cmd_data); 1176 *static_cast<const gles2::cmds::FramebufferTextureLayer*>(cmd_data);
1124 (void)c; 1177 (void)c;
1125 GLenum target = static_cast<GLenum>(c.target); 1178 GLenum target = static_cast<GLenum>(c.target);
1126 GLenum attachment = static_cast<GLenum>(c.attachment); 1179 GLenum attachment = static_cast<GLenum>(c.attachment);
1127 GLuint texture = c.texture; 1180 GLuint texture = c.texture;
1128 GLint level = static_cast<GLint>(c.level); 1181 GLint level = static_cast<GLint>(c.level);
1129 GLint layer = static_cast<GLint>(c.layer); 1182 GLint layer = static_cast<GLint>(c.layer);
1183 if (!validators_->frame_buffer_target.IsValid(target)) {
1184 LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTextureLayer", target,
1185 "target");
1186 return error::kNoError;
1187 }
1188 if (!validators_->attachment.IsValid(attachment)) {
1189 LOCAL_SET_GL_ERROR_INVALID_ENUM("glFramebufferTextureLayer", attachment,
1190 "attachment");
1191 return error::kNoError;
1192 }
1130 DoFramebufferTextureLayer(target, attachment, texture, level, layer); 1193 DoFramebufferTextureLayer(target, attachment, texture, level, layer);
1131 return error::kNoError; 1194 return error::kNoError;
1132 } 1195 }
1133 1196
1134 error::Error GLES2DecoderImpl::HandleFrontFace(uint32_t immediate_data_size, 1197 error::Error GLES2DecoderImpl::HandleFrontFace(uint32_t immediate_data_size,
1135 const void* cmd_data) { 1198 const void* cmd_data) {
1136 const gles2::cmds::FrontFace& c = 1199 const gles2::cmds::FrontFace& c =
1137 *static_cast<const gles2::cmds::FrontFace*>(cmd_data); 1200 *static_cast<const gles2::cmds::FrontFace*>(cmd_data);
1138 (void)c; 1201 (void)c;
1139 GLenum mode = static_cast<GLenum>(c.mode); 1202 GLenum mode = static_cast<GLenum>(c.mode);
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
1340 *static_cast<const gles2::cmds::GetBufferParameteri64v*>(cmd_data); 1403 *static_cast<const gles2::cmds::GetBufferParameteri64v*>(cmd_data);
1341 (void)c; 1404 (void)c;
1342 GLenum target = static_cast<GLenum>(c.target); 1405 GLenum target = static_cast<GLenum>(c.target);
1343 GLenum pname = static_cast<GLenum>(c.pname); 1406 GLenum pname = static_cast<GLenum>(c.pname);
1344 typedef cmds::GetBufferParameteri64v::Result Result; 1407 typedef cmds::GetBufferParameteri64v::Result Result;
1345 GLsizei num_values = 0; 1408 GLsizei num_values = 0;
1346 GetNumValuesReturnedForGLGet(pname, &num_values); 1409 GetNumValuesReturnedForGLGet(pname, &num_values);
1347 Result* result = GetSharedMemoryAs<Result*>( 1410 Result* result = GetSharedMemoryAs<Result*>(
1348 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1411 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1349 GLint64* params = result ? result->GetData() : NULL; 1412 GLint64* params = result ? result->GetData() : NULL;
1413 if (!validators_->buffer_target.IsValid(target)) {
1414 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetBufferParameteri64v", target,
1415 "target");
1416 return error::kNoError;
1417 }
1418 if (!validators_->buffer_parameter_64.IsValid(pname)) {
1419 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetBufferParameteri64v", pname, "pname");
1420 return error::kNoError;
1421 }
1350 if (params == NULL) { 1422 if (params == NULL) {
1351 return error::kOutOfBounds; 1423 return error::kOutOfBounds;
1352 } 1424 }
1353 // Check that the client initialized the result. 1425 // Check that the client initialized the result.
1354 if (result->size != 0) { 1426 if (result->size != 0) {
1355 return error::kInvalidArguments; 1427 return error::kInvalidArguments;
1356 } 1428 }
1357 DoGetBufferParameteri64v(target, pname, params); 1429 DoGetBufferParameteri64v(target, pname, params);
1358 result->SetNumResults(num_values); 1430 result->SetNumResults(num_values);
1359 return error::kNoError; 1431 return error::kNoError;
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1492 const gles2::cmds::GetInteger64v& c = 1564 const gles2::cmds::GetInteger64v& c =
1493 *static_cast<const gles2::cmds::GetInteger64v*>(cmd_data); 1565 *static_cast<const gles2::cmds::GetInteger64v*>(cmd_data);
1494 (void)c; 1566 (void)c;
1495 GLenum pname = static_cast<GLenum>(c.pname); 1567 GLenum pname = static_cast<GLenum>(c.pname);
1496 typedef cmds::GetInteger64v::Result Result; 1568 typedef cmds::GetInteger64v::Result Result;
1497 GLsizei num_values = 0; 1569 GLsizei num_values = 0;
1498 GetNumValuesReturnedForGLGet(pname, &num_values); 1570 GetNumValuesReturnedForGLGet(pname, &num_values);
1499 Result* result = GetSharedMemoryAs<Result*>( 1571 Result* result = GetSharedMemoryAs<Result*>(
1500 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1572 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1501 GLint64* params = result ? result->GetData() : NULL; 1573 GLint64* params = result ? result->GetData() : NULL;
1574 if (!validators_->g_l_state.IsValid(pname)) {
1575 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetInteger64v", pname, "pname");
1576 return error::kNoError;
1577 }
1502 if (params == NULL) { 1578 if (params == NULL) {
1503 return error::kOutOfBounds; 1579 return error::kOutOfBounds;
1504 } 1580 }
1505 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetInteger64v"); 1581 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetInteger64v");
1506 // Check that the client initialized the result. 1582 // Check that the client initialized the result.
1507 if (result->size != 0) { 1583 if (result->size != 0) {
1508 return error::kInvalidArguments; 1584 return error::kInvalidArguments;
1509 } 1585 }
1510 DoGetInteger64v(pname, params); 1586 DoGetInteger64v(pname, params);
1511 GLenum error = LOCAL_PEEK_GL_ERROR("GetInteger64v"); 1587 GLenum error = LOCAL_PEEK_GL_ERROR("GetInteger64v");
(...skipping 11 matching lines...) Expand all
1523 *static_cast<const gles2::cmds::GetIntegeri_v*>(cmd_data); 1599 *static_cast<const gles2::cmds::GetIntegeri_v*>(cmd_data);
1524 (void)c; 1600 (void)c;
1525 GLenum pname = static_cast<GLenum>(c.pname); 1601 GLenum pname = static_cast<GLenum>(c.pname);
1526 GLuint index = static_cast<GLuint>(c.index); 1602 GLuint index = static_cast<GLuint>(c.index);
1527 typedef cmds::GetIntegeri_v::Result Result; 1603 typedef cmds::GetIntegeri_v::Result Result;
1528 GLsizei num_values = 0; 1604 GLsizei num_values = 0;
1529 GetNumValuesReturnedForGLGet(pname, &num_values); 1605 GetNumValuesReturnedForGLGet(pname, &num_values);
1530 Result* result = GetSharedMemoryAs<Result*>(c.data_shm_id, c.data_shm_offset, 1606 Result* result = GetSharedMemoryAs<Result*>(c.data_shm_id, c.data_shm_offset,
1531 Result::ComputeSize(num_values)); 1607 Result::ComputeSize(num_values));
1532 GLint* data = result ? result->GetData() : NULL; 1608 GLint* data = result ? result->GetData() : NULL;
1609 if (!validators_->indexed_g_l_state.IsValid(pname)) {
1610 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetIntegeri_v", pname, "pname");
1611 return error::kNoError;
1612 }
1533 if (data == NULL) { 1613 if (data == NULL) {
1534 return error::kOutOfBounds; 1614 return error::kOutOfBounds;
1535 } 1615 }
1536 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetIntegeri_v");
1537 // Check that the client initialized the result. 1616 // Check that the client initialized the result.
1538 if (result->size != 0) { 1617 if (result->size != 0) {
1539 return error::kInvalidArguments; 1618 return error::kInvalidArguments;
1540 } 1619 }
1541 glGetIntegeri_v(pname, index, data); 1620 DoGetIntegeri_v(pname, index, data);
1542 GLenum error = LOCAL_PEEK_GL_ERROR("GetIntegeri_v"); 1621 result->SetNumResults(num_values);
1543 if (error == GL_NO_ERROR) {
1544 result->SetNumResults(num_values);
1545 }
1546 return error::kNoError; 1622 return error::kNoError;
1547 } 1623 }
1548
1549 error::Error GLES2DecoderImpl::HandleGetInteger64i_v( 1624 error::Error GLES2DecoderImpl::HandleGetInteger64i_v(
1550 uint32_t immediate_data_size, 1625 uint32_t immediate_data_size,
1551 const void* cmd_data) { 1626 const void* cmd_data) {
1552 if (!unsafe_es3_apis_enabled()) 1627 if (!unsafe_es3_apis_enabled())
1553 return error::kUnknownCommand; 1628 return error::kUnknownCommand;
1554 const gles2::cmds::GetInteger64i_v& c = 1629 const gles2::cmds::GetInteger64i_v& c =
1555 *static_cast<const gles2::cmds::GetInteger64i_v*>(cmd_data); 1630 *static_cast<const gles2::cmds::GetInteger64i_v*>(cmd_data);
1556 (void)c; 1631 (void)c;
1557 GLenum pname = static_cast<GLenum>(c.pname); 1632 GLenum pname = static_cast<GLenum>(c.pname);
1558 GLuint index = static_cast<GLuint>(c.index); 1633 GLuint index = static_cast<GLuint>(c.index);
1559 typedef cmds::GetInteger64i_v::Result Result; 1634 typedef cmds::GetInteger64i_v::Result Result;
1560 GLsizei num_values = 0; 1635 GLsizei num_values = 0;
1561 GetNumValuesReturnedForGLGet(pname, &num_values); 1636 GetNumValuesReturnedForGLGet(pname, &num_values);
1562 Result* result = GetSharedMemoryAs<Result*>(c.data_shm_id, c.data_shm_offset, 1637 Result* result = GetSharedMemoryAs<Result*>(c.data_shm_id, c.data_shm_offset,
1563 Result::ComputeSize(num_values)); 1638 Result::ComputeSize(num_values));
1564 GLint64* data = result ? result->GetData() : NULL; 1639 GLint64* data = result ? result->GetData() : NULL;
1640 if (!validators_->indexed_g_l_state.IsValid(pname)) {
1641 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetInteger64i_v", pname, "pname");
1642 return error::kNoError;
1643 }
1565 if (data == NULL) { 1644 if (data == NULL) {
1566 return error::kOutOfBounds; 1645 return error::kOutOfBounds;
1567 } 1646 }
1568 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetInteger64i_v");
1569 // Check that the client initialized the result. 1647 // Check that the client initialized the result.
1570 if (result->size != 0) { 1648 if (result->size != 0) {
1571 return error::kInvalidArguments; 1649 return error::kInvalidArguments;
1572 } 1650 }
1573 glGetInteger64i_v(pname, index, data); 1651 DoGetInteger64i_v(pname, index, data);
1574 GLenum error = LOCAL_PEEK_GL_ERROR("GetInteger64i_v"); 1652 result->SetNumResults(num_values);
1575 if (error == GL_NO_ERROR) {
1576 result->SetNumResults(num_values);
1577 }
1578 return error::kNoError; 1653 return error::kNoError;
1579 } 1654 }
1580
1581 error::Error GLES2DecoderImpl::HandleGetIntegerv(uint32_t immediate_data_size, 1655 error::Error GLES2DecoderImpl::HandleGetIntegerv(uint32_t immediate_data_size,
1582 const void* cmd_data) { 1656 const void* cmd_data) {
1583 const gles2::cmds::GetIntegerv& c = 1657 const gles2::cmds::GetIntegerv& c =
1584 *static_cast<const gles2::cmds::GetIntegerv*>(cmd_data); 1658 *static_cast<const gles2::cmds::GetIntegerv*>(cmd_data);
1585 (void)c; 1659 (void)c;
1586 GLenum pname = static_cast<GLenum>(c.pname); 1660 GLenum pname = static_cast<GLenum>(c.pname);
1587 typedef cmds::GetIntegerv::Result Result; 1661 typedef cmds::GetIntegerv::Result Result;
1588 GLsizei num_values = 0; 1662 GLsizei num_values = 0;
1589 GetNumValuesReturnedForGLGet(pname, &num_values); 1663 GetNumValuesReturnedForGLGet(pname, &num_values);
1590 Result* result = GetSharedMemoryAs<Result*>( 1664 Result* result = GetSharedMemoryAs<Result*>(
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1692 *static_cast<const gles2::cmds::GetSamplerParameterfv*>(cmd_data); 1766 *static_cast<const gles2::cmds::GetSamplerParameterfv*>(cmd_data);
1693 (void)c; 1767 (void)c;
1694 GLuint sampler = c.sampler; 1768 GLuint sampler = c.sampler;
1695 GLenum pname = static_cast<GLenum>(c.pname); 1769 GLenum pname = static_cast<GLenum>(c.pname);
1696 typedef cmds::GetSamplerParameterfv::Result Result; 1770 typedef cmds::GetSamplerParameterfv::Result Result;
1697 GLsizei num_values = 0; 1771 GLsizei num_values = 0;
1698 GetNumValuesReturnedForGLGet(pname, &num_values); 1772 GetNumValuesReturnedForGLGet(pname, &num_values);
1699 Result* result = GetSharedMemoryAs<Result*>( 1773 Result* result = GetSharedMemoryAs<Result*>(
1700 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1774 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1701 GLfloat* params = result ? result->GetData() : NULL; 1775 GLfloat* params = result ? result->GetData() : NULL;
1776 if (!validators_->sampler_parameter.IsValid(pname)) {
1777 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetSamplerParameterfv", pname, "pname");
1778 return error::kNoError;
1779 }
1702 if (params == NULL) { 1780 if (params == NULL) {
1703 return error::kOutOfBounds; 1781 return error::kOutOfBounds;
1704 } 1782 }
1705 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetSamplerParameterfv"); 1783 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetSamplerParameterfv");
1706 // Check that the client initialized the result. 1784 // Check that the client initialized the result.
1707 if (result->size != 0) { 1785 if (result->size != 0) {
1708 return error::kInvalidArguments; 1786 return error::kInvalidArguments;
1709 } 1787 }
1710 DoGetSamplerParameterfv(sampler, pname, params); 1788 DoGetSamplerParameterfv(sampler, pname, params);
1711 GLenum error = LOCAL_PEEK_GL_ERROR("GetSamplerParameterfv"); 1789 GLenum error = LOCAL_PEEK_GL_ERROR("GetSamplerParameterfv");
(...skipping 12 matching lines...) Expand all
1724 *static_cast<const gles2::cmds::GetSamplerParameteriv*>(cmd_data); 1802 *static_cast<const gles2::cmds::GetSamplerParameteriv*>(cmd_data);
1725 (void)c; 1803 (void)c;
1726 GLuint sampler = c.sampler; 1804 GLuint sampler = c.sampler;
1727 GLenum pname = static_cast<GLenum>(c.pname); 1805 GLenum pname = static_cast<GLenum>(c.pname);
1728 typedef cmds::GetSamplerParameteriv::Result Result; 1806 typedef cmds::GetSamplerParameteriv::Result Result;
1729 GLsizei num_values = 0; 1807 GLsizei num_values = 0;
1730 GetNumValuesReturnedForGLGet(pname, &num_values); 1808 GetNumValuesReturnedForGLGet(pname, &num_values);
1731 Result* result = GetSharedMemoryAs<Result*>( 1809 Result* result = GetSharedMemoryAs<Result*>(
1732 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 1810 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1733 GLint* params = result ? result->GetData() : NULL; 1811 GLint* params = result ? result->GetData() : NULL;
1812 if (!validators_->sampler_parameter.IsValid(pname)) {
1813 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetSamplerParameteriv", pname, "pname");
1814 return error::kNoError;
1815 }
1734 if (params == NULL) { 1816 if (params == NULL) {
1735 return error::kOutOfBounds; 1817 return error::kOutOfBounds;
1736 } 1818 }
1737 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetSamplerParameteriv"); 1819 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetSamplerParameteriv");
1738 // Check that the client initialized the result. 1820 // Check that the client initialized the result.
1739 if (result->size != 0) { 1821 if (result->size != 0) {
1740 return error::kInvalidArguments; 1822 return error::kInvalidArguments;
1741 } 1823 }
1742 DoGetSamplerParameteriv(sampler, pname, params); 1824 DoGetSamplerParameteriv(sampler, pname, params);
1743 GLenum error = LOCAL_PEEK_GL_ERROR("GetSamplerParameteriv"); 1825 GLenum error = LOCAL_PEEK_GL_ERROR("GetSamplerParameteriv");
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1788 *static_cast<const gles2::cmds::GetSynciv*>(cmd_data); 1870 *static_cast<const gles2::cmds::GetSynciv*>(cmd_data);
1789 (void)c; 1871 (void)c;
1790 GLuint sync = static_cast<GLuint>(c.sync); 1872 GLuint sync = static_cast<GLuint>(c.sync);
1791 GLenum pname = static_cast<GLenum>(c.pname); 1873 GLenum pname = static_cast<GLenum>(c.pname);
1792 typedef cmds::GetSynciv::Result Result; 1874 typedef cmds::GetSynciv::Result Result;
1793 GLsizei num_values = 0; 1875 GLsizei num_values = 0;
1794 GetNumValuesReturnedForGLGet(pname, &num_values); 1876 GetNumValuesReturnedForGLGet(pname, &num_values);
1795 Result* result = GetSharedMemoryAs<Result*>( 1877 Result* result = GetSharedMemoryAs<Result*>(
1796 c.values_shm_id, c.values_shm_offset, Result::ComputeSize(num_values)); 1878 c.values_shm_id, c.values_shm_offset, Result::ComputeSize(num_values));
1797 GLint* values = result ? result->GetData() : NULL; 1879 GLint* values = result ? result->GetData() : NULL;
1880 if (!validators_->sync_parameter.IsValid(pname)) {
1881 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetSynciv", pname, "pname");
1882 return error::kNoError;
1883 }
1798 if (values == NULL) { 1884 if (values == NULL) {
1799 return error::kOutOfBounds; 1885 return error::kOutOfBounds;
1800 } 1886 }
1801 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetSynciv"); 1887 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetSynciv");
1802 // Check that the client initialized the result. 1888 // Check that the client initialized the result.
1803 if (result->size != 0) { 1889 if (result->size != 0) {
1804 return error::kInvalidArguments; 1890 return error::kInvalidArguments;
1805 } 1891 }
1806 GLsync service_sync = 0; 1892 GLsync service_sync = 0;
1807 if (!group_->GetSyncServiceId(sync, &service_sync)) { 1893 if (!group_->GetSyncServiceId(sync, &service_sync)) {
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1969 *static_cast<const gles2::cmds::GetVertexAttribIiv*>(cmd_data); 2055 *static_cast<const gles2::cmds::GetVertexAttribIiv*>(cmd_data);
1970 (void)c; 2056 (void)c;
1971 GLuint index = static_cast<GLuint>(c.index); 2057 GLuint index = static_cast<GLuint>(c.index);
1972 GLenum pname = static_cast<GLenum>(c.pname); 2058 GLenum pname = static_cast<GLenum>(c.pname);
1973 typedef cmds::GetVertexAttribIiv::Result Result; 2059 typedef cmds::GetVertexAttribIiv::Result Result;
1974 GLsizei num_values = 0; 2060 GLsizei num_values = 0;
1975 GetNumValuesReturnedForGLGet(pname, &num_values); 2061 GetNumValuesReturnedForGLGet(pname, &num_values);
1976 Result* result = GetSharedMemoryAs<Result*>( 2062 Result* result = GetSharedMemoryAs<Result*>(
1977 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 2063 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
1978 GLint* params = result ? result->GetData() : NULL; 2064 GLint* params = result ? result->GetData() : NULL;
2065 if (!validators_->vertex_attribute.IsValid(pname)) {
2066 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetVertexAttribIiv", pname, "pname");
2067 return error::kNoError;
2068 }
1979 if (params == NULL) { 2069 if (params == NULL) {
1980 return error::kOutOfBounds; 2070 return error::kOutOfBounds;
1981 } 2071 }
1982 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetVertexAttribIiv"); 2072 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetVertexAttribIiv");
1983 // Check that the client initialized the result. 2073 // Check that the client initialized the result.
1984 if (result->size != 0) { 2074 if (result->size != 0) {
1985 return error::kInvalidArguments; 2075 return error::kInvalidArguments;
1986 } 2076 }
1987 DoGetVertexAttribIiv(index, pname, params); 2077 DoGetVertexAttribIiv(index, pname, params);
1988 GLenum error = LOCAL_PEEK_GL_ERROR("GetVertexAttribIiv"); 2078 GLenum error = LOCAL_PEEK_GL_ERROR("GetVertexAttribIiv");
(...skipping 12 matching lines...) Expand all
2001 *static_cast<const gles2::cmds::GetVertexAttribIuiv*>(cmd_data); 2091 *static_cast<const gles2::cmds::GetVertexAttribIuiv*>(cmd_data);
2002 (void)c; 2092 (void)c;
2003 GLuint index = static_cast<GLuint>(c.index); 2093 GLuint index = static_cast<GLuint>(c.index);
2004 GLenum pname = static_cast<GLenum>(c.pname); 2094 GLenum pname = static_cast<GLenum>(c.pname);
2005 typedef cmds::GetVertexAttribIuiv::Result Result; 2095 typedef cmds::GetVertexAttribIuiv::Result Result;
2006 GLsizei num_values = 0; 2096 GLsizei num_values = 0;
2007 GetNumValuesReturnedForGLGet(pname, &num_values); 2097 GetNumValuesReturnedForGLGet(pname, &num_values);
2008 Result* result = GetSharedMemoryAs<Result*>( 2098 Result* result = GetSharedMemoryAs<Result*>(
2009 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values)); 2099 c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
2010 GLuint* params = result ? result->GetData() : NULL; 2100 GLuint* params = result ? result->GetData() : NULL;
2101 if (!validators_->vertex_attribute.IsValid(pname)) {
2102 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGetVertexAttribIuiv", pname, "pname");
2103 return error::kNoError;
2104 }
2011 if (params == NULL) { 2105 if (params == NULL) {
2012 return error::kOutOfBounds; 2106 return error::kOutOfBounds;
2013 } 2107 }
2014 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetVertexAttribIuiv"); 2108 LOCAL_COPY_REAL_GL_ERRORS_TO_WRAPPER("GetVertexAttribIuiv");
2015 // Check that the client initialized the result. 2109 // Check that the client initialized the result.
2016 if (result->size != 0) { 2110 if (result->size != 0) {
2017 return error::kInvalidArguments; 2111 return error::kInvalidArguments;
2018 } 2112 }
2019 DoGetVertexAttribIuiv(index, pname, params); 2113 DoGetVertexAttribIuiv(index, pname, params);
2020 GLenum error = LOCAL_PEEK_GL_ERROR("GetVertexAttribIuiv"); 2114 GLenum error = LOCAL_PEEK_GL_ERROR("GetVertexAttribIuiv");
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
2075 return error::kNoError; 2169 return error::kNoError;
2076 } 2170 }
2077 if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { 2171 if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
2078 return error::kOutOfBounds; 2172 return error::kOutOfBounds;
2079 } 2173 }
2080 if (data_size > immediate_data_size) { 2174 if (data_size > immediate_data_size) {
2081 return error::kOutOfBounds; 2175 return error::kOutOfBounds;
2082 } 2176 }
2083 const GLenum* attachments = 2177 const GLenum* attachments =
2084 GetImmediateDataAs<const GLenum*>(c, data_size, immediate_data_size); 2178 GetImmediateDataAs<const GLenum*>(c, data_size, immediate_data_size);
2179 if (!validators_->frame_buffer_target.IsValid(target)) {
2180 LOCAL_SET_GL_ERROR_INVALID_ENUM("glInvalidateFramebuffer", target,
2181 "target");
2182 return error::kNoError;
2183 }
2085 if (attachments == NULL) { 2184 if (attachments == NULL) {
2086 return error::kOutOfBounds; 2185 return error::kOutOfBounds;
2087 } 2186 }
2088 DoInvalidateFramebuffer(target, count, attachments); 2187 DoInvalidateFramebuffer(target, count, attachments);
2089 return error::kNoError; 2188 return error::kNoError;
2090 } 2189 }
2091 2190
2092 error::Error GLES2DecoderImpl::HandleInvalidateSubFramebufferImmediate( 2191 error::Error GLES2DecoderImpl::HandleInvalidateSubFramebufferImmediate(
2093 uint32_t immediate_data_size, 2192 uint32_t immediate_data_size,
2094 const void* cmd_data) { 2193 const void* cmd_data) {
(...skipping 16 matching lines...) Expand all
2111 } 2210 }
2112 if (data_size > immediate_data_size) { 2211 if (data_size > immediate_data_size) {
2113 return error::kOutOfBounds; 2212 return error::kOutOfBounds;
2114 } 2213 }
2115 const GLenum* attachments = 2214 const GLenum* attachments =
2116 GetImmediateDataAs<const GLenum*>(c, data_size, immediate_data_size); 2215 GetImmediateDataAs<const GLenum*>(c, data_size, immediate_data_size);
2117 GLint x = static_cast<GLint>(c.x); 2216 GLint x = static_cast<GLint>(c.x);
2118 GLint y = static_cast<GLint>(c.y); 2217 GLint y = static_cast<GLint>(c.y);
2119 GLsizei width = static_cast<GLsizei>(c.width); 2218 GLsizei width = static_cast<GLsizei>(c.width);
2120 GLsizei height = static_cast<GLsizei>(c.height); 2219 GLsizei height = static_cast<GLsizei>(c.height);
2220 if (!validators_->frame_buffer_target.IsValid(target)) {
2221 LOCAL_SET_GL_ERROR_INVALID_ENUM("glInvalidateSubFramebuffer", target,
2222 "target");
2223 return error::kNoError;
2224 }
2121 if (attachments == NULL) { 2225 if (attachments == NULL) {
2122 return error::kOutOfBounds; 2226 return error::kOutOfBounds;
2123 } 2227 }
2124 DoInvalidateSubFramebuffer(target, count, attachments, x, y, width, height); 2228 DoInvalidateSubFramebuffer(target, count, attachments, x, y, width, height);
2125 return error::kNoError; 2229 return error::kNoError;
2126 } 2230 }
2127 2231
2128 error::Error GLES2DecoderImpl::HandleIsBuffer(uint32_t immediate_data_size, 2232 error::Error GLES2DecoderImpl::HandleIsBuffer(uint32_t immediate_data_size,
2129 const void* cmd_data) { 2233 const void* cmd_data) {
2130 const gles2::cmds::IsBuffer& c = 2234 const gles2::cmds::IsBuffer& c =
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
2354 } 2458 }
2355 2459
2356 error::Error GLES2DecoderImpl::HandleReadBuffer(uint32_t immediate_data_size, 2460 error::Error GLES2DecoderImpl::HandleReadBuffer(uint32_t immediate_data_size,
2357 const void* cmd_data) { 2461 const void* cmd_data) {
2358 if (!unsafe_es3_apis_enabled()) 2462 if (!unsafe_es3_apis_enabled())
2359 return error::kUnknownCommand; 2463 return error::kUnknownCommand;
2360 const gles2::cmds::ReadBuffer& c = 2464 const gles2::cmds::ReadBuffer& c =
2361 *static_cast<const gles2::cmds::ReadBuffer*>(cmd_data); 2465 *static_cast<const gles2::cmds::ReadBuffer*>(cmd_data);
2362 (void)c; 2466 (void)c;
2363 GLenum src = static_cast<GLenum>(c.src); 2467 GLenum src = static_cast<GLenum>(c.src);
2468 if (!validators_->read_buffer.IsValid(src)) {
2469 LOCAL_SET_GL_ERROR_INVALID_ENUM("glReadBuffer", src, "src");
2470 return error::kNoError;
2471 }
2364 DoReadBuffer(src); 2472 DoReadBuffer(src);
2365 return error::kNoError; 2473 return error::kNoError;
2366 } 2474 }
2367 2475
2368 error::Error GLES2DecoderImpl::HandleReleaseShaderCompiler( 2476 error::Error GLES2DecoderImpl::HandleReleaseShaderCompiler(
2369 uint32_t immediate_data_size, 2477 uint32_t immediate_data_size,
2370 const void* cmd_data) { 2478 const void* cmd_data) {
2371 const gles2::cmds::ReleaseShaderCompiler& c = 2479 const gles2::cmds::ReleaseShaderCompiler& c =
2372 *static_cast<const gles2::cmds::ReleaseShaderCompiler*>(cmd_data); 2480 *static_cast<const gles2::cmds::ReleaseShaderCompiler*>(cmd_data);
2373 (void)c; 2481 (void)c;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2434 uint32_t immediate_data_size, 2542 uint32_t immediate_data_size,
2435 const void* cmd_data) { 2543 const void* cmd_data) {
2436 if (!unsafe_es3_apis_enabled()) 2544 if (!unsafe_es3_apis_enabled())
2437 return error::kUnknownCommand; 2545 return error::kUnknownCommand;
2438 const gles2::cmds::SamplerParameterf& c = 2546 const gles2::cmds::SamplerParameterf& c =
2439 *static_cast<const gles2::cmds::SamplerParameterf*>(cmd_data); 2547 *static_cast<const gles2::cmds::SamplerParameterf*>(cmd_data);
2440 (void)c; 2548 (void)c;
2441 GLuint sampler = c.sampler; 2549 GLuint sampler = c.sampler;
2442 GLenum pname = static_cast<GLenum>(c.pname); 2550 GLenum pname = static_cast<GLenum>(c.pname);
2443 GLfloat param = static_cast<GLfloat>(c.param); 2551 GLfloat param = static_cast<GLfloat>(c.param);
2552 if (!validators_->sampler_parameter.IsValid(pname)) {
2553 LOCAL_SET_GL_ERROR_INVALID_ENUM("glSamplerParameterf", pname, "pname");
2554 return error::kNoError;
2555 }
2444 DoSamplerParameterf(sampler, pname, param); 2556 DoSamplerParameterf(sampler, pname, param);
2445 return error::kNoError; 2557 return error::kNoError;
2446 } 2558 }
2447 2559
2448 error::Error GLES2DecoderImpl::HandleSamplerParameterfvImmediate( 2560 error::Error GLES2DecoderImpl::HandleSamplerParameterfvImmediate(
2449 uint32_t immediate_data_size, 2561 uint32_t immediate_data_size,
2450 const void* cmd_data) { 2562 const void* cmd_data) {
2451 if (!unsafe_es3_apis_enabled()) 2563 if (!unsafe_es3_apis_enabled())
2452 return error::kUnknownCommand; 2564 return error::kUnknownCommand;
2453 const gles2::cmds::SamplerParameterfvImmediate& c = 2565 const gles2::cmds::SamplerParameterfvImmediate& c =
2454 *static_cast<const gles2::cmds::SamplerParameterfvImmediate*>(cmd_data); 2566 *static_cast<const gles2::cmds::SamplerParameterfvImmediate*>(cmd_data);
2455 (void)c; 2567 (void)c;
2456 GLuint sampler = c.sampler; 2568 GLuint sampler = c.sampler;
2457 GLenum pname = static_cast<GLenum>(c.pname); 2569 GLenum pname = static_cast<GLenum>(c.pname);
2458 uint32_t data_size; 2570 uint32_t data_size;
2459 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { 2571 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
2460 return error::kOutOfBounds; 2572 return error::kOutOfBounds;
2461 } 2573 }
2462 if (data_size > immediate_data_size) { 2574 if (data_size > immediate_data_size) {
2463 return error::kOutOfBounds; 2575 return error::kOutOfBounds;
2464 } 2576 }
2465 const GLfloat* params = 2577 const GLfloat* params =
2466 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 2578 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size);
2579 if (!validators_->sampler_parameter.IsValid(pname)) {
2580 LOCAL_SET_GL_ERROR_INVALID_ENUM("glSamplerParameterfv", pname, "pname");
2581 return error::kNoError;
2582 }
2467 if (params == NULL) { 2583 if (params == NULL) {
2468 return error::kOutOfBounds; 2584 return error::kOutOfBounds;
2469 } 2585 }
2470 DoSamplerParameterfv(sampler, pname, params); 2586 DoSamplerParameterfv(sampler, pname, params);
2471 return error::kNoError; 2587 return error::kNoError;
2472 } 2588 }
2473 2589
2474 error::Error GLES2DecoderImpl::HandleSamplerParameteri( 2590 error::Error GLES2DecoderImpl::HandleSamplerParameteri(
2475 uint32_t immediate_data_size, 2591 uint32_t immediate_data_size,
2476 const void* cmd_data) { 2592 const void* cmd_data) {
2477 if (!unsafe_es3_apis_enabled()) 2593 if (!unsafe_es3_apis_enabled())
2478 return error::kUnknownCommand; 2594 return error::kUnknownCommand;
2479 const gles2::cmds::SamplerParameteri& c = 2595 const gles2::cmds::SamplerParameteri& c =
2480 *static_cast<const gles2::cmds::SamplerParameteri*>(cmd_data); 2596 *static_cast<const gles2::cmds::SamplerParameteri*>(cmd_data);
2481 (void)c; 2597 (void)c;
2482 GLuint sampler = c.sampler; 2598 GLuint sampler = c.sampler;
2483 GLenum pname = static_cast<GLenum>(c.pname); 2599 GLenum pname = static_cast<GLenum>(c.pname);
2484 GLint param = static_cast<GLint>(c.param); 2600 GLint param = static_cast<GLint>(c.param);
2601 if (!validators_->sampler_parameter.IsValid(pname)) {
2602 LOCAL_SET_GL_ERROR_INVALID_ENUM("glSamplerParameteri", pname, "pname");
2603 return error::kNoError;
2604 }
2485 DoSamplerParameteri(sampler, pname, param); 2605 DoSamplerParameteri(sampler, pname, param);
2486 return error::kNoError; 2606 return error::kNoError;
2487 } 2607 }
2488 2608
2489 error::Error GLES2DecoderImpl::HandleSamplerParameterivImmediate( 2609 error::Error GLES2DecoderImpl::HandleSamplerParameterivImmediate(
2490 uint32_t immediate_data_size, 2610 uint32_t immediate_data_size,
2491 const void* cmd_data) { 2611 const void* cmd_data) {
2492 if (!unsafe_es3_apis_enabled()) 2612 if (!unsafe_es3_apis_enabled())
2493 return error::kUnknownCommand; 2613 return error::kUnknownCommand;
2494 const gles2::cmds::SamplerParameterivImmediate& c = 2614 const gles2::cmds::SamplerParameterivImmediate& c =
2495 *static_cast<const gles2::cmds::SamplerParameterivImmediate*>(cmd_data); 2615 *static_cast<const gles2::cmds::SamplerParameterivImmediate*>(cmd_data);
2496 (void)c; 2616 (void)c;
2497 GLuint sampler = c.sampler; 2617 GLuint sampler = c.sampler;
2498 GLenum pname = static_cast<GLenum>(c.pname); 2618 GLenum pname = static_cast<GLenum>(c.pname);
2499 uint32_t data_size; 2619 uint32_t data_size;
2500 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) { 2620 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) {
2501 return error::kOutOfBounds; 2621 return error::kOutOfBounds;
2502 } 2622 }
2503 if (data_size > immediate_data_size) { 2623 if (data_size > immediate_data_size) {
2504 return error::kOutOfBounds; 2624 return error::kOutOfBounds;
2505 } 2625 }
2506 const GLint* params = 2626 const GLint* params =
2507 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); 2627 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size);
2628 if (!validators_->sampler_parameter.IsValid(pname)) {
2629 LOCAL_SET_GL_ERROR_INVALID_ENUM("glSamplerParameteriv", pname, "pname");
2630 return error::kNoError;
2631 }
2508 if (params == NULL) { 2632 if (params == NULL) {
2509 return error::kOutOfBounds; 2633 return error::kOutOfBounds;
2510 } 2634 }
2511 DoSamplerParameteriv(sampler, pname, params); 2635 DoSamplerParameteriv(sampler, pname, params);
2512 return error::kNoError; 2636 return error::kNoError;
2513 } 2637 }
2514 2638
2515 error::Error GLES2DecoderImpl::HandleScissor(uint32_t immediate_data_size, 2639 error::Error GLES2DecoderImpl::HandleScissor(uint32_t immediate_data_size,
2516 const void* cmd_data) { 2640 const void* cmd_data) {
2517 const gles2::cmds::Scissor& c = 2641 const gles2::cmds::Scissor& c =
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
2884 return error::kUnknownCommand; 3008 return error::kUnknownCommand;
2885 const gles2::cmds::TexStorage3D& c = 3009 const gles2::cmds::TexStorage3D& c =
2886 *static_cast<const gles2::cmds::TexStorage3D*>(cmd_data); 3010 *static_cast<const gles2::cmds::TexStorage3D*>(cmd_data);
2887 (void)c; 3011 (void)c;
2888 GLenum target = static_cast<GLenum>(c.target); 3012 GLenum target = static_cast<GLenum>(c.target);
2889 GLsizei levels = static_cast<GLsizei>(c.levels); 3013 GLsizei levels = static_cast<GLsizei>(c.levels);
2890 GLenum internalFormat = static_cast<GLenum>(c.internalFormat); 3014 GLenum internalFormat = static_cast<GLenum>(c.internalFormat);
2891 GLsizei width = static_cast<GLsizei>(c.width); 3015 GLsizei width = static_cast<GLsizei>(c.width);
2892 GLsizei height = static_cast<GLsizei>(c.height); 3016 GLsizei height = static_cast<GLsizei>(c.height);
2893 GLsizei depth = static_cast<GLsizei>(c.depth); 3017 GLsizei depth = static_cast<GLsizei>(c.depth);
3018 if (!validators_->texture_3_d_target.IsValid(target)) {
3019 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexStorage3D", target, "target");
3020 return error::kNoError;
3021 }
3022 if (!validators_->texture_internal_format_storage.IsValid(internalFormat)) {
3023 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexStorage3D", internalFormat,
3024 "internalFormat");
3025 return error::kNoError;
3026 }
2894 DoTexStorage3D(target, levels, internalFormat, width, height, depth); 3027 DoTexStorage3D(target, levels, internalFormat, width, height, depth);
2895 return error::kNoError; 3028 return error::kNoError;
2896 } 3029 }
2897 3030
2898 error::Error GLES2DecoderImpl::HandleTransformFeedbackVaryingsBucket( 3031 error::Error GLES2DecoderImpl::HandleTransformFeedbackVaryingsBucket(
2899 uint32_t immediate_data_size, 3032 uint32_t immediate_data_size,
2900 const void* cmd_data) { 3033 const void* cmd_data) {
2901 if (!unsafe_es3_apis_enabled()) 3034 if (!unsafe_es3_apis_enabled())
2902 return error::kUnknownCommand; 3035 return error::kUnknownCommand;
2903 const gles2::cmds::TransformFeedbackVaryingsBucket& c = 3036 const gles2::cmds::TransformFeedbackVaryingsBucket& c =
(...skipping 11 matching lines...) Expand all
2915 std::vector<GLint> len; 3048 std::vector<GLint> len;
2916 if (!bucket->GetAsStrings(&count, &strs, &len)) { 3049 if (!bucket->GetAsStrings(&count, &strs, &len)) {
2917 return error::kInvalidArguments; 3050 return error::kInvalidArguments;
2918 } 3051 }
2919 const char** varyings = 3052 const char** varyings =
2920 strs.size() > 0 ? const_cast<const char**>(&strs[0]) : NULL; 3053 strs.size() > 0 ? const_cast<const char**>(&strs[0]) : NULL;
2921 const GLint* length = 3054 const GLint* length =
2922 len.size() > 0 ? const_cast<const GLint*>(&len[0]) : NULL; 3055 len.size() > 0 ? const_cast<const GLint*>(&len[0]) : NULL;
2923 (void)length; 3056 (void)length;
2924 GLenum buffermode = static_cast<GLenum>(c.buffermode); 3057 GLenum buffermode = static_cast<GLenum>(c.buffermode);
3058 if (!validators_->buffer_mode.IsValid(buffermode)) {
3059 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTransformFeedbackVaryings", buffermode,
3060 "buffermode");
3061 return error::kNoError;
3062 }
2925 DoTransformFeedbackVaryings(program, count, varyings, buffermode); 3063 DoTransformFeedbackVaryings(program, count, varyings, buffermode);
2926 return error::kNoError; 3064 return error::kNoError;
2927 } 3065 }
2928 3066
2929 error::Error GLES2DecoderImpl::HandleUniform1f(uint32_t immediate_data_size, 3067 error::Error GLES2DecoderImpl::HandleUniform1f(uint32_t immediate_data_size,
2930 const void* cmd_data) { 3068 const void* cmd_data) {
2931 const gles2::cmds::Uniform1f& c = 3069 const gles2::cmds::Uniform1f& c =
2932 *static_cast<const gles2::cmds::Uniform1f*>(cmd_data); 3070 *static_cast<const gles2::cmds::Uniform1f*>(cmd_data);
2933 (void)c; 3071 (void)c;
2934 GLint location = static_cast<GLint>(c.location); 3072 GLint location = static_cast<GLint>(c.location);
(...skipping 1345 matching lines...) Expand 10 before | Expand all | Expand 10 after
4280 4418
4281 error::Error GLES2DecoderImpl::HandleBeginTransformFeedback( 4419 error::Error GLES2DecoderImpl::HandleBeginTransformFeedback(
4282 uint32_t immediate_data_size, 4420 uint32_t immediate_data_size,
4283 const void* cmd_data) { 4421 const void* cmd_data) {
4284 if (!unsafe_es3_apis_enabled()) 4422 if (!unsafe_es3_apis_enabled())
4285 return error::kUnknownCommand; 4423 return error::kUnknownCommand;
4286 const gles2::cmds::BeginTransformFeedback& c = 4424 const gles2::cmds::BeginTransformFeedback& c =
4287 *static_cast<const gles2::cmds::BeginTransformFeedback*>(cmd_data); 4425 *static_cast<const gles2::cmds::BeginTransformFeedback*>(cmd_data);
4288 (void)c; 4426 (void)c;
4289 GLenum primitivemode = static_cast<GLenum>(c.primitivemode); 4427 GLenum primitivemode = static_cast<GLenum>(c.primitivemode);
4428 if (!validators_->transform_feedback_primitive_mode.IsValid(primitivemode)) {
4429 LOCAL_SET_GL_ERROR_INVALID_ENUM("glBeginTransformFeedback", primitivemode,
4430 "primitivemode");
4431 return error::kNoError;
4432 }
4290 DoBeginTransformFeedback(primitivemode); 4433 DoBeginTransformFeedback(primitivemode);
4291 return error::kNoError; 4434 return error::kNoError;
4292 } 4435 }
4293 4436
4294 error::Error GLES2DecoderImpl::HandleEndTransformFeedback( 4437 error::Error GLES2DecoderImpl::HandleEndTransformFeedback(
4295 uint32_t immediate_data_size, 4438 uint32_t immediate_data_size,
4296 const void* cmd_data) { 4439 const void* cmd_data) {
4297 if (!unsafe_es3_apis_enabled()) 4440 if (!unsafe_es3_apis_enabled())
4298 return error::kUnknownCommand; 4441 return error::kUnknownCommand;
4299 const gles2::cmds::EndTransformFeedback& c = 4442 const gles2::cmds::EndTransformFeedback& c =
(...skipping 808 matching lines...) Expand 10 before | Expand all | Expand 10 after
5108 state_.enable_flags.cached_sample_alpha_to_one_ext = enabled; 5251 state_.enable_flags.cached_sample_alpha_to_one_ext = enabled;
5109 return true; 5252 return true;
5110 } 5253 }
5111 return false; 5254 return false;
5112 default: 5255 default:
5113 NOTREACHED(); 5256 NOTREACHED();
5114 return false; 5257 return false;
5115 } 5258 }
5116 } 5259 }
5117 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ 5260 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698