Chromium Introduction

# Version History

Alpha Release: July 2001

- This was the initial public release of Chromium.

Beta Release: April 5, 2002

- Multi-context/window support This allows OpenGL applications to create more than one 3D window or GL rendering context to work with Chromium. See the 'minimum_window_size' and 'match_window_title' config options. Some windows can be rendered by Chromium, others by the native OpenGL.
- Improved OpenGL conformance. The OpenGL conformance and coverage tests identified a lot of problems, many of which have been fixed. See the doc/conformance.html file.
- Support for more than 32 clients and rendering contexts. The limit may be specified in include/cr_bits.h
- glRead/DrawPixels support
- New Chromium extensions to OpenGL (see include/chromium.h) Among these is an extension that allows client programs to get the tilesort configuration parameters.
- Tilesort SPU validation test program. See cr/progs/tiletest/
- Specification of visual attributes to crCreateContext().
- addes stub functions for OpenGL 1.2 entrypoints and some extensions to fix link problems.
- Improved GL error handling - don't just abort when we detect user's GL errors.
- Evaluators support
- GL_EXT_texture_object support (for Performer)
- crCreateContext() now takes a bitmask of desired visual properties and returns a context value which is passed to crMakeCurrent. See the psubmit.d program for details.
- Linux Alpha AXP support
- Numerous bug fixes from application testing
- Fully functional readback SPU with support for Z-compositing and tile reassembly.
- Thread safety. Programs can issue Chromium rendering commands from several threads in parallel.
- Updated documentation

1.0 Release: September 30, 2002

- New Features
  - Graphical configuration tool
  - New SPUs:
    - Feedback (OpenGL feedback & selection support)
    - Perf (performance SPU) for collecting performance statistics
    - Wet
    - Motion blur
  - New configuration options and features:
    - Render SPU: render_to_app_window, resizable, display_string, lut8
    - Tilesort SPU: bucket_mode, dynamic tile configuration (tile layout changable at runtime), warped tile support
    - Readback SPU: tile/image reassembly
    - Saveframe SPU: many new options
    - Hiddenline SPU: added silhouette mode and fog color options
    - New network (server) node options: only_swap_once, spu_dir
    - New application node option: track_window_size, application, start_dir, client_dll, spu_dir
  - SunOS support (Jorge Luis Williams)
  - OpenGL 1.2 support (but not ARB_imaging)
  - New OpenGL extensions:
    - GL_EXT_fog_coord support
    - GL_ARB_point_parameters
    - GL_NV_vertex_program (on app nodes only)
    - GL_NV_fence (on app nodes only)
    - GL_NV_vertex_array_range (on app nodes only)
  - IPv6 support
  - Quadrics network support
  - OpenGL limits computed per context, not just once during start-up
  - Header file clean-up (client apps should include chromium.h)
  - Namespace cleanup (ex: BoundsInfo() is now BoundsInfoCR(), similarly for semaphore and barrier functions)
  - Thread safety clean-ups and fixes
  - Improved OpenGL error handling
  - city demo
- Bug Fixes
  - Fixed GM memory leak (Michael Brodeur)
  - Cygwin 5.1 patches (Sebastien Barre)
  - Fixed sort-last rendering synchronization problems
  - Fixed glRasterPos/glBitmap/display list bug in tilesort SPU
  - Working binaryswap SPU
  - Fixed tilesort bounding box / state broadcast bug
  - Fixed overlapping tile bug in tilesort SPU / server
  - glAreTexturesResident() fixed
  - glGenTextures() fixed
  - Fixed state tracker link bug (use static state tracker lib on Unix)
  - Fixed GM, teac, tcscomm glitches in mothership (David Thompson and Joel Welling)
  - Lots of other bug fixes

1.0.1 Release: November 7, 2002

- New Features
  - Added ChromiumParameter*() functions to simplequery spu (David Thompson)
  - Added overlap_blending option to crserver (Karl Rasche)
  - Render SPU swapbuffers synchronization (Karl Rasche)
  - Added default_viewport option to feedbackSPU
- Bug Fixes
  - Fixed bug in binaryswap SPU when using 32 nodes (Mike Houston)
  - Fixed X display string bug when mixing Linux/Windows (Alan Hourihane)
  - Fixed a few minor SunOS compilation bugs (Jorge Luis Williams)
  - Fixed divide by zero error in bounding box code (Brian Paul)
  - Fixed a few problems in the feedback SPU (Brian Paul)
  - glIsList() with tilesort didn't work.
  - glDeleteLists() with a non-list index no longer causes an exit.
  - Fixed RasterPos calculation of transformed Z component.
  - Fixed FP exceptions caused by a bug in crPackMultiTexCoord functions
  - glPush/PopAttrib() didn't handle texture state correctly.
  - Fixed parallel app state tracking bug that caused sporadic lighting, among other symptoms (David Thompson)
  - Fixed GLUquadric bug in EXT_separate_specular_color test program

1.1 Release: January 17, 2003

