Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1.  
  2.                          Mesa 3.3 release notes
  3.  
  4.                              July 21, 2000
  5.  
  6.                              PLEASE READ!!!!
  7.  
  8.  
  9.  
  10. Introduction
  11. ------------
  12.  
  13. Mesa uses an even/odd version number scheme like the Linux kernel.
  14. Odd numbered versions (such as 3.3) designate new developmental releases.
  15. Even numbered versions (such as 3.2.1) designate stable releases.
  16.  
  17. Mesa 3.3 has a undergone many internal changes since version 3.2
  18. and features a lot of new extensions.  3.3 is expected to be pretty
  19. stable, but perhaps not as stable as 3.2 which has been used by
  20. thousands of users over the past months.
  21.  
  22. Everyone is encouraged to try Mesa 3.3.  Bugs should be reported to
  23. the Mesa bug database on www.sourceforge.net.
  24.  
  25.  
  26.  
  27. Header file / GLenum changes
  28. ----------------------------
  29.  
  30. The gl.h and glu.h headers now use #defines to define all GL_* tokens
  31. instead of C-language enums.  This change improves Mesa/OpenGL
  32. interoperability.
  33.  
  34.  
  35.  
  36. New API dispatch code
  37. ---------------------
  38.  
  39. The core Mesa gl* functions are now implemented with a new dispatch
  40. (jump table) which will allow simultaneous direct/indirect rendering.
  41.  
  42. The code is found in the glapi*.[ch] files.
  43.  
  44. Of interest:  the actual "glFooBar" functions are generated with
  45. templatized code defined in glapitemp.h and included by glapi.c
  46. The glapitemp.h template should be reusable for all sorts of OpenGL
  47. projects.
  48.  
  49. The new dispatch code has also optimized with x86 assembly code.
  50. This optimization eliminates copying the function arguments during
  51. dispatch.
  52.  
  53.  
  54.  
  55. New thread support
  56. ------------------
  57.  
  58. Thread support in Mesa has been rewritten.  The glthread.[ch] files
  59. replace mthreads.[ch].  Thread safety is always enabled (on platforms
  60. which support threads, that is).  There is virtually no performance
  61. penalty for typical single-thread applications.  See the glapi.c
  62. file for details.
  63.  
  64. The Xlib driver (XMesa) is now thread-safe as well.  Be sure to
  65. call XInitThreads() in your app first.  See the xdemos/glthreads.c
  66. demo for an example.
  67.  
  68.  
  69.  
  70. Make configuration changes
  71. --------------------------
  72.  
  73. If you use the old-style (non GNU automake) method to build Mesa note
  74. that several of the configuration names have changed:
  75.  
  76.    Old name        New name
  77.    -------------   ----------------
  78.    linux-elf       linux
  79.    linux           linux-static
  80.    linux-386-elf   linux-386
  81.    linux-386       linux-386-static
  82.    etc.
  83.  
  84.  
  85.  
  86. New extensions
  87. --------------
  88.  
  89. GL_ARB_transpose_matrix
  90.         Adds glLoadTransposeMatrixARB() and glMultTransposeMatrixARB()
  91.         functions.
  92.  
  93. GL_ARB_texture_cube_map
  94.         For cube-based reflection mapping.
  95.  
  96. GL_EXT_texture_add_env
  97.         Adds GL_ADD texture environment mode.
  98.         See http://www.berkelium.com/OpenGL/EXT/texture_env_add.txt
  99.  
  100. GL_EXT_texture_lod_bias
  101.         Allows mipmapped texture blurring and sharpening.
  102.  
  103. GLX_EXT_visual_rating extension
  104.         This extension has no effect in stand-alone Mesa (used for DRI).
  105.  
  106. GL_HP_occlusion_test
  107.         Used for bounding box occlusion testing (see demos/occlude.c).
  108.  
  109. GL_SGIX_pixel_texture / GL_SGIS_pixel_texture
  110.         Lets glDraw/CopyPixels draw a texture coordinate image.
  111.  
  112. GL_SGI_color_matrix
  113.         Adds a color matrix and another set of scale and bias parameters
  114.         to the glDraw/CopyPixels paths.
  115.  
  116. GL_SGI_color_table
  117.         Adds additional color tables to the glDraw/Read/CopyPixels paths.
  118.  
  119. GL_EXT_histogram
  120.         Compute histograms for glDraw/Read/CopyPixels.
  121.  
  122. GL_EXT_blend_func_separate
  123.         This is the same as GL_INGR_blend_func_separate.
  124.  
  125. GL_ARB_texture_cube_mapping
  126.         6-face cube mapping, nicer than sphere mapping
  127.  
  128. GL_EXT_texture_env_combine
  129.         For advanced texture environment effects.
  130.  
  131.  
  132. Documentation for all these functions can be found at
  133. http://oss.sgi.com/projects/ogl-sample/registry/
  134.  
  135.  
  136.  
  137. GLX_SGI_make_current_read functionality
  138. ---------------------------------------
  139.  
  140. The functionality of this extension is needed for GLX 1.3 (and required
  141. for the Linux/OpenGL standards base).
  142.  
  143. Implementing this function required a **DEVICE DRIVER CHANGE**.
  144. The old SetBuffer() function has been replaced by SetReadBuffer() and
  145. SetDrawBuffer().  All device drivers will have to be updated because
  146. of this change.
  147.  
  148. The new function, glXMakeContextCurrent(), in GLX 1.3 now works in Mesa.
  149. The xdemos/wincopy.c program demonstrates it.
  150.  
  151.  
  152.  
  153. Image-related code changes
  154. --------------------------
  155.  
  156. The imaging path code used by glDrawPixels, glTexImage[123]D,
  157. glTexSubImage[123], etc has been rewritten.  It's now faster,
  158. uses less memory and has several bug fixes.  This work was
  159. actually started in Mesa 3.1 with the glTexImage paths but has now
  160. been carried over to glDrawPixels as well.
  161.  
  162.  
  163.  
  164. Device driver interface changes
  165. -------------------------------
  166.  
  167. Added new functions for hardware stencil buffer support:
  168.    WriteStencilSpan
  169.    ReadStencilSpan
  170.    WriteStencilPixels
  171.    ReadStencilPixels
  172.  
  173.  
  174. Removed old depth buffer functions:
  175.    AllocDepthBuffer
  176.    DepthTestSpan
  177.    DepthTestPixels
  178.    ReadDepthSpanFloat
  179.    ReadDepthSpanInt
  180.  
  181.  
  182. Added new depth buffer functions:
  183.    WriteDepthSpan
  184.    ReadDepthSpan
  185.    WriteDepthPixels
  186.    ReadDepthPixels
  187.  
  188.    These functions always read/write 32-bit GLuints.  This will allow
  189.    drivers to have anywhere from 0 to 32-bit Z buffers without
  190.    recompiling for 16 vs 32 bits as was previously needed.
  191.  
  192.  
  193. New texture image functions
  194.    The entire interface for texture image specification has been updated.
  195.    With the new functions, it's optional for Mesa to keep an internal copy
  196.    of all textures.  Texture download should be a lot faster when the extra
  197.    copy isn't made.
  198.  
  199. Misc changes
  200.    TexEnv now takes a target argument
  201.    Removed UseGlobalTexturePalette (use Enable function instead)
  202.  
  203.  
  204. Also added
  205.    ReadPixels
  206.    CopyPixels
  207.  
  208.  
  209. The SetBufffer function has been replaced by SetDrawBuffer and
  210. SetReadBuffer functions.  This lets core Mesa independently
  211. specify which buffer is to be used for reading and which for
  212. drawing.
  213.  
  214. The Clear function's mask parameter has changed.  Instead of
  215. mask being the flags specified by the user to glClear, the
  216. mask is now a bitmask of the DD_*_BIT flags in dd.h.  Now
  217. multiple color buffers can be specified for clearing (ala
  218. glDrawBuffers).  The driver's Clear function must also
  219. check the glColorMask glIndexMask, and glStencilMask settings
  220. and do the right thing.  See the X/Mesa, OS/Mesa, or FX/Mesa
  221. drivers for examples.
  222.  
  223.  
  224. The depth buffer changes shouldn't be hard to make for existing
  225. drivers.  In fact, it should simply the code.  Be careful with
  226. the depthBits value passed to gl_create_context().  1 is a bad
  227. value!  It should normally be 0, 16, 24, or 32.
  228.  
  229.  
  230. gl_create_framebuffer() takes new arguments which explicitly tell
  231. core Mesa which ancillary buffers (depth, stencil, accum, alpha)
  232. should be implemented in software.  Mesa hardware drivers should
  233. carefully set these flags depending on which buffers are in the
  234. graphics card.
  235.  
  236.  
  237.  
  238. Internal constants
  239. ------------------
  240.  
  241. Point and line size range and granularity limits are now stored
  242. in the gl_constants struct, which is the Const member of GLcontext.
  243. The limits are initialized from values in config.h but may be
  244. overridden by device drivers to reflect the limits of that driver's
  245. hardware.
  246.  
  247. Also added constants for NumAuxBuffers and SubPixelBits.
  248.  
  249.  
  250.  
  251. OpenGL Conformance
  252. ------------------
  253.  
  254. Mesa now passes all the OpenGL 1.1 conformance tests, except for
  255. antialiased lines.  AA lines fail on some, but not all, the tests.
  256. In order to fix the remaining failures, a new AA line algorithm will
  257. be needed (which computes coverage values for end-point fragments).
  258. This will be done for Mesa 3.5/3.6.
  259.  
  260.  
  261.  
  262. OpenGL 1.2 GL_ARB_imaging subset
  263. --------------------------------
  264.  
  265. Mesa 3.3 implements all the features of GL_ARB_imaging except for
  266. image convolution.  This will (hopefully) be done for Mesa 3.5/3.6.
  267.  
  268.  
  269.  
  270. ----------------------------------------------------------------------
  271.