| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" | 5 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" |
| 6 | 6 |
| 7 #include "third_party/khronos/GLES2/gl2.h" | 7 #include "third_party/khronos/GLES2/gl2.h" |
| 8 #ifndef GL_GLEXT_PROTOTYPES | 8 #ifndef GL_GLEXT_PROTOTYPES |
| 9 #define GL_GLEXT_PROTOTYPES 1 | 9 #define GL_GLEXT_PROTOTYPES 1 |
| 10 #endif | 10 #endif |
| (...skipping 982 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 993 if (!program) { | 993 if (!program) { |
| 994 synthesizeGLError(GL_INVALID_VALUE); | 994 synthesizeGLError(GL_INVALID_VALUE); |
| 995 return false; | 995 return false; |
| 996 } | 996 } |
| 997 GLint max_name_length = -1; | 997 GLint max_name_length = -1; |
| 998 gl_->GetProgramiv( | 998 gl_->GetProgramiv( |
| 999 program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &max_name_length); | 999 program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &max_name_length); |
| 1000 if (max_name_length < 0) | 1000 if (max_name_length < 0) |
| 1001 return false; | 1001 return false; |
| 1002 scoped_ptr<GLchar[]> name(new GLchar[max_name_length]); | 1002 scoped_ptr<GLchar[]> name(new GLchar[max_name_length]); |
| 1003 if (!name.get()) { | 1003 if (!name) { |
| 1004 synthesizeGLError(GL_OUT_OF_MEMORY); | 1004 synthesizeGLError(GL_OUT_OF_MEMORY); |
| 1005 return false; | 1005 return false; |
| 1006 } | 1006 } |
| 1007 GLsizei length = 0; | 1007 GLsizei length = 0; |
| 1008 GLint size = -1; | 1008 GLint size = -1; |
| 1009 GLenum type = 0; | 1009 GLenum type = 0; |
| 1010 gl_->GetActiveAttrib( | 1010 gl_->GetActiveAttrib( |
| 1011 program, index, max_name_length, &length, &size, &type, name.get()); | 1011 program, index, max_name_length, &length, &size, &type, name.get()); |
| 1012 if (size < 0) { | 1012 if (size < 0) { |
| 1013 return false; | 1013 return false; |
| 1014 } | 1014 } |
| 1015 info.name = WebKit::WebString::fromUTF8(name.get(), length); | 1015 info.name = WebKit::WebString::fromUTF8(name.get(), length); |
| 1016 info.type = type; | 1016 info.type = type; |
| 1017 info.size = size; | 1017 info.size = size; |
| 1018 return true; | 1018 return true; |
| 1019 } | 1019 } |
| 1020 | 1020 |
| 1021 bool WebGraphicsContext3DCommandBufferImpl::getActiveUniform( | 1021 bool WebGraphicsContext3DCommandBufferImpl::getActiveUniform( |
| 1022 WebGLId program, WGC3Duint index, ActiveInfo& info) { | 1022 WebGLId program, WGC3Duint index, ActiveInfo& info) { |
| 1023 GLint max_name_length = -1; | 1023 GLint max_name_length = -1; |
| 1024 gl_->GetProgramiv( | 1024 gl_->GetProgramiv( |
| 1025 program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &max_name_length); | 1025 program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &max_name_length); |
| 1026 if (max_name_length < 0) | 1026 if (max_name_length < 0) |
| 1027 return false; | 1027 return false; |
| 1028 scoped_ptr<GLchar[]> name(new GLchar[max_name_length]); | 1028 scoped_ptr<GLchar[]> name(new GLchar[max_name_length]); |
| 1029 if (!name.get()) { | 1029 if (!name) { |
| 1030 synthesizeGLError(GL_OUT_OF_MEMORY); | 1030 synthesizeGLError(GL_OUT_OF_MEMORY); |
| 1031 return false; | 1031 return false; |
| 1032 } | 1032 } |
| 1033 GLsizei length = 0; | 1033 GLsizei length = 0; |
| 1034 GLint size = -1; | 1034 GLint size = -1; |
| 1035 GLenum type = 0; | 1035 GLenum type = 0; |
| 1036 gl_->GetActiveUniform( | 1036 gl_->GetActiveUniform( |
| 1037 program, index, max_name_length, &length, &size, &type, name.get()); | 1037 program, index, max_name_length, &length, &size, &type, name.get()); |
| 1038 if (size < 0) { | 1038 if (size < 0) { |
| 1039 return false; | 1039 return false; |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1087 | 1087 |
| 1088 DELEGATE_TO_GL_3(getProgramiv, GetProgramiv, WebGLId, WGC3Denum, WGC3Dint*) | 1088 DELEGATE_TO_GL_3(getProgramiv, GetProgramiv, WebGLId, WGC3Denum, WGC3Dint*) |
| 1089 | 1089 |
| 1090 WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getProgramInfoLog( | 1090 WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getProgramInfoLog( |
| 1091 WebGLId program) { | 1091 WebGLId program) { |
| 1092 GLint logLength = 0; | 1092 GLint logLength = 0; |
| 1093 gl_->GetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength); | 1093 gl_->GetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength); |
| 1094 if (!logLength) | 1094 if (!logLength) |
| 1095 return WebKit::WebString(); | 1095 return WebKit::WebString(); |
| 1096 scoped_ptr<GLchar[]> log(new GLchar[logLength]); | 1096 scoped_ptr<GLchar[]> log(new GLchar[logLength]); |
| 1097 if (!log.get()) | 1097 if (!log) |
| 1098 return WebKit::WebString(); | 1098 return WebKit::WebString(); |
| 1099 GLsizei returnedLogLength = 0; | 1099 GLsizei returnedLogLength = 0; |
| 1100 gl_->GetProgramInfoLog( | 1100 gl_->GetProgramInfoLog( |
| 1101 program, logLength, &returnedLogLength, log.get()); | 1101 program, logLength, &returnedLogLength, log.get()); |
| 1102 DCHECK_EQ(logLength, returnedLogLength + 1); | 1102 DCHECK_EQ(logLength, returnedLogLength + 1); |
| 1103 WebKit::WebString res = | 1103 WebKit::WebString res = |
| 1104 WebKit::WebString::fromUTF8(log.get(), returnedLogLength); | 1104 WebKit::WebString::fromUTF8(log.get(), returnedLogLength); |
| 1105 return res; | 1105 return res; |
| 1106 } | 1106 } |
| 1107 | 1107 |
| 1108 DELEGATE_TO_GL_3(getRenderbufferParameteriv, GetRenderbufferParameteriv, | 1108 DELEGATE_TO_GL_3(getRenderbufferParameteriv, GetRenderbufferParameteriv, |
| 1109 WGC3Denum, WGC3Denum, WGC3Dint*) | 1109 WGC3Denum, WGC3Denum, WGC3Dint*) |
| 1110 | 1110 |
| 1111 DELEGATE_TO_GL_3(getShaderiv, GetShaderiv, WebGLId, WGC3Denum, WGC3Dint*) | 1111 DELEGATE_TO_GL_3(getShaderiv, GetShaderiv, WebGLId, WGC3Denum, WGC3Dint*) |
| 1112 | 1112 |
| 1113 WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getShaderInfoLog( | 1113 WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getShaderInfoLog( |
| 1114 WebGLId shader) { | 1114 WebGLId shader) { |
| 1115 GLint logLength = 0; | 1115 GLint logLength = 0; |
| 1116 gl_->GetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLength); | 1116 gl_->GetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLength); |
| 1117 if (!logLength) | 1117 if (!logLength) |
| 1118 return WebKit::WebString(); | 1118 return WebKit::WebString(); |
| 1119 scoped_ptr<GLchar[]> log(new GLchar[logLength]); | 1119 scoped_ptr<GLchar[]> log(new GLchar[logLength]); |
| 1120 if (!log.get()) | 1120 if (!log) |
| 1121 return WebKit::WebString(); | 1121 return WebKit::WebString(); |
| 1122 GLsizei returnedLogLength = 0; | 1122 GLsizei returnedLogLength = 0; |
| 1123 gl_->GetShaderInfoLog( | 1123 gl_->GetShaderInfoLog( |
| 1124 shader, logLength, &returnedLogLength, log.get()); | 1124 shader, logLength, &returnedLogLength, log.get()); |
| 1125 DCHECK_EQ(logLength, returnedLogLength + 1); | 1125 DCHECK_EQ(logLength, returnedLogLength + 1); |
| 1126 WebKit::WebString res = | 1126 WebKit::WebString res = |
| 1127 WebKit::WebString::fromUTF8(log.get(), returnedLogLength); | 1127 WebKit::WebString::fromUTF8(log.get(), returnedLogLength); |
| 1128 return res; | 1128 return res; |
| 1129 } | 1129 } |
| 1130 | 1130 |
| 1131 DELEGATE_TO_GL_4(getShaderPrecisionFormat, GetShaderPrecisionFormat, | 1131 DELEGATE_TO_GL_4(getShaderPrecisionFormat, GetShaderPrecisionFormat, |
| 1132 WGC3Denum, WGC3Denum, WGC3Dint*, WGC3Dint*) | 1132 WGC3Denum, WGC3Denum, WGC3Dint*, WGC3Dint*) |
| 1133 | 1133 |
| 1134 WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getShaderSource( | 1134 WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getShaderSource( |
| 1135 WebGLId shader) { | 1135 WebGLId shader) { |
| 1136 GLint logLength = 0; | 1136 GLint logLength = 0; |
| 1137 gl_->GetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &logLength); | 1137 gl_->GetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &logLength); |
| 1138 if (!logLength) | 1138 if (!logLength) |
| 1139 return WebKit::WebString(); | 1139 return WebKit::WebString(); |
| 1140 scoped_ptr<GLchar[]> log(new GLchar[logLength]); | 1140 scoped_ptr<GLchar[]> log(new GLchar[logLength]); |
| 1141 if (!log.get()) | 1141 if (!log) |
| 1142 return WebKit::WebString(); | 1142 return WebKit::WebString(); |
| 1143 GLsizei returnedLogLength = 0; | 1143 GLsizei returnedLogLength = 0; |
| 1144 gl_->GetShaderSource( | 1144 gl_->GetShaderSource( |
| 1145 shader, logLength, &returnedLogLength, log.get()); | 1145 shader, logLength, &returnedLogLength, log.get()); |
| 1146 if (!returnedLogLength) | 1146 if (!returnedLogLength) |
| 1147 return WebKit::WebString(); | 1147 return WebKit::WebString(); |
| 1148 DCHECK_EQ(logLength, returnedLogLength + 1); | 1148 DCHECK_EQ(logLength, returnedLogLength + 1); |
| 1149 WebKit::WebString res = | 1149 WebKit::WebString res = |
| 1150 WebKit::WebString::fromUTF8(log.get(), returnedLogLength); | 1150 WebKit::WebString::fromUTF8(log.get(), returnedLogLength); |
| 1151 return res; | 1151 return res; |
| 1152 } | 1152 } |
| 1153 | 1153 |
| 1154 WebKit::WebString WebGraphicsContext3DCommandBufferImpl:: | 1154 WebKit::WebString WebGraphicsContext3DCommandBufferImpl:: |
| 1155 getTranslatedShaderSourceANGLE(WebGLId shader) { | 1155 getTranslatedShaderSourceANGLE(WebGLId shader) { |
| 1156 GLint logLength = 0; | 1156 GLint logLength = 0; |
| 1157 gl_->GetShaderiv( | 1157 gl_->GetShaderiv( |
| 1158 shader, GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE, &logLength); | 1158 shader, GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE, &logLength); |
| 1159 if (!logLength) | 1159 if (!logLength) |
| 1160 return WebKit::WebString(); | 1160 return WebKit::WebString(); |
| 1161 scoped_ptr<GLchar[]> log(new GLchar[logLength]); | 1161 scoped_ptr<GLchar[]> log(new GLchar[logLength]); |
| 1162 if (!log.get()) | 1162 if (!log) |
| 1163 return WebKit::WebString(); | 1163 return WebKit::WebString(); |
| 1164 GLsizei returnedLogLength = 0; | 1164 GLsizei returnedLogLength = 0; |
| 1165 gl_->GetTranslatedShaderSourceANGLE( | 1165 gl_->GetTranslatedShaderSourceANGLE( |
| 1166 shader, logLength, &returnedLogLength, log.get()); | 1166 shader, logLength, &returnedLogLength, log.get()); |
| 1167 if (!returnedLogLength) | 1167 if (!returnedLogLength) |
| 1168 return WebKit::WebString(); | 1168 return WebKit::WebString(); |
| 1169 DCHECK_EQ(logLength, returnedLogLength + 1); | 1169 DCHECK_EQ(logLength, returnedLogLength + 1); |
| 1170 WebKit::WebString res = | 1170 WebKit::WebString res = |
| 1171 WebKit::WebString::fromUTF8(log.get(), returnedLogLength); | 1171 WebKit::WebString::fromUTF8(log.get(), returnedLogLength); |
| 1172 return res; | 1172 return res; |
| (...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1744 | 1744 |
| 1745 void WebGraphicsContext3DCommandBufferImpl::OnErrorMessage( | 1745 void WebGraphicsContext3DCommandBufferImpl::OnErrorMessage( |
| 1746 const std::string& message, int id) { | 1746 const std::string& message, int id) { |
| 1747 if (error_message_callback_) { | 1747 if (error_message_callback_) { |
| 1748 WebKit::WebString str = WebKit::WebString::fromUTF8(message.c_str()); | 1748 WebKit::WebString str = WebKit::WebString::fromUTF8(message.c_str()); |
| 1749 error_message_callback_->onErrorMessage(str, id); | 1749 error_message_callback_->onErrorMessage(str, id); |
| 1750 } | 1750 } |
| 1751 } | 1751 } |
| 1752 | 1752 |
| 1753 } // namespace content | 1753 } // namespace content |
| OLD | NEW |