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 |