OLD | NEW |
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 2414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2425 } | 2425 } |
2426 | 2426 |
2427 error::Error GLES2DecoderImpl::HandleShaderSourceBucket( | 2427 error::Error GLES2DecoderImpl::HandleShaderSourceBucket( |
2428 uint32_t immediate_data_size, | 2428 uint32_t immediate_data_size, |
2429 const void* cmd_data) { | 2429 const void* cmd_data) { |
2430 const gles2::cmds::ShaderSourceBucket& c = | 2430 const gles2::cmds::ShaderSourceBucket& c = |
2431 *static_cast<const gles2::cmds::ShaderSourceBucket*>(cmd_data); | 2431 *static_cast<const gles2::cmds::ShaderSourceBucket*>(cmd_data); |
2432 (void)c; | 2432 (void)c; |
2433 GLuint shader = static_cast<GLuint>(c.shader); | 2433 GLuint shader = static_cast<GLuint>(c.shader); |
2434 | 2434 |
2435 const size_t kMinBucketSize = sizeof(GLint); | |
2436 // Each string has at least |length| in the header and a NUL character. | |
2437 const size_t kMinStringSize = sizeof(GLint) + 1; | |
2438 Bucket* bucket = GetBucket(c.str_bucket_id); | 2435 Bucket* bucket = GetBucket(c.str_bucket_id); |
2439 if (!bucket) { | 2436 if (!bucket) { |
2440 return error::kInvalidArguments; | 2437 return error::kInvalidArguments; |
2441 } | 2438 } |
2442 const size_t bucket_size = bucket->size(); | 2439 GLsizei count = 0; |
2443 if (bucket_size < kMinBucketSize) { | 2440 std::vector<char*> strs; |
| 2441 std::vector<GLint> len; |
| 2442 if (!bucket->GetAsStrings(&count, &strs, &len)) { |
2444 return error::kInvalidArguments; | 2443 return error::kInvalidArguments; |
2445 } | 2444 } |
2446 const char* bucket_data = bucket->GetDataAs<const char*>(0, bucket_size); | 2445 const char** str = |
2447 const GLint* header = reinterpret_cast<const GLint*>(bucket_data); | 2446 strs.size() > 0 ? const_cast<const char**>(&strs[0]) : NULL; |
2448 GLsizei count = static_cast<GLsizei>(header[0]); | 2447 const GLint* length = |
2449 if (count < 0) { | 2448 len.size() > 0 ? const_cast<const GLint*>(&len[0]) : NULL; |
2450 return error::kInvalidArguments; | 2449 (void)length; |
2451 } | |
2452 const size_t max_count = (bucket_size - kMinBucketSize) / kMinStringSize; | |
2453 if (max_count < static_cast<size_t>(count)) { | |
2454 return error::kInvalidArguments; | |
2455 } | |
2456 const GLint* length = header + 1; | |
2457 scoped_ptr<const char* []> strs; | |
2458 if (count > 0) | |
2459 strs.reset(new const char* [count]); | |
2460 const char** str = strs.get(); | |
2461 base::CheckedNumeric<size_t> total_size = sizeof(GLint); | |
2462 total_size *= count + 1; // Header size. | |
2463 if (!total_size.IsValid()) | |
2464 return error::kInvalidArguments; | |
2465 for (GLsizei ii = 0; ii < count; ++ii) { | |
2466 str[ii] = bucket_data + total_size.ValueOrDefault(0); | |
2467 total_size += length[ii]; | |
2468 total_size += 1; // NUL char at the end of each char array. | |
2469 if (!total_size.IsValid() || total_size.ValueOrDefault(0) > bucket_size || | |
2470 str[ii][length[ii]] != 0) { | |
2471 return error::kInvalidArguments; | |
2472 } | |
2473 } | |
2474 if (total_size.ValueOrDefault(0) != bucket_size) { | |
2475 return error::kInvalidArguments; | |
2476 } | |
2477 DoShaderSource(shader, count, str, length); | 2450 DoShaderSource(shader, count, str, length); |
2478 return error::kNoError; | 2451 return error::kNoError; |
2479 } | 2452 } |
2480 | 2453 |
2481 error::Error GLES2DecoderImpl::HandleStencilFunc(uint32_t immediate_data_size, | 2454 error::Error GLES2DecoderImpl::HandleStencilFunc(uint32_t immediate_data_size, |
2482 const void* cmd_data) { | 2455 const void* cmd_data) { |
2483 const gles2::cmds::StencilFunc& c = | 2456 const gles2::cmds::StencilFunc& c = |
2484 *static_cast<const gles2::cmds::StencilFunc*>(cmd_data); | 2457 *static_cast<const gles2::cmds::StencilFunc*>(cmd_data); |
2485 (void)c; | 2458 (void)c; |
2486 GLenum func = static_cast<GLenum>(c.func); | 2459 GLenum func = static_cast<GLenum>(c.func); |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2810 uint32_t immediate_data_size, | 2783 uint32_t immediate_data_size, |
2811 const void* cmd_data) { | 2784 const void* cmd_data) { |
2812 if (!unsafe_es3_apis_enabled()) | 2785 if (!unsafe_es3_apis_enabled()) |
2813 return error::kUnknownCommand; | 2786 return error::kUnknownCommand; |
2814 const gles2::cmds::TransformFeedbackVaryingsBucket& c = | 2787 const gles2::cmds::TransformFeedbackVaryingsBucket& c = |
2815 *static_cast<const gles2::cmds::TransformFeedbackVaryingsBucket*>( | 2788 *static_cast<const gles2::cmds::TransformFeedbackVaryingsBucket*>( |
2816 cmd_data); | 2789 cmd_data); |
2817 (void)c; | 2790 (void)c; |
2818 GLuint program = static_cast<GLuint>(c.program); | 2791 GLuint program = static_cast<GLuint>(c.program); |
2819 | 2792 |
2820 const size_t kMinBucketSize = sizeof(GLint); | |
2821 // Each string has at least |length| in the header and a NUL character. | |
2822 const size_t kMinStringSize = sizeof(GLint) + 1; | |
2823 Bucket* bucket = GetBucket(c.varyings_bucket_id); | 2793 Bucket* bucket = GetBucket(c.varyings_bucket_id); |
2824 if (!bucket) { | 2794 if (!bucket) { |
2825 return error::kInvalidArguments; | 2795 return error::kInvalidArguments; |
2826 } | 2796 } |
2827 const size_t bucket_size = bucket->size(); | 2797 GLsizei count = 0; |
2828 if (bucket_size < kMinBucketSize) { | 2798 std::vector<char*> strs; |
| 2799 std::vector<GLint> len; |
| 2800 if (!bucket->GetAsStrings(&count, &strs, &len)) { |
2829 return error::kInvalidArguments; | 2801 return error::kInvalidArguments; |
2830 } | 2802 } |
2831 const char* bucket_data = bucket->GetDataAs<const char*>(0, bucket_size); | 2803 const char** varyings = |
2832 const GLint* header = reinterpret_cast<const GLint*>(bucket_data); | 2804 strs.size() > 0 ? const_cast<const char**>(&strs[0]) : NULL; |
2833 GLsizei count = static_cast<GLsizei>(header[0]); | 2805 const GLint* length = |
2834 if (count < 0) { | 2806 len.size() > 0 ? const_cast<const GLint*>(&len[0]) : NULL; |
2835 return error::kInvalidArguments; | 2807 (void)length; |
2836 } | |
2837 const size_t max_count = (bucket_size - kMinBucketSize) / kMinStringSize; | |
2838 if (max_count < static_cast<size_t>(count)) { | |
2839 return error::kInvalidArguments; | |
2840 } | |
2841 const GLint* length = header + 1; | |
2842 scoped_ptr<const char* []> strs; | |
2843 if (count > 0) | |
2844 strs.reset(new const char* [count]); | |
2845 const char** varyings = strs.get(); | |
2846 base::CheckedNumeric<size_t> total_size = sizeof(GLint); | |
2847 total_size *= count + 1; // Header size. | |
2848 if (!total_size.IsValid()) | |
2849 return error::kInvalidArguments; | |
2850 for (GLsizei ii = 0; ii < count; ++ii) { | |
2851 varyings[ii] = bucket_data + total_size.ValueOrDefault(0); | |
2852 total_size += length[ii]; | |
2853 total_size += 1; // NUL char at the end of each char array. | |
2854 if (!total_size.IsValid() || total_size.ValueOrDefault(0) > bucket_size || | |
2855 varyings[ii][length[ii]] != 0) { | |
2856 return error::kInvalidArguments; | |
2857 } | |
2858 } | |
2859 if (total_size.ValueOrDefault(0) != bucket_size) { | |
2860 return error::kInvalidArguments; | |
2861 } | |
2862 GLenum buffermode = static_cast<GLenum>(c.buffermode); | 2808 GLenum buffermode = static_cast<GLenum>(c.buffermode); |
2863 DoTransformFeedbackVaryings(program, count, varyings, buffermode); | 2809 DoTransformFeedbackVaryings(program, count, varyings, buffermode); |
2864 return error::kNoError; | 2810 return error::kNoError; |
2865 } | 2811 } |
2866 | 2812 |
2867 error::Error GLES2DecoderImpl::HandleUniform1f(uint32_t immediate_data_size, | 2813 error::Error GLES2DecoderImpl::HandleUniform1f(uint32_t immediate_data_size, |
2868 const void* cmd_data) { | 2814 const void* cmd_data) { |
2869 const gles2::cmds::Uniform1f& c = | 2815 const gles2::cmds::Uniform1f& c = |
2870 *static_cast<const gles2::cmds::Uniform1f*>(cmd_data); | 2816 *static_cast<const gles2::cmds::Uniform1f*>(cmd_data); |
2871 (void)c; | 2817 (void)c; |
(...skipping 2001 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4873 state_.ignore_cached_state) { | 4819 state_.ignore_cached_state) { |
4874 framebuffer_state_.clear_state_dirty = true; | 4820 framebuffer_state_.clear_state_dirty = true; |
4875 } | 4821 } |
4876 return false; | 4822 return false; |
4877 default: | 4823 default: |
4878 NOTREACHED(); | 4824 NOTREACHED(); |
4879 return false; | 4825 return false; |
4880 } | 4826 } |
4881 } | 4827 } |
4882 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ | 4828 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ |
OLD | NEW |