| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 | 8 |
| 9 #include "GrGLUtil.h" | 9 #include "GrGLUtil.h" |
| 10 | 10 |
| 11 | |
| 12 void GrGLClearErr(const GrGLInterface* gl) { | 11 void GrGLClearErr(const GrGLInterface* gl) { |
| 13 while (GR_GL_NO_ERROR != gl->fGetError()) {} | 12 while (GR_GL_NO_ERROR != gl->fGetError()) {} |
| 14 } | 13 } |
| 15 | 14 |
| 16 namespace { | 15 namespace { |
| 17 const char *get_error_string(uint32_t err) { | 16 const char *get_error_string(uint32_t err) { |
| 18 switch (err) { | 17 switch (err) { |
| 19 case GR_GL_NO_ERROR: | 18 case GR_GL_NO_ERROR: |
| 20 return ""; | 19 return ""; |
| 21 case GR_GL_INVALID_ENUM: | 20 case GR_GL_INVALID_ENUM: |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 // android hack until the gpu vender updates their drivers | 141 // android hack until the gpu vender updates their drivers |
| 143 n = sscanf(versionString, "OpenGL ES GLSL %d.%d", &major, &minor); | 142 n = sscanf(versionString, "OpenGL ES GLSL %d.%d", &major, &minor); |
| 144 if (2 == n) { | 143 if (2 == n) { |
| 145 return GR_GLSL_VER(major, minor); | 144 return GR_GLSL_VER(major, minor); |
| 146 } | 145 } |
| 147 #endif | 146 #endif |
| 148 | 147 |
| 149 return 0; | 148 return 0; |
| 150 } | 149 } |
| 151 | 150 |
| 152 bool GrGLHasExtensionFromString(const char* ext, const char* extensionString) { | |
| 153 int extLength = strlen(ext); | |
| 154 | |
| 155 while (true) { | |
| 156 int n = strcspn(extensionString, " "); | |
| 157 if (n == extLength && 0 == strncmp(ext, extensionString, n)) { | |
| 158 return true; | |
| 159 } | |
| 160 if (0 == extensionString[n]) { | |
| 161 return false; | |
| 162 } | |
| 163 extensionString += n+1; | |
| 164 } | |
| 165 | |
| 166 return false; | |
| 167 } | |
| 168 | |
| 169 GrGLVendor GrGLGetVendorFromString(const char* vendorString) { | 151 GrGLVendor GrGLGetVendorFromString(const char* vendorString) { |
| 170 if (NULL != vendorString) { | 152 if (NULL != vendorString) { |
| 171 if (0 == strcmp(vendorString, "ARM")) { | 153 if (0 == strcmp(vendorString, "ARM")) { |
| 172 return kARM_GrGLVendor; | 154 return kARM_GrGLVendor; |
| 173 } | 155 } |
| 174 if (0 == strcmp(vendorString, "Imagination Technologies")) { | 156 if (0 == strcmp(vendorString, "Imagination Technologies")) { |
| 175 return kImagination_GrGLVendor; | 157 return kImagination_GrGLVendor; |
| 176 } | 158 } |
| 177 if (0 == strcmp(vendorString, "Intel")) { | 159 if (0 == strcmp(vendorString, "Intel")) { |
| 178 return kIntel_GrGLVendor; | 160 return kIntel_GrGLVendor; |
| 179 } | 161 } |
| 180 } | 162 } |
| 181 return kOther_GrGLVendor; | 163 return kOther_GrGLVendor; |
| 182 } | 164 } |
| 183 | 165 |
| 184 bool GrGLHasExtension(const GrGLInterface* gl, const char* ext) { | |
| 185 const GrGLubyte* glstr; | |
| 186 GR_GL_CALL_RET(gl, glstr, GetString(GR_GL_EXTENSIONS)); | |
| 187 return GrGLHasExtensionFromString(ext, (const char*) glstr); | |
| 188 } | |
| 189 | |
| 190 GrGLBinding GrGLGetBindingInUse(const GrGLInterface* gl) { | 166 GrGLBinding GrGLGetBindingInUse(const GrGLInterface* gl) { |
| 191 const GrGLubyte* v; | 167 const GrGLubyte* v; |
| 192 GR_GL_CALL_RET(gl, v, GetString(GR_GL_VERSION)); | 168 GR_GL_CALL_RET(gl, v, GetString(GR_GL_VERSION)); |
| 193 return GrGLGetBindingInUseFromString((const char*) v); | 169 return GrGLGetBindingInUseFromString((const char*) v); |
| 194 } | 170 } |
| 195 | 171 |
| 196 GrGLVersion GrGLGetVersion(const GrGLInterface* gl) { | 172 GrGLVersion GrGLGetVersion(const GrGLInterface* gl) { |
| 197 const GrGLubyte* v; | 173 const GrGLubyte* v; |
| 198 GR_GL_CALL_RET(gl, v, GetString(GR_GL_VERSION)); | 174 GR_GL_CALL_RET(gl, v, GetString(GR_GL_VERSION)); |
| 199 return GrGLGetVersionFromString((const char*) v); | 175 return GrGLGetVersionFromString((const char*) v); |
| 200 } | 176 } |
| 201 | 177 |
| 202 GrGLSLVersion GrGLGetGLSLVersion(const GrGLInterface* gl) { | 178 GrGLSLVersion GrGLGetGLSLVersion(const GrGLInterface* gl) { |
| 203 const GrGLubyte* v; | 179 const GrGLubyte* v; |
| 204 GR_GL_CALL_RET(gl, v, GetString(GR_GL_SHADING_LANGUAGE_VERSION)); | 180 GR_GL_CALL_RET(gl, v, GetString(GR_GL_SHADING_LANGUAGE_VERSION)); |
| 205 return GrGLGetGLSLVersionFromString((const char*) v); | 181 return GrGLGetGLSLVersionFromString((const char*) v); |
| 206 } | 182 } |
| 207 | 183 |
| 208 GrGLVendor GrGLGetVendor(const GrGLInterface* gl) { | 184 GrGLVendor GrGLGetVendor(const GrGLInterface* gl) { |
| 209 const GrGLubyte* v; | 185 const GrGLubyte* v; |
| 210 GR_GL_CALL_RET(gl, v, GetString(GR_GL_VENDOR)); | 186 GR_GL_CALL_RET(gl, v, GetString(GR_GL_VENDOR)); |
| 211 return GrGLGetVendorFromString((const char*) v); | 187 return GrGLGetVendorFromString((const char*) v); |
| 212 } | 188 } |
| OLD | NEW |