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

Side by Side Diff: gpu/command_buffer/client/gles2_implementation_impl_autogen.h

Issue 872713004: Add glTransformFeedbackVaryings to GPU command buffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@caritas
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 1922 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698