- New Features
  - OpenGL 1.3 and 1.4 support, which includes...
  - GL_ARB_multisample
  - GL_ARB_multitexture
  - 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_dot3
  - GL_ARB_transpose_matrix
  - GL_ARB_depth_texture
  - GL_ARB_shadow
  - GL_ARB_point_parameters
  - GL_ARB_texture_env_crossbar
  - GL_ARB_texture_mirrored_repeat
  - GL_ARB_window_pos
  - GL_EXT_blend_color
  - GL_EXT_blend_func_separate
  - GL_EXT_blend_logic_op
  - GL_EXT_blend_minmax
  - GL_EXT_blend_subtract
  - GL_EXT_fog_coord
  - GL_EXT_multi_draw_arrays
  - GL_EXT_secondary_color
  - GL_EXT_stencil_wrap
  - GL_SGIS_generate_mipmap
  - GL_ARB_shadow_ambient
  - GL_EXT_texture_lod_bias
  - Added support for WGL_EXT_pixel_format (not tested and disabled fow now) for enhanced Windows visual selection, like multisampling
- CRUT - Chromium Utility Toolkit for parallel applications (beta release)
- CRUT demonstration program: psubmit_crut
- New crserver configuration options: unique_display_lists, unique_texture_objects
- Bug Fixes
  - More GLX visual handling tweaks

1.2 Release: April 4, 2003

- New Features
  - DMX integration - Chromium can now be used on a DMX display to provide OpenGL rendering on a multi-screen desktop
  - Optimizations to the crserver and state_tracker
  - Added retile_on_resize option to tilesort SPU
  - Added maximum_window_size and match_window_count options for app nodes
  - GL_IBM_raster_pos_clip extension support
  - Improved support for multiple OpenGL windows
  - Perf SPU now records glTexImage statistics
  - Updated CRUT (Dale Beermann)
- Bug Fixes
  - Updated Quadrics support (Joel Welling)
  - glGetInteger/Float/etc queries of fog coord and secondary color state didn't work
  - The track_window_size option was mistakenly turned on by default
  - Fixed a number of problems with user-specified bounding boxes in the tilesort SPU.
  - Don't abort if app requests a stereo visual
  - Colormaterial fix
  - Fixed split_begin_end problem in tilesort SPU
  - Fixed some display list issues and bugs related to bounding boxes
  - Fixed some glTexImage and pixel transfer bugs (Karl Rasche)
  - glViewport didn't always work as expected on tiled displays
  - Lots of other minor fixes

1.3 Release: July 4, 2003

- New Features
  - Added borderless option to render SPU
  - Added track_window_position option for application nodes
  - New OpenGL extensions support:
    - GL_ARB_fragment_program
    - GL_ARB_vertex_program
    - GL_NV_fragment_program
    - GL_NV_vertex_program
    - GL_NV_vertex_program1_1
    - GL_NV_vertex_program2
      NOTE: During development we've found that some graphics card/driver combinations have bugs in the vertex (and fragment?) program extensions that cause some demo programs to fail. For more info, ask on the Chromium mailing lists.
    - GL_NV_texture_rectangle
    - GL_EXT_shadow_funcs
    - GL_EXT_texture_rectangle
- vertprog_projection_parameter config option for crserver. This is useful for running Cg demos on tilesort displays, for example.
- bbox_scale config option for tilesort SPU. This is useful when computing bounding boxes for geometry perturbed/warped by vertex programs.
- Bug Fixes
  - Fixed Alpha compilation problem
  - The show_cursor option didn't work (must be set in both the render SPU and the application node)

1.4 Release: August 29, 2003

- New Features
  - Improved display list support in tilesort SPU
  - New expando SPU (saves and plays back display lists)
  - New replicate SPU (allows direct rendered OpenGL with VNC)
    See http://xf4vnc.sf.net for more information on this enhancement.
- Bug Fixes
  - Fix glRasterPos bugs accidently introduced by a bad CVS merge.
  - Fixed a few bugs in GL_SELECT mode.
  - Fixed some demo compilation problems (GetProcAddress stuff).
  - Fixed memory-usage bugs in ARB_multitexture2 demo.
  - glIsList() and glIsTexture() didn't always work.
  - Fixed ParaView / tilesort bug (David Thompson).
  - Fixed some network buffer size issues that could cause random failures.
  - Update teac networking code (Joel Welling)
  - Lots of other assorted fixes.

1.5 Release: December 17, 2003

- New Features
  - OpenGL 1.5 support
  - GL_ARB_vertex_buffer_object extension
  - GL_ARB_point_sprite extension
  - GL_ARB_texture_non_power_of_two extension
  - GL_ARB_occlusion_query extension
  - New scale_images option for tilesort SPU controls scaling of glDrawPixels, glCopyPixels and glBitmap images.
  - Off-screen rendering with OSMesa (sac at pobox.com)
  - ZPix SPU for image compression in conjunction with Readback SPU
  - Further display list improvements in tilesort SPU (only send lists to servers when really needed)
- Bug Fixes
  - Hiddenline SPU wasn't always working correctly
  - Assorted minor bug fixes since previous release
- Changes
  - New Python code generation system
  - The readback and binaryswap SPUs no longer mask out the CR_SUPPRESS_SWAP_BIT flag passed to crSwapBuffers. See the progs/psubmit.c demo for details/comments.

