192 lines
6.5 KiB
Python
192 lines
6.5 KiB
Python
|
# ----------------------------------------------------------------------------
|
||
|
# pyglet
|
||
|
# Copyright (c) 2006-2008 Alex Holkner
|
||
|
# All rights reserved.
|
||
|
#
|
||
|
# Redistribution and use in source and binary forms, with or without
|
||
|
# modification, are permitted provided that the following conditions
|
||
|
# are met:
|
||
|
#
|
||
|
# * Redistributions of source code must retain the above copyright
|
||
|
# notice, this list of conditions and the following disclaimer.
|
||
|
# * Redistributions in binary form must reproduce the above copyright
|
||
|
# notice, this list of conditions and the following disclaimer in
|
||
|
# the documentation and/or other materials provided with the
|
||
|
# distribution.
|
||
|
# * Neither the name of pyglet nor the names of its
|
||
|
# contributors may be used to endorse or promote products
|
||
|
# derived from this software without specific prior written
|
||
|
# permission.
|
||
|
#
|
||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||
|
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||
|
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||
|
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||
|
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||
|
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||
|
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||
|
# ----------------------------------------------------------------------------
|
||
|
|
||
|
'''Get environment information useful for debugging.
|
||
|
|
||
|
Intended usage is to create a file for bug reports, e.g.::
|
||
|
|
||
|
python -m pyglet.info > info.txt
|
||
|
|
||
|
'''
|
||
|
|
||
|
__docformat__ = 'restructuredtext'
|
||
|
__version__ = '$Id: $'
|
||
|
|
||
|
_first_heading = True
|
||
|
def _heading(heading):
|
||
|
global _first_heading
|
||
|
if not _first_heading:
|
||
|
print
|
||
|
else:
|
||
|
_first_heading = False
|
||
|
print heading
|
||
|
print '-' * 78
|
||
|
|
||
|
def dump_python():
|
||
|
'''Dump Python version and environment to stdout.'''
|
||
|
import os
|
||
|
import sys
|
||
|
print 'sys.version:', sys.version
|
||
|
print 'sys.platform:', sys.platform
|
||
|
print 'os.getcwd():', os.getcwd()
|
||
|
for key, value in os.environ.items():
|
||
|
if key.startswith('PYGLET_'):
|
||
|
print "os.environ['%s']: %s" % (key, value)
|
||
|
|
||
|
def dump_pyglet():
|
||
|
'''Dump pyglet version and options.'''
|
||
|
import pyglet
|
||
|
print 'pyglet.version:', pyglet.version
|
||
|
print 'pyglet.__file__:', pyglet.__file__
|
||
|
for key, value in pyglet.options.items():
|
||
|
print "pyglet.options['%s'] = %r" % (key, value)
|
||
|
|
||
|
def dump_window():
|
||
|
'''Dump display, windowm, screen and default config info.'''
|
||
|
import pyglet.window
|
||
|
platform = pyglet.window.get_platform()
|
||
|
print 'platform:', repr(platform)
|
||
|
display = platform.get_default_display()
|
||
|
print 'display:', repr(display)
|
||
|
screens = display.get_screens()
|
||
|
for i, screen in enumerate(screens):
|
||
|
print 'screens[%d]: %r' % (i, screen)
|
||
|
window = pyglet.window.Window(visible=False)
|
||
|
for key, value in window.config.get_gl_attributes():
|
||
|
print "config['%s'] = %r" % (key, value)
|
||
|
print 'context:', repr(window.context)
|
||
|
window.close()
|
||
|
|
||
|
def dump_gl():
|
||
|
'''Dump GL info.'''
|
||
|
from pyglet.gl import gl_info
|
||
|
print 'gl_info.get_version():', gl_info.get_version()
|
||
|
print 'gl_info.get_vendor():', gl_info.get_vendor()
|
||
|
print 'gl_info.get_renderer():', gl_info.get_renderer()
|
||
|
print 'gl_info.get_extensions():'
|
||
|
extensions = list(gl_info.get_extensions())
|
||
|
extensions.sort()
|
||
|
for name in extensions:
|
||
|
print ' ', name
|
||
|
|
||
|
def dump_glu():
|
||
|
'''Dump GLU info.'''
|
||
|
from pyglet.gl import glu_info
|
||
|
print 'glu_info.get_version():', glu_info.get_version()
|
||
|
print 'glu_info.get_extensions():'
|
||
|
extensions = list(glu_info.get_extensions())
|
||
|
extensions.sort()
|
||
|
for name in extensions:
|
||
|
print ' ', name
|
||
|
|
||
|
def dump_glx():
|
||
|
'''Dump GLX info.'''
|
||
|
try:
|
||
|
from pyglet.gl import glx_info
|
||
|
except:
|
||
|
print 'GLX not available.'
|
||
|
return
|
||
|
import pyglet
|
||
|
window = pyglet.window.Window(visible=False)
|
||
|
print 'context.is_direct():', window.context.is_direct()
|
||
|
window.close()
|
||
|
|
||
|
if not glx_info.have_version(1, 1):
|
||
|
print 'Version: < 1.1'
|
||
|
else:
|
||
|
print 'glx_info.get_server_vendor():', glx_info.get_server_vendor()
|
||
|
print 'glx_info.get_server_version():', glx_info.get_server_version()
|
||
|
print 'glx_info.get_server_extensions():'
|
||
|
for name in glx_info.get_server_extensions():
|
||
|
print ' ', name
|
||
|
print 'glx_info.get_client_vendor():', glx_info.get_client_vendor()
|
||
|
print 'glx_info.get_client_version():', glx_info.get_client_version()
|
||
|
print 'glx_info.get_client_extensions():'
|
||
|
for name in glx_info.get_client_extensions():
|
||
|
print ' ', name
|
||
|
print 'glx_info.get_extensions():'
|
||
|
for name in glx_info.get_extensions():
|
||
|
print ' ', name
|
||
|
|
||
|
def dump_media():
|
||
|
'''Dump pyglet.media info.'''
|
||
|
import pyglet.media
|
||
|
print 'driver:', pyglet.media.driver.__name__
|
||
|
|
||
|
def dump_avbin():
|
||
|
'''Dump AVbin info.'''
|
||
|
try:
|
||
|
import pyglet.media.avbin
|
||
|
print 'Library:', pyglet.media.avbin.av
|
||
|
print 'AVbin version:', pyglet.media.avbin.av.avbin_get_version()
|
||
|
print 'FFmpeg revision:', \
|
||
|
pyglet.media.avbin.av.avbin_get_ffmpeg_revision()
|
||
|
except:
|
||
|
print 'AVbin not available.'
|
||
|
|
||
|
def dump_al():
|
||
|
'''Dump OpenAL info.'''
|
||
|
try:
|
||
|
from pyglet.media.drivers import openal
|
||
|
print 'Library:', openal.al._lib
|
||
|
print 'Version:', openal.get_version()
|
||
|
print 'Extensions:'
|
||
|
for extension in openal.get_extensions():
|
||
|
print ' ', extension
|
||
|
except:
|
||
|
print 'OpenAL not available.'
|
||
|
|
||
|
def _try_dump(heading, func):
|
||
|
_heading(heading)
|
||
|
try:
|
||
|
func()
|
||
|
except:
|
||
|
import traceback
|
||
|
traceback.print_exc()
|
||
|
|
||
|
def dump():
|
||
|
'''Dump all information to stdout.'''
|
||
|
_try_dump('Python', dump_python)
|
||
|
_try_dump('pyglet', dump_pyglet)
|
||
|
_try_dump('pyglet.window', dump_window)
|
||
|
_try_dump('pyglet.gl.gl_info', dump_gl)
|
||
|
_try_dump('pyglet.gl.glu_info', dump_glu)
|
||
|
_try_dump('pyglet.gl.glx_info', dump_glx)
|
||
|
_try_dump('pyglet.media', dump_media)
|
||
|
_try_dump('pyglet.media.avbin', dump_avbin)
|
||
|
_try_dump('pyglet.media.drivers.openal', dump_al)
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
dump()
|