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

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

Issue 863253002: Update from https://crrev.com/312600 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 11 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 685 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 DoCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); 696 DoCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
697 return error::kNoError; 697 return error::kNoError;
698 } 698 }
699 699
700 error::Error GLES2DecoderImpl::HandleCreateProgram(uint32_t immediate_data_size, 700 error::Error GLES2DecoderImpl::HandleCreateProgram(uint32_t immediate_data_size,
701 const void* cmd_data) { 701 const void* cmd_data) {
702 const gles2::cmds::CreateProgram& c = 702 const gles2::cmds::CreateProgram& c =
703 *static_cast<const gles2::cmds::CreateProgram*>(cmd_data); 703 *static_cast<const gles2::cmds::CreateProgram*>(cmd_data);
704 (void)c; 704 (void)c;
705 uint32_t client_id = c.client_id; 705 uint32_t client_id = c.client_id;
706 if (!CreateProgramHelper(client_id)) { 706 if (GetProgram(client_id)) {
707 return error::kInvalidArguments; 707 return error::kInvalidArguments;
708 } 708 }
709 GLuint service_id = glCreateProgram();
710 if (service_id) {
711 CreateProgram(client_id, service_id);
712 }
709 return error::kNoError; 713 return error::kNoError;
710 } 714 }
711 715
712 error::Error GLES2DecoderImpl::HandleCreateShader(uint32_t immediate_data_size, 716 error::Error GLES2DecoderImpl::HandleCreateShader(uint32_t immediate_data_size,
713 const void* cmd_data) { 717 const void* cmd_data) {
714 const gles2::cmds::CreateShader& c = 718 const gles2::cmds::CreateShader& c =
715 *static_cast<const gles2::cmds::CreateShader*>(cmd_data); 719 *static_cast<const gles2::cmds::CreateShader*>(cmd_data);
716 (void)c; 720 (void)c;
717 GLenum type = static_cast<GLenum>(c.type); 721 GLenum type = static_cast<GLenum>(c.type);
718 if (!validators_->shader_type.IsValid(type)) { 722 if (!validators_->shader_type.IsValid(type)) {
719 LOCAL_SET_GL_ERROR_INVALID_ENUM("glCreateShader", type, "type"); 723 LOCAL_SET_GL_ERROR_INVALID_ENUM("glCreateShader", type, "type");
720 return error::kNoError; 724 return error::kNoError;
721 } 725 }
722 uint32_t client_id = c.client_id; 726 uint32_t client_id = c.client_id;
723 if (!CreateShaderHelper(type, client_id)) { 727 if (GetShader(client_id)) {
724 return error::kInvalidArguments; 728 return error::kInvalidArguments;
725 } 729 }
730 GLuint service_id = glCreateShader(type);
731 if (service_id) {
732 CreateShader(client_id, service_id, type);
733 }
726 return error::kNoError; 734 return error::kNoError;
727 } 735 }
728 736
729 error::Error GLES2DecoderImpl::HandleCullFace(uint32_t immediate_data_size, 737 error::Error GLES2DecoderImpl::HandleCullFace(uint32_t immediate_data_size,
730 const void* cmd_data) { 738 const void* cmd_data) {
731 const gles2::cmds::CullFace& c = 739 const gles2::cmds::CullFace& c =
732 *static_cast<const gles2::cmds::CullFace*>(cmd_data); 740 *static_cast<const gles2::cmds::CullFace*>(cmd_data);
733 (void)c; 741 (void)c;
734 GLenum mode = static_cast<GLenum>(c.mode); 742 GLenum mode = static_cast<GLenum>(c.mode);
735 if (!validators_->face_type.IsValid(mode)) { 743 if (!validators_->face_type.IsValid(mode)) {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 for (GLsizei ii = 0; ii < n; ++ii) { 832 for (GLsizei ii = 0; ii < n; ++ii) {
825 GLuint service_id = 0; 833 GLuint service_id = 0;
826 if (group_->GetSamplerServiceId(samplers[ii], &service_id)) { 834 if (group_->GetSamplerServiceId(samplers[ii], &service_id)) {
827 glDeleteSamplers(1, &service_id); 835 glDeleteSamplers(1, &service_id);
828 group_->RemoveSamplerId(samplers[ii]); 836 group_->RemoveSamplerId(samplers[ii]);
829 } 837 }
830 } 838 }
831 return error::kNoError; 839 return error::kNoError;
832 } 840 }
833 841
842 error::Error GLES2DecoderImpl::HandleDeleteSync(uint32_t immediate_data_size,
843 const void* cmd_data) {
844 if (!unsafe_es3_apis_enabled())
845 return error::kUnknownCommand;
846 const gles2::cmds::DeleteSync& c =
847 *static_cast<const gles2::cmds::DeleteSync*>(cmd_data);
848 (void)c;
849 GLuint sync = c.sync;
850 GLsync service_id = 0;
851 if (group_->GetSyncServiceId(sync, &service_id)) {
852 glDeleteSync(service_id);
853 group_->RemoveSyncId(sync);
854 } else {
855 LOCAL_SET_GL_ERROR(GL_INVALID_VALUE, "glDeleteSync", "unknown sync");
856 }
857 return error::kNoError;
858 }
859
834 error::Error GLES2DecoderImpl::HandleDeleteTexturesImmediate( 860 error::Error GLES2DecoderImpl::HandleDeleteTexturesImmediate(
835 uint32_t immediate_data_size, 861 uint32_t immediate_data_size,
836 const void* cmd_data) { 862 const void* cmd_data) {
837 const gles2::cmds::DeleteTexturesImmediate& c = 863 const gles2::cmds::DeleteTexturesImmediate& c =
838 *static_cast<const gles2::cmds::DeleteTexturesImmediate*>(cmd_data); 864 *static_cast<const gles2::cmds::DeleteTexturesImmediate*>(cmd_data);
839 (void)c; 865 (void)c;
840 GLsizei n = static_cast<GLsizei>(c.n); 866 GLsizei n = static_cast<GLsizei>(c.n);
841 uint32_t data_size; 867 uint32_t data_size;
842 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) { 868 if (!SafeMultiplyUint32(n, sizeof(GLuint), &data_size)) {
843 return error::kOutOfBounds; 869 return error::kOutOfBounds;
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
975 uint32_t immediate_data_size, 1001 uint32_t immediate_data_size,
976 const void* cmd_data) { 1002 const void* cmd_data) {
977 const gles2::cmds::EnableVertexAttribArray& c = 1003 const gles2::cmds::EnableVertexAttribArray& c =
978 *static_cast<const gles2::cmds::EnableVertexAttribArray*>(cmd_data); 1004 *static_cast<const gles2::cmds::EnableVertexAttribArray*>(cmd_data);
979 (void)c; 1005 (void)c;
980 GLuint index = static_cast<GLuint>(c.index); 1006 GLuint index = static_cast<GLuint>(c.index);
981 DoEnableVertexAttribArray(index); 1007 DoEnableVertexAttribArray(index);
982 return error::kNoError; 1008 return error::kNoError;
983 } 1009 }
984 1010
1011 error::Error GLES2DecoderImpl::HandleFenceSync(uint32_t immediate_data_size,
1012 const void* cmd_data) {
1013 if (!unsafe_es3_apis_enabled())
1014 return error::kUnknownCommand;
1015 const gles2::cmds::FenceSync& c =
1016 *static_cast<const gles2::cmds::FenceSync*>(cmd_data);
1017 (void)c;
1018 GLenum condition = static_cast<GLenum>(c.condition);
1019 GLbitfield flags = static_cast<GLbitfield>(c.flags);
1020 uint32_t client_id = c.client_id;
1021 GLsync service_id = 0;
1022 if (group_->GetSyncServiceId(client_id, &service_id)) {
1023 return error::kInvalidArguments;
1024 }
1025 service_id = glFenceSync(condition, flags);
1026 if (service_id) {
1027 group_->AddSyncId(client_id, service_id);
1028 }
1029 return error::kNoError;
1030 }
1031
985 error::Error GLES2DecoderImpl::HandleFinish(uint32_t immediate_data_size, 1032 error::Error GLES2DecoderImpl::HandleFinish(uint32_t immediate_data_size,
986 const void* cmd_data) { 1033 const void* cmd_data) {
987 const gles2::cmds::Finish& c = 1034 const gles2::cmds::Finish& c =
988 *static_cast<const gles2::cmds::Finish*>(cmd_data); 1035 *static_cast<const gles2::cmds::Finish*>(cmd_data);
989 (void)c; 1036 (void)c;
990 error::Error error; 1037 error::Error error;
991 error = WillAccessBoundFramebufferForRead(); 1038 error = WillAccessBoundFramebufferForRead();
992 if (error != error::kNoError) 1039 if (error != error::kNoError)
993 return error; 1040 return error;
994 DoFinish(); 1041 DoFinish();
(...skipping 1042 matching lines...) Expand 10 before | Expand all | Expand 10 after
2037 const gles2::cmds::IsSampler& c = 2084 const gles2::cmds::IsSampler& c =
2038 *static_cast<const gles2::cmds::IsSampler*>(cmd_data); 2085 *static_cast<const gles2::cmds::IsSampler*>(cmd_data);
2039 (void)c; 2086 (void)c;
2040 GLuint sampler = c.sampler; 2087 GLuint sampler = c.sampler;
2041 typedef cmds::IsSampler::Result Result; 2088 typedef cmds::IsSampler::Result Result;
2042 Result* result_dst = GetSharedMemoryAs<Result*>( 2089 Result* result_dst = GetSharedMemoryAs<Result*>(
2043 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); 2090 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
2044 if (!result_dst) { 2091 if (!result_dst) {
2045 return error::kOutOfBounds; 2092 return error::kOutOfBounds;
2046 } 2093 }
2047 *result_dst = group_->GetSamplerServiceId(sampler, &sampler); 2094 GLuint service_sampler = 0;
2095 *result_dst = group_->GetSamplerServiceId(sampler, &service_sampler);
2048 return error::kNoError; 2096 return error::kNoError;
2049 } 2097 }
2050 2098
2051 error::Error GLES2DecoderImpl::HandleIsShader(uint32_t immediate_data_size, 2099 error::Error GLES2DecoderImpl::HandleIsShader(uint32_t immediate_data_size,
2052 const void* cmd_data) { 2100 const void* cmd_data) {
2053 const gles2::cmds::IsShader& c = 2101 const gles2::cmds::IsShader& c =
2054 *static_cast<const gles2::cmds::IsShader*>(cmd_data); 2102 *static_cast<const gles2::cmds::IsShader*>(cmd_data);
2055 (void)c; 2103 (void)c;
2056 GLuint shader = c.shader; 2104 GLuint shader = c.shader;
2057 typedef cmds::IsShader::Result Result; 2105 typedef cmds::IsShader::Result Result;
2058 Result* result_dst = GetSharedMemoryAs<Result*>( 2106 Result* result_dst = GetSharedMemoryAs<Result*>(
2059 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); 2107 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
2060 if (!result_dst) { 2108 if (!result_dst) {
2061 return error::kOutOfBounds; 2109 return error::kOutOfBounds;
2062 } 2110 }
2063 *result_dst = DoIsShader(shader); 2111 *result_dst = DoIsShader(shader);
2064 return error::kNoError; 2112 return error::kNoError;
2065 } 2113 }
2066 2114
2115 error::Error GLES2DecoderImpl::HandleIsSync(uint32_t immediate_data_size,
2116 const void* cmd_data) {
2117 if (!unsafe_es3_apis_enabled())
2118 return error::kUnknownCommand;
2119 const gles2::cmds::IsSync& c =
2120 *static_cast<const gles2::cmds::IsSync*>(cmd_data);
2121 (void)c;
2122 GLuint sync = c.sync;
2123 typedef cmds::IsSync::Result Result;
2124 Result* result_dst = GetSharedMemoryAs<Result*>(
2125 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
2126 if (!result_dst) {
2127 return error::kOutOfBounds;
2128 }
2129 GLsync service_sync = 0;
2130 *result_dst = group_->GetSyncServiceId(sync, &service_sync);
2131 return error::kNoError;
2132 }
2133
2067 error::Error GLES2DecoderImpl::HandleIsTexture(uint32_t immediate_data_size, 2134 error::Error GLES2DecoderImpl::HandleIsTexture(uint32_t immediate_data_size,
2068 const void* cmd_data) { 2135 const void* cmd_data) {
2069 const gles2::cmds::IsTexture& c = 2136 const gles2::cmds::IsTexture& c =
2070 *static_cast<const gles2::cmds::IsTexture*>(cmd_data); 2137 *static_cast<const gles2::cmds::IsTexture*>(cmd_data);
2071 (void)c; 2138 (void)c;
2072 GLuint texture = c.texture; 2139 GLuint texture = c.texture;
2073 typedef cmds::IsTexture::Result Result; 2140 typedef cmds::IsTexture::Result Result;
2074 Result* result_dst = GetSharedMemoryAs<Result*>( 2141 Result* result_dst = GetSharedMemoryAs<Result*>(
2075 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); 2142 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
2076 if (!result_dst) { 2143 if (!result_dst) {
(...skipping 11 matching lines...) Expand all
2088 const gles2::cmds::IsTransformFeedback& c = 2155 const gles2::cmds::IsTransformFeedback& c =
2089 *static_cast<const gles2::cmds::IsTransformFeedback*>(cmd_data); 2156 *static_cast<const gles2::cmds::IsTransformFeedback*>(cmd_data);
2090 (void)c; 2157 (void)c;
2091 GLuint transformfeedback = c.transformfeedback; 2158 GLuint transformfeedback = c.transformfeedback;
2092 typedef cmds::IsTransformFeedback::Result Result; 2159 typedef cmds::IsTransformFeedback::Result Result;
2093 Result* result_dst = GetSharedMemoryAs<Result*>( 2160 Result* result_dst = GetSharedMemoryAs<Result*>(
2094 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst)); 2161 c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
2095 if (!result_dst) { 2162 if (!result_dst) {
2096 return error::kOutOfBounds; 2163 return error::kOutOfBounds;
2097 } 2164 }
2098 *result_dst = group_->GetTransformFeedbackServiceId(transformfeedback, 2165 GLuint service_transformfeedback = 0;
2099 &transformfeedback); 2166 *result_dst = group_->GetTransformFeedbackServiceId(
2167 transformfeedback, &service_transformfeedback);
2100 return error::kNoError; 2168 return error::kNoError;
2101 } 2169 }
2102 2170
2103 error::Error GLES2DecoderImpl::HandleLineWidth(uint32_t immediate_data_size, 2171 error::Error GLES2DecoderImpl::HandleLineWidth(uint32_t immediate_data_size,
2104 const void* cmd_data) { 2172 const void* cmd_data) {
2105 const gles2::cmds::LineWidth& c = 2173 const gles2::cmds::LineWidth& c =
2106 *static_cast<const gles2::cmds::LineWidth*>(cmd_data); 2174 *static_cast<const gles2::cmds::LineWidth*>(cmd_data);
2107 (void)c; 2175 (void)c;
2108 GLfloat width = static_cast<GLfloat>(c.width); 2176 GLfloat width = static_cast<GLfloat>(c.width);
2109 if (width <= 0.0f || base::IsNaN(width)) { 2177 if (width <= 0.0f || base::IsNaN(width)) {
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
2346 state_.scissor_width != width || state_.scissor_height != height) { 2414 state_.scissor_width != width || state_.scissor_height != height) {
2347 state_.scissor_x = x; 2415 state_.scissor_x = x;
2348 state_.scissor_y = y; 2416 state_.scissor_y = y;
2349 state_.scissor_width = width; 2417 state_.scissor_width = width;
2350 state_.scissor_height = height; 2418 state_.scissor_height = height;
2351 glScissor(x, y, width, height); 2419 glScissor(x, y, width, height);
2352 } 2420 }
2353 return error::kNoError; 2421 return error::kNoError;
2354 } 2422 }
2355 2423
2424 error::Error GLES2DecoderImpl::HandleShaderSourceBucket(
2425 uint32_t immediate_data_size,
2426 const void* cmd_data) {
2427 const gles2::cmds::ShaderSourceBucket& c =
2428 *static_cast<const gles2::cmds::ShaderSourceBucket*>(cmd_data);
2429 (void)c;
2430 GLuint shader = static_cast<GLuint>(c.shader);
2431
2432 const size_t kMinBucketSize = sizeof(GLint);
2433 // Each string has at least |length| in the header and a NUL character.
2434 const size_t kMinStringSize = sizeof(GLint) + 1;
2435 Bucket* bucket = GetBucket(c.str_bucket_id);
2436 if (!bucket) {
2437 return error::kInvalidArguments;
2438 }
2439 const size_t bucket_size = bucket->size();
2440 if (bucket_size < kMinBucketSize) {
2441 return error::kInvalidArguments;
2442 }
2443 const char* bucket_data = bucket->GetDataAs<const char*>(0, bucket_size);
2444 const GLint* header = reinterpret_cast<const GLint*>(bucket_data);
2445 GLsizei count = static_cast<GLsizei>(header[0]);
2446 if (count < 0) {
2447 return error::kInvalidArguments;
2448 }
2449 const size_t max_count = (bucket_size - kMinBucketSize) / kMinStringSize;
2450 if (max_count < static_cast<size_t>(count)) {
2451 return error::kInvalidArguments;
2452 }
2453 const GLint* length = header + 1;
2454 scoped_ptr<const char* []> strs;
2455 if (count > 0)
2456 strs.reset(new const char* [count]);
2457 const char** str = strs.get();
2458 base::CheckedNumeric<size_t> total_size = sizeof(GLint);
2459 total_size *= count + 1; // Header size.
2460 if (!total_size.IsValid())
2461 return error::kInvalidArguments;
2462 for (GLsizei ii = 0; ii < count; ++ii) {
2463 str[ii] = bucket_data + total_size.ValueOrDefault(0);
2464 total_size += length[ii];
2465 total_size += 1; // NUL char at the end of each char array.
2466 if (!total_size.IsValid() || total_size.ValueOrDefault(0) > bucket_size ||
2467 str[ii][length[ii]] != 0) {
2468 return error::kInvalidArguments;
2469 }
2470 }
2471 if (total_size.ValueOrDefault(0) != bucket_size) {
2472 return error::kInvalidArguments;
2473 }
2474 DoShaderSource(shader, count, str, length);
2475 return error::kNoError;
2476 }
2477
2356 error::Error GLES2DecoderImpl::HandleStencilFunc(uint32_t immediate_data_size, 2478 error::Error GLES2DecoderImpl::HandleStencilFunc(uint32_t immediate_data_size,
2357 const void* cmd_data) { 2479 const void* cmd_data) {
2358 const gles2::cmds::StencilFunc& c = 2480 const gles2::cmds::StencilFunc& c =
2359 *static_cast<const gles2::cmds::StencilFunc*>(cmd_data); 2481 *static_cast<const gles2::cmds::StencilFunc*>(cmd_data);
2360 (void)c; 2482 (void)c;
2361 GLenum func = static_cast<GLenum>(c.func); 2483 GLenum func = static_cast<GLenum>(c.func);
2362 GLint ref = static_cast<GLint>(c.ref); 2484 GLint ref = static_cast<GLint>(c.ref);
2363 GLuint mask = static_cast<GLuint>(c.mask); 2485 GLuint mask = static_cast<GLuint>(c.mask);
2364 if (!validators_->cmp_function.IsValid(func)) { 2486 if (!validators_->cmp_function.IsValid(func)) {
2365 LOCAL_SET_GL_ERROR_INVALID_ENUM("glStencilFunc", func, "func"); 2487 LOCAL_SET_GL_ERROR_INVALID_ENUM("glStencilFunc", func, "func");
(...skipping 2340 matching lines...) Expand 10 before | Expand all | Expand 10 after
4706 state_.ignore_cached_state) { 4828 state_.ignore_cached_state) {
4707 framebuffer_state_.clear_state_dirty = true; 4829 framebuffer_state_.clear_state_dirty = true;
4708 } 4830 }
4709 return false; 4831 return false;
4710 default: 4832 default:
4711 NOTREACHED(); 4833 NOTREACHED();
4712 return false; 4834 return false;
4713 } 4835 }
4714 } 4836 }
4715 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_ 4837 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_AUTOGEN_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698