1.6 Release: February 18, 2004

- New Features
  - Non-planar tilesort
  - Stereo rendering
  - More robust auto-start support in mothership
  - statusms program to query mothership status (John McPherson)
- Bug Fixes
  - Fixed problems compiling with older versions of gcc
  - Fixed a few compilation issues on Windows
  - Fixed intermittent tilesort bug when using multiple app nodes
  - Tilesort SPU had some thread safety bugs
  - Using non-default port for mothership didn't work
  - Calls to glTexGeni() could blow up in the tilesort SPU
  - The render SPU's fake/virtual cursor was polluting the current raster position
- Changes
  - resetms now respawns auto-start nodes (Wes Bethel bug)
  - state tracking for display lists is now disabled by default in the tilesort SPU (see 'dlist_state_tracking' option).
- Known Problems
  - The display list manager code used for state tracking in the tilesort SPU doesn't work on Windows. This will occur when the tilesort SPU's dlist_state_tracking option is enabled.

1.7 Release: April 15, 2004

- New Features
  - npclient/npserver programs for measuring network performance
  - spheres program for measuring triangle rendering rates
  - packertest for validating Chromium's pack/unpack modules
  - dlistest test for exercising display list support
  - updated documentation
- Bug Fixes
  - Fixed some issues with non-planar tilesort and stereo
  - Packing/unpacking of glDeleteBuffersARB was broken
  - Tilesort SPU used incorrect pixel store parameters for state differencing
  - glDeleteTextures and glDeleteProgramsARB didn't work properly
  - Fixed additional bugs in the tilesort SPU related to display lists
  - Fixed many assorted pack/unpack bugs found with the packertest program

1.8 Release: March 23, 2005

- New Features
  - Documented the dist_texture SPU
  - quitms program to tell a running mothership to quit.
  - Improved Darwin support
  - New shared_windows option for Cr network/server nodes.
  - Render SPU 'title' config option can have %i which gets replaced by the window ID number.
  - Added track_window_visibility option for app nodes.
  - VNC server SPU.
  - PBuffer support. The new CR_PBUFFER_BIT flag may be passed to crCreateContext() and crWindowCreate() to indicate that off-screen rendering is desired.
  - Added force_pbuffers option for Application nodes.
  - Added ignore_window_moves option for Render SPU.
- Changes
  - Increased max 2D/cube/rectangle texture size to 4096
  - Print SPU's GLenum value-to-string look-up table is auto-generated now
- Bug Fixes
  - glIsList() was broken in crserver
  - Fixed dist_texture SPU problem in state tracker
  - Fixed glColorMaterial bug in tilesort SPU
  - Fixed segfault when building maximum mipmapped textures
  - Tilesort SPU's pincher code was broken in 1.7
  - glxgears on DMX display demonstrated a tile update bug - fixed now.
  - Fixed a display list / glMaterial bug in tilesort SPU
  - Work around glXChooseVisual bug when using ATI OpenGL drivers.
  - Added ignore_freeglut_menus option for application nodes
  - Binary swap and Readback SPUs didn't properly handle user-specified bounding boxes
  - Fixed config tool problems on Darwin (Christopher Waters)
  - Fixed mothership connection broker bug that could cause deadlocks
  - Querying GL_MAX_VERTEX_ATTRIBS_ARB didn't work
  - GL_GENERATE_MIPMAP_SGI didn't work reliably with tilesort
  - Packing/unpacking of glAreTextures/ProgramsResident() was broken
  - Any number of binary swap SPUs can now run on one host.
  - Fixed some visual selection problems with CRUT.
  - Fixed byte swapping problem when packing textures (Bill Feth).
  - App-faker dispatcher no-ops GL calls if no current context.

1.9 May ?, 2006

- New Features
  - exit_on_escape config and composite_mode options for CRUT server.
  - New crutMakeCurrent() and crutSwapBuffers() functions.
  - Hostname suffix for SDP can be set with CR_SDP_SUFFIX environment variable.
- Bug Fixes
  - Fixed Windows build issues (crutproxy/main.c)
  - Fixed build issues with gcc 4.0
  - Fixed broken pack/unpack of glCompressedTexImage functions (Kevin Dale, Chris Waters)
  - Fixed a few glReadPixels bugs (found by Joel Welling)
  - Chromium would crash if OpenGL didn't support the GL_ARB_vertex_buffer_object extension.
  - Tilesort SPU's glReadPixels function sometimes didn't work
  - Fixed dist_texture SPU and added test config/demo: dist_texture.conf
  - Fixed a few issues with 'file:' protocol and demo configs
  - glXMakeCurrent(ctx=NULL) caused a segfault (bug 1233768)
  - Fixed IA64 -fPIC build issue (bug 1209469)
  - Array SPU didn't handle glInterleavedArrays (bug 1182364)
  - Fixed bugs in distributed texture feature

1.10 date 2006

- New Features
  - New crserver config option 'exit_if_no_clients'
  - apihistogram SPU for counting number of calls to each OpenGL API function.
- Bug Fixes