89 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
| # Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
 | |
| # Use of this source code is governed by a BSD-style license that can be
 | |
| # found in the LICENSE file.
 | |
| 
 | |
| import logging
 | |
| import os
 | |
| import re
 | |
| from autotest_lib.client.bin import test, utils
 | |
| from autotest_lib.client.common_lib import error
 | |
| from autotest_lib.client.cros.graphics import graphics_utils
 | |
| 
 | |
| 
 | |
| class graphics_GLAPICheck(graphics_utils.GraphicsTest):
 | |
|     """
 | |
|     Verify correctness of OpenGL/GLES.
 | |
|     """
 | |
|     version = 1
 | |
|     error_message = ''
 | |
| 
 | |
|     def __check_extensions(self, info, ext_entries):
 | |
|         info_split = info.split()
 | |
|         comply = True
 | |
|         for extension in ext_entries:
 | |
|             match = extension in info_split
 | |
|             if not match:
 | |
|                 self.error_message += ' ' + extension
 | |
|                 comply = False
 | |
|         return comply
 | |
| 
 | |
|     def __check_gles_extensions(self, info):
 | |
|         extensions = [
 | |
|             'GL_OES_EGL_image',
 | |
|             'EGL_KHR_image'
 | |
|         ]
 | |
|         extensions2 = [
 | |
|             'GL_OES_EGL_image',
 | |
|             'EGL_KHR_image_base',
 | |
|             'EGL_KHR_image_pixmap'
 | |
|         ]
 | |
|         return (self.__check_extensions(info, extensions) or
 | |
|                 self.__check_extensions(info, extensions2))
 | |
| 
 | |
|     def __check_wflinfo(self):
 | |
|         # TODO(ihf): Extend this function once gl(es)_APICheck code has
 | |
|         # been upstreamed to waffle.
 | |
|         version_major, version_minor = graphics_utils.get_gles_version()
 | |
|         if version_major:
 | |
|             version_info = ('GLES_VERSION = %d.%d' %
 | |
|                             (version_major, version_minor))
 | |
|             logging.info(version_info)
 | |
|             # GLES version has to be 2.0 or above.
 | |
|             if version_major < 2:
 | |
|                 self.error_message = ' %s' % version_info
 | |
|                 return False
 | |
|             version_major, version_minor = graphics_utils.get_egl_version()
 | |
|             if version_major:
 | |
|                 version_info = ('EGL_VERSION = %d.%d' %
 | |
|                                 (version_major, version_minor))
 | |
|                 logging.info(version_info)
 | |
|                 # EGL version has to be 1.3 or above.
 | |
|                 if (version_major == 1 and version_minor >= 3 or
 | |
|                     version_major > 1):
 | |
|                     logging.warning('Please add missing extension check. '
 | |
|                                     'Details crbug.com/413079')
 | |
|                     # return self.__check_gles_extensions(wflinfo + eglinfo)
 | |
|                     return True
 | |
|                 else:
 | |
|                     self.error_message = version_info
 | |
|                     return False
 | |
|             # No EGL version info found.
 | |
|             self.error_message = ' missing EGL version info'
 | |
|             return False
 | |
|         # No GLES version info found.
 | |
|         self.error_message = ' missing GLES version info'
 | |
|         return False
 | |
| 
 | |
|     def initialize(self):
 | |
|         super(graphics_GLAPICheck, self).initialize()
 | |
| 
 | |
|     def cleanup(self):
 | |
|         super(graphics_GLAPICheck, self).cleanup()
 | |
| 
 | |
|     @graphics_utils.GraphicsTest.failure_report_decorator('graphics_GLAPICheck')
 | |
|     def run_once(self):
 | |
|         if not self.__check_wflinfo():
 | |
|             raise error.TestFail('Failed: GLES API insufficient:' +
 | |
|                                  self.error_message)
 | |
|         return
 |