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

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

Issue 289993002: Remove shm versions of immediate commands from command buffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@functions-with-extension-flag
Patch Set: try to avoid compiler warning on buffer overflow and template specialization linker problem with tw… Created 6 years, 6 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 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 LOCAL_SET_GL_ERROR_INVALID_ENUM("glCullFace", mode, "mode"); 468 LOCAL_SET_GL_ERROR_INVALID_ENUM("glCullFace", mode, "mode");
469 return error::kNoError; 469 return error::kNoError;
470 } 470 }
471 if (state_.cull_mode != mode) { 471 if (state_.cull_mode != mode) {
472 state_.cull_mode = mode; 472 state_.cull_mode = mode;
473 glCullFace(mode); 473 glCullFace(mode);
474 } 474 }
475 return error::kNoError; 475 return error::kNoError;
476 } 476 }
477 477
478 error::Error GLES2DecoderImpl::HandleDeleteBuffers(
479 uint32_t immediate_data_size,
480 const gles2::cmds::DeleteBuffers& c) {
481 GLsizei n = static_cast<GLsizei>(c.n);
482 uint32_t data_size;
483 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
484 return error::kOutOfBounds;
485 }
486 const GLuint* buffers = GetSharedMemoryAs<const GLuint*>(
487 c.buffers_shm_id, c.buffers_shm_offset, data_size);
488 if (buffers == NULL) {
489 return error::kOutOfBounds;
490 }
491 DeleteBuffersHelper(n, buffers);
492 return error::kNoError;
493 }
494
495 error::Error GLES2DecoderImpl::HandleDeleteBuffersImmediate( 478 error::Error GLES2DecoderImpl::HandleDeleteBuffersImmediate(
496 uint32_t immediate_data_size, 479 uint32_t immediate_data_size,
497 const gles2::cmds::DeleteBuffersImmediate& c) { 480 const gles2::cmds::DeleteBuffersImmediate& c) {
498 GLsizei n = static_cast<GLsizei>(c.n); 481 GLsizei n = static_cast<GLsizei>(c.n);
499 uint32_t data_size; 482 uint32_t data_size;
500 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 483 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
501 return error::kOutOfBounds; 484 return error::kOutOfBounds;
502 } 485 }
503 const GLuint* buffers = 486 const GLuint* buffers =
504 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 487 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size);
505 if (buffers == NULL) { 488 if (buffers == NULL) {
506 return error::kOutOfBounds; 489 return error::kOutOfBounds;
507 } 490 }
508 DeleteBuffersHelper(n, buffers); 491 DeleteBuffersHelper(n, buffers);
509 return error::kNoError; 492 return error::kNoError;
510 } 493 }
511 494
512 error::Error GLES2DecoderImpl::HandleDeleteFramebuffers(
513 uint32_t immediate_data_size,
514 const gles2::cmds::DeleteFramebuffers& c) {
515 GLsizei n = static_cast<GLsizei>(c.n);
516 uint32_t data_size;
517 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
518 return error::kOutOfBounds;
519 }
520 const GLuint* framebuffers = GetSharedMemoryAs<const GLuint*>(
521 c.framebuffers_shm_id, c.framebuffers_shm_offset, data_size);
522 if (framebuffers == NULL) {
523 return error::kOutOfBounds;
524 }
525 DeleteFramebuffersHelper(n, framebuffers);
526 return error::kNoError;
527 }
528
529 error::Error GLES2DecoderImpl::HandleDeleteFramebuffersImmediate( 495 error::Error GLES2DecoderImpl::HandleDeleteFramebuffersImmediate(
530 uint32_t immediate_data_size, 496 uint32_t immediate_data_size,
531 const gles2::cmds::DeleteFramebuffersImmediate& c) { 497 const gles2::cmds::DeleteFramebuffersImmediate& c) {
532 GLsizei n = static_cast<GLsizei>(c.n); 498 GLsizei n = static_cast<GLsizei>(c.n);
533 uint32_t data_size; 499 uint32_t data_size;
534 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 500 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
535 return error::kOutOfBounds; 501 return error::kOutOfBounds;
536 } 502 }
537 const GLuint* framebuffers = 503 const GLuint* framebuffers =
538 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 504 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size);
539 if (framebuffers == NULL) { 505 if (framebuffers == NULL) {
540 return error::kOutOfBounds; 506 return error::kOutOfBounds;
541 } 507 }
542 DeleteFramebuffersHelper(n, framebuffers); 508 DeleteFramebuffersHelper(n, framebuffers);
543 return error::kNoError; 509 return error::kNoError;
544 } 510 }
545 511
546 error::Error GLES2DecoderImpl::HandleDeleteRenderbuffers(
547 uint32_t immediate_data_size,
548 const gles2::cmds::DeleteRenderbuffers& c) {
549 GLsizei n = static_cast<GLsizei>(c.n);
550 uint32_t data_size;
551 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
552 return error::kOutOfBounds;
553 }
554 const GLuint* renderbuffers = GetSharedMemoryAs<const GLuint*>(
555 c.renderbuffers_shm_id, c.renderbuffers_shm_offset, data_size);
556 if (renderbuffers == NULL) {
557 return error::kOutOfBounds;
558 }
559 DeleteRenderbuffersHelper(n, renderbuffers);
560 return error::kNoError;
561 }
562
563 error::Error GLES2DecoderImpl::HandleDeleteRenderbuffersImmediate( 512 error::Error GLES2DecoderImpl::HandleDeleteRenderbuffersImmediate(
564 uint32_t immediate_data_size, 513 uint32_t immediate_data_size,
565 const gles2::cmds::DeleteRenderbuffersImmediate& c) { 514 const gles2::cmds::DeleteRenderbuffersImmediate& c) {
566 GLsizei n = static_cast<GLsizei>(c.n); 515 GLsizei n = static_cast<GLsizei>(c.n);
567 uint32_t data_size; 516 uint32_t data_size;
568 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 517 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
569 return error::kOutOfBounds; 518 return error::kOutOfBounds;
570 } 519 }
571 const GLuint* renderbuffers = 520 const GLuint* renderbuffers =
572 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 521 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size);
573 if (renderbuffers == NULL) { 522 if (renderbuffers == NULL) {
574 return error::kOutOfBounds; 523 return error::kOutOfBounds;
575 } 524 }
576 DeleteRenderbuffersHelper(n, renderbuffers); 525 DeleteRenderbuffersHelper(n, renderbuffers);
577 return error::kNoError; 526 return error::kNoError;
578 } 527 }
579 528
580 error::Error GLES2DecoderImpl::HandleDeleteTextures(
581 uint32_t immediate_data_size,
582 const gles2::cmds::DeleteTextures& c) {
583 GLsizei n = static_cast<GLsizei>(c.n);
584 uint32_t data_size;
585 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
586 return error::kOutOfBounds;
587 }
588 const GLuint* textures = GetSharedMemoryAs<const GLuint*>(
589 c.textures_shm_id, c.textures_shm_offset, data_size);
590 if (textures == NULL) {
591 return error::kOutOfBounds;
592 }
593 DeleteTexturesHelper(n, textures);
594 return error::kNoError;
595 }
596
597 error::Error GLES2DecoderImpl::HandleDeleteTexturesImmediate( 529 error::Error GLES2DecoderImpl::HandleDeleteTexturesImmediate(
598 uint32_t immediate_data_size, 530 uint32_t immediate_data_size,
599 const gles2::cmds::DeleteTexturesImmediate& c) { 531 const gles2::cmds::DeleteTexturesImmediate& c) {
600 GLsizei n = static_cast<GLsizei>(c.n); 532 GLsizei n = static_cast<GLsizei>(c.n);
601 uint32_t data_size; 533 uint32_t data_size;
602 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 534 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
603 return error::kOutOfBounds; 535 return error::kOutOfBounds;
604 } 536 }
605 const GLuint* textures = 537 const GLuint* textures =
606 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 538 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size);
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
770 LOCAL_SET_GL_ERROR_INVALID_ENUM("glFrontFace", mode, "mode"); 702 LOCAL_SET_GL_ERROR_INVALID_ENUM("glFrontFace", mode, "mode");
771 return error::kNoError; 703 return error::kNoError;
772 } 704 }
773 if (state_.front_face != mode) { 705 if (state_.front_face != mode) {
774 state_.front_face = mode; 706 state_.front_face = mode;
775 glFrontFace(mode); 707 glFrontFace(mode);
776 } 708 }
777 return error::kNoError; 709 return error::kNoError;
778 } 710 }
779 711
780 error::Error GLES2DecoderImpl::HandleGenBuffers(
781 uint32_t immediate_data_size,
782 const gles2::cmds::GenBuffers& c) {
783 GLsizei n = static_cast<GLsizei>(c.n);
784 uint32_t data_size;
785 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
786 return error::kOutOfBounds;
787 }
788 GLuint* buffers = GetSharedMemoryAs<GLuint*>(
789 c.buffers_shm_id, c.buffers_shm_offset, data_size);
790 if (buffers == NULL) {
791 return error::kOutOfBounds;
792 }
793 if (!GenBuffersHelper(n, buffers)) {
794 return error::kInvalidArguments;
795 }
796 return error::kNoError;
797 }
798
799 error::Error GLES2DecoderImpl::HandleGenBuffersImmediate( 712 error::Error GLES2DecoderImpl::HandleGenBuffersImmediate(
800 uint32_t immediate_data_size, 713 uint32_t immediate_data_size,
801 const gles2::cmds::GenBuffersImmediate& c) { 714 const gles2::cmds::GenBuffersImmediate& c) {
802 GLsizei n = static_cast<GLsizei>(c.n); 715 GLsizei n = static_cast<GLsizei>(c.n);
803 uint32_t data_size; 716 uint32_t data_size;
804 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 717 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
805 return error::kOutOfBounds; 718 return error::kOutOfBounds;
806 } 719 }
807 GLuint* buffers = 720 GLuint* buffers =
808 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 721 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size);
(...skipping 11 matching lines...) Expand all
820 const gles2::cmds::GenerateMipmap& c) { 733 const gles2::cmds::GenerateMipmap& c) {
821 GLenum target = static_cast<GLenum>(c.target); 734 GLenum target = static_cast<GLenum>(c.target);
822 if (!validators_->texture_bind_target.IsValid(target)) { 735 if (!validators_->texture_bind_target.IsValid(target)) {
823 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGenerateMipmap", target, "target"); 736 LOCAL_SET_GL_ERROR_INVALID_ENUM("glGenerateMipmap", target, "target");
824 return error::kNoError; 737 return error::kNoError;
825 } 738 }
826 DoGenerateMipmap(target); 739 DoGenerateMipmap(target);
827 return error::kNoError; 740 return error::kNoError;
828 } 741 }
829 742
830 error::Error GLES2DecoderImpl::HandleGenFramebuffers(
831 uint32_t immediate_data_size,
832 const gles2::cmds::GenFramebuffers& c) {
833 GLsizei n = static_cast<GLsizei>(c.n);
834 uint32_t data_size;
835 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
836 return error::kOutOfBounds;
837 }
838 GLuint* framebuffers = GetSharedMemoryAs<GLuint*>(
839 c.framebuffers_shm_id, c.framebuffers_shm_offset, data_size);
840 if (framebuffers == NULL) {
841 return error::kOutOfBounds;
842 }
843 if (!GenFramebuffersHelper(n, framebuffers)) {
844 return error::kInvalidArguments;
845 }
846 return error::kNoError;
847 }
848
849 error::Error GLES2DecoderImpl::HandleGenFramebuffersImmediate( 743 error::Error GLES2DecoderImpl::HandleGenFramebuffersImmediate(
850 uint32_t immediate_data_size, 744 uint32_t immediate_data_size,
851 const gles2::cmds::GenFramebuffersImmediate& c) { 745 const gles2::cmds::GenFramebuffersImmediate& c) {
852 GLsizei n = static_cast<GLsizei>(c.n); 746 GLsizei n = static_cast<GLsizei>(c.n);
853 uint32_t data_size; 747 uint32_t data_size;
854 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 748 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
855 return error::kOutOfBounds; 749 return error::kOutOfBounds;
856 } 750 }
857 GLuint* framebuffers = 751 GLuint* framebuffers =
858 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 752 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size);
859 if (framebuffers == NULL) { 753 if (framebuffers == NULL) {
860 return error::kOutOfBounds; 754 return error::kOutOfBounds;
861 } 755 }
862 if (!GenFramebuffersHelper(n, framebuffers)) { 756 if (!GenFramebuffersHelper(n, framebuffers)) {
863 return error::kInvalidArguments; 757 return error::kInvalidArguments;
864 } 758 }
865 return error::kNoError; 759 return error::kNoError;
866 } 760 }
867 761
868 error::Error GLES2DecoderImpl::HandleGenRenderbuffers(
869 uint32_t immediate_data_size,
870 const gles2::cmds::GenRenderbuffers& c) {
871 GLsizei n = static_cast<GLsizei>(c.n);
872 uint32_t data_size;
873 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
874 return error::kOutOfBounds;
875 }
876 GLuint* renderbuffers = GetSharedMemoryAs<GLuint*>(
877 c.renderbuffers_shm_id, c.renderbuffers_shm_offset, data_size);
878 if (renderbuffers == NULL) {
879 return error::kOutOfBounds;
880 }
881 if (!GenRenderbuffersHelper(n, renderbuffers)) {
882 return error::kInvalidArguments;
883 }
884 return error::kNoError;
885 }
886
887 error::Error GLES2DecoderImpl::HandleGenRenderbuffersImmediate( 762 error::Error GLES2DecoderImpl::HandleGenRenderbuffersImmediate(
888 uint32_t immediate_data_size, 763 uint32_t immediate_data_size,
889 const gles2::cmds::GenRenderbuffersImmediate& c) { 764 const gles2::cmds::GenRenderbuffersImmediate& c) {
890 GLsizei n = static_cast<GLsizei>(c.n); 765 GLsizei n = static_cast<GLsizei>(c.n);
891 uint32_t data_size; 766 uint32_t data_size;
892 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 767 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
893 return error::kOutOfBounds; 768 return error::kOutOfBounds;
894 } 769 }
895 GLuint* renderbuffers = 770 GLuint* renderbuffers =
896 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 771 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size);
897 if (renderbuffers == NULL) { 772 if (renderbuffers == NULL) {
898 return error::kOutOfBounds; 773 return error::kOutOfBounds;
899 } 774 }
900 if (!GenRenderbuffersHelper(n, renderbuffers)) { 775 if (!GenRenderbuffersHelper(n, renderbuffers)) {
901 return error::kInvalidArguments; 776 return error::kInvalidArguments;
902 } 777 }
903 return error::kNoError; 778 return error::kNoError;
904 } 779 }
905 780
906 error::Error GLES2DecoderImpl::HandleGenTextures(
907 uint32_t immediate_data_size,
908 const gles2::cmds::GenTextures& c) {
909 GLsizei n = static_cast<GLsizei>(c.n);
910 uint32_t data_size;
911 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
912 return error::kOutOfBounds;
913 }
914 GLuint* textures = GetSharedMemoryAs<GLuint*>(
915 c.textures_shm_id, c.textures_shm_offset, data_size);
916 if (textures == NULL) {
917 return error::kOutOfBounds;
918 }
919 if (!GenTexturesHelper(n, textures)) {
920 return error::kInvalidArguments;
921 }
922 return error::kNoError;
923 }
924
925 error::Error GLES2DecoderImpl::HandleGenTexturesImmediate( 781 error::Error GLES2DecoderImpl::HandleGenTexturesImmediate(
926 uint32_t immediate_data_size, 782 uint32_t immediate_data_size,
927 const gles2::cmds::GenTexturesImmediate& c) { 783 const gles2::cmds::GenTexturesImmediate& c) {
928 GLsizei n = static_cast<GLsizei>(c.n); 784 GLsizei n = static_cast<GLsizei>(c.n);
929 uint32_t data_size; 785 uint32_t data_size;
930 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 786 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
931 return error::kOutOfBounds; 787 return error::kOutOfBounds;
932 } 788 }
933 GLuint* textures = 789 GLuint* textures =
934 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 790 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size);
(...skipping 874 matching lines...) Expand 10 before | Expand all | Expand 10 after
1809 return error::kNoError; 1665 return error::kNoError;
1810 } 1666 }
1811 if (!validators_->texture_parameter.IsValid(pname)) { 1667 if (!validators_->texture_parameter.IsValid(pname)) {
1812 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexParameterf", pname, "pname"); 1668 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexParameterf", pname, "pname");
1813 return error::kNoError; 1669 return error::kNoError;
1814 } 1670 }
1815 DoTexParameterf(target, pname, param); 1671 DoTexParameterf(target, pname, param);
1816 return error::kNoError; 1672 return error::kNoError;
1817 } 1673 }
1818 1674
1819 error::Error GLES2DecoderImpl::HandleTexParameterfv(
1820 uint32_t immediate_data_size,
1821 const gles2::cmds::TexParameterfv& c) {
1822 GLenum target = static_cast<GLenum>(c.target);
1823 GLenum pname = static_cast<GLenum>(c.pname);
1824 uint32_t data_size;
1825 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
1826 return error::kOutOfBounds;
1827 }
1828 const GLfloat* params = GetSharedMemoryAs<const GLfloat*>(
1829 c.params_shm_id, c.params_shm_offset, data_size);
1830 if (!validators_->texture_bind_target.IsValid(target)) {
1831 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexParameterfv", target, "target");
1832 return error::kNoError;
1833 }
1834 if (!validators_->texture_parameter.IsValid(pname)) {
1835 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexParameterfv", pname, "pname");
1836 return error::kNoError;
1837 }
1838 if (params == NULL) {
1839 return error::kOutOfBounds;
1840 }
1841 DoTexParameterfv(target, pname, params);
1842 return error::kNoError;
1843 }
1844
1845 error::Error GLES2DecoderImpl::HandleTexParameterfvImmediate( 1675 error::Error GLES2DecoderImpl::HandleTexParameterfvImmediate(
1846 uint32_t immediate_data_size, 1676 uint32_t immediate_data_size,
1847 const gles2::cmds::TexParameterfvImmediate& c) { 1677 const gles2::cmds::TexParameterfvImmediate& c) {
1848 GLenum target = static_cast<GLenum>(c.target); 1678 GLenum target = static_cast<GLenum>(c.target);
1849 GLenum pname = static_cast<GLenum>(c.pname); 1679 GLenum pname = static_cast<GLenum>(c.pname);
1850 uint32_t data_size; 1680 uint32_t data_size;
1851 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { 1681 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
1852 return error::kOutOfBounds; 1682 return error::kOutOfBounds;
1853 } 1683 }
1854 if (data_size > immediate_data_size) { 1684 if (data_size > immediate_data_size) {
(...skipping 27 matching lines...) Expand all
1882 return error::kNoError; 1712 return error::kNoError;
1883 } 1713 }
1884 if (!validators_->texture_parameter.IsValid(pname)) { 1714 if (!validators_->texture_parameter.IsValid(pname)) {
1885 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexParameteri", pname, "pname"); 1715 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexParameteri", pname, "pname");
1886 return error::kNoError; 1716 return error::kNoError;
1887 } 1717 }
1888 DoTexParameteri(target, pname, param); 1718 DoTexParameteri(target, pname, param);
1889 return error::kNoError; 1719 return error::kNoError;
1890 } 1720 }
1891 1721
1892 error::Error GLES2DecoderImpl::HandleTexParameteriv(
1893 uint32_t immediate_data_size,
1894 const gles2::cmds::TexParameteriv& c) {
1895 GLenum target = static_cast<GLenum>(c.target);
1896 GLenum pname = static_cast<GLenum>(c.pname);
1897 uint32_t data_size;
1898 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) {
1899 return error::kOutOfBounds;
1900 }
1901 const GLint* params = GetSharedMemoryAs<const GLint*>(
1902 c.params_shm_id, c.params_shm_offset, data_size);
1903 if (!validators_->texture_bind_target.IsValid(target)) {
1904 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexParameteriv", target, "target");
1905 return error::kNoError;
1906 }
1907 if (!validators_->texture_parameter.IsValid(pname)) {
1908 LOCAL_SET_GL_ERROR_INVALID_ENUM("glTexParameteriv", pname, "pname");
1909 return error::kNoError;
1910 }
1911 if (params == NULL) {
1912 return error::kOutOfBounds;
1913 }
1914 DoTexParameteriv(target, pname, params);
1915 return error::kNoError;
1916 }
1917
1918 error::Error GLES2DecoderImpl::HandleTexParameterivImmediate( 1722 error::Error GLES2DecoderImpl::HandleTexParameterivImmediate(
1919 uint32_t immediate_data_size, 1723 uint32_t immediate_data_size,
1920 const gles2::cmds::TexParameterivImmediate& c) { 1724 const gles2::cmds::TexParameterivImmediate& c) {
1921 GLenum target = static_cast<GLenum>(c.target); 1725 GLenum target = static_cast<GLenum>(c.target);
1922 GLenum pname = static_cast<GLenum>(c.pname); 1726 GLenum pname = static_cast<GLenum>(c.pname);
1923 uint32_t data_size; 1727 uint32_t data_size;
1924 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) { 1728 if (!ComputeDataSize(1, sizeof(GLint), 1, &data_size)) {
1925 return error::kOutOfBounds; 1729 return error::kOutOfBounds;
1926 } 1730 }
1927 if (data_size > immediate_data_size) { 1731 if (data_size > immediate_data_size) {
(...skipping 21 matching lines...) Expand all
1949 const gles2::cmds::Uniform1f& c) { 1753 const gles2::cmds::Uniform1f& c) {
1950 GLint location = static_cast<GLint>(c.location); 1754 GLint location = static_cast<GLint>(c.location);
1951 GLfloat x = static_cast<GLfloat>(c.x); 1755 GLfloat x = static_cast<GLfloat>(c.x);
1952 GLfloat temp[1] = { 1756 GLfloat temp[1] = {
1953 x, 1757 x,
1954 }; 1758 };
1955 DoUniform1fv(location, 1, &temp[0]); 1759 DoUniform1fv(location, 1, &temp[0]);
1956 return error::kNoError; 1760 return error::kNoError;
1957 } 1761 }
1958 1762
1959 error::Error GLES2DecoderImpl::HandleUniform1fv(
1960 uint32_t immediate_data_size,
1961 const gles2::cmds::Uniform1fv& c) {
1962 GLint location = static_cast<GLint>(c.location);
1963 GLsizei count = static_cast<GLsizei>(c.count);
1964 uint32_t data_size;
1965 if (!ComputeDataSize(count, sizeof(GLfloat), 1, &data_size)) {
1966 return error::kOutOfBounds;
1967 }
1968 const GLfloat* v =
1969 GetSharedMemoryAs<const GLfloat*>(c.v_shm_id, c.v_shm_offset, data_size);
1970 if (v == NULL) {
1971 return error::kOutOfBounds;
1972 }
1973 DoUniform1fv(location, count, v);
1974 return error::kNoError;
1975 }
1976
1977 error::Error GLES2DecoderImpl::HandleUniform1fvImmediate( 1763 error::Error GLES2DecoderImpl::HandleUniform1fvImmediate(
1978 uint32_t immediate_data_size, 1764 uint32_t immediate_data_size,
1979 const gles2::cmds::Uniform1fvImmediate& c) { 1765 const gles2::cmds::Uniform1fvImmediate& c) {
1980 GLint location = static_cast<GLint>(c.location); 1766 GLint location = static_cast<GLint>(c.location);
1981 GLsizei count = static_cast<GLsizei>(c.count); 1767 GLsizei count = static_cast<GLsizei>(c.count);
1982 uint32_t data_size; 1768 uint32_t data_size;
1983 if (!ComputeDataSize(count, sizeof(GLfloat), 1, &data_size)) { 1769 if (!ComputeDataSize(count, sizeof(GLfloat), 1, &data_size)) {
1984 return error::kOutOfBounds; 1770 return error::kOutOfBounds;
1985 } 1771 }
1986 if (data_size > immediate_data_size) { 1772 if (data_size > immediate_data_size) {
(...skipping 10 matching lines...) Expand all
1997 1783
1998 error::Error GLES2DecoderImpl::HandleUniform1i( 1784 error::Error GLES2DecoderImpl::HandleUniform1i(
1999 uint32_t immediate_data_size, 1785 uint32_t immediate_data_size,
2000 const gles2::cmds::Uniform1i& c) { 1786 const gles2::cmds::Uniform1i& c) {
2001 GLint location = static_cast<GLint>(c.location); 1787 GLint location = static_cast<GLint>(c.location);
2002 GLint x = static_cast<GLint>(c.x); 1788 GLint x = static_cast<GLint>(c.x);
2003 DoUniform1i(location, x); 1789 DoUniform1i(location, x);
2004 return error::kNoError; 1790 return error::kNoError;
2005 } 1791 }
2006 1792
2007 error::Error GLES2DecoderImpl::HandleUniform1iv(
2008 uint32_t immediate_data_size,
2009 const gles2::cmds::Uniform1iv& c) {
2010 GLint location = static_cast<GLint>(c.location);
2011 GLsizei count = static_cast<GLsizei>(c.count);
2012 uint32_t data_size;
2013 if (!ComputeDataSize(count, sizeof(GLint), 1, &data_size)) {
2014 return error::kOutOfBounds;
2015 }
2016 const GLint* v =
2017 GetSharedMemoryAs<const GLint*>(c.v_shm_id, c.v_shm_offset, data_size);
2018 if (v == NULL) {
2019 return error::kOutOfBounds;
2020 }
2021 DoUniform1iv(location, count, v);
2022 return error::kNoError;
2023 }
2024
2025 error::Error GLES2DecoderImpl::HandleUniform1ivImmediate( 1793 error::Error GLES2DecoderImpl::HandleUniform1ivImmediate(
2026 uint32_t immediate_data_size, 1794 uint32_t immediate_data_size,
2027 const gles2::cmds::Uniform1ivImmediate& c) { 1795 const gles2::cmds::Uniform1ivImmediate& c) {
2028 GLint location = static_cast<GLint>(c.location); 1796 GLint location = static_cast<GLint>(c.location);
2029 GLsizei count = static_cast<GLsizei>(c.count); 1797 GLsizei count = static_cast<GLsizei>(c.count);
2030 uint32_t data_size; 1798 uint32_t data_size;
2031 if (!ComputeDataSize(count, sizeof(GLint), 1, &data_size)) { 1799 if (!ComputeDataSize(count, sizeof(GLint), 1, &data_size)) {
2032 return error::kOutOfBounds; 1800 return error::kOutOfBounds;
2033 } 1801 }
2034 if (data_size > immediate_data_size) { 1802 if (data_size > immediate_data_size) {
(...skipping 14 matching lines...) Expand all
2049 GLint location = static_cast<GLint>(c.location); 1817 GLint location = static_cast<GLint>(c.location);
2050 GLfloat x = static_cast<GLfloat>(c.x); 1818 GLfloat x = static_cast<GLfloat>(c.x);
2051 GLfloat y = static_cast<GLfloat>(c.y); 1819 GLfloat y = static_cast<GLfloat>(c.y);
2052 GLfloat temp[2] = { 1820 GLfloat temp[2] = {
2053 x, y, 1821 x, y,
2054 }; 1822 };
2055 DoUniform2fv(location, 1, &temp[0]); 1823 DoUniform2fv(location, 1, &temp[0]);
2056 return error::kNoError; 1824 return error::kNoError;
2057 } 1825 }
2058 1826
2059 error::Error GLES2DecoderImpl::HandleUniform2fv(
2060 uint32_t immediate_data_size,
2061 const gles2::cmds::Uniform2fv& c) {
2062 GLint location = static_cast<GLint>(c.location);
2063 GLsizei count = static_cast<GLsizei>(c.count);
2064 uint32_t data_size;
2065 if (!ComputeDataSize(count, sizeof(GLfloat), 2, &data_size)) {
2066 return error::kOutOfBounds;
2067 }
2068 const GLfloat* v =
2069 GetSharedMemoryAs<const GLfloat*>(c.v_shm_id, c.v_shm_offset, data_size);
2070 if (v == NULL) {
2071 return error::kOutOfBounds;
2072 }
2073 DoUniform2fv(location, count, v);
2074 return error::kNoError;
2075 }
2076
2077 error::Error GLES2DecoderImpl::HandleUniform2fvImmediate( 1827 error::Error GLES2DecoderImpl::HandleUniform2fvImmediate(
2078 uint32_t immediate_data_size, 1828 uint32_t immediate_data_size,
2079 const gles2::cmds::Uniform2fvImmediate& c) { 1829 const gles2::cmds::Uniform2fvImmediate& c) {
2080 GLint location = static_cast<GLint>(c.location); 1830 GLint location = static_cast<GLint>(c.location);
2081 GLsizei count = static_cast<GLsizei>(c.count); 1831 GLsizei count = static_cast<GLsizei>(c.count);
2082 uint32_t data_size; 1832 uint32_t data_size;
2083 if (!ComputeDataSize(count, sizeof(GLfloat), 2, &data_size)) { 1833 if (!ComputeDataSize(count, sizeof(GLfloat), 2, &data_size)) {
2084 return error::kOutOfBounds; 1834 return error::kOutOfBounds;
2085 } 1835 }
2086 if (data_size > immediate_data_size) { 1836 if (data_size > immediate_data_size) {
(...skipping 14 matching lines...) Expand all
2101 GLint location = static_cast<GLint>(c.location); 1851 GLint location = static_cast<GLint>(c.location);
2102 GLint x = static_cast<GLint>(c.x); 1852 GLint x = static_cast<GLint>(c.x);
2103 GLint y = static_cast<GLint>(c.y); 1853 GLint y = static_cast<GLint>(c.y);
2104 GLint temp[2] = { 1854 GLint temp[2] = {
2105 x, y, 1855 x, y,
2106 }; 1856 };
2107 DoUniform2iv(location, 1, &temp[0]); 1857 DoUniform2iv(location, 1, &temp[0]);
2108 return error::kNoError; 1858 return error::kNoError;
2109 } 1859 }
2110 1860
2111 error::Error GLES2DecoderImpl::HandleUniform2iv(
2112 uint32_t immediate_data_size,
2113 const gles2::cmds::Uniform2iv& c) {
2114 GLint location = static_cast<GLint>(c.location);
2115 GLsizei count = static_cast<GLsizei>(c.count);
2116 uint32_t data_size;
2117 if (!ComputeDataSize(count, sizeof(GLint), 2, &data_size)) {
2118 return error::kOutOfBounds;
2119 }
2120 const GLint* v =
2121 GetSharedMemoryAs<const GLint*>(c.v_shm_id, c.v_shm_offset, data_size);
2122 if (v == NULL) {
2123 return error::kOutOfBounds;
2124 }
2125 DoUniform2iv(location, count, v);
2126 return error::kNoError;
2127 }
2128
2129 error::Error GLES2DecoderImpl::HandleUniform2ivImmediate( 1861 error::Error GLES2DecoderImpl::HandleUniform2ivImmediate(
2130 uint32_t immediate_data_size, 1862 uint32_t immediate_data_size,
2131 const gles2::cmds::Uniform2ivImmediate& c) { 1863 const gles2::cmds::Uniform2ivImmediate& c) {
2132 GLint location = static_cast<GLint>(c.location); 1864 GLint location = static_cast<GLint>(c.location);
2133 GLsizei count = static_cast<GLsizei>(c.count); 1865 GLsizei count = static_cast<GLsizei>(c.count);
2134 uint32_t data_size; 1866 uint32_t data_size;
2135 if (!ComputeDataSize(count, sizeof(GLint), 2, &data_size)) { 1867 if (!ComputeDataSize(count, sizeof(GLint), 2, &data_size)) {
2136 return error::kOutOfBounds; 1868 return error::kOutOfBounds;
2137 } 1869 }
2138 if (data_size > immediate_data_size) { 1870 if (data_size > immediate_data_size) {
(...skipping 15 matching lines...) Expand all
2154 GLfloat x = static_cast<GLfloat>(c.x); 1886 GLfloat x = static_cast<GLfloat>(c.x);
2155 GLfloat y = static_cast<GLfloat>(c.y); 1887 GLfloat y = static_cast<GLfloat>(c.y);
2156 GLfloat z = static_cast<GLfloat>(c.z); 1888 GLfloat z = static_cast<GLfloat>(c.z);
2157 GLfloat temp[3] = { 1889 GLfloat temp[3] = {
2158 x, y, z, 1890 x, y, z,
2159 }; 1891 };
2160 DoUniform3fv(location, 1, &temp[0]); 1892 DoUniform3fv(location, 1, &temp[0]);
2161 return error::kNoError; 1893 return error::kNoError;
2162 } 1894 }
2163 1895
2164 error::Error GLES2DecoderImpl::HandleUniform3fv(
2165 uint32_t immediate_data_size,
2166 const gles2::cmds::Uniform3fv& c) {
2167 GLint location = static_cast<GLint>(c.location);
2168 GLsizei count = static_cast<GLsizei>(c.count);
2169 uint32_t data_size;
2170 if (!ComputeDataSize(count, sizeof(GLfloat), 3, &data_size)) {
2171 return error::kOutOfBounds;
2172 }
2173 const GLfloat* v =
2174 GetSharedMemoryAs<const GLfloat*>(c.v_shm_id, c.v_shm_offset, data_size);
2175 if (v == NULL) {
2176 return error::kOutOfBounds;
2177 }
2178 DoUniform3fv(location, count, v);
2179 return error::kNoError;
2180 }
2181
2182 error::Error GLES2DecoderImpl::HandleUniform3fvImmediate( 1896 error::Error GLES2DecoderImpl::HandleUniform3fvImmediate(
2183 uint32_t immediate_data_size, 1897 uint32_t immediate_data_size,
2184 const gles2::cmds::Uniform3fvImmediate& c) { 1898 const gles2::cmds::Uniform3fvImmediate& c) {
2185 GLint location = static_cast<GLint>(c.location); 1899 GLint location = static_cast<GLint>(c.location);
2186 GLsizei count = static_cast<GLsizei>(c.count); 1900 GLsizei count = static_cast<GLsizei>(c.count);
2187 uint32_t data_size; 1901 uint32_t data_size;
2188 if (!ComputeDataSize(count, sizeof(GLfloat), 3, &data_size)) { 1902 if (!ComputeDataSize(count, sizeof(GLfloat), 3, &data_size)) {
2189 return error::kOutOfBounds; 1903 return error::kOutOfBounds;
2190 } 1904 }
2191 if (data_size > immediate_data_size) { 1905 if (data_size > immediate_data_size) {
(...skipping 15 matching lines...) Expand all
2207 GLint x = static_cast<GLint>(c.x); 1921 GLint x = static_cast<GLint>(c.x);
2208 GLint y = static_cast<GLint>(c.y); 1922 GLint y = static_cast<GLint>(c.y);
2209 GLint z = static_cast<GLint>(c.z); 1923 GLint z = static_cast<GLint>(c.z);
2210 GLint temp[3] = { 1924 GLint temp[3] = {
2211 x, y, z, 1925 x, y, z,
2212 }; 1926 };
2213 DoUniform3iv(location, 1, &temp[0]); 1927 DoUniform3iv(location, 1, &temp[0]);
2214 return error::kNoError; 1928 return error::kNoError;
2215 } 1929 }
2216 1930
2217 error::Error GLES2DecoderImpl::HandleUniform3iv(
2218 uint32_t immediate_data_size,
2219 const gles2::cmds::Uniform3iv& c) {
2220 GLint location = static_cast<GLint>(c.location);
2221 GLsizei count = static_cast<GLsizei>(c.count);
2222 uint32_t data_size;
2223 if (!ComputeDataSize(count, sizeof(GLint), 3, &data_size)) {
2224 return error::kOutOfBounds;
2225 }
2226 const GLint* v =
2227 GetSharedMemoryAs<const GLint*>(c.v_shm_id, c.v_shm_offset, data_size);
2228 if (v == NULL) {
2229 return error::kOutOfBounds;
2230 }
2231 DoUniform3iv(location, count, v);
2232 return error::kNoError;
2233 }
2234
2235 error::Error GLES2DecoderImpl::HandleUniform3ivImmediate( 1931 error::Error GLES2DecoderImpl::HandleUniform3ivImmediate(
2236 uint32_t immediate_data_size, 1932 uint32_t immediate_data_size,
2237 const gles2::cmds::Uniform3ivImmediate& c) { 1933 const gles2::cmds::Uniform3ivImmediate& c) {
2238 GLint location = static_cast<GLint>(c.location); 1934 GLint location = static_cast<GLint>(c.location);
2239 GLsizei count = static_cast<GLsizei>(c.count); 1935 GLsizei count = static_cast<GLsizei>(c.count);
2240 uint32_t data_size; 1936 uint32_t data_size;
2241 if (!ComputeDataSize(count, sizeof(GLint), 3, &data_size)) { 1937 if (!ComputeDataSize(count, sizeof(GLint), 3, &data_size)) {
2242 return error::kOutOfBounds; 1938 return error::kOutOfBounds;
2243 } 1939 }
2244 if (data_size > immediate_data_size) { 1940 if (data_size > immediate_data_size) {
(...skipping 16 matching lines...) Expand all
2261 GLfloat y = static_cast<GLfloat>(c.y); 1957 GLfloat y = static_cast<GLfloat>(c.y);
2262 GLfloat z = static_cast<GLfloat>(c.z); 1958 GLfloat z = static_cast<GLfloat>(c.z);
2263 GLfloat w = static_cast<GLfloat>(c.w); 1959 GLfloat w = static_cast<GLfloat>(c.w);
2264 GLfloat temp[4] = { 1960 GLfloat temp[4] = {
2265 x, y, z, w, 1961 x, y, z, w,
2266 }; 1962 };
2267 DoUniform4fv(location, 1, &temp[0]); 1963 DoUniform4fv(location, 1, &temp[0]);
2268 return error::kNoError; 1964 return error::kNoError;
2269 } 1965 }
2270 1966
2271 error::Error GLES2DecoderImpl::HandleUniform4fv(
2272 uint32_t immediate_data_size,
2273 const gles2::cmds::Uniform4fv& c) {
2274 GLint location = static_cast<GLint>(c.location);
2275 GLsizei count = static_cast<GLsizei>(c.count);
2276 uint32_t data_size;
2277 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) {
2278 return error::kOutOfBounds;
2279 }
2280 const GLfloat* v =
2281 GetSharedMemoryAs<const GLfloat*>(c.v_shm_id, c.v_shm_offset, data_size);
2282 if (v == NULL) {
2283 return error::kOutOfBounds;
2284 }
2285 DoUniform4fv(location, count, v);
2286 return error::kNoError;
2287 }
2288
2289 error::Error GLES2DecoderImpl::HandleUniform4fvImmediate( 1967 error::Error GLES2DecoderImpl::HandleUniform4fvImmediate(
2290 uint32_t immediate_data_size, 1968 uint32_t immediate_data_size,
2291 const gles2::cmds::Uniform4fvImmediate& c) { 1969 const gles2::cmds::Uniform4fvImmediate& c) {
2292 GLint location = static_cast<GLint>(c.location); 1970 GLint location = static_cast<GLint>(c.location);
2293 GLsizei count = static_cast<GLsizei>(c.count); 1971 GLsizei count = static_cast<GLsizei>(c.count);
2294 uint32_t data_size; 1972 uint32_t data_size;
2295 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { 1973 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) {
2296 return error::kOutOfBounds; 1974 return error::kOutOfBounds;
2297 } 1975 }
2298 if (data_size > immediate_data_size) { 1976 if (data_size > immediate_data_size) {
(...skipping 16 matching lines...) Expand all
2315 GLint y = static_cast<GLint>(c.y); 1993 GLint y = static_cast<GLint>(c.y);
2316 GLint z = static_cast<GLint>(c.z); 1994 GLint z = static_cast<GLint>(c.z);
2317 GLint w = static_cast<GLint>(c.w); 1995 GLint w = static_cast<GLint>(c.w);
2318 GLint temp[4] = { 1996 GLint temp[4] = {
2319 x, y, z, w, 1997 x, y, z, w,
2320 }; 1998 };
2321 DoUniform4iv(location, 1, &temp[0]); 1999 DoUniform4iv(location, 1, &temp[0]);
2322 return error::kNoError; 2000 return error::kNoError;
2323 } 2001 }
2324 2002
2325 error::Error GLES2DecoderImpl::HandleUniform4iv(
2326 uint32_t immediate_data_size,
2327 const gles2::cmds::Uniform4iv& c) {
2328 GLint location = static_cast<GLint>(c.location);
2329 GLsizei count = static_cast<GLsizei>(c.count);
2330 uint32_t data_size;
2331 if (!ComputeDataSize(count, sizeof(GLint), 4, &data_size)) {
2332 return error::kOutOfBounds;
2333 }
2334 const GLint* v =
2335 GetSharedMemoryAs<const GLint*>(c.v_shm_id, c.v_shm_offset, data_size);
2336 if (v == NULL) {
2337 return error::kOutOfBounds;
2338 }
2339 DoUniform4iv(location, count, v);
2340 return error::kNoError;
2341 }
2342
2343 error::Error GLES2DecoderImpl::HandleUniform4ivImmediate( 2003 error::Error GLES2DecoderImpl::HandleUniform4ivImmediate(
2344 uint32_t immediate_data_size, 2004 uint32_t immediate_data_size,
2345 const gles2::cmds::Uniform4ivImmediate& c) { 2005 const gles2::cmds::Uniform4ivImmediate& c) {
2346 GLint location = static_cast<GLint>(c.location); 2006 GLint location = static_cast<GLint>(c.location);
2347 GLsizei count = static_cast<GLsizei>(c.count); 2007 GLsizei count = static_cast<GLsizei>(c.count);
2348 uint32_t data_size; 2008 uint32_t data_size;
2349 if (!ComputeDataSize(count, sizeof(GLint), 4, &data_size)) { 2009 if (!ComputeDataSize(count, sizeof(GLint), 4, &data_size)) {
2350 return error::kOutOfBounds; 2010 return error::kOutOfBounds;
2351 } 2011 }
2352 if (data_size > immediate_data_size) { 2012 if (data_size > immediate_data_size) {
2353 return error::kOutOfBounds; 2013 return error::kOutOfBounds;
2354 } 2014 }
2355 const GLint* v = 2015 const GLint* v =
2356 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size); 2016 GetImmediateDataAs<const GLint*>(c, data_size, immediate_data_size);
2357 if (v == NULL) { 2017 if (v == NULL) {
2358 return error::kOutOfBounds; 2018 return error::kOutOfBounds;
2359 } 2019 }
2360 DoUniform4iv(location, count, v); 2020 DoUniform4iv(location, count, v);
2361 return error::kNoError; 2021 return error::kNoError;
2362 } 2022 }
2363 2023
2364 error::Error GLES2DecoderImpl::HandleUniformMatrix2fv(
2365 uint32_t immediate_data_size,
2366 const gles2::cmds::UniformMatrix2fv& c) {
2367 GLint location = static_cast<GLint>(c.location);
2368 GLsizei count = static_cast<GLsizei>(c.count);
2369 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2370 uint32_t data_size;
2371 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) {
2372 return error::kOutOfBounds;
2373 }
2374 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>(
2375 c.value_shm_id, c.value_shm_offset, data_size);
2376 if (value == NULL) {
2377 return error::kOutOfBounds;
2378 }
2379 DoUniformMatrix2fv(location, count, transpose, value);
2380 return error::kNoError;
2381 }
2382
2383 error::Error GLES2DecoderImpl::HandleUniformMatrix2fvImmediate( 2024 error::Error GLES2DecoderImpl::HandleUniformMatrix2fvImmediate(
2384 uint32_t immediate_data_size, 2025 uint32_t immediate_data_size,
2385 const gles2::cmds::UniformMatrix2fvImmediate& c) { 2026 const gles2::cmds::UniformMatrix2fvImmediate& c) {
2386 GLint location = static_cast<GLint>(c.location); 2027 GLint location = static_cast<GLint>(c.location);
2387 GLsizei count = static_cast<GLsizei>(c.count); 2028 GLsizei count = static_cast<GLsizei>(c.count);
2388 GLboolean transpose = static_cast<GLboolean>(c.transpose); 2029 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2389 uint32_t data_size; 2030 uint32_t data_size;
2390 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { 2031 if (!ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) {
2391 return error::kOutOfBounds; 2032 return error::kOutOfBounds;
2392 } 2033 }
2393 if (data_size > immediate_data_size) { 2034 if (data_size > immediate_data_size) {
2394 return error::kOutOfBounds; 2035 return error::kOutOfBounds;
2395 } 2036 }
2396 const GLfloat* value = 2037 const GLfloat* value =
2397 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 2038 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size);
2398 if (value == NULL) { 2039 if (value == NULL) {
2399 return error::kOutOfBounds; 2040 return error::kOutOfBounds;
2400 } 2041 }
2401 DoUniformMatrix2fv(location, count, transpose, value); 2042 DoUniformMatrix2fv(location, count, transpose, value);
2402 return error::kNoError; 2043 return error::kNoError;
2403 } 2044 }
2404 2045
2405 error::Error GLES2DecoderImpl::HandleUniformMatrix3fv(
2406 uint32_t immediate_data_size,
2407 const gles2::cmds::UniformMatrix3fv& c) {
2408 GLint location = static_cast<GLint>(c.location);
2409 GLsizei count = static_cast<GLsizei>(c.count);
2410 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2411 uint32_t data_size;
2412 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) {
2413 return error::kOutOfBounds;
2414 }
2415 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>(
2416 c.value_shm_id, c.value_shm_offset, data_size);
2417 if (value == NULL) {
2418 return error::kOutOfBounds;
2419 }
2420 DoUniformMatrix3fv(location, count, transpose, value);
2421 return error::kNoError;
2422 }
2423
2424 error::Error GLES2DecoderImpl::HandleUniformMatrix3fvImmediate( 2046 error::Error GLES2DecoderImpl::HandleUniformMatrix3fvImmediate(
2425 uint32_t immediate_data_size, 2047 uint32_t immediate_data_size,
2426 const gles2::cmds::UniformMatrix3fvImmediate& c) { 2048 const gles2::cmds::UniformMatrix3fvImmediate& c) {
2427 GLint location = static_cast<GLint>(c.location); 2049 GLint location = static_cast<GLint>(c.location);
2428 GLsizei count = static_cast<GLsizei>(c.count); 2050 GLsizei count = static_cast<GLsizei>(c.count);
2429 GLboolean transpose = static_cast<GLboolean>(c.transpose); 2051 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2430 uint32_t data_size; 2052 uint32_t data_size;
2431 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) { 2053 if (!ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) {
2432 return error::kOutOfBounds; 2054 return error::kOutOfBounds;
2433 } 2055 }
2434 if (data_size > immediate_data_size) { 2056 if (data_size > immediate_data_size) {
2435 return error::kOutOfBounds; 2057 return error::kOutOfBounds;
2436 } 2058 }
2437 const GLfloat* value = 2059 const GLfloat* value =
2438 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size); 2060 GetImmediateDataAs<const GLfloat*>(c, data_size, immediate_data_size);
2439 if (value == NULL) { 2061 if (value == NULL) {
2440 return error::kOutOfBounds; 2062 return error::kOutOfBounds;
2441 } 2063 }
2442 DoUniformMatrix3fv(location, count, transpose, value); 2064 DoUniformMatrix3fv(location, count, transpose, value);
2443 return error::kNoError; 2065 return error::kNoError;
2444 } 2066 }
2445 2067
2446 error::Error GLES2DecoderImpl::HandleUniformMatrix4fv(
2447 uint32_t immediate_data_size,
2448 const gles2::cmds::UniformMatrix4fv& c) {
2449 GLint location = static_cast<GLint>(c.location);
2450 GLsizei count = static_cast<GLsizei>(c.count);
2451 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2452 uint32_t data_size;
2453 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) {
2454 return error::kOutOfBounds;
2455 }
2456 const GLfloat* value = GetSharedMemoryAs<const GLfloat*>(
2457 c.value_shm_id, c.value_shm_offset, data_size);
2458 if (value == NULL) {
2459 return error::kOutOfBounds;
2460 }
2461 DoUniformMatrix4fv(location, count, transpose, value);
2462 return error::kNoError;
2463 }
2464
2465 error::Error GLES2DecoderImpl::HandleUniformMatrix4fvImmediate( 2068 error::Error GLES2DecoderImpl::HandleUniformMatrix4fvImmediate(
2466 uint32_t immediate_data_size, 2069 uint32_t immediate_data_size,
2467 const gles2::cmds::UniformMatrix4fvImmediate& c) { 2070 const gles2::cmds::UniformMatrix4fvImmediate& c) {
2468 GLint location = static_cast<GLint>(c.location); 2071 GLint location = static_cast<GLint>(c.location);
2469 GLsizei count = static_cast<GLsizei>(c.count); 2072 GLsizei count = static_cast<GLsizei>(c.count);
2470 GLboolean transpose = static_cast<GLboolean>(c.transpose); 2073 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2471 uint32_t data_size; 2074 uint32_t data_size;
2472 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) { 2075 if (!ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) {
2473 return error::kOutOfBounds; 2076 return error::kOutOfBounds;
2474 } 2077 }
(...skipping 27 matching lines...) Expand all
2502 2105
2503 error::Error GLES2DecoderImpl::HandleVertexAttrib1f( 2106 error::Error GLES2DecoderImpl::HandleVertexAttrib1f(
2504 uint32_t immediate_data_size, 2107 uint32_t immediate_data_size,
2505 const gles2::cmds::VertexAttrib1f& c) { 2108 const gles2::cmds::VertexAttrib1f& c) {
2506 GLuint indx = static_cast<GLuint>(c.indx); 2109 GLuint indx = static_cast<GLuint>(c.indx);
2507 GLfloat x = static_cast<GLfloat>(c.x); 2110 GLfloat x = static_cast<GLfloat>(c.x);
2508 DoVertexAttrib1f(indx, x); 2111 DoVertexAttrib1f(indx, x);
2509 return error::kNoError; 2112 return error::kNoError;
2510 } 2113 }
2511 2114
2512 error::Error GLES2DecoderImpl::HandleVertexAttrib1fv(
2513 uint32_t immediate_data_size,
2514 const gles2::cmds::VertexAttrib1fv& c) {
2515 GLuint indx = static_cast<GLuint>(c.indx);
2516 uint32_t data_size;
2517 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
2518 return error::kOutOfBounds;
2519 }
2520 const GLfloat* values = GetSharedMemoryAs<const GLfloat*>(
2521 c.values_shm_id, c.values_shm_offset, data_size);
2522 if (values == NULL) {
2523 return error::kOutOfBounds;
2524 }
2525 DoVertexAttrib1fv(indx, values);
2526 return error::kNoError;
2527 }
2528
2529 error::Error GLES2DecoderImpl::HandleVertexAttrib1fvImmediate( 2115 error::Error GLES2DecoderImpl::HandleVertexAttrib1fvImmediate(
2530 uint32_t immediate_data_size, 2116 uint32_t immediate_data_size,
2531 const gles2::cmds::VertexAttrib1fvImmediate& c) { 2117 const gles2::cmds::VertexAttrib1fvImmediate& c) {
2532 GLuint indx = static_cast<GLuint>(c.indx); 2118 GLuint indx = static_cast<GLuint>(c.indx);
2533 uint32_t data_size; 2119 uint32_t data_size;
2534 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { 2120 if (!ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
2535 return error::kOutOfBounds; 2121 return error::kOutOfBounds;
2536 } 2122 }
2537 if (data_size > immediate_data_size) { 2123 if (data_size > immediate_data_size) {
2538 return error::kOutOfBounds; 2124 return error::kOutOfBounds;
(...skipping 10 matching lines...) Expand all
2549 error::Error GLES2DecoderImpl::HandleVertexAttrib2f( 2135 error::Error GLES2DecoderImpl::HandleVertexAttrib2f(
2550 uint32_t immediate_data_size, 2136 uint32_t immediate_data_size,
2551 const gles2::cmds::VertexAttrib2f& c) { 2137 const gles2::cmds::VertexAttrib2f& c) {
2552 GLuint indx = static_cast<GLuint>(c.indx); 2138 GLuint indx = static_cast<GLuint>(c.indx);
2553 GLfloat x = static_cast<GLfloat>(c.x); 2139 GLfloat x = static_cast<GLfloat>(c.x);
2554 GLfloat y = static_cast<GLfloat>(c.y); 2140 GLfloat y = static_cast<GLfloat>(c.y);
2555 DoVertexAttrib2f(indx, x, y); 2141 DoVertexAttrib2f(indx, x, y);
2556 return error::kNoError; 2142 return error::kNoError;
2557 } 2143 }
2558 2144
2559 error::Error GLES2DecoderImpl::HandleVertexAttrib2fv(
2560 uint32_t immediate_data_size,
2561 const gles2::cmds::VertexAttrib2fv& c) {
2562 GLuint indx = static_cast<GLuint>(c.indx);
2563 uint32_t data_size;
2564 if (!ComputeDataSize(1, sizeof(GLfloat), 2, &data_size)) {
2565 return error::kOutOfBounds;
2566 }
2567 const GLfloat* values = GetSharedMemoryAs<const GLfloat*>(
2568 c.values_shm_id, c.values_shm_offset, data_size);
2569 if (values == NULL) {
2570 return error::kOutOfBounds;
2571 }
2572 DoVertexAttrib2fv(indx, values);
2573 return error::kNoError;
2574 }
2575
2576 error::Error GLES2DecoderImpl::HandleVertexAttrib2fvImmediate( 2145 error::Error GLES2DecoderImpl::HandleVertexAttrib2fvImmediate(
2577 uint32_t immediate_data_size, 2146 uint32_t immediate_data_size,
2578 const gles2::cmds::VertexAttrib2fvImmediate& c) { 2147 const gles2::cmds::VertexAttrib2fvImmediate& c) {
2579 GLuint indx = static_cast<GLuint>(c.indx); 2148 GLuint indx = static_cast<GLuint>(c.indx);
2580 uint32_t data_size; 2149 uint32_t data_size;
2581 if (!ComputeDataSize(1, sizeof(GLfloat), 2, &data_size)) { 2150 if (!ComputeDataSize(1, sizeof(GLfloat), 2, &data_size)) {
2582 return error::kOutOfBounds; 2151 return error::kOutOfBounds;
2583 } 2152 }
2584 if (data_size > immediate_data_size) { 2153 if (data_size > immediate_data_size) {
2585 return error::kOutOfBounds; 2154 return error::kOutOfBounds;
(...skipping 11 matching lines...) Expand all
2597 uint32_t immediate_data_size, 2166 uint32_t immediate_data_size,
2598 const gles2::cmds::VertexAttrib3f& c) { 2167 const gles2::cmds::VertexAttrib3f& c) {
2599 GLuint indx = static_cast<GLuint>(c.indx); 2168 GLuint indx = static_cast<GLuint>(c.indx);
2600 GLfloat x = static_cast<GLfloat>(c.x); 2169 GLfloat x = static_cast<GLfloat>(c.x);
2601 GLfloat y = static_cast<GLfloat>(c.y); 2170 GLfloat y = static_cast<GLfloat>(c.y);
2602 GLfloat z = static_cast<GLfloat>(c.z); 2171 GLfloat z = static_cast<GLfloat>(c.z);
2603 DoVertexAttrib3f(indx, x, y, z); 2172 DoVertexAttrib3f(indx, x, y, z);
2604 return error::kNoError; 2173 return error::kNoError;
2605 } 2174 }
2606 2175
2607 error::Error GLES2DecoderImpl::HandleVertexAttrib3fv(
2608 uint32_t immediate_data_size,
2609 const gles2::cmds::VertexAttrib3fv& c) {
2610 GLuint indx = static_cast<GLuint>(c.indx);
2611 uint32_t data_size;
2612 if (!ComputeDataSize(1, sizeof(GLfloat), 3, &data_size)) {
2613 return error::kOutOfBounds;
2614 }
2615 const GLfloat* values = GetSharedMemoryAs<const GLfloat*>(
2616 c.values_shm_id, c.values_shm_offset, data_size);
2617 if (values == NULL) {
2618 return error::kOutOfBounds;
2619 }
2620 DoVertexAttrib3fv(indx, values);
2621 return error::kNoError;
2622 }
2623
2624 error::Error GLES2DecoderImpl::HandleVertexAttrib3fvImmediate( 2176 error::Error GLES2DecoderImpl::HandleVertexAttrib3fvImmediate(
2625 uint32_t immediate_data_size, 2177 uint32_t immediate_data_size,
2626 const gles2::cmds::VertexAttrib3fvImmediate& c) { 2178 const gles2::cmds::VertexAttrib3fvImmediate& c) {
2627 GLuint indx = static_cast<GLuint>(c.indx); 2179 GLuint indx = static_cast<GLuint>(c.indx);
2628 uint32_t data_size; 2180 uint32_t data_size;
2629 if (!ComputeDataSize(1, sizeof(GLfloat), 3, &data_size)) { 2181 if (!ComputeDataSize(1, sizeof(GLfloat), 3, &data_size)) {
2630 return error::kOutOfBounds; 2182 return error::kOutOfBounds;
2631 } 2183 }
2632 if (data_size > immediate_data_size) { 2184 if (data_size > immediate_data_size) {
2633 return error::kOutOfBounds; 2185 return error::kOutOfBounds;
(...skipping 12 matching lines...) Expand all
2646 const gles2::cmds::VertexAttrib4f& c) { 2198 const gles2::cmds::VertexAttrib4f& c) {
2647 GLuint indx = static_cast<GLuint>(c.indx); 2199 GLuint indx = static_cast<GLuint>(c.indx);
2648 GLfloat x = static_cast<GLfloat>(c.x); 2200 GLfloat x = static_cast<GLfloat>(c.x);
2649 GLfloat y = static_cast<GLfloat>(c.y); 2201 GLfloat y = static_cast<GLfloat>(c.y);
2650 GLfloat z = static_cast<GLfloat>(c.z); 2202 GLfloat z = static_cast<GLfloat>(c.z);
2651 GLfloat w = static_cast<GLfloat>(c.w); 2203 GLfloat w = static_cast<GLfloat>(c.w);
2652 DoVertexAttrib4f(indx, x, y, z, w); 2204 DoVertexAttrib4f(indx, x, y, z, w);
2653 return error::kNoError; 2205 return error::kNoError;
2654 } 2206 }
2655 2207
2656 error::Error GLES2DecoderImpl::HandleVertexAttrib4fv(
2657 uint32_t immediate_data_size,
2658 const gles2::cmds::VertexAttrib4fv& c) {
2659 GLuint indx = static_cast<GLuint>(c.indx);
2660 uint32_t data_size;
2661 if (!ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) {
2662 return error::kOutOfBounds;
2663 }
2664 const GLfloat* values = GetSharedMemoryAs<const GLfloat*>(
2665 c.values_shm_id, c.values_shm_offset, data_size);
2666 if (values == NULL) {
2667 return error::kOutOfBounds;
2668 }
2669 DoVertexAttrib4fv(indx, values);
2670 return error::kNoError;
2671 }
2672
2673 error::Error GLES2DecoderImpl::HandleVertexAttrib4fvImmediate( 2208 error::Error GLES2DecoderImpl::HandleVertexAttrib4fvImmediate(
2674 uint32_t immediate_data_size, 2209 uint32_t immediate_data_size,
2675 const gles2::cmds::VertexAttrib4fvImmediate& c) { 2210 const gles2::cmds::VertexAttrib4fvImmediate& c) {
2676 GLuint indx = static_cast<GLuint>(c.indx); 2211 GLuint indx = static_cast<GLuint>(c.indx);
2677 uint32_t data_size; 2212 uint32_t data_size;
2678 if (!ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) { 2213 if (!ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) {
2679 return error::kOutOfBounds; 2214 return error::kOutOfBounds;
2680 } 2215 }
2681 if (data_size > immediate_data_size) { 2216 if (data_size > immediate_data_size) {
2682 return error::kOutOfBounds; 2217 return error::kOutOfBounds;
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
2908 return error::kNoError; 2443 return error::kNoError;
2909 } 2444 }
2910 if (height < 0) { 2445 if (height < 0) {
2911 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexStorage2DEXT", "height < 0"); 2446 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glTexStorage2DEXT", "height < 0");
2912 return error::kNoError; 2447 return error::kNoError;
2913 } 2448 }
2914 DoTexStorage2DEXT(target, levels, internalFormat, width, height); 2449 DoTexStorage2DEXT(target, levels, internalFormat, width, height);
2915 return error::kNoError; 2450 return error::kNoError;
2916 } 2451 }
2917 2452
2918 error::Error GLES2DecoderImpl::HandleGenQueriesEXT(
2919 uint32_t immediate_data_size,
2920 const gles2::cmds::GenQueriesEXT& c) {
2921 GLsizei n = static_cast<GLsizei>(c.n);
2922 uint32_t data_size;
2923 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
2924 return error::kOutOfBounds;
2925 }
2926 GLuint* queries = GetSharedMemoryAs<GLuint*>(
2927 c.queries_shm_id, c.queries_shm_offset, data_size);
2928 if (queries == NULL) {
2929 return error::kOutOfBounds;
2930 }
2931 if (!GenQueriesEXTHelper(n, queries)) {
2932 return error::kInvalidArguments;
2933 }
2934 return error::kNoError;
2935 }
2936
2937 error::Error GLES2DecoderImpl::HandleGenQueriesEXTImmediate( 2453 error::Error GLES2DecoderImpl::HandleGenQueriesEXTImmediate(
2938 uint32_t immediate_data_size, 2454 uint32_t immediate_data_size,
2939 const gles2::cmds::GenQueriesEXTImmediate& c) { 2455 const gles2::cmds::GenQueriesEXTImmediate& c) {
2940 GLsizei n = static_cast<GLsizei>(c.n); 2456 GLsizei n = static_cast<GLsizei>(c.n);
2941 uint32_t data_size; 2457 uint32_t data_size;
2942 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 2458 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
2943 return error::kOutOfBounds; 2459 return error::kOutOfBounds;
2944 } 2460 }
2945 GLuint* queries = 2461 GLuint* queries =
2946 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 2462 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size);
2947 if (queries == NULL) { 2463 if (queries == NULL) {
2948 return error::kOutOfBounds; 2464 return error::kOutOfBounds;
2949 } 2465 }
2950 if (!GenQueriesEXTHelper(n, queries)) { 2466 if (!GenQueriesEXTHelper(n, queries)) {
2951 return error::kInvalidArguments; 2467 return error::kInvalidArguments;
2952 } 2468 }
2953 return error::kNoError; 2469 return error::kNoError;
2954 } 2470 }
2955 2471
2956 error::Error GLES2DecoderImpl::HandleDeleteQueriesEXT(
2957 uint32_t immediate_data_size,
2958 const gles2::cmds::DeleteQueriesEXT& c) {
2959 GLsizei n = static_cast<GLsizei>(c.n);
2960 uint32_t data_size;
2961 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
2962 return error::kOutOfBounds;
2963 }
2964 const GLuint* queries = GetSharedMemoryAs<const GLuint*>(
2965 c.queries_shm_id, c.queries_shm_offset, data_size);
2966 if (queries == NULL) {
2967 return error::kOutOfBounds;
2968 }
2969 DeleteQueriesEXTHelper(n, queries);
2970 return error::kNoError;
2971 }
2972
2973 error::Error GLES2DecoderImpl::HandleDeleteQueriesEXTImmediate( 2472 error::Error GLES2DecoderImpl::HandleDeleteQueriesEXTImmediate(
2974 uint32_t immediate_data_size, 2473 uint32_t immediate_data_size,
2975 const gles2::cmds::DeleteQueriesEXTImmediate& c) { 2474 const gles2::cmds::DeleteQueriesEXTImmediate& c) {
2976 GLsizei n = static_cast<GLsizei>(c.n); 2475 GLsizei n = static_cast<GLsizei>(c.n);
2977 uint32_t data_size; 2476 uint32_t data_size;
2978 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 2477 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
2979 return error::kOutOfBounds; 2478 return error::kOutOfBounds;
2980 } 2479 }
2981 const GLuint* queries = 2480 const GLuint* queries =
2982 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 2481 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3019 return error::kNoError; 2518 return error::kNoError;
3020 } 2519 }
3021 2520
3022 error::Error GLES2DecoderImpl::HandlePopGroupMarkerEXT( 2521 error::Error GLES2DecoderImpl::HandlePopGroupMarkerEXT(
3023 uint32_t immediate_data_size, 2522 uint32_t immediate_data_size,
3024 const gles2::cmds::PopGroupMarkerEXT& c) { 2523 const gles2::cmds::PopGroupMarkerEXT& c) {
3025 DoPopGroupMarkerEXT(); 2524 DoPopGroupMarkerEXT();
3026 return error::kNoError; 2525 return error::kNoError;
3027 } 2526 }
3028 2527
3029 error::Error GLES2DecoderImpl::HandleGenVertexArraysOES(
3030 uint32_t immediate_data_size,
3031 const gles2::cmds::GenVertexArraysOES& c) {
3032 GLsizei n = static_cast<GLsizei>(c.n);
3033 uint32_t data_size;
3034 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
3035 return error::kOutOfBounds;
3036 }
3037 GLuint* arrays = GetSharedMemoryAs<GLuint*>(
3038 c.arrays_shm_id, c.arrays_shm_offset, data_size);
3039 if (arrays == NULL) {
3040 return error::kOutOfBounds;
3041 }
3042 if (!GenVertexArraysOESHelper(n, arrays)) {
3043 return error::kInvalidArguments;
3044 }
3045 return error::kNoError;
3046 }
3047
3048 error::Error GLES2DecoderImpl::HandleGenVertexArraysOESImmediate( 2528 error::Error GLES2DecoderImpl::HandleGenVertexArraysOESImmediate(
3049 uint32_t immediate_data_size, 2529 uint32_t immediate_data_size,
3050 const gles2::cmds::GenVertexArraysOESImmediate& c) { 2530 const gles2::cmds::GenVertexArraysOESImmediate& c) {
3051 GLsizei n = static_cast<GLsizei>(c.n); 2531 GLsizei n = static_cast<GLsizei>(c.n);
3052 uint32_t data_size; 2532 uint32_t data_size;
3053 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 2533 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
3054 return error::kOutOfBounds; 2534 return error::kOutOfBounds;
3055 } 2535 }
3056 GLuint* arrays = 2536 GLuint* arrays =
3057 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size); 2537 GetImmediateDataAs<GLuint*>(c, data_size, immediate_data_size);
3058 if (arrays == NULL) { 2538 if (arrays == NULL) {
3059 return error::kOutOfBounds; 2539 return error::kOutOfBounds;
3060 } 2540 }
3061 if (!GenVertexArraysOESHelper(n, arrays)) { 2541 if (!GenVertexArraysOESHelper(n, arrays)) {
3062 return error::kInvalidArguments; 2542 return error::kInvalidArguments;
3063 } 2543 }
3064 return error::kNoError; 2544 return error::kNoError;
3065 } 2545 }
3066 2546
3067 error::Error GLES2DecoderImpl::HandleDeleteVertexArraysOES(
3068 uint32_t immediate_data_size,
3069 const gles2::cmds::DeleteVertexArraysOES& c) {
3070 GLsizei n = static_cast<GLsizei>(c.n);
3071 uint32_t data_size;
3072 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
3073 return error::kOutOfBounds;
3074 }
3075 const GLuint* arrays = GetSharedMemoryAs<const GLuint*>(
3076 c.arrays_shm_id, c.arrays_shm_offset, data_size);
3077 if (arrays == NULL) {
3078 return error::kOutOfBounds;
3079 }
3080 DeleteVertexArraysOESHelper(n, arrays);
3081 return error::kNoError;
3082 }
3083
3084 error::Error GLES2DecoderImpl::HandleDeleteVertexArraysOESImmediate( 2547 error::Error GLES2DecoderImpl::HandleDeleteVertexArraysOESImmediate(
3085 uint32_t immediate_data_size, 2548 uint32_t immediate_data_size,
3086 const gles2::cmds::DeleteVertexArraysOESImmediate& c) { 2549 const gles2::cmds::DeleteVertexArraysOESImmediate& c) {
3087 GLsizei n = static_cast<GLsizei>(c.n); 2550 GLsizei n = static_cast<GLsizei>(c.n);
3088 uint32_t data_size; 2551 uint32_t data_size;
3089 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 2552 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
3090 return error::kOutOfBounds; 2553 return error::kOutOfBounds;
3091 } 2554 }
3092 const GLuint* arrays = 2555 const GLuint* arrays =
3093 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size); 2556 GetImmediateDataAs<const GLuint*>(c, data_size, immediate_data_size);
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
3199 if (!validators_->pixel_type.IsValid(dest_type)) { 2662 if (!validators_->pixel_type.IsValid(dest_type)) {
3200 LOCAL_SET_GL_ERROR_INVALID_ENUM( 2663 LOCAL_SET_GL_ERROR_INVALID_ENUM(
3201 "glCopyTextureCHROMIUM", dest_type, "dest_type"); 2664 "glCopyTextureCHROMIUM", dest_type, "dest_type");
3202 return error::kNoError; 2665 return error::kNoError;
3203 } 2666 }
3204 DoCopyTextureCHROMIUM( 2667 DoCopyTextureCHROMIUM(
3205 target, source_id, dest_id, level, internalformat, dest_type); 2668 target, source_id, dest_id, level, internalformat, dest_type);
3206 return error::kNoError; 2669 return error::kNoError;
3207 } 2670 }
3208 2671
3209 error::Error GLES2DecoderImpl::HandleProduceTextureCHROMIUM(
3210 uint32_t immediate_data_size,
3211 const gles2::cmds::ProduceTextureCHROMIUM& c) {
3212 GLenum target = static_cast<GLenum>(c.target);
3213 uint32_t data_size;
3214 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
3215 return error::kOutOfBounds;
3216 }
3217 const GLbyte* mailbox = GetSharedMemoryAs<const GLbyte*>(
3218 c.mailbox_shm_id, c.mailbox_shm_offset, data_size);
3219 if (!validators_->texture_bind_target.IsValid(target)) {
3220 LOCAL_SET_GL_ERROR_INVALID_ENUM(
3221 "glProduceTextureCHROMIUM", target, "target");
3222 return error::kNoError;
3223 }
3224 if (mailbox == NULL) {
3225 return error::kOutOfBounds;
3226 }
3227 DoProduceTextureCHROMIUM(target, mailbox);
3228 return error::kNoError;
3229 }
3230
3231 error::Error GLES2DecoderImpl::HandleProduceTextureCHROMIUMImmediate( 2672 error::Error GLES2DecoderImpl::HandleProduceTextureCHROMIUMImmediate(
3232 uint32_t immediate_data_size, 2673 uint32_t immediate_data_size,
3233 const gles2::cmds::ProduceTextureCHROMIUMImmediate& c) { 2674 const gles2::cmds::ProduceTextureCHROMIUMImmediate& c) {
3234 GLenum target = static_cast<GLenum>(c.target); 2675 GLenum target = static_cast<GLenum>(c.target);
3235 uint32_t data_size; 2676 uint32_t data_size;
3236 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { 2677 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
3237 return error::kOutOfBounds; 2678 return error::kOutOfBounds;
3238 } 2679 }
3239 if (data_size > immediate_data_size) { 2680 if (data_size > immediate_data_size) {
3240 return error::kOutOfBounds; 2681 return error::kOutOfBounds;
3241 } 2682 }
3242 const GLbyte* mailbox = 2683 const GLbyte* mailbox =
3243 GetImmediateDataAs<const GLbyte*>(c, data_size, immediate_data_size); 2684 GetImmediateDataAs<const GLbyte*>(c, data_size, immediate_data_size);
3244 if (!validators_->texture_bind_target.IsValid(target)) { 2685 if (!validators_->texture_bind_target.IsValid(target)) {
3245 LOCAL_SET_GL_ERROR_INVALID_ENUM( 2686 LOCAL_SET_GL_ERROR_INVALID_ENUM(
3246 "glProduceTextureCHROMIUM", target, "target"); 2687 "glProduceTextureCHROMIUM", target, "target");
3247 return error::kNoError; 2688 return error::kNoError;
3248 } 2689 }
3249 if (mailbox == NULL) { 2690 if (mailbox == NULL) {
3250 return error::kOutOfBounds; 2691 return error::kOutOfBounds;
3251 } 2692 }
3252 DoProduceTextureCHROMIUM(target, mailbox); 2693 DoProduceTextureCHROMIUM(target, mailbox);
3253 return error::kNoError; 2694 return error::kNoError;
3254 } 2695 }
3255 2696
3256 error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUM(
3257 uint32_t immediate_data_size,
3258 const gles2::cmds::ConsumeTextureCHROMIUM& c) {
3259 GLenum target = static_cast<GLenum>(c.target);
3260 uint32_t data_size;
3261 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
3262 return error::kOutOfBounds;
3263 }
3264 const GLbyte* mailbox = GetSharedMemoryAs<const GLbyte*>(
3265 c.mailbox_shm_id, c.mailbox_shm_offset, data_size);
3266 if (!validators_->texture_bind_target.IsValid(target)) {
3267 LOCAL_SET_GL_ERROR_INVALID_ENUM(
3268 "glConsumeTextureCHROMIUM", target, "target");
3269 return error::kNoError;
3270 }
3271 if (mailbox == NULL) {
3272 return error::kOutOfBounds;
3273 }
3274 DoConsumeTextureCHROMIUM(target, mailbox);
3275 return error::kNoError;
3276 }
3277
3278 error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUMImmediate( 2697 error::Error GLES2DecoderImpl::HandleConsumeTextureCHROMIUMImmediate(
3279 uint32_t immediate_data_size, 2698 uint32_t immediate_data_size,
3280 const gles2::cmds::ConsumeTextureCHROMIUMImmediate& c) { 2699 const gles2::cmds::ConsumeTextureCHROMIUMImmediate& c) {
3281 GLenum target = static_cast<GLenum>(c.target); 2700 GLenum target = static_cast<GLenum>(c.target);
3282 uint32_t data_size; 2701 uint32_t data_size;
3283 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) { 2702 if (!ComputeDataSize(1, sizeof(GLbyte), 64, &data_size)) {
3284 return error::kOutOfBounds; 2703 return error::kOutOfBounds;
3285 } 2704 }
3286 if (data_size > immediate_data_size) { 2705 if (data_size > immediate_data_size) {
3287 return error::kOutOfBounds; 2706 return error::kOutOfBounds;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
3328 return error::kNoError; 2747 return error::kNoError;
3329 } 2748 }
3330 2749
3331 error::Error GLES2DecoderImpl::HandleTraceEndCHROMIUM( 2750 error::Error GLES2DecoderImpl::HandleTraceEndCHROMIUM(
3332 uint32_t immediate_data_size, 2751 uint32_t immediate_data_size,
3333 const gles2::cmds::TraceEndCHROMIUM& c) { 2752 const gles2::cmds::TraceEndCHROMIUM& c) {
3334 DoTraceEndCHROMIUM(); 2753 DoTraceEndCHROMIUM();
3335 return error::kNoError; 2754 return error::kNoError;
3336 } 2755 }
3337 2756
3338 error::Error GLES2DecoderImpl::HandleDiscardFramebufferEXT(
3339 uint32_t immediate_data_size,
3340 const gles2::cmds::DiscardFramebufferEXT& c) {
3341 if (!features().ext_discard_framebuffer) {
3342 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION,
3343 "glDiscardFramebufferEXT",
3344 "function not available");
3345 return error::kNoError;
3346 }
3347
3348 GLenum target = static_cast<GLenum>(c.target);
3349 GLsizei count = static_cast<GLsizei>(c.count);
3350 uint32_t data_size;
3351 if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
3352 return error::kOutOfBounds;
3353 }
3354 const GLenum* attachments = GetSharedMemoryAs<const GLenum*>(
3355 c.attachments_shm_id, c.attachments_shm_offset, data_size);
3356 if (count < 0) {
3357 LOCAL_SET_GL_ERROR(
3358 GL_INVALID_VALUE, "glDiscardFramebufferEXT", "count < 0");
3359 return error::kNoError;
3360 }
3361 if (attachments == NULL) {
3362 return error::kOutOfBounds;
3363 }
3364 DoDiscardFramebufferEXT(target, count, attachments);
3365 return error::kNoError;
3366 }
3367
3368 error::Error GLES2DecoderImpl::HandleDiscardFramebufferEXTImmediate( 2757 error::Error GLES2DecoderImpl::HandleDiscardFramebufferEXTImmediate(
3369 uint32_t immediate_data_size, 2758 uint32_t immediate_data_size,
3370 const gles2::cmds::DiscardFramebufferEXTImmediate& c) { 2759 const gles2::cmds::DiscardFramebufferEXTImmediate& c) {
3371 if (!features().ext_discard_framebuffer) { 2760 if (!features().ext_discard_framebuffer) {
3372 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, 2761 LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION,
3373 "glDiscardFramebufferEXT", 2762 "glDiscardFramebufferEXT",
3374 "function not available"); 2763 "function not available");
3375 return error::kNoError; 2764 return error::kNoError;
3376 } 2765 }
3377 2766
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
3409 return error::kNoError; 2798 return error::kNoError;
3410 } 2799 }
3411 if (!validators_->reset_status.IsValid(other)) { 2800 if (!validators_->reset_status.IsValid(other)) {
3412 LOCAL_SET_GL_ERROR_INVALID_ENUM("glLoseContextCHROMIUM", other, "other"); 2801 LOCAL_SET_GL_ERROR_INVALID_ENUM("glLoseContextCHROMIUM", other, "other");
3413 return error::kNoError; 2802 return error::kNoError;
3414 } 2803 }
3415 DoLoseContextCHROMIUM(current, other); 2804 DoLoseContextCHROMIUM(current, other);
3416 return error::kNoError; 2805 return error::kNoError;
3417 } 2806 }
3418 2807
3419 error::Error GLES2DecoderImpl::HandleDrawBuffersEXT(
3420 uint32_t immediate_data_size,
3421 const gles2::cmds::DrawBuffersEXT& c) {
3422 GLsizei count = static_cast<GLsizei>(c.count);
3423 uint32_t data_size;
3424 if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
3425 return error::kOutOfBounds;
3426 }
3427 const GLenum* bufs = GetSharedMemoryAs<const GLenum*>(
3428 c.bufs_shm_id, c.bufs_shm_offset, data_size);
3429 if (count < 0) {
3430 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glDrawBuffersEXT", "count < 0");
3431 return error::kNoError;
3432 }
3433 if (bufs == NULL) {
3434 return error::kOutOfBounds;
3435 }
3436 DoDrawBuffersEXT(count, bufs);
3437 return error::kNoError;
3438 }
3439
3440 error::Error GLES2DecoderImpl::HandleDrawBuffersEXTImmediate( 2808 error::Error GLES2DecoderImpl::HandleDrawBuffersEXTImmediate(
3441 uint32_t immediate_data_size, 2809 uint32_t immediate_data_size,
3442 const gles2::cmds::DrawBuffersEXTImmediate& c) { 2810 const gles2::cmds::DrawBuffersEXTImmediate& c) {
3443 GLsizei count = static_cast<GLsizei>(c.count); 2811 GLsizei count = static_cast<GLsizei>(c.count);
3444 uint32_t data_size; 2812 uint32_t data_size;
3445 if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { 2813 if (!ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
3446 return error::kOutOfBounds; 2814 return error::kOutOfBounds;
3447 } 2815 }
3448 if (data_size > immediate_data_size) { 2816 if (data_size > immediate_data_size) {
3449 return error::kOutOfBounds; 2817 return error::kOutOfBounds;
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
3532 state_.ignore_cached_state) { 2900 state_.ignore_cached_state) {
3533 framebuffer_state_.clear_state_dirty = true; 2901 framebuffer_state_.clear_state_dirty = true;
3534 } 2902 }
3535 return false; 2903 return false;
3536 default: 2904 default:
3537 NOTREACHED(); 2905 NOTREACHED();
3538 return false; 2906 return false;
3539 } 2907 }
3540 } 2908 }
3541 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ 2909 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_
OLDNEW
« no previous file with comments | « gpu/command_buffer/common/gles2_cmd_ids_autogen.h ('k') | gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698