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

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

Issue 2692573002: Auto-generate null checks for pointer arguemnts in the passthrough cmd decoder. (Closed)
Patch Set: use nullptr instead of NULL Created 3 years, 10 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
« no previous file with comments | « gpu/command_buffer/build_gles2_cmd_buffer.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 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 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 GLint drawbuffers = static_cast<GLint>(c.drawbuffers); 308 GLint drawbuffers = static_cast<GLint>(c.drawbuffers);
309 uint32_t data_size; 309 uint32_t data_size;
310 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) { 310 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) {
311 return error::kOutOfBounds; 311 return error::kOutOfBounds;
312 } 312 }
313 if (data_size > immediate_data_size) { 313 if (data_size > immediate_data_size) {
314 return error::kOutOfBounds; 314 return error::kOutOfBounds;
315 } 315 }
316 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>( 316 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
317 c, data_size, immediate_data_size); 317 c, data_size, immediate_data_size);
318 if (value == nullptr) {
319 return error::kOutOfBounds;
320 }
318 error::Error error = DoClearBufferfv(buffer, drawbuffers, value); 321 error::Error error = DoClearBufferfv(buffer, drawbuffers, value);
319 if (error != error::kNoError) { 322 if (error != error::kNoError) {
320 return error; 323 return error;
321 } 324 }
322 return error::kNoError; 325 return error::kNoError;
323 } 326 }
324 327
325 error::Error GLES2DecoderPassthroughImpl::HandleClearBufferivImmediate( 328 error::Error GLES2DecoderPassthroughImpl::HandleClearBufferivImmediate(
326 uint32_t immediate_data_size, 329 uint32_t immediate_data_size,
327 const volatile void* cmd_data) { 330 const volatile void* cmd_data) {
328 const volatile gles2::cmds::ClearBufferivImmediate& c = 331 const volatile gles2::cmds::ClearBufferivImmediate& c =
329 *static_cast<const volatile gles2::cmds::ClearBufferivImmediate*>( 332 *static_cast<const volatile gles2::cmds::ClearBufferivImmediate*>(
330 cmd_data); 333 cmd_data);
331 GLenum buffer = static_cast<GLenum>(c.buffer); 334 GLenum buffer = static_cast<GLenum>(c.buffer);
332 GLint drawbuffers = static_cast<GLint>(c.drawbuffers); 335 GLint drawbuffers = static_cast<GLint>(c.drawbuffers);
333 uint32_t data_size; 336 uint32_t data_size;
334 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 4, &data_size)) { 337 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 4, &data_size)) {
335 return error::kOutOfBounds; 338 return error::kOutOfBounds;
336 } 339 }
337 if (data_size > immediate_data_size) { 340 if (data_size > immediate_data_size) {
338 return error::kOutOfBounds; 341 return error::kOutOfBounds;
339 } 342 }
340 volatile const GLint* value = GetImmediateDataAs<volatile const GLint*>( 343 volatile const GLint* value = GetImmediateDataAs<volatile const GLint*>(
341 c, data_size, immediate_data_size); 344 c, data_size, immediate_data_size);
345 if (value == nullptr) {
346 return error::kOutOfBounds;
347 }
342 error::Error error = DoClearBufferiv(buffer, drawbuffers, value); 348 error::Error error = DoClearBufferiv(buffer, drawbuffers, value);
343 if (error != error::kNoError) { 349 if (error != error::kNoError) {
344 return error; 350 return error;
345 } 351 }
346 return error::kNoError; 352 return error::kNoError;
347 } 353 }
348 354
349 error::Error GLES2DecoderPassthroughImpl::HandleClearBufferuivImmediate( 355 error::Error GLES2DecoderPassthroughImpl::HandleClearBufferuivImmediate(
350 uint32_t immediate_data_size, 356 uint32_t immediate_data_size,
351 const volatile void* cmd_data) { 357 const volatile void* cmd_data) {
352 const volatile gles2::cmds::ClearBufferuivImmediate& c = 358 const volatile gles2::cmds::ClearBufferuivImmediate& c =
353 *static_cast<const volatile gles2::cmds::ClearBufferuivImmediate*>( 359 *static_cast<const volatile gles2::cmds::ClearBufferuivImmediate*>(
354 cmd_data); 360 cmd_data);
355 GLenum buffer = static_cast<GLenum>(c.buffer); 361 GLenum buffer = static_cast<GLenum>(c.buffer);
356 GLint drawbuffers = static_cast<GLint>(c.drawbuffers); 362 GLint drawbuffers = static_cast<GLint>(c.drawbuffers);
357 uint32_t data_size; 363 uint32_t data_size;
358 if (!GLES2Util::ComputeDataSize(1, sizeof(GLuint), 4, &data_size)) { 364 if (!GLES2Util::ComputeDataSize(1, sizeof(GLuint), 4, &data_size)) {
359 return error::kOutOfBounds; 365 return error::kOutOfBounds;
360 } 366 }
361 if (data_size > immediate_data_size) { 367 if (data_size > immediate_data_size) {
362 return error::kOutOfBounds; 368 return error::kOutOfBounds;
363 } 369 }
364 volatile const GLuint* value = GetImmediateDataAs<volatile const GLuint*>( 370 volatile const GLuint* value = GetImmediateDataAs<volatile const GLuint*>(
365 c, data_size, immediate_data_size); 371 c, data_size, immediate_data_size);
372 if (value == nullptr) {
373 return error::kOutOfBounds;
374 }
366 error::Error error = DoClearBufferuiv(buffer, drawbuffers, value); 375 error::Error error = DoClearBufferuiv(buffer, drawbuffers, value);
367 if (error != error::kNoError) { 376 if (error != error::kNoError) {
368 return error; 377 return error;
369 } 378 }
370 return error::kNoError; 379 return error::kNoError;
371 } 380 }
372 381
373 error::Error GLES2DecoderPassthroughImpl::HandleClearColor( 382 error::Error GLES2DecoderPassthroughImpl::HandleClearColor(
374 uint32_t immediate_data_size, 383 uint32_t immediate_data_size,
375 const volatile void* cmd_data) { 384 const volatile void* cmd_data) {
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 const volatile gles2::cmds::DeleteBuffersImmediate& c = 551 const volatile gles2::cmds::DeleteBuffersImmediate& c =
543 *static_cast<const volatile gles2::cmds::DeleteBuffersImmediate*>( 552 *static_cast<const volatile gles2::cmds::DeleteBuffersImmediate*>(
544 cmd_data); 553 cmd_data);
545 GLsizei n = static_cast<GLsizei>(c.n); 554 GLsizei n = static_cast<GLsizei>(c.n);
546 uint32_t data_size; 555 uint32_t data_size;
547 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 556 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
548 return error::kOutOfBounds; 557 return error::kOutOfBounds;
549 } 558 }
550 volatile const GLuint* buffers = GetImmediateDataAs<volatile const GLuint*>( 559 volatile const GLuint* buffers = GetImmediateDataAs<volatile const GLuint*>(
551 c, data_size, immediate_data_size); 560 c, data_size, immediate_data_size);
561 if (buffers == nullptr) {
562 return error::kOutOfBounds;
563 }
552 error::Error error = DoDeleteBuffers(n, buffers); 564 error::Error error = DoDeleteBuffers(n, buffers);
553 if (error != error::kNoError) { 565 if (error != error::kNoError) {
554 return error; 566 return error;
555 } 567 }
556 return error::kNoError; 568 return error::kNoError;
557 } 569 }
558 570
559 error::Error GLES2DecoderPassthroughImpl::HandleDeleteFramebuffersImmediate( 571 error::Error GLES2DecoderPassthroughImpl::HandleDeleteFramebuffersImmediate(
560 uint32_t immediate_data_size, 572 uint32_t immediate_data_size,
561 const volatile void* cmd_data) { 573 const volatile void* cmd_data) {
562 const volatile gles2::cmds::DeleteFramebuffersImmediate& c = 574 const volatile gles2::cmds::DeleteFramebuffersImmediate& c =
563 *static_cast<const volatile gles2::cmds::DeleteFramebuffersImmediate*>( 575 *static_cast<const volatile gles2::cmds::DeleteFramebuffersImmediate*>(
564 cmd_data); 576 cmd_data);
565 GLsizei n = static_cast<GLsizei>(c.n); 577 GLsizei n = static_cast<GLsizei>(c.n);
566 uint32_t data_size; 578 uint32_t data_size;
567 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 579 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
568 return error::kOutOfBounds; 580 return error::kOutOfBounds;
569 } 581 }
570 volatile const GLuint* framebuffers = 582 volatile const GLuint* framebuffers =
571 GetImmediateDataAs<volatile const GLuint*>(c, data_size, 583 GetImmediateDataAs<volatile const GLuint*>(c, data_size,
572 immediate_data_size); 584 immediate_data_size);
585 if (framebuffers == nullptr) {
586 return error::kOutOfBounds;
587 }
573 error::Error error = DoDeleteFramebuffers(n, framebuffers); 588 error::Error error = DoDeleteFramebuffers(n, framebuffers);
574 if (error != error::kNoError) { 589 if (error != error::kNoError) {
575 return error; 590 return error;
576 } 591 }
577 return error::kNoError; 592 return error::kNoError;
578 } 593 }
579 594
580 error::Error GLES2DecoderPassthroughImpl::HandleDeleteProgram( 595 error::Error GLES2DecoderPassthroughImpl::HandleDeleteProgram(
581 uint32_t immediate_data_size, 596 uint32_t immediate_data_size,
582 const volatile void* cmd_data) { 597 const volatile void* cmd_data) {
(...skipping 14 matching lines...) Expand all
597 *static_cast<const volatile gles2::cmds::DeleteRenderbuffersImmediate*>( 612 *static_cast<const volatile gles2::cmds::DeleteRenderbuffersImmediate*>(
598 cmd_data); 613 cmd_data);
599 GLsizei n = static_cast<GLsizei>(c.n); 614 GLsizei n = static_cast<GLsizei>(c.n);
600 uint32_t data_size; 615 uint32_t data_size;
601 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 616 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
602 return error::kOutOfBounds; 617 return error::kOutOfBounds;
603 } 618 }
604 volatile const GLuint* renderbuffers = 619 volatile const GLuint* renderbuffers =
605 GetImmediateDataAs<volatile const GLuint*>(c, data_size, 620 GetImmediateDataAs<volatile const GLuint*>(c, data_size,
606 immediate_data_size); 621 immediate_data_size);
622 if (renderbuffers == nullptr) {
623 return error::kOutOfBounds;
624 }
607 error::Error error = DoDeleteRenderbuffers(n, renderbuffers); 625 error::Error error = DoDeleteRenderbuffers(n, renderbuffers);
608 if (error != error::kNoError) { 626 if (error != error::kNoError) {
609 return error; 627 return error;
610 } 628 }
611 return error::kNoError; 629 return error::kNoError;
612 } 630 }
613 631
614 error::Error GLES2DecoderPassthroughImpl::HandleDeleteSamplersImmediate( 632 error::Error GLES2DecoderPassthroughImpl::HandleDeleteSamplersImmediate(
615 uint32_t immediate_data_size, 633 uint32_t immediate_data_size,
616 const volatile void* cmd_data) { 634 const volatile void* cmd_data) {
617 const volatile gles2::cmds::DeleteSamplersImmediate& c = 635 const volatile gles2::cmds::DeleteSamplersImmediate& c =
618 *static_cast<const volatile gles2::cmds::DeleteSamplersImmediate*>( 636 *static_cast<const volatile gles2::cmds::DeleteSamplersImmediate*>(
619 cmd_data); 637 cmd_data);
620 GLsizei n = static_cast<GLsizei>(c.n); 638 GLsizei n = static_cast<GLsizei>(c.n);
621 uint32_t data_size; 639 uint32_t data_size;
622 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 640 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
623 return error::kOutOfBounds; 641 return error::kOutOfBounds;
624 } 642 }
625 volatile const GLuint* samplers = GetImmediateDataAs<volatile const GLuint*>( 643 volatile const GLuint* samplers = GetImmediateDataAs<volatile const GLuint*>(
626 c, data_size, immediate_data_size); 644 c, data_size, immediate_data_size);
645 if (samplers == nullptr) {
646 return error::kOutOfBounds;
647 }
627 error::Error error = DoDeleteSamplers(n, samplers); 648 error::Error error = DoDeleteSamplers(n, samplers);
628 if (error != error::kNoError) { 649 if (error != error::kNoError) {
629 return error; 650 return error;
630 } 651 }
631 return error::kNoError; 652 return error::kNoError;
632 } 653 }
633 654
634 error::Error GLES2DecoderPassthroughImpl::HandleDeleteSync( 655 error::Error GLES2DecoderPassthroughImpl::HandleDeleteSync(
635 uint32_t immediate_data_size, 656 uint32_t immediate_data_size,
636 const volatile void* cmd_data) { 657 const volatile void* cmd_data) {
(...skipping 26 matching lines...) Expand all
663 const volatile gles2::cmds::DeleteTexturesImmediate& c = 684 const volatile gles2::cmds::DeleteTexturesImmediate& c =
664 *static_cast<const volatile gles2::cmds::DeleteTexturesImmediate*>( 685 *static_cast<const volatile gles2::cmds::DeleteTexturesImmediate*>(
665 cmd_data); 686 cmd_data);
666 GLsizei n = static_cast<GLsizei>(c.n); 687 GLsizei n = static_cast<GLsizei>(c.n);
667 uint32_t data_size; 688 uint32_t data_size;
668 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 689 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
669 return error::kOutOfBounds; 690 return error::kOutOfBounds;
670 } 691 }
671 volatile const GLuint* textures = GetImmediateDataAs<volatile const GLuint*>( 692 volatile const GLuint* textures = GetImmediateDataAs<volatile const GLuint*>(
672 c, data_size, immediate_data_size); 693 c, data_size, immediate_data_size);
694 if (textures == nullptr) {
695 return error::kOutOfBounds;
696 }
673 error::Error error = DoDeleteTextures(n, textures); 697 error::Error error = DoDeleteTextures(n, textures);
674 if (error != error::kNoError) { 698 if (error != error::kNoError) {
675 return error; 699 return error;
676 } 700 }
677 return error::kNoError; 701 return error::kNoError;
678 } 702 }
679 703
680 error::Error 704 error::Error
681 GLES2DecoderPassthroughImpl::HandleDeleteTransformFeedbacksImmediate( 705 GLES2DecoderPassthroughImpl::HandleDeleteTransformFeedbacksImmediate(
682 uint32_t immediate_data_size, 706 uint32_t immediate_data_size,
683 const volatile void* cmd_data) { 707 const volatile void* cmd_data) {
684 const volatile gles2::cmds::DeleteTransformFeedbacksImmediate& c = 708 const volatile gles2::cmds::DeleteTransformFeedbacksImmediate& c =
685 *static_cast< 709 *static_cast<
686 const volatile gles2::cmds::DeleteTransformFeedbacksImmediate*>( 710 const volatile gles2::cmds::DeleteTransformFeedbacksImmediate*>(
687 cmd_data); 711 cmd_data);
688 GLsizei n = static_cast<GLsizei>(c.n); 712 GLsizei n = static_cast<GLsizei>(c.n);
689 uint32_t data_size; 713 uint32_t data_size;
690 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 714 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
691 return error::kOutOfBounds; 715 return error::kOutOfBounds;
692 } 716 }
693 volatile const GLuint* ids = GetImmediateDataAs<volatile const GLuint*>( 717 volatile const GLuint* ids = GetImmediateDataAs<volatile const GLuint*>(
694 c, data_size, immediate_data_size); 718 c, data_size, immediate_data_size);
719 if (ids == nullptr) {
720 return error::kOutOfBounds;
721 }
695 error::Error error = DoDeleteTransformFeedbacks(n, ids); 722 error::Error error = DoDeleteTransformFeedbacks(n, ids);
696 if (error != error::kNoError) { 723 if (error != error::kNoError) {
697 return error; 724 return error;
698 } 725 }
699 return error::kNoError; 726 return error::kNoError;
700 } 727 }
701 728
702 error::Error GLES2DecoderPassthroughImpl::HandleDepthFunc( 729 error::Error GLES2DecoderPassthroughImpl::HandleDepthFunc(
703 uint32_t immediate_data_size, 730 uint32_t immediate_data_size,
704 const volatile void* cmd_data) { 731 const volatile void* cmd_data) {
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
900 const volatile void* cmd_data) { 927 const volatile void* cmd_data) {
901 const volatile gles2::cmds::GenBuffersImmediate& c = 928 const volatile gles2::cmds::GenBuffersImmediate& c =
902 *static_cast<const volatile gles2::cmds::GenBuffersImmediate*>(cmd_data); 929 *static_cast<const volatile gles2::cmds::GenBuffersImmediate*>(cmd_data);
903 GLsizei n = static_cast<GLsizei>(c.n); 930 GLsizei n = static_cast<GLsizei>(c.n);
904 uint32_t data_size; 931 uint32_t data_size;
905 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 932 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
906 return error::kOutOfBounds; 933 return error::kOutOfBounds;
907 } 934 }
908 volatile GLuint* buffers = 935 volatile GLuint* buffers =
909 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size); 936 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
937 if (buffers == nullptr) {
938 return error::kOutOfBounds;
939 }
910 error::Error error = DoGenBuffers(n, buffers); 940 error::Error error = DoGenBuffers(n, buffers);
911 if (error != error::kNoError) { 941 if (error != error::kNoError) {
912 return error; 942 return error;
913 } 943 }
914 return error::kNoError; 944 return error::kNoError;
915 } 945 }
916 946
917 error::Error GLES2DecoderPassthroughImpl::HandleGenerateMipmap( 947 error::Error GLES2DecoderPassthroughImpl::HandleGenerateMipmap(
918 uint32_t immediate_data_size, 948 uint32_t immediate_data_size,
919 const volatile void* cmd_data) { 949 const volatile void* cmd_data) {
(...skipping 13 matching lines...) Expand all
933 const volatile gles2::cmds::GenFramebuffersImmediate& c = 963 const volatile gles2::cmds::GenFramebuffersImmediate& c =
934 *static_cast<const volatile gles2::cmds::GenFramebuffersImmediate*>( 964 *static_cast<const volatile gles2::cmds::GenFramebuffersImmediate*>(
935 cmd_data); 965 cmd_data);
936 GLsizei n = static_cast<GLsizei>(c.n); 966 GLsizei n = static_cast<GLsizei>(c.n);
937 uint32_t data_size; 967 uint32_t data_size;
938 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 968 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
939 return error::kOutOfBounds; 969 return error::kOutOfBounds;
940 } 970 }
941 volatile GLuint* framebuffers = 971 volatile GLuint* framebuffers =
942 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size); 972 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
973 if (framebuffers == nullptr) {
974 return error::kOutOfBounds;
975 }
943 error::Error error = DoGenFramebuffers(n, framebuffers); 976 error::Error error = DoGenFramebuffers(n, framebuffers);
944 if (error != error::kNoError) { 977 if (error != error::kNoError) {
945 return error; 978 return error;
946 } 979 }
947 return error::kNoError; 980 return error::kNoError;
948 } 981 }
949 982
950 error::Error GLES2DecoderPassthroughImpl::HandleGenRenderbuffersImmediate( 983 error::Error GLES2DecoderPassthroughImpl::HandleGenRenderbuffersImmediate(
951 uint32_t immediate_data_size, 984 uint32_t immediate_data_size,
952 const volatile void* cmd_data) { 985 const volatile void* cmd_data) {
953 const volatile gles2::cmds::GenRenderbuffersImmediate& c = 986 const volatile gles2::cmds::GenRenderbuffersImmediate& c =
954 *static_cast<const volatile gles2::cmds::GenRenderbuffersImmediate*>( 987 *static_cast<const volatile gles2::cmds::GenRenderbuffersImmediate*>(
955 cmd_data); 988 cmd_data);
956 GLsizei n = static_cast<GLsizei>(c.n); 989 GLsizei n = static_cast<GLsizei>(c.n);
957 uint32_t data_size; 990 uint32_t data_size;
958 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 991 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
959 return error::kOutOfBounds; 992 return error::kOutOfBounds;
960 } 993 }
961 volatile GLuint* renderbuffers = 994 volatile GLuint* renderbuffers =
962 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size); 995 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
996 if (renderbuffers == nullptr) {
997 return error::kOutOfBounds;
998 }
963 error::Error error = DoGenRenderbuffers(n, renderbuffers); 999 error::Error error = DoGenRenderbuffers(n, renderbuffers);
964 if (error != error::kNoError) { 1000 if (error != error::kNoError) {
965 return error; 1001 return error;
966 } 1002 }
967 return error::kNoError; 1003 return error::kNoError;
968 } 1004 }
969 1005
970 error::Error GLES2DecoderPassthroughImpl::HandleGenSamplersImmediate( 1006 error::Error GLES2DecoderPassthroughImpl::HandleGenSamplersImmediate(
971 uint32_t immediate_data_size, 1007 uint32_t immediate_data_size,
972 const volatile void* cmd_data) { 1008 const volatile void* cmd_data) {
973 const volatile gles2::cmds::GenSamplersImmediate& c = 1009 const volatile gles2::cmds::GenSamplersImmediate& c =
974 *static_cast<const volatile gles2::cmds::GenSamplersImmediate*>(cmd_data); 1010 *static_cast<const volatile gles2::cmds::GenSamplersImmediate*>(cmd_data);
975 GLsizei n = static_cast<GLsizei>(c.n); 1011 GLsizei n = static_cast<GLsizei>(c.n);
976 uint32_t data_size; 1012 uint32_t data_size;
977 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 1013 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
978 return error::kOutOfBounds; 1014 return error::kOutOfBounds;
979 } 1015 }
980 volatile GLuint* samplers = 1016 volatile GLuint* samplers =
981 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size); 1017 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
1018 if (samplers == nullptr) {
1019 return error::kOutOfBounds;
1020 }
982 error::Error error = DoGenSamplers(n, samplers); 1021 error::Error error = DoGenSamplers(n, samplers);
983 if (error != error::kNoError) { 1022 if (error != error::kNoError) {
984 return error; 1023 return error;
985 } 1024 }
986 return error::kNoError; 1025 return error::kNoError;
987 } 1026 }
988 1027
989 error::Error GLES2DecoderPassthroughImpl::HandleGenTexturesImmediate( 1028 error::Error GLES2DecoderPassthroughImpl::HandleGenTexturesImmediate(
990 uint32_t immediate_data_size, 1029 uint32_t immediate_data_size,
991 const volatile void* cmd_data) { 1030 const volatile void* cmd_data) {
992 const volatile gles2::cmds::GenTexturesImmediate& c = 1031 const volatile gles2::cmds::GenTexturesImmediate& c =
993 *static_cast<const volatile gles2::cmds::GenTexturesImmediate*>(cmd_data); 1032 *static_cast<const volatile gles2::cmds::GenTexturesImmediate*>(cmd_data);
994 GLsizei n = static_cast<GLsizei>(c.n); 1033 GLsizei n = static_cast<GLsizei>(c.n);
995 uint32_t data_size; 1034 uint32_t data_size;
996 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 1035 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
997 return error::kOutOfBounds; 1036 return error::kOutOfBounds;
998 } 1037 }
999 volatile GLuint* textures = 1038 volatile GLuint* textures =
1000 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size); 1039 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
1040 if (textures == nullptr) {
1041 return error::kOutOfBounds;
1042 }
1001 error::Error error = DoGenTextures(n, textures); 1043 error::Error error = DoGenTextures(n, textures);
1002 if (error != error::kNoError) { 1044 if (error != error::kNoError) {
1003 return error; 1045 return error;
1004 } 1046 }
1005 return error::kNoError; 1047 return error::kNoError;
1006 } 1048 }
1007 1049
1008 error::Error GLES2DecoderPassthroughImpl::HandleGenTransformFeedbacksImmediate( 1050 error::Error GLES2DecoderPassthroughImpl::HandleGenTransformFeedbacksImmediate(
1009 uint32_t immediate_data_size, 1051 uint32_t immediate_data_size,
1010 const volatile void* cmd_data) { 1052 const volatile void* cmd_data) {
1011 const volatile gles2::cmds::GenTransformFeedbacksImmediate& c = 1053 const volatile gles2::cmds::GenTransformFeedbacksImmediate& c =
1012 *static_cast<const volatile gles2::cmds::GenTransformFeedbacksImmediate*>( 1054 *static_cast<const volatile gles2::cmds::GenTransformFeedbacksImmediate*>(
1013 cmd_data); 1055 cmd_data);
1014 GLsizei n = static_cast<GLsizei>(c.n); 1056 GLsizei n = static_cast<GLsizei>(c.n);
1015 uint32_t data_size; 1057 uint32_t data_size;
1016 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 1058 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
1017 return error::kOutOfBounds; 1059 return error::kOutOfBounds;
1018 } 1060 }
1019 volatile GLuint* ids = 1061 volatile GLuint* ids =
1020 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size); 1062 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
1063 if (ids == nullptr) {
1064 return error::kOutOfBounds;
1065 }
1021 error::Error error = DoGenTransformFeedbacks(n, ids); 1066 error::Error error = DoGenTransformFeedbacks(n, ids);
1022 if (error != error::kNoError) { 1067 if (error != error::kNoError) {
1023 return error; 1068 return error;
1024 } 1069 }
1025 return error::kNoError; 1070 return error::kNoError;
1026 } 1071 }
1027 1072
1028 error::Error GLES2DecoderPassthroughImpl::HandleGetBooleanv( 1073 error::Error GLES2DecoderPassthroughImpl::HandleGetBooleanv(
1029 uint32_t immediate_data_size, 1074 uint32_t immediate_data_size,
1030 const volatile void* cmd_data) { 1075 const volatile void* cmd_data) {
(...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after
1694 if (count >= 0 && 1739 if (count >= 0 &&
1695 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { 1740 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
1696 return error::kOutOfBounds; 1741 return error::kOutOfBounds;
1697 } 1742 }
1698 if (data_size > immediate_data_size) { 1743 if (data_size > immediate_data_size) {
1699 return error::kOutOfBounds; 1744 return error::kOutOfBounds;
1700 } 1745 }
1701 volatile const GLenum* attachments = 1746 volatile const GLenum* attachments =
1702 GetImmediateDataAs<volatile const GLenum*>(c, data_size, 1747 GetImmediateDataAs<volatile const GLenum*>(c, data_size,
1703 immediate_data_size); 1748 immediate_data_size);
1749 if (attachments == nullptr) {
1750 return error::kOutOfBounds;
1751 }
1704 error::Error error = DoInvalidateFramebuffer(target, count, attachments); 1752 error::Error error = DoInvalidateFramebuffer(target, count, attachments);
1705 if (error != error::kNoError) { 1753 if (error != error::kNoError) {
1706 return error; 1754 return error;
1707 } 1755 }
1708 return error::kNoError; 1756 return error::kNoError;
1709 } 1757 }
1710 1758
1711 error::Error 1759 error::Error
1712 GLES2DecoderPassthroughImpl::HandleInvalidateSubFramebufferImmediate( 1760 GLES2DecoderPassthroughImpl::HandleInvalidateSubFramebufferImmediate(
1713 uint32_t immediate_data_size, 1761 uint32_t immediate_data_size,
(...skipping 12 matching lines...) Expand all
1726 if (data_size > immediate_data_size) { 1774 if (data_size > immediate_data_size) {
1727 return error::kOutOfBounds; 1775 return error::kOutOfBounds;
1728 } 1776 }
1729 volatile const GLenum* attachments = 1777 volatile const GLenum* attachments =
1730 GetImmediateDataAs<volatile const GLenum*>(c, data_size, 1778 GetImmediateDataAs<volatile const GLenum*>(c, data_size,
1731 immediate_data_size); 1779 immediate_data_size);
1732 GLint x = static_cast<GLint>(c.x); 1780 GLint x = static_cast<GLint>(c.x);
1733 GLint y = static_cast<GLint>(c.y); 1781 GLint y = static_cast<GLint>(c.y);
1734 GLsizei width = static_cast<GLsizei>(c.width); 1782 GLsizei width = static_cast<GLsizei>(c.width);
1735 GLsizei height = static_cast<GLsizei>(c.height); 1783 GLsizei height = static_cast<GLsizei>(c.height);
1784 if (attachments == nullptr) {
1785 return error::kOutOfBounds;
1786 }
1736 error::Error error = DoInvalidateSubFramebuffer(target, count, attachments, x, 1787 error::Error error = DoInvalidateSubFramebuffer(target, count, attachments, x,
1737 y, width, height); 1788 y, width, height);
1738 if (error != error::kNoError) { 1789 if (error != error::kNoError) {
1739 return error; 1790 return error;
1740 } 1791 }
1741 return error::kNoError; 1792 return error::kNoError;
1742 } 1793 }
1743 1794
1744 error::Error GLES2DecoderPassthroughImpl::HandleIsBuffer( 1795 error::Error GLES2DecoderPassthroughImpl::HandleIsBuffer(
1745 uint32_t immediate_data_size, 1796 uint32_t immediate_data_size,
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
2070 GLenum pname = static_cast<GLenum>(c.pname); 2121 GLenum pname = static_cast<GLenum>(c.pname);
2071 uint32_t data_size; 2122 uint32_t data_size;
2072 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { 2123 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
2073 return error::kOutOfBounds; 2124 return error::kOutOfBounds;
2074 } 2125 }
2075 if (data_size > immediate_data_size) { 2126 if (data_size > immediate_data_size) {
2076 return error::kOutOfBounds; 2127 return error::kOutOfBounds;
2077 } 2128 }
2078 volatile const GLfloat* params = GetImmediateDataAs<volatile const GLfloat*>( 2129 volatile const GLfloat* params = GetImmediateDataAs<volatile const GLfloat*>(
2079 c, data_size, immediate_data_size); 2130 c, data_size, immediate_data_size);
2131 if (params == nullptr) {
2132 return error::kOutOfBounds;
2133 }
2080 error::Error error = DoSamplerParameterfv(sampler, pname, params); 2134 error::Error error = DoSamplerParameterfv(sampler, pname, params);
2081 if (error != error::kNoError) { 2135 if (error != error::kNoError) {
2082 return error; 2136 return error;
2083 } 2137 }
2084 return error::kNoError; 2138 return error::kNoError;
2085 } 2139 }
2086 2140
2087 error::Error GLES2DecoderPassthroughImpl::HandleSamplerParameteri( 2141 error::Error GLES2DecoderPassthroughImpl::HandleSamplerParameteri(
2088 uint32_t immediate_data_size, 2142 uint32_t immediate_data_size,
2089 const volatile void* cmd_data) { 2143 const volatile void* cmd_data) {
(...skipping 19 matching lines...) Expand all
2109 GLenum pname = static_cast<GLenum>(c.pname); 2163 GLenum pname = static_cast<GLenum>(c.pname);
2110 uint32_t data_size; 2164 uint32_t data_size;
2111 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 1, &data_size)) { 2165 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 1, &data_size)) {
2112 return error::kOutOfBounds; 2166 return error::kOutOfBounds;
2113 } 2167 }
2114 if (data_size > immediate_data_size) { 2168 if (data_size > immediate_data_size) {
2115 return error::kOutOfBounds; 2169 return error::kOutOfBounds;
2116 } 2170 }
2117 volatile const GLint* params = GetImmediateDataAs<volatile const GLint*>( 2171 volatile const GLint* params = GetImmediateDataAs<volatile const GLint*>(
2118 c, data_size, immediate_data_size); 2172 c, data_size, immediate_data_size);
2173 if (params == nullptr) {
2174 return error::kOutOfBounds;
2175 }
2119 error::Error error = DoSamplerParameteriv(sampler, pname, params); 2176 error::Error error = DoSamplerParameteriv(sampler, pname, params);
2120 if (error != error::kNoError) { 2177 if (error != error::kNoError) {
2121 return error; 2178 return error;
2122 } 2179 }
2123 return error::kNoError; 2180 return error::kNoError;
2124 } 2181 }
2125 2182
2126 error::Error GLES2DecoderPassthroughImpl::HandleScissor( 2183 error::Error GLES2DecoderPassthroughImpl::HandleScissor(
2127 uint32_t immediate_data_size, 2184 uint32_t immediate_data_size,
2128 const volatile void* cmd_data) { 2185 const volatile void* cmd_data) {
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
2282 GLenum pname = static_cast<GLenum>(c.pname); 2339 GLenum pname = static_cast<GLenum>(c.pname);
2283 uint32_t data_size; 2340 uint32_t data_size;
2284 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { 2341 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
2285 return error::kOutOfBounds; 2342 return error::kOutOfBounds;
2286 } 2343 }
2287 if (data_size > immediate_data_size) { 2344 if (data_size > immediate_data_size) {
2288 return error::kOutOfBounds; 2345 return error::kOutOfBounds;
2289 } 2346 }
2290 volatile const GLfloat* params = GetImmediateDataAs<volatile const GLfloat*>( 2347 volatile const GLfloat* params = GetImmediateDataAs<volatile const GLfloat*>(
2291 c, data_size, immediate_data_size); 2348 c, data_size, immediate_data_size);
2349 if (params == nullptr) {
2350 return error::kOutOfBounds;
2351 }
2292 error::Error error = DoTexParameterfv(target, pname, params); 2352 error::Error error = DoTexParameterfv(target, pname, params);
2293 if (error != error::kNoError) { 2353 if (error != error::kNoError) {
2294 return error; 2354 return error;
2295 } 2355 }
2296 return error::kNoError; 2356 return error::kNoError;
2297 } 2357 }
2298 2358
2299 error::Error GLES2DecoderPassthroughImpl::HandleTexParameteri( 2359 error::Error GLES2DecoderPassthroughImpl::HandleTexParameteri(
2300 uint32_t immediate_data_size, 2360 uint32_t immediate_data_size,
2301 const volatile void* cmd_data) { 2361 const volatile void* cmd_data) {
(...skipping 19 matching lines...) Expand all
2321 GLenum pname = static_cast<GLenum>(c.pname); 2381 GLenum pname = static_cast<GLenum>(c.pname);
2322 uint32_t data_size; 2382 uint32_t data_size;
2323 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 1, &data_size)) { 2383 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 1, &data_size)) {
2324 return error::kOutOfBounds; 2384 return error::kOutOfBounds;
2325 } 2385 }
2326 if (data_size > immediate_data_size) { 2386 if (data_size > immediate_data_size) {
2327 return error::kOutOfBounds; 2387 return error::kOutOfBounds;
2328 } 2388 }
2329 volatile const GLint* params = GetImmediateDataAs<volatile const GLint*>( 2389 volatile const GLint* params = GetImmediateDataAs<volatile const GLint*>(
2330 c, data_size, immediate_data_size); 2390 c, data_size, immediate_data_size);
2391 if (params == nullptr) {
2392 return error::kOutOfBounds;
2393 }
2331 error::Error error = DoTexParameteriv(target, pname, params); 2394 error::Error error = DoTexParameteriv(target, pname, params);
2332 if (error != error::kNoError) { 2395 if (error != error::kNoError) {
2333 return error; 2396 return error;
2334 } 2397 }
2335 return error::kNoError; 2398 return error::kNoError;
2336 } 2399 }
2337 2400
2338 error::Error GLES2DecoderPassthroughImpl::HandleTexStorage3D( 2401 error::Error GLES2DecoderPassthroughImpl::HandleTexStorage3D(
2339 uint32_t immediate_data_size, 2402 uint32_t immediate_data_size,
2340 const volatile void* cmd_data) { 2403 const volatile void* cmd_data) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2409 uint32_t data_size = 0; 2472 uint32_t data_size = 0;
2410 if (count >= 0 && 2473 if (count >= 0 &&
2411 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 1, &data_size)) { 2474 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 1, &data_size)) {
2412 return error::kOutOfBounds; 2475 return error::kOutOfBounds;
2413 } 2476 }
2414 if (data_size > immediate_data_size) { 2477 if (data_size > immediate_data_size) {
2415 return error::kOutOfBounds; 2478 return error::kOutOfBounds;
2416 } 2479 }
2417 volatile const GLfloat* v = GetImmediateDataAs<volatile const GLfloat*>( 2480 volatile const GLfloat* v = GetImmediateDataAs<volatile const GLfloat*>(
2418 c, data_size, immediate_data_size); 2481 c, data_size, immediate_data_size);
2482 if (v == nullptr) {
2483 return error::kOutOfBounds;
2484 }
2419 error::Error error = DoUniform1fv(location, count, v); 2485 error::Error error = DoUniform1fv(location, count, v);
2420 if (error != error::kNoError) { 2486 if (error != error::kNoError) {
2421 return error; 2487 return error;
2422 } 2488 }
2423 return error::kNoError; 2489 return error::kNoError;
2424 } 2490 }
2425 2491
2426 error::Error GLES2DecoderPassthroughImpl::HandleUniform1i( 2492 error::Error GLES2DecoderPassthroughImpl::HandleUniform1i(
2427 uint32_t immediate_data_size, 2493 uint32_t immediate_data_size,
2428 const volatile void* cmd_data) { 2494 const volatile void* cmd_data) {
(...skipping 18 matching lines...) Expand all
2447 uint32_t data_size = 0; 2513 uint32_t data_size = 0;
2448 if (count >= 0 && 2514 if (count >= 0 &&
2449 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 1, &data_size)) { 2515 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 1, &data_size)) {
2450 return error::kOutOfBounds; 2516 return error::kOutOfBounds;
2451 } 2517 }
2452 if (data_size > immediate_data_size) { 2518 if (data_size > immediate_data_size) {
2453 return error::kOutOfBounds; 2519 return error::kOutOfBounds;
2454 } 2520 }
2455 volatile const GLint* v = GetImmediateDataAs<volatile const GLint*>( 2521 volatile const GLint* v = GetImmediateDataAs<volatile const GLint*>(
2456 c, data_size, immediate_data_size); 2522 c, data_size, immediate_data_size);
2523 if (v == nullptr) {
2524 return error::kOutOfBounds;
2525 }
2457 error::Error error = DoUniform1iv(location, count, v); 2526 error::Error error = DoUniform1iv(location, count, v);
2458 if (error != error::kNoError) { 2527 if (error != error::kNoError) {
2459 return error; 2528 return error;
2460 } 2529 }
2461 return error::kNoError; 2530 return error::kNoError;
2462 } 2531 }
2463 2532
2464 error::Error GLES2DecoderPassthroughImpl::HandleUniform1ui( 2533 error::Error GLES2DecoderPassthroughImpl::HandleUniform1ui(
2465 uint32_t immediate_data_size, 2534 uint32_t immediate_data_size,
2466 const volatile void* cmd_data) { 2535 const volatile void* cmd_data) {
(...skipping 18 matching lines...) Expand all
2485 uint32_t data_size = 0; 2554 uint32_t data_size = 0;
2486 if (count >= 0 && 2555 if (count >= 0 &&
2487 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 1, &data_size)) { 2556 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 1, &data_size)) {
2488 return error::kOutOfBounds; 2557 return error::kOutOfBounds;
2489 } 2558 }
2490 if (data_size > immediate_data_size) { 2559 if (data_size > immediate_data_size) {
2491 return error::kOutOfBounds; 2560 return error::kOutOfBounds;
2492 } 2561 }
2493 volatile const GLuint* v = GetImmediateDataAs<volatile const GLuint*>( 2562 volatile const GLuint* v = GetImmediateDataAs<volatile const GLuint*>(
2494 c, data_size, immediate_data_size); 2563 c, data_size, immediate_data_size);
2564 if (v == nullptr) {
2565 return error::kOutOfBounds;
2566 }
2495 error::Error error = DoUniform1uiv(location, count, v); 2567 error::Error error = DoUniform1uiv(location, count, v);
2496 if (error != error::kNoError) { 2568 if (error != error::kNoError) {
2497 return error; 2569 return error;
2498 } 2570 }
2499 return error::kNoError; 2571 return error::kNoError;
2500 } 2572 }
2501 2573
2502 error::Error GLES2DecoderPassthroughImpl::HandleUniform2f( 2574 error::Error GLES2DecoderPassthroughImpl::HandleUniform2f(
2503 uint32_t immediate_data_size, 2575 uint32_t immediate_data_size,
2504 const volatile void* cmd_data) { 2576 const volatile void* cmd_data) {
(...skipping 19 matching lines...) Expand all
2524 uint32_t data_size = 0; 2596 uint32_t data_size = 0;
2525 if (count >= 0 && 2597 if (count >= 0 &&
2526 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 2, &data_size)) { 2598 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 2, &data_size)) {
2527 return error::kOutOfBounds; 2599 return error::kOutOfBounds;
2528 } 2600 }
2529 if (data_size > immediate_data_size) { 2601 if (data_size > immediate_data_size) {
2530 return error::kOutOfBounds; 2602 return error::kOutOfBounds;
2531 } 2603 }
2532 volatile const GLfloat* v = GetImmediateDataAs<volatile const GLfloat*>( 2604 volatile const GLfloat* v = GetImmediateDataAs<volatile const GLfloat*>(
2533 c, data_size, immediate_data_size); 2605 c, data_size, immediate_data_size);
2606 if (v == nullptr) {
2607 return error::kOutOfBounds;
2608 }
2534 error::Error error = DoUniform2fv(location, count, v); 2609 error::Error error = DoUniform2fv(location, count, v);
2535 if (error != error::kNoError) { 2610 if (error != error::kNoError) {
2536 return error; 2611 return error;
2537 } 2612 }
2538 return error::kNoError; 2613 return error::kNoError;
2539 } 2614 }
2540 2615
2541 error::Error GLES2DecoderPassthroughImpl::HandleUniform2i( 2616 error::Error GLES2DecoderPassthroughImpl::HandleUniform2i(
2542 uint32_t immediate_data_size, 2617 uint32_t immediate_data_size,
2543 const volatile void* cmd_data) { 2618 const volatile void* cmd_data) {
(...skipping 19 matching lines...) Expand all
2563 uint32_t data_size = 0; 2638 uint32_t data_size = 0;
2564 if (count >= 0 && 2639 if (count >= 0 &&
2565 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 2, &data_size)) { 2640 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 2, &data_size)) {
2566 return error::kOutOfBounds; 2641 return error::kOutOfBounds;
2567 } 2642 }
2568 if (data_size > immediate_data_size) { 2643 if (data_size > immediate_data_size) {
2569 return error::kOutOfBounds; 2644 return error::kOutOfBounds;
2570 } 2645 }
2571 volatile const GLint* v = GetImmediateDataAs<volatile const GLint*>( 2646 volatile const GLint* v = GetImmediateDataAs<volatile const GLint*>(
2572 c, data_size, immediate_data_size); 2647 c, data_size, immediate_data_size);
2648 if (v == nullptr) {
2649 return error::kOutOfBounds;
2650 }
2573 error::Error error = DoUniform2iv(location, count, v); 2651 error::Error error = DoUniform2iv(location, count, v);
2574 if (error != error::kNoError) { 2652 if (error != error::kNoError) {
2575 return error; 2653 return error;
2576 } 2654 }
2577 return error::kNoError; 2655 return error::kNoError;
2578 } 2656 }
2579 2657
2580 error::Error GLES2DecoderPassthroughImpl::HandleUniform2ui( 2658 error::Error GLES2DecoderPassthroughImpl::HandleUniform2ui(
2581 uint32_t immediate_data_size, 2659 uint32_t immediate_data_size,
2582 const volatile void* cmd_data) { 2660 const volatile void* cmd_data) {
(...skipping 19 matching lines...) Expand all
2602 uint32_t data_size = 0; 2680 uint32_t data_size = 0;
2603 if (count >= 0 && 2681 if (count >= 0 &&
2604 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 2, &data_size)) { 2682 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 2, &data_size)) {
2605 return error::kOutOfBounds; 2683 return error::kOutOfBounds;
2606 } 2684 }
2607 if (data_size > immediate_data_size) { 2685 if (data_size > immediate_data_size) {
2608 return error::kOutOfBounds; 2686 return error::kOutOfBounds;
2609 } 2687 }
2610 volatile const GLuint* v = GetImmediateDataAs<volatile const GLuint*>( 2688 volatile const GLuint* v = GetImmediateDataAs<volatile const GLuint*>(
2611 c, data_size, immediate_data_size); 2689 c, data_size, immediate_data_size);
2690 if (v == nullptr) {
2691 return error::kOutOfBounds;
2692 }
2612 error::Error error = DoUniform2uiv(location, count, v); 2693 error::Error error = DoUniform2uiv(location, count, v);
2613 if (error != error::kNoError) { 2694 if (error != error::kNoError) {
2614 return error; 2695 return error;
2615 } 2696 }
2616 return error::kNoError; 2697 return error::kNoError;
2617 } 2698 }
2618 2699
2619 error::Error GLES2DecoderPassthroughImpl::HandleUniform3f( 2700 error::Error GLES2DecoderPassthroughImpl::HandleUniform3f(
2620 uint32_t immediate_data_size, 2701 uint32_t immediate_data_size,
2621 const volatile void* cmd_data) { 2702 const volatile void* cmd_data) {
(...skipping 20 matching lines...) Expand all
2642 uint32_t data_size = 0; 2723 uint32_t data_size = 0;
2643 if (count >= 0 && 2724 if (count >= 0 &&
2644 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 3, &data_size)) { 2725 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 3, &data_size)) {
2645 return error::kOutOfBounds; 2726 return error::kOutOfBounds;
2646 } 2727 }
2647 if (data_size > immediate_data_size) { 2728 if (data_size > immediate_data_size) {
2648 return error::kOutOfBounds; 2729 return error::kOutOfBounds;
2649 } 2730 }
2650 volatile const GLfloat* v = GetImmediateDataAs<volatile const GLfloat*>( 2731 volatile const GLfloat* v = GetImmediateDataAs<volatile const GLfloat*>(
2651 c, data_size, immediate_data_size); 2732 c, data_size, immediate_data_size);
2733 if (v == nullptr) {
2734 return error::kOutOfBounds;
2735 }
2652 error::Error error = DoUniform3fv(location, count, v); 2736 error::Error error = DoUniform3fv(location, count, v);
2653 if (error != error::kNoError) { 2737 if (error != error::kNoError) {
2654 return error; 2738 return error;
2655 } 2739 }
2656 return error::kNoError; 2740 return error::kNoError;
2657 } 2741 }
2658 2742
2659 error::Error GLES2DecoderPassthroughImpl::HandleUniform3i( 2743 error::Error GLES2DecoderPassthroughImpl::HandleUniform3i(
2660 uint32_t immediate_data_size, 2744 uint32_t immediate_data_size,
2661 const volatile void* cmd_data) { 2745 const volatile void* cmd_data) {
(...skipping 20 matching lines...) Expand all
2682 uint32_t data_size = 0; 2766 uint32_t data_size = 0;
2683 if (count >= 0 && 2767 if (count >= 0 &&
2684 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 3, &data_size)) { 2768 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 3, &data_size)) {
2685 return error::kOutOfBounds; 2769 return error::kOutOfBounds;
2686 } 2770 }
2687 if (data_size > immediate_data_size) { 2771 if (data_size > immediate_data_size) {
2688 return error::kOutOfBounds; 2772 return error::kOutOfBounds;
2689 } 2773 }
2690 volatile const GLint* v = GetImmediateDataAs<volatile const GLint*>( 2774 volatile const GLint* v = GetImmediateDataAs<volatile const GLint*>(
2691 c, data_size, immediate_data_size); 2775 c, data_size, immediate_data_size);
2776 if (v == nullptr) {
2777 return error::kOutOfBounds;
2778 }
2692 error::Error error = DoUniform3iv(location, count, v); 2779 error::Error error = DoUniform3iv(location, count, v);
2693 if (error != error::kNoError) { 2780 if (error != error::kNoError) {
2694 return error; 2781 return error;
2695 } 2782 }
2696 return error::kNoError; 2783 return error::kNoError;
2697 } 2784 }
2698 2785
2699 error::Error GLES2DecoderPassthroughImpl::HandleUniform3ui( 2786 error::Error GLES2DecoderPassthroughImpl::HandleUniform3ui(
2700 uint32_t immediate_data_size, 2787 uint32_t immediate_data_size,
2701 const volatile void* cmd_data) { 2788 const volatile void* cmd_data) {
(...skipping 20 matching lines...) Expand all
2722 uint32_t data_size = 0; 2809 uint32_t data_size = 0;
2723 if (count >= 0 && 2810 if (count >= 0 &&
2724 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 3, &data_size)) { 2811 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 3, &data_size)) {
2725 return error::kOutOfBounds; 2812 return error::kOutOfBounds;
2726 } 2813 }
2727 if (data_size > immediate_data_size) { 2814 if (data_size > immediate_data_size) {
2728 return error::kOutOfBounds; 2815 return error::kOutOfBounds;
2729 } 2816 }
2730 volatile const GLuint* v = GetImmediateDataAs<volatile const GLuint*>( 2817 volatile const GLuint* v = GetImmediateDataAs<volatile const GLuint*>(
2731 c, data_size, immediate_data_size); 2818 c, data_size, immediate_data_size);
2819 if (v == nullptr) {
2820 return error::kOutOfBounds;
2821 }
2732 error::Error error = DoUniform3uiv(location, count, v); 2822 error::Error error = DoUniform3uiv(location, count, v);
2733 if (error != error::kNoError) { 2823 if (error != error::kNoError) {
2734 return error; 2824 return error;
2735 } 2825 }
2736 return error::kNoError; 2826 return error::kNoError;
2737 } 2827 }
2738 2828
2739 error::Error GLES2DecoderPassthroughImpl::HandleUniform4f( 2829 error::Error GLES2DecoderPassthroughImpl::HandleUniform4f(
2740 uint32_t immediate_data_size, 2830 uint32_t immediate_data_size,
2741 const volatile void* cmd_data) { 2831 const volatile void* cmd_data) {
(...skipping 21 matching lines...) Expand all
2763 uint32_t data_size = 0; 2853 uint32_t data_size = 0;
2764 if (count >= 0 && 2854 if (count >= 0 &&
2765 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { 2855 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) {
2766 return error::kOutOfBounds; 2856 return error::kOutOfBounds;
2767 } 2857 }
2768 if (data_size > immediate_data_size) { 2858 if (data_size > immediate_data_size) {
2769 return error::kOutOfBounds; 2859 return error::kOutOfBounds;
2770 } 2860 }
2771 volatile const GLfloat* v = GetImmediateDataAs<volatile const GLfloat*>( 2861 volatile const GLfloat* v = GetImmediateDataAs<volatile const GLfloat*>(
2772 c, data_size, immediate_data_size); 2862 c, data_size, immediate_data_size);
2863 if (v == nullptr) {
2864 return error::kOutOfBounds;
2865 }
2773 error::Error error = DoUniform4fv(location, count, v); 2866 error::Error error = DoUniform4fv(location, count, v);
2774 if (error != error::kNoError) { 2867 if (error != error::kNoError) {
2775 return error; 2868 return error;
2776 } 2869 }
2777 return error::kNoError; 2870 return error::kNoError;
2778 } 2871 }
2779 2872
2780 error::Error GLES2DecoderPassthroughImpl::HandleUniform4i( 2873 error::Error GLES2DecoderPassthroughImpl::HandleUniform4i(
2781 uint32_t immediate_data_size, 2874 uint32_t immediate_data_size,
2782 const volatile void* cmd_data) { 2875 const volatile void* cmd_data) {
(...skipping 21 matching lines...) Expand all
2804 uint32_t data_size = 0; 2897 uint32_t data_size = 0;
2805 if (count >= 0 && 2898 if (count >= 0 &&
2806 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 4, &data_size)) { 2899 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 4, &data_size)) {
2807 return error::kOutOfBounds; 2900 return error::kOutOfBounds;
2808 } 2901 }
2809 if (data_size > immediate_data_size) { 2902 if (data_size > immediate_data_size) {
2810 return error::kOutOfBounds; 2903 return error::kOutOfBounds;
2811 } 2904 }
2812 volatile const GLint* v = GetImmediateDataAs<volatile const GLint*>( 2905 volatile const GLint* v = GetImmediateDataAs<volatile const GLint*>(
2813 c, data_size, immediate_data_size); 2906 c, data_size, immediate_data_size);
2907 if (v == nullptr) {
2908 return error::kOutOfBounds;
2909 }
2814 error::Error error = DoUniform4iv(location, count, v); 2910 error::Error error = DoUniform4iv(location, count, v);
2815 if (error != error::kNoError) { 2911 if (error != error::kNoError) {
2816 return error; 2912 return error;
2817 } 2913 }
2818 return error::kNoError; 2914 return error::kNoError;
2819 } 2915 }
2820 2916
2821 error::Error GLES2DecoderPassthroughImpl::HandleUniform4ui( 2917 error::Error GLES2DecoderPassthroughImpl::HandleUniform4ui(
2822 uint32_t immediate_data_size, 2918 uint32_t immediate_data_size,
2823 const volatile void* cmd_data) { 2919 const volatile void* cmd_data) {
(...skipping 21 matching lines...) Expand all
2845 uint32_t data_size = 0; 2941 uint32_t data_size = 0;
2846 if (count >= 0 && 2942 if (count >= 0 &&
2847 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 4, &data_size)) { 2943 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 4, &data_size)) {
2848 return error::kOutOfBounds; 2944 return error::kOutOfBounds;
2849 } 2945 }
2850 if (data_size > immediate_data_size) { 2946 if (data_size > immediate_data_size) {
2851 return error::kOutOfBounds; 2947 return error::kOutOfBounds;
2852 } 2948 }
2853 volatile const GLuint* v = GetImmediateDataAs<volatile const GLuint*>( 2949 volatile const GLuint* v = GetImmediateDataAs<volatile const GLuint*>(
2854 c, data_size, immediate_data_size); 2950 c, data_size, immediate_data_size);
2951 if (v == nullptr) {
2952 return error::kOutOfBounds;
2953 }
2855 error::Error error = DoUniform4uiv(location, count, v); 2954 error::Error error = DoUniform4uiv(location, count, v);
2856 if (error != error::kNoError) { 2955 if (error != error::kNoError) {
2857 return error; 2956 return error;
2858 } 2957 }
2859 return error::kNoError; 2958 return error::kNoError;
2860 } 2959 }
2861 2960
2862 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix2fvImmediate( 2961 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix2fvImmediate(
2863 uint32_t immediate_data_size, 2962 uint32_t immediate_data_size,
2864 const volatile void* cmd_data) { 2963 const volatile void* cmd_data) {
2865 const volatile gles2::cmds::UniformMatrix2fvImmediate& c = 2964 const volatile gles2::cmds::UniformMatrix2fvImmediate& c =
2866 *static_cast<const volatile gles2::cmds::UniformMatrix2fvImmediate*>( 2965 *static_cast<const volatile gles2::cmds::UniformMatrix2fvImmediate*>(
2867 cmd_data); 2966 cmd_data);
2868 GLint location = static_cast<GLint>(c.location); 2967 GLint location = static_cast<GLint>(c.location);
2869 GLsizei count = static_cast<GLsizei>(c.count); 2968 GLsizei count = static_cast<GLsizei>(c.count);
2870 GLboolean transpose = static_cast<GLboolean>(c.transpose); 2969 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2871 uint32_t data_size = 0; 2970 uint32_t data_size = 0;
2872 if (count >= 0 && 2971 if (count >= 0 &&
2873 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) { 2972 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 4, &data_size)) {
2874 return error::kOutOfBounds; 2973 return error::kOutOfBounds;
2875 } 2974 }
2876 if (data_size > immediate_data_size) { 2975 if (data_size > immediate_data_size) {
2877 return error::kOutOfBounds; 2976 return error::kOutOfBounds;
2878 } 2977 }
2879 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>( 2978 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
2880 c, data_size, immediate_data_size); 2979 c, data_size, immediate_data_size);
2980 if (value == nullptr) {
2981 return error::kOutOfBounds;
2982 }
2881 error::Error error = DoUniformMatrix2fv(location, count, transpose, value); 2983 error::Error error = DoUniformMatrix2fv(location, count, transpose, value);
2882 if (error != error::kNoError) { 2984 if (error != error::kNoError) {
2883 return error; 2985 return error;
2884 } 2986 }
2885 return error::kNoError; 2987 return error::kNoError;
2886 } 2988 }
2887 2989
2888 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix2x3fvImmediate( 2990 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix2x3fvImmediate(
2889 uint32_t immediate_data_size, 2991 uint32_t immediate_data_size,
2890 const volatile void* cmd_data) { 2992 const volatile void* cmd_data) {
2891 const volatile gles2::cmds::UniformMatrix2x3fvImmediate& c = 2993 const volatile gles2::cmds::UniformMatrix2x3fvImmediate& c =
2892 *static_cast<const volatile gles2::cmds::UniformMatrix2x3fvImmediate*>( 2994 *static_cast<const volatile gles2::cmds::UniformMatrix2x3fvImmediate*>(
2893 cmd_data); 2995 cmd_data);
2894 GLint location = static_cast<GLint>(c.location); 2996 GLint location = static_cast<GLint>(c.location);
2895 GLsizei count = static_cast<GLsizei>(c.count); 2997 GLsizei count = static_cast<GLsizei>(c.count);
2896 GLboolean transpose = static_cast<GLboolean>(c.transpose); 2998 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2897 uint32_t data_size = 0; 2999 uint32_t data_size = 0;
2898 if (count >= 0 && 3000 if (count >= 0 &&
2899 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 6, &data_size)) { 3001 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 6, &data_size)) {
2900 return error::kOutOfBounds; 3002 return error::kOutOfBounds;
2901 } 3003 }
2902 if (data_size > immediate_data_size) { 3004 if (data_size > immediate_data_size) {
2903 return error::kOutOfBounds; 3005 return error::kOutOfBounds;
2904 } 3006 }
2905 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>( 3007 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
2906 c, data_size, immediate_data_size); 3008 c, data_size, immediate_data_size);
3009 if (value == nullptr) {
3010 return error::kOutOfBounds;
3011 }
2907 error::Error error = DoUniformMatrix2x3fv(location, count, transpose, value); 3012 error::Error error = DoUniformMatrix2x3fv(location, count, transpose, value);
2908 if (error != error::kNoError) { 3013 if (error != error::kNoError) {
2909 return error; 3014 return error;
2910 } 3015 }
2911 return error::kNoError; 3016 return error::kNoError;
2912 } 3017 }
2913 3018
2914 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix2x4fvImmediate( 3019 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix2x4fvImmediate(
2915 uint32_t immediate_data_size, 3020 uint32_t immediate_data_size,
2916 const volatile void* cmd_data) { 3021 const volatile void* cmd_data) {
2917 const volatile gles2::cmds::UniformMatrix2x4fvImmediate& c = 3022 const volatile gles2::cmds::UniformMatrix2x4fvImmediate& c =
2918 *static_cast<const volatile gles2::cmds::UniformMatrix2x4fvImmediate*>( 3023 *static_cast<const volatile gles2::cmds::UniformMatrix2x4fvImmediate*>(
2919 cmd_data); 3024 cmd_data);
2920 GLint location = static_cast<GLint>(c.location); 3025 GLint location = static_cast<GLint>(c.location);
2921 GLsizei count = static_cast<GLsizei>(c.count); 3026 GLsizei count = static_cast<GLsizei>(c.count);
2922 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3027 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2923 uint32_t data_size = 0; 3028 uint32_t data_size = 0;
2924 if (count >= 0 && 3029 if (count >= 0 &&
2925 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 8, &data_size)) { 3030 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 8, &data_size)) {
2926 return error::kOutOfBounds; 3031 return error::kOutOfBounds;
2927 } 3032 }
2928 if (data_size > immediate_data_size) { 3033 if (data_size > immediate_data_size) {
2929 return error::kOutOfBounds; 3034 return error::kOutOfBounds;
2930 } 3035 }
2931 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>( 3036 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
2932 c, data_size, immediate_data_size); 3037 c, data_size, immediate_data_size);
3038 if (value == nullptr) {
3039 return error::kOutOfBounds;
3040 }
2933 error::Error error = DoUniformMatrix2x4fv(location, count, transpose, value); 3041 error::Error error = DoUniformMatrix2x4fv(location, count, transpose, value);
2934 if (error != error::kNoError) { 3042 if (error != error::kNoError) {
2935 return error; 3043 return error;
2936 } 3044 }
2937 return error::kNoError; 3045 return error::kNoError;
2938 } 3046 }
2939 3047
2940 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix3fvImmediate( 3048 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix3fvImmediate(
2941 uint32_t immediate_data_size, 3049 uint32_t immediate_data_size,
2942 const volatile void* cmd_data) { 3050 const volatile void* cmd_data) {
2943 const volatile gles2::cmds::UniformMatrix3fvImmediate& c = 3051 const volatile gles2::cmds::UniformMatrix3fvImmediate& c =
2944 *static_cast<const volatile gles2::cmds::UniformMatrix3fvImmediate*>( 3052 *static_cast<const volatile gles2::cmds::UniformMatrix3fvImmediate*>(
2945 cmd_data); 3053 cmd_data);
2946 GLint location = static_cast<GLint>(c.location); 3054 GLint location = static_cast<GLint>(c.location);
2947 GLsizei count = static_cast<GLsizei>(c.count); 3055 GLsizei count = static_cast<GLsizei>(c.count);
2948 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3056 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2949 uint32_t data_size = 0; 3057 uint32_t data_size = 0;
2950 if (count >= 0 && 3058 if (count >= 0 &&
2951 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) { 3059 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 9, &data_size)) {
2952 return error::kOutOfBounds; 3060 return error::kOutOfBounds;
2953 } 3061 }
2954 if (data_size > immediate_data_size) { 3062 if (data_size > immediate_data_size) {
2955 return error::kOutOfBounds; 3063 return error::kOutOfBounds;
2956 } 3064 }
2957 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>( 3065 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
2958 c, data_size, immediate_data_size); 3066 c, data_size, immediate_data_size);
3067 if (value == nullptr) {
3068 return error::kOutOfBounds;
3069 }
2959 error::Error error = DoUniformMatrix3fv(location, count, transpose, value); 3070 error::Error error = DoUniformMatrix3fv(location, count, transpose, value);
2960 if (error != error::kNoError) { 3071 if (error != error::kNoError) {
2961 return error; 3072 return error;
2962 } 3073 }
2963 return error::kNoError; 3074 return error::kNoError;
2964 } 3075 }
2965 3076
2966 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix3x2fvImmediate( 3077 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix3x2fvImmediate(
2967 uint32_t immediate_data_size, 3078 uint32_t immediate_data_size,
2968 const volatile void* cmd_data) { 3079 const volatile void* cmd_data) {
2969 const volatile gles2::cmds::UniformMatrix3x2fvImmediate& c = 3080 const volatile gles2::cmds::UniformMatrix3x2fvImmediate& c =
2970 *static_cast<const volatile gles2::cmds::UniformMatrix3x2fvImmediate*>( 3081 *static_cast<const volatile gles2::cmds::UniformMatrix3x2fvImmediate*>(
2971 cmd_data); 3082 cmd_data);
2972 GLint location = static_cast<GLint>(c.location); 3083 GLint location = static_cast<GLint>(c.location);
2973 GLsizei count = static_cast<GLsizei>(c.count); 3084 GLsizei count = static_cast<GLsizei>(c.count);
2974 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3085 GLboolean transpose = static_cast<GLboolean>(c.transpose);
2975 uint32_t data_size = 0; 3086 uint32_t data_size = 0;
2976 if (count >= 0 && 3087 if (count >= 0 &&
2977 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 6, &data_size)) { 3088 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 6, &data_size)) {
2978 return error::kOutOfBounds; 3089 return error::kOutOfBounds;
2979 } 3090 }
2980 if (data_size > immediate_data_size) { 3091 if (data_size > immediate_data_size) {
2981 return error::kOutOfBounds; 3092 return error::kOutOfBounds;
2982 } 3093 }
2983 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>( 3094 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
2984 c, data_size, immediate_data_size); 3095 c, data_size, immediate_data_size);
3096 if (value == nullptr) {
3097 return error::kOutOfBounds;
3098 }
2985 error::Error error = DoUniformMatrix3x2fv(location, count, transpose, value); 3099 error::Error error = DoUniformMatrix3x2fv(location, count, transpose, value);
2986 if (error != error::kNoError) { 3100 if (error != error::kNoError) {
2987 return error; 3101 return error;
2988 } 3102 }
2989 return error::kNoError; 3103 return error::kNoError;
2990 } 3104 }
2991 3105
2992 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix3x4fvImmediate( 3106 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix3x4fvImmediate(
2993 uint32_t immediate_data_size, 3107 uint32_t immediate_data_size,
2994 const volatile void* cmd_data) { 3108 const volatile void* cmd_data) {
2995 const volatile gles2::cmds::UniformMatrix3x4fvImmediate& c = 3109 const volatile gles2::cmds::UniformMatrix3x4fvImmediate& c =
2996 *static_cast<const volatile gles2::cmds::UniformMatrix3x4fvImmediate*>( 3110 *static_cast<const volatile gles2::cmds::UniformMatrix3x4fvImmediate*>(
2997 cmd_data); 3111 cmd_data);
2998 GLint location = static_cast<GLint>(c.location); 3112 GLint location = static_cast<GLint>(c.location);
2999 GLsizei count = static_cast<GLsizei>(c.count); 3113 GLsizei count = static_cast<GLsizei>(c.count);
3000 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3114 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3001 uint32_t data_size = 0; 3115 uint32_t data_size = 0;
3002 if (count >= 0 && 3116 if (count >= 0 &&
3003 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 12, &data_size)) { 3117 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 12, &data_size)) {
3004 return error::kOutOfBounds; 3118 return error::kOutOfBounds;
3005 } 3119 }
3006 if (data_size > immediate_data_size) { 3120 if (data_size > immediate_data_size) {
3007 return error::kOutOfBounds; 3121 return error::kOutOfBounds;
3008 } 3122 }
3009 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>( 3123 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3010 c, data_size, immediate_data_size); 3124 c, data_size, immediate_data_size);
3125 if (value == nullptr) {
3126 return error::kOutOfBounds;
3127 }
3011 error::Error error = DoUniformMatrix3x4fv(location, count, transpose, value); 3128 error::Error error = DoUniformMatrix3x4fv(location, count, transpose, value);
3012 if (error != error::kNoError) { 3129 if (error != error::kNoError) {
3013 return error; 3130 return error;
3014 } 3131 }
3015 return error::kNoError; 3132 return error::kNoError;
3016 } 3133 }
3017 3134
3018 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix4fvImmediate( 3135 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix4fvImmediate(
3019 uint32_t immediate_data_size, 3136 uint32_t immediate_data_size,
3020 const volatile void* cmd_data) { 3137 const volatile void* cmd_data) {
3021 const volatile gles2::cmds::UniformMatrix4fvImmediate& c = 3138 const volatile gles2::cmds::UniformMatrix4fvImmediate& c =
3022 *static_cast<const volatile gles2::cmds::UniformMatrix4fvImmediate*>( 3139 *static_cast<const volatile gles2::cmds::UniformMatrix4fvImmediate*>(
3023 cmd_data); 3140 cmd_data);
3024 GLint location = static_cast<GLint>(c.location); 3141 GLint location = static_cast<GLint>(c.location);
3025 GLsizei count = static_cast<GLsizei>(c.count); 3142 GLsizei count = static_cast<GLsizei>(c.count);
3026 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3143 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3027 uint32_t data_size = 0; 3144 uint32_t data_size = 0;
3028 if (count >= 0 && 3145 if (count >= 0 &&
3029 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) { 3146 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 16, &data_size)) {
3030 return error::kOutOfBounds; 3147 return error::kOutOfBounds;
3031 } 3148 }
3032 if (data_size > immediate_data_size) { 3149 if (data_size > immediate_data_size) {
3033 return error::kOutOfBounds; 3150 return error::kOutOfBounds;
3034 } 3151 }
3035 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>( 3152 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3036 c, data_size, immediate_data_size); 3153 c, data_size, immediate_data_size);
3154 if (value == nullptr) {
3155 return error::kOutOfBounds;
3156 }
3037 error::Error error = DoUniformMatrix4fv(location, count, transpose, value); 3157 error::Error error = DoUniformMatrix4fv(location, count, transpose, value);
3038 if (error != error::kNoError) { 3158 if (error != error::kNoError) {
3039 return error; 3159 return error;
3040 } 3160 }
3041 return error::kNoError; 3161 return error::kNoError;
3042 } 3162 }
3043 3163
3044 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix4x2fvImmediate( 3164 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix4x2fvImmediate(
3045 uint32_t immediate_data_size, 3165 uint32_t immediate_data_size,
3046 const volatile void* cmd_data) { 3166 const volatile void* cmd_data) {
3047 const volatile gles2::cmds::UniformMatrix4x2fvImmediate& c = 3167 const volatile gles2::cmds::UniformMatrix4x2fvImmediate& c =
3048 *static_cast<const volatile gles2::cmds::UniformMatrix4x2fvImmediate*>( 3168 *static_cast<const volatile gles2::cmds::UniformMatrix4x2fvImmediate*>(
3049 cmd_data); 3169 cmd_data);
3050 GLint location = static_cast<GLint>(c.location); 3170 GLint location = static_cast<GLint>(c.location);
3051 GLsizei count = static_cast<GLsizei>(c.count); 3171 GLsizei count = static_cast<GLsizei>(c.count);
3052 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3172 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3053 uint32_t data_size = 0; 3173 uint32_t data_size = 0;
3054 if (count >= 0 && 3174 if (count >= 0 &&
3055 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 8, &data_size)) { 3175 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 8, &data_size)) {
3056 return error::kOutOfBounds; 3176 return error::kOutOfBounds;
3057 } 3177 }
3058 if (data_size > immediate_data_size) { 3178 if (data_size > immediate_data_size) {
3059 return error::kOutOfBounds; 3179 return error::kOutOfBounds;
3060 } 3180 }
3061 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>( 3181 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3062 c, data_size, immediate_data_size); 3182 c, data_size, immediate_data_size);
3183 if (value == nullptr) {
3184 return error::kOutOfBounds;
3185 }
3063 error::Error error = DoUniformMatrix4x2fv(location, count, transpose, value); 3186 error::Error error = DoUniformMatrix4x2fv(location, count, transpose, value);
3064 if (error != error::kNoError) { 3187 if (error != error::kNoError) {
3065 return error; 3188 return error;
3066 } 3189 }
3067 return error::kNoError; 3190 return error::kNoError;
3068 } 3191 }
3069 3192
3070 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix4x3fvImmediate( 3193 error::Error GLES2DecoderPassthroughImpl::HandleUniformMatrix4x3fvImmediate(
3071 uint32_t immediate_data_size, 3194 uint32_t immediate_data_size,
3072 const volatile void* cmd_data) { 3195 const volatile void* cmd_data) {
3073 const volatile gles2::cmds::UniformMatrix4x3fvImmediate& c = 3196 const volatile gles2::cmds::UniformMatrix4x3fvImmediate& c =
3074 *static_cast<const volatile gles2::cmds::UniformMatrix4x3fvImmediate*>( 3197 *static_cast<const volatile gles2::cmds::UniformMatrix4x3fvImmediate*>(
3075 cmd_data); 3198 cmd_data);
3076 GLint location = static_cast<GLint>(c.location); 3199 GLint location = static_cast<GLint>(c.location);
3077 GLsizei count = static_cast<GLsizei>(c.count); 3200 GLsizei count = static_cast<GLsizei>(c.count);
3078 GLboolean transpose = static_cast<GLboolean>(c.transpose); 3201 GLboolean transpose = static_cast<GLboolean>(c.transpose);
3079 uint32_t data_size = 0; 3202 uint32_t data_size = 0;
3080 if (count >= 0 && 3203 if (count >= 0 &&
3081 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 12, &data_size)) { 3204 !GLES2Util::ComputeDataSize(count, sizeof(GLfloat), 12, &data_size)) {
3082 return error::kOutOfBounds; 3205 return error::kOutOfBounds;
3083 } 3206 }
3084 if (data_size > immediate_data_size) { 3207 if (data_size > immediate_data_size) {
3085 return error::kOutOfBounds; 3208 return error::kOutOfBounds;
3086 } 3209 }
3087 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>( 3210 volatile const GLfloat* value = GetImmediateDataAs<volatile const GLfloat*>(
3088 c, data_size, immediate_data_size); 3211 c, data_size, immediate_data_size);
3212 if (value == nullptr) {
3213 return error::kOutOfBounds;
3214 }
3089 error::Error error = DoUniformMatrix4x3fv(location, count, transpose, value); 3215 error::Error error = DoUniformMatrix4x3fv(location, count, transpose, value);
3090 if (error != error::kNoError) { 3216 if (error != error::kNoError) {
3091 return error; 3217 return error;
3092 } 3218 }
3093 return error::kNoError; 3219 return error::kNoError;
3094 } 3220 }
3095 3221
3096 error::Error GLES2DecoderPassthroughImpl::HandleUseProgram( 3222 error::Error GLES2DecoderPassthroughImpl::HandleUseProgram(
3097 uint32_t immediate_data_size, 3223 uint32_t immediate_data_size,
3098 const volatile void* cmd_data) { 3224 const volatile void* cmd_data) {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
3142 GLuint indx = static_cast<GLuint>(c.indx); 3268 GLuint indx = static_cast<GLuint>(c.indx);
3143 uint32_t data_size; 3269 uint32_t data_size;
3144 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) { 3270 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 1, &data_size)) {
3145 return error::kOutOfBounds; 3271 return error::kOutOfBounds;
3146 } 3272 }
3147 if (data_size > immediate_data_size) { 3273 if (data_size > immediate_data_size) {
3148 return error::kOutOfBounds; 3274 return error::kOutOfBounds;
3149 } 3275 }
3150 volatile const GLfloat* values = GetImmediateDataAs<volatile const GLfloat*>( 3276 volatile const GLfloat* values = GetImmediateDataAs<volatile const GLfloat*>(
3151 c, data_size, immediate_data_size); 3277 c, data_size, immediate_data_size);
3278 if (values == nullptr) {
3279 return error::kOutOfBounds;
3280 }
3152 error::Error error = DoVertexAttrib1fv(indx, values); 3281 error::Error error = DoVertexAttrib1fv(indx, values);
3153 if (error != error::kNoError) { 3282 if (error != error::kNoError) {
3154 return error; 3283 return error;
3155 } 3284 }
3156 return error::kNoError; 3285 return error::kNoError;
3157 } 3286 }
3158 3287
3159 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib2f( 3288 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib2f(
3160 uint32_t immediate_data_size, 3289 uint32_t immediate_data_size,
3161 const volatile void* cmd_data) { 3290 const volatile void* cmd_data) {
(...skipping 18 matching lines...) Expand all
3180 GLuint indx = static_cast<GLuint>(c.indx); 3309 GLuint indx = static_cast<GLuint>(c.indx);
3181 uint32_t data_size; 3310 uint32_t data_size;
3182 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 2, &data_size)) { 3311 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 2, &data_size)) {
3183 return error::kOutOfBounds; 3312 return error::kOutOfBounds;
3184 } 3313 }
3185 if (data_size > immediate_data_size) { 3314 if (data_size > immediate_data_size) {
3186 return error::kOutOfBounds; 3315 return error::kOutOfBounds;
3187 } 3316 }
3188 volatile const GLfloat* values = GetImmediateDataAs<volatile const GLfloat*>( 3317 volatile const GLfloat* values = GetImmediateDataAs<volatile const GLfloat*>(
3189 c, data_size, immediate_data_size); 3318 c, data_size, immediate_data_size);
3319 if (values == nullptr) {
3320 return error::kOutOfBounds;
3321 }
3190 error::Error error = DoVertexAttrib2fv(indx, values); 3322 error::Error error = DoVertexAttrib2fv(indx, values);
3191 if (error != error::kNoError) { 3323 if (error != error::kNoError) {
3192 return error; 3324 return error;
3193 } 3325 }
3194 return error::kNoError; 3326 return error::kNoError;
3195 } 3327 }
3196 3328
3197 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib3f( 3329 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib3f(
3198 uint32_t immediate_data_size, 3330 uint32_t immediate_data_size,
3199 const volatile void* cmd_data) { 3331 const volatile void* cmd_data) {
(...skipping 19 matching lines...) Expand all
3219 GLuint indx = static_cast<GLuint>(c.indx); 3351 GLuint indx = static_cast<GLuint>(c.indx);
3220 uint32_t data_size; 3352 uint32_t data_size;
3221 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 3, &data_size)) { 3353 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 3, &data_size)) {
3222 return error::kOutOfBounds; 3354 return error::kOutOfBounds;
3223 } 3355 }
3224 if (data_size > immediate_data_size) { 3356 if (data_size > immediate_data_size) {
3225 return error::kOutOfBounds; 3357 return error::kOutOfBounds;
3226 } 3358 }
3227 volatile const GLfloat* values = GetImmediateDataAs<volatile const GLfloat*>( 3359 volatile const GLfloat* values = GetImmediateDataAs<volatile const GLfloat*>(
3228 c, data_size, immediate_data_size); 3360 c, data_size, immediate_data_size);
3361 if (values == nullptr) {
3362 return error::kOutOfBounds;
3363 }
3229 error::Error error = DoVertexAttrib3fv(indx, values); 3364 error::Error error = DoVertexAttrib3fv(indx, values);
3230 if (error != error::kNoError) { 3365 if (error != error::kNoError) {
3231 return error; 3366 return error;
3232 } 3367 }
3233 return error::kNoError; 3368 return error::kNoError;
3234 } 3369 }
3235 3370
3236 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib4f( 3371 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttrib4f(
3237 uint32_t immediate_data_size, 3372 uint32_t immediate_data_size,
3238 const volatile void* cmd_data) { 3373 const volatile void* cmd_data) {
(...skipping 20 matching lines...) Expand all
3259 GLuint indx = static_cast<GLuint>(c.indx); 3394 GLuint indx = static_cast<GLuint>(c.indx);
3260 uint32_t data_size; 3395 uint32_t data_size;
3261 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) { 3396 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 4, &data_size)) {
3262 return error::kOutOfBounds; 3397 return error::kOutOfBounds;
3263 } 3398 }
3264 if (data_size > immediate_data_size) { 3399 if (data_size > immediate_data_size) {
3265 return error::kOutOfBounds; 3400 return error::kOutOfBounds;
3266 } 3401 }
3267 volatile const GLfloat* values = GetImmediateDataAs<volatile const GLfloat*>( 3402 volatile const GLfloat* values = GetImmediateDataAs<volatile const GLfloat*>(
3268 c, data_size, immediate_data_size); 3403 c, data_size, immediate_data_size);
3404 if (values == nullptr) {
3405 return error::kOutOfBounds;
3406 }
3269 error::Error error = DoVertexAttrib4fv(indx, values); 3407 error::Error error = DoVertexAttrib4fv(indx, values);
3270 if (error != error::kNoError) { 3408 if (error != error::kNoError) {
3271 return error; 3409 return error;
3272 } 3410 }
3273 return error::kNoError; 3411 return error::kNoError;
3274 } 3412 }
3275 3413
3276 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttribI4i( 3414 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttribI4i(
3277 uint32_t immediate_data_size, 3415 uint32_t immediate_data_size,
3278 const volatile void* cmd_data) { 3416 const volatile void* cmd_data) {
(...skipping 20 matching lines...) Expand all
3299 GLuint indx = static_cast<GLuint>(c.indx); 3437 GLuint indx = static_cast<GLuint>(c.indx);
3300 uint32_t data_size; 3438 uint32_t data_size;
3301 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 4, &data_size)) { 3439 if (!GLES2Util::ComputeDataSize(1, sizeof(GLint), 4, &data_size)) {
3302 return error::kOutOfBounds; 3440 return error::kOutOfBounds;
3303 } 3441 }
3304 if (data_size > immediate_data_size) { 3442 if (data_size > immediate_data_size) {
3305 return error::kOutOfBounds; 3443 return error::kOutOfBounds;
3306 } 3444 }
3307 volatile const GLint* values = GetImmediateDataAs<volatile const GLint*>( 3445 volatile const GLint* values = GetImmediateDataAs<volatile const GLint*>(
3308 c, data_size, immediate_data_size); 3446 c, data_size, immediate_data_size);
3447 if (values == nullptr) {
3448 return error::kOutOfBounds;
3449 }
3309 error::Error error = DoVertexAttribI4iv(indx, values); 3450 error::Error error = DoVertexAttribI4iv(indx, values);
3310 if (error != error::kNoError) { 3451 if (error != error::kNoError) {
3311 return error; 3452 return error;
3312 } 3453 }
3313 return error::kNoError; 3454 return error::kNoError;
3314 } 3455 }
3315 3456
3316 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttribI4ui( 3457 error::Error GLES2DecoderPassthroughImpl::HandleVertexAttribI4ui(
3317 uint32_t immediate_data_size, 3458 uint32_t immediate_data_size,
3318 const volatile void* cmd_data) { 3459 const volatile void* cmd_data) {
(...skipping 20 matching lines...) Expand all
3339 GLuint indx = static_cast<GLuint>(c.indx); 3480 GLuint indx = static_cast<GLuint>(c.indx);
3340 uint32_t data_size; 3481 uint32_t data_size;
3341 if (!GLES2Util::ComputeDataSize(1, sizeof(GLuint), 4, &data_size)) { 3482 if (!GLES2Util::ComputeDataSize(1, sizeof(GLuint), 4, &data_size)) {
3342 return error::kOutOfBounds; 3483 return error::kOutOfBounds;
3343 } 3484 }
3344 if (data_size > immediate_data_size) { 3485 if (data_size > immediate_data_size) {
3345 return error::kOutOfBounds; 3486 return error::kOutOfBounds;
3346 } 3487 }
3347 volatile const GLuint* values = GetImmediateDataAs<volatile const GLuint*>( 3488 volatile const GLuint* values = GetImmediateDataAs<volatile const GLuint*>(
3348 c, data_size, immediate_data_size); 3489 c, data_size, immediate_data_size);
3490 if (values == nullptr) {
3491 return error::kOutOfBounds;
3492 }
3349 error::Error error = DoVertexAttribI4uiv(indx, values); 3493 error::Error error = DoVertexAttribI4uiv(indx, values);
3350 if (error != error::kNoError) { 3494 if (error != error::kNoError) {
3351 return error; 3495 return error;
3352 } 3496 }
3353 return error::kNoError; 3497 return error::kNoError;
3354 } 3498 }
3355 3499
3356 error::Error GLES2DecoderPassthroughImpl::HandleViewport( 3500 error::Error GLES2DecoderPassthroughImpl::HandleViewport(
3357 uint32_t immediate_data_size, 3501 uint32_t immediate_data_size,
3358 const volatile void* cmd_data) { 3502 const volatile void* cmd_data) {
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
3481 const volatile gles2::cmds::GenQueriesEXTImmediate& c = 3625 const volatile gles2::cmds::GenQueriesEXTImmediate& c =
3482 *static_cast<const volatile gles2::cmds::GenQueriesEXTImmediate*>( 3626 *static_cast<const volatile gles2::cmds::GenQueriesEXTImmediate*>(
3483 cmd_data); 3627 cmd_data);
3484 GLsizei n = static_cast<GLsizei>(c.n); 3628 GLsizei n = static_cast<GLsizei>(c.n);
3485 uint32_t data_size; 3629 uint32_t data_size;
3486 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 3630 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
3487 return error::kOutOfBounds; 3631 return error::kOutOfBounds;
3488 } 3632 }
3489 volatile GLuint* queries = 3633 volatile GLuint* queries =
3490 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size); 3634 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
3635 if (queries == nullptr) {
3636 return error::kOutOfBounds;
3637 }
3491 error::Error error = DoGenQueriesEXT(n, queries); 3638 error::Error error = DoGenQueriesEXT(n, queries);
3492 if (error != error::kNoError) { 3639 if (error != error::kNoError) {
3493 return error; 3640 return error;
3494 } 3641 }
3495 return error::kNoError; 3642 return error::kNoError;
3496 } 3643 }
3497 3644
3498 error::Error GLES2DecoderPassthroughImpl::HandleDeleteQueriesEXTImmediate( 3645 error::Error GLES2DecoderPassthroughImpl::HandleDeleteQueriesEXTImmediate(
3499 uint32_t immediate_data_size, 3646 uint32_t immediate_data_size,
3500 const volatile void* cmd_data) { 3647 const volatile void* cmd_data) {
3501 const volatile gles2::cmds::DeleteQueriesEXTImmediate& c = 3648 const volatile gles2::cmds::DeleteQueriesEXTImmediate& c =
3502 *static_cast<const volatile gles2::cmds::DeleteQueriesEXTImmediate*>( 3649 *static_cast<const volatile gles2::cmds::DeleteQueriesEXTImmediate*>(
3503 cmd_data); 3650 cmd_data);
3504 GLsizei n = static_cast<GLsizei>(c.n); 3651 GLsizei n = static_cast<GLsizei>(c.n);
3505 uint32_t data_size; 3652 uint32_t data_size;
3506 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 3653 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
3507 return error::kOutOfBounds; 3654 return error::kOutOfBounds;
3508 } 3655 }
3509 volatile const GLuint* queries = GetImmediateDataAs<volatile const GLuint*>( 3656 volatile const GLuint* queries = GetImmediateDataAs<volatile const GLuint*>(
3510 c, data_size, immediate_data_size); 3657 c, data_size, immediate_data_size);
3658 if (queries == nullptr) {
3659 return error::kOutOfBounds;
3660 }
3511 error::Error error = DoDeleteQueriesEXT(n, queries); 3661 error::Error error = DoDeleteQueriesEXT(n, queries);
3512 if (error != error::kNoError) { 3662 if (error != error::kNoError) {
3513 return error; 3663 return error;
3514 } 3664 }
3515 return error::kNoError; 3665 return error::kNoError;
3516 } 3666 }
3517 3667
3518 error::Error GLES2DecoderPassthroughImpl::HandleBeginTransformFeedback( 3668 error::Error GLES2DecoderPassthroughImpl::HandleBeginTransformFeedback(
3519 uint32_t immediate_data_size, 3669 uint32_t immediate_data_size,
3520 const volatile void* cmd_data) { 3670 const volatile void* cmd_data) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
3555 const volatile gles2::cmds::GenVertexArraysOESImmediate& c = 3705 const volatile gles2::cmds::GenVertexArraysOESImmediate& c =
3556 *static_cast<const volatile gles2::cmds::GenVertexArraysOESImmediate*>( 3706 *static_cast<const volatile gles2::cmds::GenVertexArraysOESImmediate*>(
3557 cmd_data); 3707 cmd_data);
3558 GLsizei n = static_cast<GLsizei>(c.n); 3708 GLsizei n = static_cast<GLsizei>(c.n);
3559 uint32_t data_size; 3709 uint32_t data_size;
3560 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 3710 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
3561 return error::kOutOfBounds; 3711 return error::kOutOfBounds;
3562 } 3712 }
3563 volatile GLuint* arrays = 3713 volatile GLuint* arrays =
3564 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size); 3714 GetImmediateDataAs<volatile GLuint*>(c, data_size, immediate_data_size);
3715 if (arrays == nullptr) {
3716 return error::kOutOfBounds;
3717 }
3565 error::Error error = DoGenVertexArraysOES(n, arrays); 3718 error::Error error = DoGenVertexArraysOES(n, arrays);
3566 if (error != error::kNoError) { 3719 if (error != error::kNoError) {
3567 return error; 3720 return error;
3568 } 3721 }
3569 return error::kNoError; 3722 return error::kNoError;
3570 } 3723 }
3571 3724
3572 error::Error GLES2DecoderPassthroughImpl::HandleDeleteVertexArraysOESImmediate( 3725 error::Error GLES2DecoderPassthroughImpl::HandleDeleteVertexArraysOESImmediate(
3573 uint32_t immediate_data_size, 3726 uint32_t immediate_data_size,
3574 const volatile void* cmd_data) { 3727 const volatile void* cmd_data) {
3575 const volatile gles2::cmds::DeleteVertexArraysOESImmediate& c = 3728 const volatile gles2::cmds::DeleteVertexArraysOESImmediate& c =
3576 *static_cast<const volatile gles2::cmds::DeleteVertexArraysOESImmediate*>( 3729 *static_cast<const volatile gles2::cmds::DeleteVertexArraysOESImmediate*>(
3577 cmd_data); 3730 cmd_data);
3578 GLsizei n = static_cast<GLsizei>(c.n); 3731 GLsizei n = static_cast<GLsizei>(c.n);
3579 uint32_t data_size; 3732 uint32_t data_size;
3580 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 3733 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
3581 return error::kOutOfBounds; 3734 return error::kOutOfBounds;
3582 } 3735 }
3583 volatile const GLuint* arrays = GetImmediateDataAs<volatile const GLuint*>( 3736 volatile const GLuint* arrays = GetImmediateDataAs<volatile const GLuint*>(
3584 c, data_size, immediate_data_size); 3737 c, data_size, immediate_data_size);
3738 if (arrays == nullptr) {
3739 return error::kOutOfBounds;
3740 }
3585 error::Error error = DoDeleteVertexArraysOES(n, arrays); 3741 error::Error error = DoDeleteVertexArraysOES(n, arrays);
3586 if (error != error::kNoError) { 3742 if (error != error::kNoError) {
3587 return error; 3743 return error;
3588 } 3744 }
3589 return error::kNoError; 3745 return error::kNoError;
3590 } 3746 }
3591 3747
3592 error::Error GLES2DecoderPassthroughImpl::HandleIsVertexArrayOES( 3748 error::Error GLES2DecoderPassthroughImpl::HandleIsVertexArrayOES(
3593 uint32_t immediate_data_size, 3749 uint32_t immediate_data_size,
3594 const volatile void* cmd_data) { 3750 const volatile void* cmd_data) {
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
3753 GLenum target = static_cast<GLenum>(c.target); 3909 GLenum target = static_cast<GLenum>(c.target);
3754 uint32_t data_size; 3910 uint32_t data_size;
3755 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 16, &data_size)) { 3911 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 16, &data_size)) {
3756 return error::kOutOfBounds; 3912 return error::kOutOfBounds;
3757 } 3913 }
3758 if (data_size > immediate_data_size) { 3914 if (data_size > immediate_data_size) {
3759 return error::kOutOfBounds; 3915 return error::kOutOfBounds;
3760 } 3916 }
3761 volatile const GLbyte* mailbox = GetImmediateDataAs<volatile const GLbyte*>( 3917 volatile const GLbyte* mailbox = GetImmediateDataAs<volatile const GLbyte*>(
3762 c, data_size, immediate_data_size); 3918 c, data_size, immediate_data_size);
3919 if (mailbox == nullptr) {
3920 return error::kOutOfBounds;
3921 }
3763 error::Error error = DoProduceTextureCHROMIUM(target, mailbox); 3922 error::Error error = DoProduceTextureCHROMIUM(target, mailbox);
3764 if (error != error::kNoError) { 3923 if (error != error::kNoError) {
3765 return error; 3924 return error;
3766 } 3925 }
3767 return error::kNoError; 3926 return error::kNoError;
3768 } 3927 }
3769 3928
3770 error::Error 3929 error::Error
3771 GLES2DecoderPassthroughImpl::HandleProduceTextureDirectCHROMIUMImmediate( 3930 GLES2DecoderPassthroughImpl::HandleProduceTextureDirectCHROMIUMImmediate(
3772 uint32_t immediate_data_size, 3931 uint32_t immediate_data_size,
3773 const volatile void* cmd_data) { 3932 const volatile void* cmd_data) {
3774 const volatile gles2::cmds::ProduceTextureDirectCHROMIUMImmediate& c = 3933 const volatile gles2::cmds::ProduceTextureDirectCHROMIUMImmediate& c =
3775 *static_cast< 3934 *static_cast<
3776 const volatile gles2::cmds::ProduceTextureDirectCHROMIUMImmediate*>( 3935 const volatile gles2::cmds::ProduceTextureDirectCHROMIUMImmediate*>(
3777 cmd_data); 3936 cmd_data);
3778 GLuint texture = c.texture; 3937 GLuint texture = c.texture;
3779 GLenum target = static_cast<GLenum>(c.target); 3938 GLenum target = static_cast<GLenum>(c.target);
3780 uint32_t data_size; 3939 uint32_t data_size;
3781 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 16, &data_size)) { 3940 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 16, &data_size)) {
3782 return error::kOutOfBounds; 3941 return error::kOutOfBounds;
3783 } 3942 }
3784 if (data_size > immediate_data_size) { 3943 if (data_size > immediate_data_size) {
3785 return error::kOutOfBounds; 3944 return error::kOutOfBounds;
3786 } 3945 }
3787 volatile const GLbyte* mailbox = GetImmediateDataAs<volatile const GLbyte*>( 3946 volatile const GLbyte* mailbox = GetImmediateDataAs<volatile const GLbyte*>(
3788 c, data_size, immediate_data_size); 3947 c, data_size, immediate_data_size);
3948 if (mailbox == nullptr) {
3949 return error::kOutOfBounds;
3950 }
3789 error::Error error = DoProduceTextureDirectCHROMIUM(texture, target, mailbox); 3951 error::Error error = DoProduceTextureDirectCHROMIUM(texture, target, mailbox);
3790 if (error != error::kNoError) { 3952 if (error != error::kNoError) {
3791 return error; 3953 return error;
3792 } 3954 }
3793 return error::kNoError; 3955 return error::kNoError;
3794 } 3956 }
3795 3957
3796 error::Error GLES2DecoderPassthroughImpl::HandleConsumeTextureCHROMIUMImmediate( 3958 error::Error GLES2DecoderPassthroughImpl::HandleConsumeTextureCHROMIUMImmediate(
3797 uint32_t immediate_data_size, 3959 uint32_t immediate_data_size,
3798 const volatile void* cmd_data) { 3960 const volatile void* cmd_data) {
3799 const volatile gles2::cmds::ConsumeTextureCHROMIUMImmediate& c = *static_cast< 3961 const volatile gles2::cmds::ConsumeTextureCHROMIUMImmediate& c = *static_cast<
3800 const volatile gles2::cmds::ConsumeTextureCHROMIUMImmediate*>(cmd_data); 3962 const volatile gles2::cmds::ConsumeTextureCHROMIUMImmediate*>(cmd_data);
3801 GLenum target = static_cast<GLenum>(c.target); 3963 GLenum target = static_cast<GLenum>(c.target);
3802 uint32_t data_size; 3964 uint32_t data_size;
3803 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 16, &data_size)) { 3965 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 16, &data_size)) {
3804 return error::kOutOfBounds; 3966 return error::kOutOfBounds;
3805 } 3967 }
3806 if (data_size > immediate_data_size) { 3968 if (data_size > immediate_data_size) {
3807 return error::kOutOfBounds; 3969 return error::kOutOfBounds;
3808 } 3970 }
3809 volatile const GLbyte* mailbox = GetImmediateDataAs<volatile const GLbyte*>( 3971 volatile const GLbyte* mailbox = GetImmediateDataAs<volatile const GLbyte*>(
3810 c, data_size, immediate_data_size); 3972 c, data_size, immediate_data_size);
3973 if (mailbox == nullptr) {
3974 return error::kOutOfBounds;
3975 }
3811 error::Error error = DoConsumeTextureCHROMIUM(target, mailbox); 3976 error::Error error = DoConsumeTextureCHROMIUM(target, mailbox);
3812 if (error != error::kNoError) { 3977 if (error != error::kNoError) {
3813 return error; 3978 return error;
3814 } 3979 }
3815 return error::kNoError; 3980 return error::kNoError;
3816 } 3981 }
3817 3982
3818 error::Error 3983 error::Error
3819 GLES2DecoderPassthroughImpl::HandleCreateAndConsumeTextureINTERNALImmediate( 3984 GLES2DecoderPassthroughImpl::HandleCreateAndConsumeTextureINTERNALImmediate(
3820 uint32_t immediate_data_size, 3985 uint32_t immediate_data_size,
3821 const volatile void* cmd_data) { 3986 const volatile void* cmd_data) {
3822 const volatile gles2::cmds::CreateAndConsumeTextureINTERNALImmediate& c = 3987 const volatile gles2::cmds::CreateAndConsumeTextureINTERNALImmediate& c =
3823 *static_cast<const volatile gles2::cmds:: 3988 *static_cast<const volatile gles2::cmds::
3824 CreateAndConsumeTextureINTERNALImmediate*>(cmd_data); 3989 CreateAndConsumeTextureINTERNALImmediate*>(cmd_data);
3825 GLenum target = static_cast<GLenum>(c.target); 3990 GLenum target = static_cast<GLenum>(c.target);
3826 GLuint texture = static_cast<GLuint>(c.texture); 3991 GLuint texture = static_cast<GLuint>(c.texture);
3827 uint32_t data_size; 3992 uint32_t data_size;
3828 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 16, &data_size)) { 3993 if (!GLES2Util::ComputeDataSize(1, sizeof(GLbyte), 16, &data_size)) {
3829 return error::kOutOfBounds; 3994 return error::kOutOfBounds;
3830 } 3995 }
3831 if (data_size > immediate_data_size) { 3996 if (data_size > immediate_data_size) {
3832 return error::kOutOfBounds; 3997 return error::kOutOfBounds;
3833 } 3998 }
3834 volatile const GLbyte* mailbox = GetImmediateDataAs<volatile const GLbyte*>( 3999 volatile const GLbyte* mailbox = GetImmediateDataAs<volatile const GLbyte*>(
3835 c, data_size, immediate_data_size); 4000 c, data_size, immediate_data_size);
4001 if (mailbox == nullptr) {
4002 return error::kOutOfBounds;
4003 }
3836 error::Error error = 4004 error::Error error =
3837 DoCreateAndConsumeTextureINTERNAL(target, texture, mailbox); 4005 DoCreateAndConsumeTextureINTERNAL(target, texture, mailbox);
3838 if (error != error::kNoError) { 4006 if (error != error::kNoError) {
3839 return error; 4007 return error;
3840 } 4008 }
3841 return error::kNoError; 4009 return error::kNoError;
3842 } 4010 }
3843 4011
3844 error::Error GLES2DecoderPassthroughImpl::HandleBindTexImage2DCHROMIUM( 4012 error::Error GLES2DecoderPassthroughImpl::HandleBindTexImage2DCHROMIUM(
3845 uint32_t immediate_data_size, 4013 uint32_t immediate_data_size,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
3893 if (count >= 0 && 4061 if (count >= 0 &&
3894 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { 4062 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
3895 return error::kOutOfBounds; 4063 return error::kOutOfBounds;
3896 } 4064 }
3897 if (data_size > immediate_data_size) { 4065 if (data_size > immediate_data_size) {
3898 return error::kOutOfBounds; 4066 return error::kOutOfBounds;
3899 } 4067 }
3900 volatile const GLenum* attachments = 4068 volatile const GLenum* attachments =
3901 GetImmediateDataAs<volatile const GLenum*>(c, data_size, 4069 GetImmediateDataAs<volatile const GLenum*>(c, data_size,
3902 immediate_data_size); 4070 immediate_data_size);
4071 if (attachments == nullptr) {
4072 return error::kOutOfBounds;
4073 }
3903 error::Error error = DoDiscardFramebufferEXT(target, count, attachments); 4074 error::Error error = DoDiscardFramebufferEXT(target, count, attachments);
3904 if (error != error::kNoError) { 4075 if (error != error::kNoError) {
3905 return error; 4076 return error;
3906 } 4077 }
3907 return error::kNoError; 4078 return error::kNoError;
3908 } 4079 }
3909 4080
3910 error::Error GLES2DecoderPassthroughImpl::HandleLoseContextCHROMIUM( 4081 error::Error GLES2DecoderPassthroughImpl::HandleLoseContextCHROMIUM(
3911 uint32_t immediate_data_size, 4082 uint32_t immediate_data_size,
3912 const volatile void* cmd_data) { 4083 const volatile void* cmd_data) {
(...skipping 18 matching lines...) Expand all
3931 uint32_t data_size = 0; 4102 uint32_t data_size = 0;
3932 if (count >= 0 && 4103 if (count >= 0 &&
3933 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) { 4104 !GLES2Util::ComputeDataSize(count, sizeof(GLenum), 1, &data_size)) {
3934 return error::kOutOfBounds; 4105 return error::kOutOfBounds;
3935 } 4106 }
3936 if (data_size > immediate_data_size) { 4107 if (data_size > immediate_data_size) {
3937 return error::kOutOfBounds; 4108 return error::kOutOfBounds;
3938 } 4109 }
3939 volatile const GLenum* bufs = GetImmediateDataAs<volatile const GLenum*>( 4110 volatile const GLenum* bufs = GetImmediateDataAs<volatile const GLenum*>(
3940 c, data_size, immediate_data_size); 4111 c, data_size, immediate_data_size);
4112 if (bufs == nullptr) {
4113 return error::kOutOfBounds;
4114 }
3941 error::Error error = DoDrawBuffersEXT(count, bufs); 4115 error::Error error = DoDrawBuffersEXT(count, bufs);
3942 if (error != error::kNoError) { 4116 if (error != error::kNoError) {
3943 return error; 4117 return error;
3944 } 4118 }
3945 return error::kNoError; 4119 return error::kNoError;
3946 } 4120 }
3947 4121
3948 error::Error 4122 error::Error
3949 GLES2DecoderPassthroughImpl::HandleScheduleCALayerInUseQueryCHROMIUMImmediate( 4123 GLES2DecoderPassthroughImpl::HandleScheduleCALayerInUseQueryCHROMIUMImmediate(
3950 uint32_t immediate_data_size, 4124 uint32_t immediate_data_size,
3951 const volatile void* cmd_data) { 4125 const volatile void* cmd_data) {
3952 const volatile gles2::cmds::ScheduleCALayerInUseQueryCHROMIUMImmediate& c = 4126 const volatile gles2::cmds::ScheduleCALayerInUseQueryCHROMIUMImmediate& c =
3953 *static_cast<const volatile gles2::cmds:: 4127 *static_cast<const volatile gles2::cmds::
3954 ScheduleCALayerInUseQueryCHROMIUMImmediate*>(cmd_data); 4128 ScheduleCALayerInUseQueryCHROMIUMImmediate*>(cmd_data);
3955 GLsizei count = static_cast<GLsizei>(c.count); 4129 GLsizei count = static_cast<GLsizei>(c.count);
3956 uint32_t data_size = 0; 4130 uint32_t data_size = 0;
3957 if (count >= 0 && 4131 if (count >= 0 &&
3958 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 1, &data_size)) { 4132 !GLES2Util::ComputeDataSize(count, sizeof(GLuint), 1, &data_size)) {
3959 return error::kOutOfBounds; 4133 return error::kOutOfBounds;
3960 } 4134 }
3961 if (data_size > immediate_data_size) { 4135 if (data_size > immediate_data_size) {
3962 return error::kOutOfBounds; 4136 return error::kOutOfBounds;
3963 } 4137 }
3964 volatile const GLuint* textures = GetImmediateDataAs<volatile const GLuint*>( 4138 volatile const GLuint* textures = GetImmediateDataAs<volatile const GLuint*>(
3965 c, data_size, immediate_data_size); 4139 c, data_size, immediate_data_size);
4140 if (textures == nullptr) {
4141 return error::kOutOfBounds;
4142 }
3966 error::Error error = DoScheduleCALayerInUseQueryCHROMIUM(count, textures); 4143 error::Error error = DoScheduleCALayerInUseQueryCHROMIUM(count, textures);
3967 if (error != error::kNoError) { 4144 if (error != error::kNoError) {
3968 return error; 4145 return error;
3969 } 4146 }
3970 return error::kNoError; 4147 return error::kNoError;
3971 } 4148 }
3972 4149
3973 error::Error GLES2DecoderPassthroughImpl::HandleCommitOverlayPlanesCHROMIUM( 4150 error::Error GLES2DecoderPassthroughImpl::HandleCommitOverlayPlanesCHROMIUM(
3974 uint32_t immediate_data_size, 4151 uint32_t immediate_data_size,
3975 const volatile void* cmd_data) { 4152 const volatile void* cmd_data) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
4012 GLenum matrixMode = static_cast<GLenum>(c.matrixMode); 4189 GLenum matrixMode = static_cast<GLenum>(c.matrixMode);
4013 uint32_t data_size; 4190 uint32_t data_size;
4014 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 16, &data_size)) { 4191 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 16, &data_size)) {
4015 return error::kOutOfBounds; 4192 return error::kOutOfBounds;
4016 } 4193 }
4017 if (data_size > immediate_data_size) { 4194 if (data_size > immediate_data_size) {
4018 return error::kOutOfBounds; 4195 return error::kOutOfBounds;
4019 } 4196 }
4020 volatile const GLfloat* m = GetImmediateDataAs<volatile const GLfloat*>( 4197 volatile const GLfloat* m = GetImmediateDataAs<volatile const GLfloat*>(
4021 c, data_size, immediate_data_size); 4198 c, data_size, immediate_data_size);
4199 if (m == nullptr) {
4200 return error::kOutOfBounds;
4201 }
4022 error::Error error = DoMatrixLoadfCHROMIUM(matrixMode, m); 4202 error::Error error = DoMatrixLoadfCHROMIUM(matrixMode, m);
4023 if (error != error::kNoError) { 4203 if (error != error::kNoError) {
4024 return error; 4204 return error;
4025 } 4205 }
4026 return error::kNoError; 4206 return error::kNoError;
4027 } 4207 }
4028 4208
4029 error::Error GLES2DecoderPassthroughImpl::HandleMatrixLoadIdentityCHROMIUM( 4209 error::Error GLES2DecoderPassthroughImpl::HandleMatrixLoadIdentityCHROMIUM(
4030 uint32_t immediate_data_size, 4210 uint32_t immediate_data_size,
4031 const volatile void* cmd_data) { 4211 const volatile void* cmd_data) {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
4123 uint32_t data_size; 4303 uint32_t data_size;
4124 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 16, &data_size)) { 4304 if (!GLES2Util::ComputeDataSize(1, sizeof(GLfloat), 16, &data_size)) {
4125 return error::kOutOfBounds; 4305 return error::kOutOfBounds;
4126 } 4306 }
4127 if (data_size > immediate_data_size) { 4307 if (data_size > immediate_data_size) {
4128 return error::kOutOfBounds; 4308 return error::kOutOfBounds;
4129 } 4309 }
4130 volatile const GLfloat* transform = 4310 volatile const GLfloat* transform =
4131 GetImmediateDataAs<volatile const GLfloat*>(c, data_size, 4311 GetImmediateDataAs<volatile const GLfloat*>(c, data_size,
4132 immediate_data_size); 4312 immediate_data_size);
4313 if (transform == nullptr) {
4314 return error::kOutOfBounds;
4315 }
4133 error::Error error = DoUniformMatrix4fvStreamTextureMatrixCHROMIUM( 4316 error::Error error = DoUniformMatrix4fvStreamTextureMatrixCHROMIUM(
4134 location, transpose, transform); 4317 location, transpose, transform);
4135 if (error != error::kNoError) { 4318 if (error != error::kNoError) {
4136 return error; 4319 return error;
4137 } 4320 }
4138 return error::kNoError; 4321 return error::kNoError;
4139 } 4322 }
4140 4323
4141 error::Error GLES2DecoderPassthroughImpl::HandleOverlayPromotionHintCHROMIUM( 4324 error::Error GLES2DecoderPassthroughImpl::HandleOverlayPromotionHintCHROMIUM(
4142 uint32_t immediate_data_size, 4325 uint32_t immediate_data_size,
(...skipping 25 matching lines...) Expand all
4168 uint32_t data_size = 0; 4351 uint32_t data_size = 0;
4169 if (count >= 0 && 4352 if (count >= 0 &&
4170 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 4, &data_size)) { 4353 !GLES2Util::ComputeDataSize(count, sizeof(GLint), 4, &data_size)) {
4171 return error::kOutOfBounds; 4354 return error::kOutOfBounds;
4172 } 4355 }
4173 if (data_size > immediate_data_size) { 4356 if (data_size > immediate_data_size) {
4174 return error::kOutOfBounds; 4357 return error::kOutOfBounds;
4175 } 4358 }
4176 volatile const GLint* rects = GetImmediateDataAs<volatile const GLint*>( 4359 volatile const GLint* rects = GetImmediateDataAs<volatile const GLint*>(
4177 c, data_size, immediate_data_size); 4360 c, data_size, immediate_data_size);
4361 if (rects == nullptr) {
4362 return error::kOutOfBounds;
4363 }
4178 error::Error error = DoSwapBuffersWithBoundsCHROMIUM(count, rects); 4364 error::Error error = DoSwapBuffersWithBoundsCHROMIUM(count, rects);
4179 if (error != error::kNoError) { 4365 if (error != error::kNoError) {
4180 return error; 4366 return error;
4181 } 4367 }
4182 return error::kNoError; 4368 return error::kNoError;
4183 } 4369 }
4184 4370
4185 } // namespace gles2 4371 } // namespace gles2
4186 } // namespace gpu 4372 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/build_gles2_cmd_buffer.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698