kmonsoor / pyglet

Automatically exported from code.google.com/p/pyglet
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

nvidia/osx batch performance issues #314

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Run my batch drawing/sprite rendering/Schedule_interval program on PowerPC 
OS X 10.5 Mac 
2. Run my batch drawing/sprite rendering/Schedule_interval program on new Intel 
Core 2 Duo 
10.5 Mac
3. See how performance on the newer, faster Intel cpu's becomes highly 
irregular, chunky and 
unusable for using Sprite rendering in Pyglet 1.1 beta 2 on current Macs sold 
today. =(
I would consider this a show stopper for anyone developing on current Macs, you 
might 
disagree. I'll have to show you in person most likely.
See how the old PowerPC G4 1.4GHz processor system handles the Sprite 
animations smoothly.

Note that general scheduler update code on the Intel Core 2 Duo will chunk 
wildly +/- up to 
20fps from the programmed update interval be it 30Hz or 60Hz in anything 
(printing to console, 
or just updating a FPS display in the OpenGL window.

Paste in the traceback or error message:
Alex, you will have to contact me as I might have to show you in person as you 
might not have 
both PowerPC and Intel equipped Macs to test this.

pyglet 1.1 with Python 2.5: Paste in the output of `python -m pyglet.info`
Other: Paste in the output of tools/gl_info.py (included in source distro):

Any additional info (platform/language/hardware) that may be relevant?
Platform #1 - Mac Mini 1.4GHz PPC G4 Processor, 1 Gigabyte RAM, ATI RV280 with 
32MB VRAM, OS X 10.5.3
Platform #2 Macbook Pro 2.6GHz Intel Core 2 Duo Processor, 4 Gigabyte RAM, 
NVIDIA GeForce 
8600M GT with 512MB VRAM, OS X 10.5.3

Original issue reported on code.google.com by pythonnu...@gmail.com on 30 Jun 2008 at 2:09

GoogleCodeExporter commented 9 years ago
FILE IS ATTACHED HERE.

shadow.zip - Shadow of the Beast Parallax Scrolling Demo running on Python and 
pyglet.

Cheers,
PN

Original comment by pythonnu...@gmail.com on 30 Jun 2008 at 11:16

Attachments:

GoogleCodeExporter commented 9 years ago
Possibly related to issue 310.  Please check against SVN head.  Failing that, 
try with environment variable 
PYGLET_GRAPHICS_VBO = 0.

Original comment by Alex.Hol...@gmail.com on 1 Jul 2008 at 12:21

GoogleCodeExporter commented 9 years ago
Will try suggestions tonight.

As another side/interesting note,

This program running on the old PPC G4 Mac used ~18% CPU. 
This same program running on the new Intel Core 2 Duo Mac used ~28% CPU.

bash shell 1:
$python -O shadow.py

bash shell 2:
$top -o cpu

Same OS version. (OS X 10.5.3)
Same Python version. (Python.org Python 2.5.2)
Same pyglet version. (pyglet 1.1 beta 2)

Cheers,
Peter

Original comment by pythonnu...@gmail.com on 1 Jul 2008 at 12:54

GoogleCodeExporter commented 9 years ago
Went home last night and tried the environment variable approach.

I made a mistake in my initial reporting, had the Intel CPU figures reported 
from memory and it was not 28% 
cpu, but 38% CPU that this program takes up running on that platform, while 18% 
CPU for the same program 
on the old PPC G4 CPU.

The environment variable PYGLET_GRAPHICS_VB) = 0 did not fix the stuttering 
Sprite animation issue.
It did, however reduce CPU use from 38% down to 32% CPU use.

Still a bit of a bummer compared to the old G4s CPU use.

Original comment by pythonnu...@gmail.com on 1 Jul 2008 at 10:03

GoogleCodeExporter commented 9 years ago
Testing Results on the Intel Core 2 Duo / Nvidia computer:

Execution method:

Terminal Window#1
$top -o cpu

Terminal Window#2
@python -O shadow.py

Test #1.
Standard 1.1 Beta 2 release of pyglet

38% CPU utilisiation
Animation not smooth, stuttering

Test#2.
Standard 1.1 Beta 2 release of pyglet
and
$export PYGLET_GRAPHICS_VBO=0

32% CPU utilisation
Animation not smooth, stuttering

Test#3
Latest head (r2129) version of pyglet 1.1 Beta 2

19% CPU utilisation
Animation not smooth, stuttering

Great! CPU utilisation has dropped drastically, now to install OS X 10.5.4 
update 
and see if their is an affect on the CPU utilisation or smoothness of the 
animation.

Test #4
After 10.5.4 installed
and
Latest head (r2129) of pyglet 1.1 Beta 2

26% CPU utilisation
Animation not smooth, stuttering

*sigh*

Original comment by pythonnu...@gmail.com on 2 Jul 2008 at 10:53

GoogleCodeExporter commented 9 years ago
Ok.  Let me know if you come across a workaround or smaller reproducible test 
(i.e.,
minimum code change to make smooth animation stuttering or vice-versa).

Original comment by Alex.Hol...@gmail.com on 2 Jul 2008 at 11:13

GoogleCodeExporter commented 9 years ago
Got a change to get my older Dell laptop out and updated with pyglet and avbin 
and
did some runs of shadow.zip on it.

Animations under Ubuntu 7.10 Gutsy Gibbon running on Dell Latitude D510 hardware
Linux Kernel 2.6.22-15-generic
Gnome 2.20.1
Intel Celeron M processor 1.4GHz
512MB Ram

Platform instance is <pyglet.window.xlib.XlibPlatform object at 0x83d5bec>
Display instance is <pyglet.window.xlib.XlibDisplayDevice object at 0x83ccaac>
Screens:
  XlibScreen(screen=0, x=0, y=0, width=1024, height=768, xinerama=1)
Creating default context...
GL attributes:
double_buffer=1 stereo=0 buffer_size=32 aux_buffers=0 sample_buffers=0
samples=0 red_size=8 green_size=8 blue_size=8 alpha_size=8
depth_size=24 stencil_size=8 accum_red_size=0 accum_green_size=0
accum_blue_size=0 accum_alpha_size=0
GL version: 1.3 Mesa 7.0.1
GL vendor: Tungsten Graphics, Inc
GL renderer: Mesa DRI Intel(R) 915GM 20061017 x86/MMX/SSE2

ALSA sound system.

Python 2.5.1 (r251:54863, Mar  7 2008, 04:10:12) 
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2

Pyglet 1.1 Beta 2, source downloaded install, later tests will use the latest 
SVN
release.

In general I experience the stuttered, burbling sound issue as on other Linux 
system
reports. But have not found any crackling sound yet as I experienced with the 
pygame
framework.

In general the Linux systems/Ubuntu etc all now have compiz fusion graphics 
installed
and the special effects turned on. This causes some pyglet/opengl issues. I 
tested
both with default (On + medium effects setting in Ubuntu, and with all effects 
turned
off). Turned off, pyglet opened windows in proper locations as with Mac OS X 
but for
some reason it looks like the animations appear slower at the same frame-rate
settings than when running under OS X.

There still is the stuttering, non smooth sprite animation as with the Intel 
Core 2
Duo equipped Mac with NVidia chipset, but less pronounced, but not as silky 
smooth as
with the PowerPC equipped Mac mini computer.

Low CPU utilisaiton rates were observed similar to the PowerPC G4 equipped Mac 
mini
on its original runs under OS X 10.5.3.

The animation under Linux performs best with a pyglet clock tick cycle of 90Hz
(pyglet.clock.schedule_interval(update, 1/90.0)) or with pyglet taking as much
resources as it needed (pyglet.clock.schedule(update)). On Linux, the later was 
the
most efficient for speed and total CPU utilisation (Only using on average 20% 
of the
CPU, whereas the new Intel Core 2 Duo equipped Mac was chewing up 2-3 times the 
cpu
utilisaiton. (Maybe multi core CPUs and python in general is just not 
happening).

Pygelt 1.1 Beta 2 R2129 Installation results:

After installing latest head R2129 of pyglet.

Major reduction in CPU. The average of 20% CPU under 
pyglet.clock.schedule(update)
now became only 6% CPU utilisation.

Using pyglet.clock.schedule_interval(update, 1/60.0) resulted in no discernable 
CPU
utilisation difference, about 7% average utilisation

Using pyglet.clock.schedule_interval(update, 1/90.0) resulting in a more 
discrenable
CPU utilisation difference, about 9% average utilisation

All of the Compiz fusion enabled graphics glitches were still present, so 
disabling
them resulted in no real discernible difference in CPU utilisation figures but 
the
graphics glitches no longer appeared, and the window drew in the location and 
manner
similar as on OS X.

Looks like the best system so far is the Mac Mini with old PowerPC G4 CPU and 
ATI
RV280 graphics chip. Audio = perfect, Video/Animation = very smooth.

Brand new Intel Core 2 Duo CPU in Macbook Pro 17" laptop with nVidia 8600 
graphics
chip. Audio = perfect, Video/Animation = chunky/stuttering.

Best of the bunch for CPU utilisation but Worst of the bunch for audio + video
performance is Linux on Intel Celeron M system with Intel 915GM graphics chip.

I have to say that the pygame version of the shadow.zip program performed 
smoother on
more platforms, but the bad side was it used more CPU utilisation and had the 
SDL
dependencies.

*still in a quagmire*

Original comment by pythonnu...@gmail.com on 12 Jul 2008 at 6:07

GoogleCodeExporter commented 9 years ago
I'm going to do a Rabbyt/pyglet hybrid port and a Rabbyt port when time 
permits, then
I can get a good picture of a single program with the same images handled on 4
different framework/combinations under 3 different computing CPU/Graphics 
Chip/OS
platforms.

Original comment by pythonnu...@gmail.com on 12 Jul 2008 at 6:10

GoogleCodeExporter commented 9 years ago
The Pyglet only version is taking 42% CPU on new Intel Core 2 Duos,
only 18% CPU on old PowerPC G4's.

With optimisation turned on, the Pyglet only version takes 27% CPU utilisation 
with 
no improvement in the stuttering video enimation of the Sprites.

The Pyglet + Rabbyt version (with old school event loop) is taking only 6-8% 
with 
24% spikes on new Inte Core 2 Duos!

Not tested yet on PowerPC G4's. And only 6-7% CPU on Linux + Intel Celeron M 
CPUs.

One thing I cannot suss out is the 24% occasional spike when the very very 
large 
foreground sprites first move across the screen, after a second the CPU settles 
back 
down to 6-7% as the sprites move across the screen. This is not apparent on the 
Linux system which stays at a constant 6-7% CPU utilisation average.

However the Linux system is almost unusable with the Pyglet only version. The 
sound 
is stuttering, choppy and you cry out to shut it off for sanity (ALSA sound 
system 
on Ubuntu) and the video is stuttering (Gnome). On the Intel Core 2 Duo the 
sound is 
silky smooth and perfect (Apples implementation of OpenAL) but the video is 
choppy
and stuttering.

On the old Mac with PowerPC G4 cpu and old ATI RV280 GPU chip the sound is 
silky 
smooth and perfect (Apples implementation of OpenAL) and the video is silky 
smooth 
and perfect (ATI's/Apples OpenGL implementation).

As it stands if I were to write something I actually want people to play it 
would be 
Pyglet + Rabbyt combined. I have yet to figure out how to handle the sound and 
music 
without resorting to abandoning Linux users to the horrible bugs and sound 
quality 
in both their sound implementations (ALSA and OpenAL) on those platforms. I 
wouldn't 
play my games if I was the user on my Ubuntu system =(

File Attached showing the different code bases.

Audio was disabled on the Pyglet 1.1 Beta 2 R2129 test to see if it had an 
impact on 
the system's animation stuttering. No discernable difference was found by 
disabling 
audio.

I left audio disabled to give an comparison with the Pyglet + Rabbyt version of 
the 
same program which does not include sound.

shadowtestbattery attached as I could not download the first shadow.zip 
attachment 
above, the system would bomb out after transfering 820K of the file every time 
I 
attemted a download.

Original comment by pythonnu...@gmail.com on 14 Jul 2008 at 1:10

Attachments:

GoogleCodeExporter commented 9 years ago
I did not mention but the Pyglet + Rabbyt version is running silky smooth 
animation 
(very fast indeed!) on the Intel Core 2 Duo equipped Macbook Pro 17" with 
NVIDIA 
8600 GPU chipset laptop. No audio is tested as the Pyglet + Rabbyt version did 
not 
have it programmed into it.

The Pyglet only version is still stuttering badly in animations on the same 
exact 
laptop, but the audio is silky smooth =)

Original comment by pythonnu...@gmail.com on 14 Jul 2008 at 1:13

GoogleCodeExporter commented 9 years ago
The Mac Mini Power PC G4 + ATI RV280 GPU results are in!

shadow.py (Pyglet 1.1 Beta 2 R2129)
"python" run uses 50% CPU and now runs animations chunky and stuttering
"python -O" optimization run uses 29% CPU and now runs animations chunky and 
stuttering

shadow-noaudio.py (Pyglet 1.1 Beta 2 R2129)
"python" run uses 42% CPU and now runs animations chunky and stuttering
"python -O" optimization run uses 29% CPU and now runs animations chunky and 
stuttering

shadow-rabbyt-pyglet.py (Pyglet 1.1 Beta 2 R2129 + Rabby 0.8.1 with Rabbyt 
Sprite handling and old school 
event loop)
"python" run uses 7.4% average CPU with 24% spikes in CPU utilization. 
Animations silky smooth.
"python -O" optimization run shows no discernible improvement in CPU 
utilization than the run without optimization turned on.

Original comment by pythonnu...@gmail.com on 16 Jul 2008 at 5:21

GoogleCodeExporter commented 9 years ago
Mac Mini information:

$ python -m pyglet.info
Python
------------------------------------------------------------------------------
sys.version: 2.5.2 (r252:60911, Feb 22 2008, 07:57:53) 
[GCC 4.0.1 (Apple Computer, Inc. build 5363)]
sys.platform: darwin
os.getcwd(): /Volumes/DISK1S1/shadowtestbattery

pyglet
------------------------------------------------------------------------------
pyglet.version: 1.1beta2
pyglet.__file__: 
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-
packages/pyglet/__init__.pyc
pyglet.options['debug_trace_depth'] = 1
pyglet.options['audio'] = ('directsound', 'openal', 'alsa', 'silent')
pyglet.options['xsync'] = True
pyglet.options['debug_trace_flush'] = True
pyglet.options['debug_win32'] = False
pyglet.options['debug_gl_trace'] = False
pyglet.options['debug_x11'] = False
pyglet.options['shadow_window'] = True
pyglet.options['debug_font'] = False
pyglet.options['debug_media'] = False
pyglet.options['debug_trace'] = False
pyglet.options['debug_lib'] = False
pyglet.options['graphics_vbo'] = True
pyglet.options['vsync'] = None
pyglet.options['debug_trace_args'] = False
pyglet.options['debug_gl'] = True
pyglet.options['debug_graphics_batch'] = False
pyglet.options['font'] = ('gdiplus', 'win32')
pyglet.options['debug_texture'] = False
pyglet.options['debug_gl_trace_args'] = False

pyglet.window
------------------------------------------------------------------------------
platform: <pyglet.window.carbon.CarbonPlatform object at 0xc53bd0>
display: <pyglet.window.carbon.CarbonDisplay object at 0xc4b8d0>
screens[0]: CarbonScreen(x=0, y=0, width=1680, height=1050)
config['double_buffer'] = 1
config['stereo'] = 0
config['buffer_size'] = 32
config['aux_buffers'] = 0
config['sample_buffers'] = 0
config['samples'] = 0
config['red_size'] = 8
config['green_size'] = 8
config['blue_size'] = 8
config['alpha_size'] = 8
config['depth_size'] = 32
config['stencil_size'] = 0
config['accum_red_size'] = 0
config['accum_green_size'] = 0
config['accum_blue_size'] = 0
config['accum_alpha_size'] = 0
context: CarbonGLContext()

pyglet.gl.gl_info
------------------------------------------------------------------------------
gl_info.get_version(): 1.3 ATI-1.5.28
gl_info.get_vendor(): ATI Technologies Inc.
gl_info.get_renderer(): ATI Radeon 9200 OpenGL Engine
gl_info.get_extensions():
   GL_APPLE_aux_depth_stencil
   GL_APPLE_client_storage
   GL_APPLE_element_array
   GL_APPLE_fence
   GL_APPLE_flush_buffer_range
   GL_APPLE_flush_render
   GL_APPLE_packed_pixels
   GL_APPLE_pixel_buffer
   GL_APPLE_specular_vector
   GL_APPLE_texture_range
   GL_APPLE_transform_hint
   GL_APPLE_vertex_array_object
   GL_APPLE_vertex_array_range
   GL_APPLE_vertex_program_evaluators
   GL_APPLE_ycbcr_422
   GL_ARB_imaging
   GL_ARB_multisample
   GL_ARB_multitexture
   GL_ARB_occlusion_query
   GL_ARB_pixel_buffer_object
   GL_ARB_shader_objects
   GL_ARB_shading_language_100
   GL_ARB_texture_border_clamp
   GL_ARB_texture_compression
   GL_ARB_texture_cube_map
   GL_ARB_texture_env_add
   GL_ARB_texture_env_combine
   GL_ARB_texture_env_crossbar
   GL_ARB_texture_env_dot3
   GL_ARB_texture_mirrored_repeat
   GL_ARB_texture_rectangle
   GL_ARB_transpose_matrix
   GL_ARB_vertex_blend
   GL_ARB_vertex_buffer_object
   GL_ARB_vertex_program
   GL_ARB_vertex_shader
   GL_ARB_window_pos
   GL_ATI_array_rev_comps_in_4_bytes
   GL_ATI_blend_equation_separate
   GL_ATI_blend_weighted_minmax
   GL_ATI_text_fragment_shader
   GL_ATI_texture_env_combine3
   GL_ATI_texture_mirror_once
   GL_EXT_abgr
   GL_EXT_bgra
   GL_EXT_blend_color
   GL_EXT_blend_equation_separate
   GL_EXT_blend_func_separate
   GL_EXT_blend_minmax
   GL_EXT_blend_subtract
   GL_EXT_clip_volume_hint
   GL_EXT_compiled_vertex_array
   GL_EXT_draw_range_elements
   GL_EXT_fog_coord
   GL_EXT_geometry_shader4
   GL_EXT_gpu_program_parameters
   GL_EXT_multi_draw_arrays
   GL_EXT_rescale_normal
   GL_EXT_secondary_color
   GL_EXT_separate_specular_color
   GL_EXT_stencil_wrap
   GL_EXT_texture_compression_dxt1
   GL_EXT_texture_compression_s3tc
   GL_EXT_texture_env_add
   GL_EXT_texture_filter_anisotropic
   GL_EXT_texture_lod_bias
   GL_EXT_texture_rectangle
   GL_EXT_transform_feedback
   GL_IBM_rasterpos_clip
   GL_NV_blend_square
   GL_NV_fog_distance
   GL_NV_light_max_exponent
   GL_NV_texgen_reflection
   GL_SGIS_generate_mipmap
   GL_SGIS_texture_edge_clamp
   GL_SGIS_texture_lod
   GL_SGI_color_matrix

pyglet.gl.glu_info
------------------------------------------------------------------------------
glu_info.get_version(): 1.3 MacOSX
glu_info.get_extensions():

pyglet.gl.glx_info
------------------------------------------------------------------------------
GLX not available.

pyglet.media
------------------------------------------------------------------------------
driver: pyglet.media.drivers.openal

pyglet.media.avbin
------------------------------------------------------------------------------
Library: <CDLL '/usr/local/lib/libavbin.dylib', handle 461a300 at 44fabf0>
AVbin version: 5
FFmpeg revision: 13661

pyglet.media.drivers.openal
------------------------------------------------------------------------------
Library: <CDLL '/System/Library/Frameworks/OpenAL.framework/OpenAL', handle 
8eff30 at 44e9890>
Version: (1, 1)
Extensions:
   ALC_EXT_CAPTURE
   ALC_ENUMERATION_EXT
   ALC_EXT_MAC_OSX
   ALC_EXT_ASA
   ALC_EXT_ASA_DISTORTION
   ALC_EXT_ASA_ROGER_BEEP

Original comment by pythonnu...@gmail.com on 16 Jul 2008 at 5:24

GoogleCodeExporter commented 9 years ago
FWIW on a Dell Vostro (Core 2 duo, GeForce 8400M) running Ubuntu Hardy the 
scrolling
is smooth (well, mostly - there's small changes in scrolling speed, but nothing 
as
severe as what I'd call stuttering) and the music plays fine.

CPU usage is 57% (30% with python -O)

Platform instance is <pyglet.window.xlib.XlibPlatform object at 0x844822c>
Display instance is <pyglet.window.xlib.XlibDisplayDevice object at 0x84400ec>
Screens:
  XlibScreen(screen=0, x=0, y=0, width=1440, height=900, xinerama=1)
  XlibScreen(screen=0, x=1440, y=0, width=1680, height=1050, xinerama=1)
Creating default context...
GL attributes:
double_buffer=1 stereo=0 buffer_size=32 aux_buffers=4 sample_buffers=0
samples=0 red_size=8 green_size=8 blue_size=8 alpha_size=0
depth_size=24 stencil_size=0 accum_red_size=16 accum_green_size=16
accum_blue_size=16 accum_alpha_size=16
GL version: 2.1.2 NVIDIA 169.12
GL vendor: NVIDIA Corporation
GL renderer: GeForce 8400M GS/PCI/SSE2
GL extensions:
  GL_ARB_texture_compression GL_NV_point_sprite
  GL_NV_fragment_program_option GL_NV_vertex_array_range2
  GL_EXT_blend_color GL_EXT_blend_subtract GL_EXT_stencil_wrap
  GL_NV_fence GL_EXT_vertex_array GL_IBM_texture_mirrored_repeat
  GL_EXT_texture_compression_s3tc GL_NV_vertex_program2_option
  GL_EXT_texture_buffer_object GL_ARB_depth_texture
  GL_NV_packed_depth_stencil GL_EXTX_framebuffer_mixed_formats
  GL_EXT_Cg_shader GL_NV_primitive_restart GL_EXT_framebuffer_sRGB
  GL_EXT_texture_object GL_NVX_conditional_render
  GL_NV_texture_compression_vtc GL_NV_texture_shader3
  GL_NV_multisample_coverage GL_EXT_blend_func_separate
  GL_EXT_texture_cube_map GL_ARB_occlusion_query GL_ARB_transpose_matrix
  GL_EXT_gpu_shader4 GL_ARB_texture_border_clamp GL_EXT_fog_coord
  GL_NV_depth_clamp GL_ARB_texture_cube_map
  GL_EXT_blend_equation_separate GL_NV_framebuffer_multisample_coverage
  GL_ARB_point_parameters GL_EXT_texture_env_dot3
  GL_EXT_multi_draw_arrays GL_KTX_buffer_region
  GL_EXT_texture_env_combine GL_NV_fog_distance GL_ARB_vertex_program
  GL_ARB_texture_env_dot3 GL_NV_gpu_program4 GL_EXT_bgra
  GL_NV_float_buffer GL_NV_texture_env_combine4
  GL_ARB_texture_env_combine GL_ARB_vertex_buffer_object
  GL_EXT_shadow_funcs GL_NV_vertex_array_range
  GL_NV_texture_expand_normal GL_EXT_separate_specular_color
  GL_EXT_texture_env_add GL_EXT_packed_depth_stencil
  GL_EXT_texture_mirror_clamp GL_EXT_timer_query
  GL_NV_multisample_filter_hint GL_SUN_slice_accum
  GL_EXT_geometry_shader4 GL_EXT_texture_compression_latc
  GL_ARB_point_sprite GL_EXT_framebuffer_object GL_ARB_vertex_shader
  GL_ARB_half_float_pixel GL_EXT_bindable_uniform
  GL_NV_register_combiners GL_ARB_draw_buffers
  GL_ARB_fragment_program_shadow GL_NV_half_float GL_EXT_packed_float
  GL_ATI_texture_mirror_once GL_IBM_rasterpos_clip GL_EXT_texture_sRGB
  GL_EXT_stencil_two_side GL_SGIX_shadow GL_NV_texgen_reflection
  GL_EXT_texture_array GL_EXT_compiled_vertex_array
  GL_NV_fragment_program2 GL_NV_depth_buffer_float
  GL_EXT_point_parameters GL_ARB_texture_float GL_ARB_fragment_shader
  GL_ATI_texture_float GL_NV_texture_shader GL_NV_pixel_data_range
  GL_ARB_imaging GL_EXT_draw_buffers2 GL_ARB_fragment_program
  GL_ARB_shader_objects GL_ARB_shading_language_100 GL_NV_blend_square
  GL_EXT_secondary_color GL_ARB_texture_non_power_of_two
  GL_EXT_texture_lod_bias GL_NV_texture_rectangle
  GL_EXT_pixel_buffer_object GL_EXT_abgr GL_NV_vertex_program
  GL_ARB_texture_rectangle GL_ARB_multisample GL_SGIS_generate_mipmap
  GL_NV_conditional_render GL_EXT_texture_filter_anisotropic
  GL_NV_light_max_exponent GL_EXT_blend_minmax GL_EXT_framebuffer_blit
  GL_SGIS_texture_lod GL_NV_vertex_program3 GL_NV_vertex_program2
  GL_SGIX_depth_texture GL_ARB_color_buffer_float
  GL_EXT_texture_edge_clamp GL_EXT_texture_compression_rgtc
  GL_ARB_window_pos GL_ARB_shadow GL_ARB_texture_mirrored_repeat
  GL_EXT_texture_integer GL_EXT_gpu_program_parameters
  GL_EXT_texture_lod GL_NV_geometry_shader4 GL_S3_s3tc
  GL_NV_vertex_program1_1 GL_EXT_framebuffer_multisample
  GL_EXT_texture_shared_exponent GL_NV_texture_shader2 GL_EXT_texture3D
  GL_ARB_multitexture GL_EXT_draw_instanced GL_NV_copy_depth_to_color
  GL_ATI_draw_buffers GL_EXT_depth_bounds_test
  GL_EXT_draw_range_elements GL_NV_transform_feedback
  GL_NV_occlusion_query GL_ARB_texture_env_add GL_NV_fragment_program
  GL_NV_parameter_buffer_object GL_EXT_packed_pixels
  GL_EXT_rescale_normal GL_ARB_pixel_buffer_object
  GL_NV_register_combiners2
GLU version: 1.3
GLU extensions:
  GLU_EXT_nurbs_tessellator GLU_EXT_object_space_tess

Context is XlibGLContext()
GLX is direct
GLX server vendor: NVIDIA Corporation
GLX server version: 1.3
GLX server extensions:
  GLX_EXT_visual_info GLX_EXT_visual_rating GLX_SGIX_fbconfig
  GLX_SGIX_pbuffer GLX_SGI_video_sync GLX_SGI_swap_control
  GLX_EXT_texture_from_pixmap GLX_ARB_multisample GLX_NV_float_buffer
  GLX_ARB_fbconfig_float GLX_EXT_framebuffer_sRGB
GLX client vendor: NVIDIA Corporation
GLX client version: 1.4
GLX client extensions:
  GLX_ARB_get_proc_address GLX_ARB_multisample GLX_EXT_visual_info
  GLX_EXT_visual_rating GLX_EXT_import_context GLX_SGI_video_sync
  GLX_NV_swap_group GLX_NV_video_out GLX_SGIX_fbconfig GLX_SGIX_pbuffer
  GLX_SGI_swap_control GLX_NV_float_buffer GLX_ARB_fbconfig_float
  GLX_EXT_fbconfig_packed_float GLX_EXT_texture_from_pixmap
  GLX_EXT_framebuffer_sRGB
GLX extensions:
  GLX_EXT_visual_info GLX_EXT_visual_rating GLX_SGIX_fbconfig
  GLX_SGIX_pbuffer GLX_SGI_video_sync GLX_SGI_swap_control
  GLX_EXT_texture_from_pixmap GLX_ARB_multisample GLX_NV_float_buffer
  GLX_ARB_fbconfig_float GLX_EXT_framebuffer_sRGB
  GLX_ARB_get_proc_address

Original comment by r1chardj0n3s on 16 Jul 2008 at 6:18

GoogleCodeExporter commented 9 years ago
Cheers for the additional run testing r1chardj0n3s, any little bit helps as we 
build 
a base of test runs.

So far the NVIDIA 8600 stuttering is horrific, unplayable. The Ubuntu Dell 
Latitutde 
D510 has some noticable stuttering (you would call it minor) and it is still 
playable but visually noticably different to the smoother animation of the 
Pyglet + 
Rabbyt Sprites + Old School Runtime loop version.

The biggest eye opener is the large difference in CPU utilisation using the 
Pyglet 
1.1 Beta 2 R2129 Sprites and Runtime Loop functions are having on systems. 
Close to 
50% cpu utilisation and some systems show no problem with animation, others get 
to 
the point of being unusable.

I have not delved into Pyglet 1.1 Beta 2 R2129 codebase to see how the runtime 
loop 
is implemented nor the Sprite handling. I have followed along with small demo 
programs in the guides/websites I have read and noticed all sorts of anomolies 
with 
some of the examples. One simply uses Pyglets new Frames Per Second label on 
the 
window. When I set 30Hz/30FPS for the loop limit, I noticed that Pyglet/FPS 
indicator would deviate above and below the 30Hz limit in a noticable 'S' 
curve/sinewave pattern as it tried to lock on / calibrate? itself to 30Hz.

I also noticed when wiggling the mouse rapidly over the Pyglet window that 
these 
deviations became smaller and it had an easier time locking onto the 30Hz 
figure I 
inputed into Pyglets timing loop. Maybe processing all those extra events 
helped it 
manage the deviations.

It is Beta still so thats ok, but I wouldn't have been happy if this was in 
final 
release as if it was my first time approaching pyglet I might get a bad taste 
in my 
mouth as a developer and pyglet needs all the good press it can get to help it 
grow 
and flourish.

Cheerio,
PN

Original comment by pythonnu...@gmail.com on 17 Jul 2008 at 1:00

GoogleCodeExporter commented 9 years ago
One last upload.

Pygame finally released binaries for the Mac OS X platform for the latest 
release. Unfortunately it was a very 
large installation. Also it requires PyObjC 1.4 (even though it says for OS X 
10.4 on the pygame download 
page) on OS X 10.5 Leopard (even though Apple ships PyObjC 2.0 with 10.5) which 
adds another hefty 19MB 
of installation requirements just to get a Pygame program running on Mac OS X.

Now we have a Pyglet only, a Pygame only, and a Pyglet+Rabbyt version of the 
same program using the same 
graphic files, sound file, and sprite animation techniques to compare the cpu 
use, resource use, and 
animation quality and sound quality on any Platform/OS we wish to test.

Results:
o Pyglet+Rabbyt the winner at 6% CPU and silky smooth animations
o Pyglet in the middle at 18% CPU use and a tiny bit of animation stuttering
o Pygame using the most CPU use at 61% and a tiny bit of animation stuttering

Well I am convinced on where I'm spending my next projects development API time 
on.

Cheers,
PN

Original comment by pythonnu...@gmail.com on 12 Aug 2008 at 6:33

Attachments:

GoogleCodeExporter commented 9 years ago
I'm closing this bug since it is rather old and we need a clean list to follow 
new issues. If you think this is still a problem, can you retest the problem 
with a recent version and add the issue again? Better yet, can you write test 
which illustrates it and/or a patch to fix it?

Original comment by winstonw...@gmail.com on 22 Jun 2012 at 9:59