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

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

Issue 872713004: Add glTransformFeedbackVaryings to GPU command buffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@caritas
Patch Set: Rebase Created 5 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
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 2788 matching lines...) Expand 10 before | Expand all | Expand 10 after
2799 GLenum target = static_cast<GLenum>(c.target); 2799 GLenum target = static_cast<GLenum>(c.target);
2800 GLsizei levels = static_cast<GLsizei>(c.levels); 2800 GLsizei levels = static_cast<GLsizei>(c.levels);
2801 GLenum internalFormat = static_cast<GLenum>(c.internalFormat); 2801 GLenum internalFormat = static_cast<GLenum>(c.internalFormat);
2802 GLsizei width = static_cast<GLsizei>(c.width); 2802 GLsizei width = static_cast<GLsizei>(c.width);
2803 GLsizei height = static_cast<GLsizei>(c.height); 2803 GLsizei height = static_cast<GLsizei>(c.height);
2804 GLsizei depth = static_cast<GLsizei>(c.depth); 2804 GLsizei depth = static_cast<GLsizei>(c.depth);
2805 glTexStorage3D(target, levels, internalFormat, width, height, depth); 2805 glTexStorage3D(target, levels, internalFormat, width, height, depth);
2806 return error::kNoError; 2806 return error::kNoError;
2807 } 2807 }
2808 2808
2809 error::Error GLES2DecoderImpl::HandleTransformFeedbackVaryingsBucket(
2810 uint32_t immediate_data_size,
2811 const void* cmd_data) {
2812 if (!unsafe_es3_apis_enabled())
2813 return error::kUnknownCommand;
2814 const gles2::cmds::TransformFeedbackVaryingsBucket& c =
2815 *static_cast<const gles2::cmds::TransformFeedbackVaryingsBucket*>(
2816 cmd_data);
2817 (void)c;
2818 GLuint program = static_cast<GLuint>(c.program);
2819
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);
2824 if (!bucket) {
2825 return error::kInvalidArguments;
2826 }
2827 const size_t bucket_size = bucket->size();
2828 if (bucket_size < kMinBucketSize) {
2829 return error::kInvalidArguments;
2830 }
2831 const char* bucket_data = bucket->GetDataAs<const char*>(0, bucket_size);
2832 const GLint* header = reinterpret_cast<const GLint*>(bucket_data);
2833 GLsizei count = static_cast<GLsizei>(header[0]);
2834 if (count < 0) {
2835 return error::kInvalidArguments;
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);
2863 DoTransformFeedbackVaryings(program, count, varyings, buffermode);
2864 return error::kNoError;
2865 }
2866
2809 error::Error GLES2DecoderImpl::HandleUniform1f(uint32_t immediate_data_size, 2867 error::Error GLES2DecoderImpl::HandleUniform1f(uint32_t immediate_data_size,
2810 const void* cmd_data) { 2868 const void* cmd_data) {
2811 const gles2::cmds::Uniform1f& c = 2869 const gles2::cmds::Uniform1f& c =
2812 *static_cast<const gles2::cmds::Uniform1f*>(cmd_data); 2870 *static_cast<const gles2::cmds::Uniform1f*>(cmd_data);
2813 (void)c; 2871 (void)c;
2814 GLint location = static_cast<GLint>(c.location); 2872 GLint location = static_cast<GLint>(c.location);
2815 GLfloat x = static_cast<GLfloat>(c.x); 2873 GLfloat x = static_cast<GLfloat>(c.x);
2816 GLfloat temp[1] = { 2874 GLfloat temp[1] = {
2817 x, 2875 x,
2818 }; 2876 };
(...skipping 1996 matching lines...) Expand 10 before | Expand all | Expand 10 after
4815 state_.ignore_cached_state) { 4873 state_.ignore_cached_state) {
4816 framebuffer_state_.clear_state_dirty = true; 4874 framebuffer_state_.clear_state_dirty = true;
4817 } 4875 }
4818 return false; 4876 return false;
4819 default: 4877 default:
4820 NOTREACHED(); 4878 NOTREACHED();
4821 return false; 4879 return false;
4822 } 4880 }
4823 } 4881 }
4824 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ 4882 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698