Clone of mesa.
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

RELNOTES-4.1 9.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. Mesa 4.1 release notes
  2. <month>, <day>, 2002
  3. PLEASE READ!!!!
  4. Introduction
  5. ------------
  6. Mesa uses an even/odd version number scheme like the Linux kernel.
  7. Even numbered versions (such as 4.0) designate stable releases.
  8. Odd numbered versions (such as 4.1) designate new developmental releases.
  9. New Features in Mesa 4.1
  10. ------------------------
  11. New extensions. Docs at http://oss.sgi.com/projects/ogl-sample/registry/
  12. GL_NV_vertex_program
  13. NVIDIA's vertex programming extension
  14. GL_NV_vertex_program1_1
  15. A few features built on top of GL_NV_vertex_program
  16. GL_ARB_window_pos
  17. This is the ARB-approved version of GL_MESA_window_pos
  18. GL_ARB_depth_texture
  19. This is the ARB-approved version of GL_SGIX_depth_texture.
  20. It allows depth (Z buffer) data to be stored in textures.
  21. This is used by GL_ARB_shadow
  22. GL_ARB_shadow
  23. Shadow mapping with depth textures.
  24. This is the ARB-approved version of GL_SGIX_shadow.
  25. GL_ARB_shadow_ambient
  26. Allows one to specify the luminance of shadowed pixels.
  27. This is the ARB-approved version of GL_SGIX_shadow_ambient.
  28. GL_EXT_shadow_funcs
  29. Extends the set of GL_ARB_shadow texture comparision functions to
  30. include all eight of standard OpenGL dept-test functions.
  31. GL_ARB_point_parameters
  32. This is basically the same as GL_EXT_point_parameters.
  33. GL_ARB_texture_env_crossbar
  34. Allows any texture combine stage to reference any texture source unit.
  35. GL_NV_point_sprite
  36. For rendering points as textured quads. Useful for particle effects.
  37. GL_NV_texture_rectangle
  38. Allows one to use textures with sizes that are not powers of two.
  39. Note that mipmapping and several texture wrap modes are not allowed.
  40. GL_EXT_multi_draw_arrays
  41. Allows arrays of vertex arrays to be rendered with one call.
  42. GL_EXT_stencil_two_side
  43. Separate stencil modes for front and back-facing polygons.
  44. Device Driver Status
  45. --------------------
  46. A number of Mesa's software drivers haven't been actively maintained for
  47. some time. We rely on volunteers to maintain many of these drivers.
  48. Here's the current status of all included drivers:
  49. Driver Status
  50. ---------------------- ---------------------
  51. XMesa (Xlib) implements OpenGL 1.3
  52. OSMesa (off-screen) implements OpenGL 1.3
  53. FX (3dfx Voodoo1/2) implements OpenGL 1.3
  54. SVGA implements OpenGL 1.3
  55. Wind River UGL implements OpenGL 1.3
  56. Windows/Win32 implements OpenGL 1.3
  57. DOS/DJGPP implements OpenGL 1.3
  58. GGI implements OpenGL 1.3
  59. BeOS needs updating (underway)
  60. Allegro needs updating
  61. D3D needs updating
  62. DOS needs updating
  63. New features in GLUT
  64. --------------------
  65. 1. Frames per second printing
  66. GLUT now looks for an environment variable called "GLUT_FPS". If it's
  67. set, GLUT will print out a frames/second statistic to stderr when
  68. glutSwapBuffers() is called. By default, frames/second is computed
  69. and displayed once every 5 seconds. You can specify a different
  70. interval (in milliseconds) when you set the env var. For example
  71. 'export GLUT_FPS=1000' or 'setenv GLUT_FPS 1000' will set the interval
  72. to one second.
  73. NOTE: the demo or application must call the glutInit() function for
  74. this to work. Otherwise, the env var will be ignored.
  75. Finally, this feature may not be reliable in multi-window programs.
  76. 2. glutGetProcAddress() function
  77. The new function:
  78. void *glutGetProcAddress(const char *procName)
  79. is a wrapper for glXGetProcAddressARB() and wglGetProcAddress(). It
  80. lets you dynamically get the address of an OpenGL function at runtime.
  81. The GLUT_API_VERSION has been bumped to 5, but I haven't bumped the
  82. GLUT version number from 3.7 since that's probably Mark Kilgard's role.
  83. This function should probably also be able to return the address of
  84. GLUT functions themselves, but it doesn't do that yet.
  85. XXX Things To Do Yet XXXX
  86. -------------------------
  87. Verify x86 code for normal transformation works with new 4-element normal
  88. vector arrays. Pretty sure the SSE code is wrong.
  89. Allow multiple points to be rendered into one sw_span.
  90. improve point/line rendering speed.
  91. glVertexAttrib*NV(index>15) should cause an error.
  92. isosurf with vertex program exhibits some missing triangles (probably
  93. when recycling the vertex buffer for long prims).
  94. Porting Info
  95. ------------
  96. If you're porting a DRI or other driver from Mesa 4.0.x to Mesa 4.1 here
  97. are some things to change:
  98. 1. ctx->Texture._ReallyEnabled is obsolete.
  99. Since there are now 5 texture targets (1D, 2D, 3D, cube and rect) that
  100. left room for only 6 units (6*5 < 32) in this field.
  101. This field is being replaced by ctx->Texture._EnabledUnits which has one
  102. bit per texture unit. If the bit k of _EnabledUnits is set, that means
  103. ctx->Texture.Unit[k]._ReallyEnabled is non-zero. You'll have to look at
  104. ctx->Texture.Unit[k]._ReallyEnabled to learn if the 1D, 2D, 3D, cube or
  105. rect texture is enabled for unit k.
  106. This also means that the constants TEXTURE1_*, TEXTURE2_*, etc are
  107. obsolete.
  108. The tokens TEXTURE0_* have been replaced as well (since there's no
  109. significance to the "0" part:
  110. old token new token
  111. TEXTURE0_1D TEXTURE_1D_BIT
  112. TEXTURE0_2D TEXTURE_2D_BIT
  113. TEXTURE0_3D TEXTURE_3D_BIT
  114. TEXTURE0_CUBE TEXTURE_CUBE_BIT
  115. <none> TEXTURE_RECT_BIT
  116. These tokens are only used for the ctx->Texture.Unit[i].Enabled and
  117. ctx->Texture.Unit[i]._ReallyEnabled fields. Exactly 0 or 1 bits will
  118. be set in _ReallyEnabled at any time!
  119. Q: "What's the purpose of Unit[i].Enabled vs Unit[i]._ReallyEnabled?"
  120. A: The user can enable GL_TEXTURE_1D, GL_TEXTURE_2D, etc for any
  121. texure unit all at once (an unusual thing to do).
  122. OpenGL defines priorities that basically say GL_TEXTURE_2D has
  123. higher priority than GL_TEXTURE_1D, etc. Also, just because a
  124. texture target is enabled by the user doesn't mean we'll actually
  125. use that texture! If a texture object is incomplete (missing mip-
  126. map levels, etc) it's as if texturing is disabled for that target.
  127. The _ReallyEnabled field will have a bit set ONLY if the texture
  128. target is enabled and complete. This spares the driver writer from
  129. examining a _lot_ of GL state to determine which texture target is
  130. to be used.
  131. 2. Tnl tokens changes
  132. During the implementation of GL_NV_vertex_program some of the vertex
  133. buffer code was changed. Specifically, the VERT_* bits defined in
  134. tnl/t_context.h have been renamed to better match the conventions of
  135. GL_NV_vertex_program. The old names are still present but obsolete.
  136. Drivers should use the newer names.
  137. For example: VERT_RGBA is now VERT_BIT_COLOR0 and
  138. VERT_SPEC_RGB is now VERT_BIT_COLOR1.
  139. 3. Read/Draw Buffer changes
  140. The business of setting the current read/draw buffers in Mesa 4.0.x
  141. was complicated. It's much simpler now in Mesa 4.1.
  142. Here are the changes:
  143. - Rename ctx->Color.DrawDestMask to ctx->Color._DrawDestMask
  144. - Rename ctx->Color.DriverDrawBuffer to ctx->Color._DriverDrawBuffer
  145. - Rename ctx->Pixel.DriverReadBuffer to ctx->Pixel._DriverReadBuffer
  146. - Removed ctx->Color.MultiDrawBuffer
  147. - Removed ctx->Driver.SetDrawBuffer
  148. - Added ctx->Driver.DrawBuffer and ctx->Driver.ReadBuffer. These functions
  149. exactly correspond to glDrawBuffer and glReadBuffer calls.
  150. Many drivers will set ctx->Driver.DrawBuffer = _swrast_DrawBuffer and
  151. leave ctx->Draw.ReadBuffer NULL.
  152. DRI drivers should implement their own function for ctx->Driver.DrawBuffer
  153. and use it to set the current hardware drawing buffer. You'll probably
  154. also want to check for GL_FRONT_AND_BACK mode and fall back to software.
  155. Call _swrast_DrawBuffer() too, to update the swrast state.
  156. - Removed swrast->Driver.SetReadBuffer
  157. - Added swrast->Driver.SetBuffer. This function should be implemented by
  158. _all_ device drivers. Mesa will call it to specify the buffer to use
  159. for span reading AND writing and point/line/triangle rendering. There
  160. should be no confusion between current read or draw buffer anymore.
  161. 4. _mesa_create_context() changes. This function now takes a pointer to
  162. a __GLimports object. The __GLimports structure contains function
  163. pointers to system functions like fprintf(), malloc(), etc.
  164. The _mesa_init_default_imports() function can be used to initialize
  165. a __GLimports object. Most device drivers (like the DRI drivers)
  166. should use this.
  167. 5. In tnl's struct vertex_buffer, the field "ProjectedClipCoords"
  168. has been replaced by "NdcPtr" to better match the OpenGL spec's
  169. terminology.
  170. 6. Since GL_EXT_stencil_two_side has been implemented, many of the
  171. ctx->Stencil fields are now 2-element arrays. For example,
  172. "GLenum Ref" is now "GLenum Ref[2]" The [0] elements are the front-face
  173. values and the [1] elements are the back-face values.
  174. ctx->Stencil.ActiveFace is 0 or 1 to indicate the current face for
  175. the glStencilOp/Func/Mask() functions.
  176. ctx->Stencil.TestTwoSide controls whether or not 1 or 2-sided stenciling
  177. is enabled.
  178. ----------------------------------------------------------------------
  179. $Id: RELNOTES-4.1,v 1.16 2002/09/19 16:34:29 brianp Exp $