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 1922 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1933 return; | 1933 return; |
1934 } | 1934 } |
1935 if (depth < 0) { | 1935 if (depth < 0) { |
1936 SetGLError(GL_INVALID_VALUE, "glTexStorage3D", "depth < 0"); | 1936 SetGLError(GL_INVALID_VALUE, "glTexStorage3D", "depth < 0"); |
1937 return; | 1937 return; |
1938 } | 1938 } |
1939 helper_->TexStorage3D(target, levels, internalFormat, width, height, depth); | 1939 helper_->TexStorage3D(target, levels, internalFormat, width, height, depth); |
1940 CheckGLError(); | 1940 CheckGLError(); |
1941 } | 1941 } |
1942 | 1942 |
| 1943 void GLES2Implementation::TransformFeedbackVaryings(GLuint program, |
| 1944 GLsizei count, |
| 1945 const char* const* varyings, |
| 1946 GLenum buffermode) { |
| 1947 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
| 1948 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTransformFeedbackVaryings(" |
| 1949 << program << ", " << count << ", " |
| 1950 << static_cast<const void*>(varyings) << ", " |
| 1951 << GLES2Util::GetStringBufferMode(buffermode) << ")"); |
| 1952 GPU_CLIENT_LOG_CODE_BLOCK({ |
| 1953 for (GLsizei ii = 0; ii < count; ++ii) { |
| 1954 if (varyings[ii]) { |
| 1955 GPU_CLIENT_LOG(" " << ii << ": ---\n" << varyings[ii] << "\n---"); |
| 1956 } else { |
| 1957 GPU_CLIENT_LOG(" " << ii << ": NULL"); |
| 1958 } |
| 1959 } |
| 1960 }); |
| 1961 if (count < 0) { |
| 1962 SetGLError(GL_INVALID_VALUE, "glTransformFeedbackVaryings", "count < 0"); |
| 1963 return; |
| 1964 } |
| 1965 // Compute the total size. |
| 1966 base::CheckedNumeric<size_t> total_size = count; |
| 1967 total_size += 1; |
| 1968 total_size *= sizeof(GLint); |
| 1969 if (!total_size.IsValid()) { |
| 1970 SetGLError(GL_INVALID_VALUE, "glTransformFeedbackVaryings", "overflow"); |
| 1971 return; |
| 1972 } |
| 1973 size_t header_size = total_size.ValueOrDefault(0); |
| 1974 std::vector<GLint> header(count + 1); |
| 1975 header[0] = static_cast<GLint>(count); |
| 1976 for (GLsizei ii = 0; ii < count; ++ii) { |
| 1977 GLint len = 0; |
| 1978 if (varyings[ii]) { |
| 1979 len = static_cast<GLint>(strlen(varyings[ii])); |
| 1980 } |
| 1981 total_size += len; |
| 1982 total_size += 1; // NULL at the end of each char array. |
| 1983 if (!total_size.IsValid()) { |
| 1984 SetGLError(GL_INVALID_VALUE, "glTransformFeedbackVaryings", "overflow"); |
| 1985 return; |
| 1986 } |
| 1987 header[ii + 1] = len; |
| 1988 } |
| 1989 // Pack data into a bucket on the service. |
| 1990 helper_->SetBucketSize(kResultBucketId, total_size.ValueOrDefault(0)); |
| 1991 size_t offset = 0; |
| 1992 for (GLsizei ii = 0; ii <= count; ++ii) { |
| 1993 const char* src = (ii == 0) ? reinterpret_cast<const char*>(&header[0]) |
| 1994 : varyings[ii - 1]; |
| 1995 base::CheckedNumeric<size_t> checked_size = |
| 1996 (ii == 0) ? header_size : static_cast<size_t>(header[ii]); |
| 1997 if (ii > 0) { |
| 1998 checked_size += 1; // NULL in the end. |
| 1999 } |
| 2000 if (!checked_size.IsValid()) { |
| 2001 SetGLError(GL_INVALID_VALUE, "glTransformFeedbackVaryings", "overflow"); |
| 2002 return; |
| 2003 } |
| 2004 size_t size = checked_size.ValueOrDefault(0); |
| 2005 while (size) { |
| 2006 ScopedTransferBufferPtr buffer(size, helper_, transfer_buffer_); |
| 2007 if (!buffer.valid() || buffer.size() == 0) { |
| 2008 SetGLError(GL_OUT_OF_MEMORY, "glTransformFeedbackVaryings", |
| 2009 "too large"); |
| 2010 return; |
| 2011 } |
| 2012 size_t copy_size = buffer.size(); |
| 2013 if (ii > 0 && buffer.size() == size) |
| 2014 --copy_size; |
| 2015 if (copy_size) |
| 2016 memcpy(buffer.address(), src, copy_size); |
| 2017 if (copy_size < buffer.size()) { |
| 2018 // Append NULL in the end. |
| 2019 DCHECK(copy_size + 1 == buffer.size()); |
| 2020 char* str = reinterpret_cast<char*>(buffer.address()); |
| 2021 str[copy_size] = 0; |
| 2022 } |
| 2023 helper_->SetBucketData(kResultBucketId, offset, buffer.size(), |
| 2024 buffer.shm_id(), buffer.offset()); |
| 2025 offset += buffer.size(); |
| 2026 src += buffer.size(); |
| 2027 size -= buffer.size(); |
| 2028 } |
| 2029 } |
| 2030 DCHECK_EQ(total_size.ValueOrDefault(0), offset); |
| 2031 helper_->TransformFeedbackVaryingsBucket(program, kResultBucketId, |
| 2032 buffermode); |
| 2033 helper_->SetBucketSize(kResultBucketId, 0); |
| 2034 CheckGLError(); |
| 2035 } |
| 2036 |
1943 void GLES2Implementation::Uniform1f(GLint location, GLfloat x) { | 2037 void GLES2Implementation::Uniform1f(GLint location, GLfloat x) { |
1944 GPU_CLIENT_SINGLE_THREAD_CHECK(); | 2038 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
1945 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1f(" << location << ", " | 2039 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glUniform1f(" << location << ", " |
1946 << x << ")"); | 2040 << x << ")"); |
1947 helper_->Uniform1f(location, x); | 2041 helper_->Uniform1f(location, x); |
1948 CheckGLError(); | 2042 CheckGLError(); |
1949 } | 2043 } |
1950 | 2044 |
1951 void GLES2Implementation::Uniform1fv(GLint location, | 2045 void GLES2Implementation::Uniform1fv(GLint location, |
1952 GLsizei count, | 2046 GLsizei count, |
(...skipping 1373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3326 | 3420 |
3327 void GLES2Implementation::BlendBarrierKHR() { | 3421 void GLES2Implementation::BlendBarrierKHR() { |
3328 GPU_CLIENT_SINGLE_THREAD_CHECK(); | 3422 GPU_CLIENT_SINGLE_THREAD_CHECK(); |
3329 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendBarrierKHR(" | 3423 GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBlendBarrierKHR(" |
3330 << ")"); | 3424 << ")"); |
3331 helper_->BlendBarrierKHR(); | 3425 helper_->BlendBarrierKHR(); |
3332 CheckGLError(); | 3426 CheckGLError(); |
3333 } | 3427 } |
3334 | 3428 |
3335 #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_IMPL_AUTOGEN_H_ | 3429 #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_IMPL_AUTOGEN_H_ |
OLD | NEW |