docs: Import 7.9.1 release notes from 7.9 branch
[profile/ivi/mesa.git] / docs / relnotes-7.9.1.html
1 <HTML>
2
3 <TITLE>Mesa Release Notes</TITLE>
4
5 <head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
6
7 <BODY>
8
9 <body bgcolor="#eeeeee">
10
11 <H1>Mesa 7.9.1 Release Notes / January 7, 2011</H1>
12
13 <p>
14 Mesa 7.9.1 is a bug fix release which fixes bugs found since the 7.9 release.
15 </p>
16 <p>
17 Mesa 7.9.1 implements the OpenGL 2.1 API, but the version reported by
18 glGetString(GL_VERSION) depends on the particular driver being used.
19 Some drivers don't support all the features required in OpenGL 2.1.
20 </p>
21 <p>
22 See the <a href="install.html">Compiling/Installing page</a> for prerequisites
23 for DRI hardware acceleration.
24 </p>
25
26
27 <h2>MD5 checksums</h2>
28 <pre>
29 78422843ea875ad4eac35b9b8584032b  MesaLib-7.9.1.tar.gz
30 07dc6cfb5928840b8b9df5bd1b3ae434  MesaLib-7.9.1.tar.bz2
31 c8eaea5b3c3d6dee784bd8c2db91c80f  MesaLib-7.9.1.zip
32 ee9ecae4ca56fbb2d14dc15e3a0a7640  MesaGLUT-7.9.1.tar.gz
33 41fc477d524e7dc5c84da8ef22422bea  MesaGLUT-7.9.1.tar.bz2
34 90b287229afdf19317aa989d19462e7a  MesaGLUT-7.9.1.zip
35 </pre>
36
37
38 <h2>New features</h2>
39 <p>None.</p>
40
41 <h2>Bug fixes</h2>
42 <p>This list is likely incomplete.</p>
43 <ul>
44 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28800">Bug 28800</a> - [r300c, r300g] Texture corruption with World of Warcraft</li>
45
46 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29420">Bug 29420</a> - Amnesia / HPL2 RendererFeatTest - not rendering correctly</li>
47
48 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29946">Bug 29946</a> - [swrast] piglit valgrind glsl-array-bounds-04 fails</li>
49
50 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30261">Bug 30261</a> - [GLSL 1.20] allowing inconsistent invariant declaration between two vertex shaders</li>
51
52 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30632">Bug 30632</a> - [softpipe] state_tracker/st_manager.c:489: st_context_notify_invalid_framebuffer: Assertion `stfb &amp;&amp; stfb-&gt;iface == stfbi' failed.</li>
53
54 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30694">Bug 30694</a> - wincopy will crash on Gallium drivers when going to front buffer</li>
55
56 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30787">Bug 30787</a> - Invalid asm shader does not generate draw-time error when used with GLSL shader</li>
57
58 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30993">Bug 30993</a> - getFramebufferAttachmentParameteriv wrongly generates error</li>
59
60 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31101">Bug 31101</a> -  [glsl2] abort() in ir_validate::visit_enter(ir_assignment *ir)</li>
61
62 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31193">Bug 31193</a> -  [regression] aa43176e break water reflections</li>
63
64 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31194">Bug 31194</a> - The mesa meta save/restore code doesn't ref the current GLSL program</li>
65
66 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31371">Bug 31371</a> - glslparsertest: ir.cpp:358: ir_constant::ir_constant(const glsl_type*, const ir_constant_data*): Assertion `(type->base_type &gt;= 0) &amp;&amp; (type->base_type &lt;= 3)' failed.</li>
67
68 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31439">Bug 31439</a> - Crash in glBufferSubData() with size == 0</li>
69
70 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31495">Bug 31495</a> - [i965 gles2c bisected] OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed</li>
71
72 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31514">Bug 31514</a> - isBuffer returns true for unbound buffers</li>
73
74 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31560">Bug 31560</a> - [tdfx] tdfx_tex.c:702: error: ‘const struct gl_color_table’ has no member named ‘Format’</li>
75
76 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31617">Bug 31617</a> - Radeon/Compiz: 'failed to attach dri2 front buffer', error case not handled</li>
77
78 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31648">Bug 31648</a> -  [GLSL] array-struct-array gets assertion: `(size &gt;= 1) && (size &lt;= 4)' failed.</li>
79
80 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31650">Bug 31650</a> - [GLSL] varying gl_TexCoord fails to be re-declared to different size in the second shader</li>
81
82 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31673">Bug 31673</a> - GL_FRAGMENT_PRECISION_HIGH preprocessor macro undefined in GLSL ES</li>
83
84 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31690">Bug 31690</a> -  i915 shader compiler fails to flatten if in Aquarium webgl demo.</li>
85
86 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31832">Bug 31832</a> - [i915] Bad renderbuffer format: 21</li>
87
88 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31841">Bug 31841</a> - [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !</li>
89
90 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31894">Bug 31894</a> - Writing to gl_PointSize with GLES2 corrupts other varyings</li>
91
92 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31909">Bug 31909</a> - [i965] brw_fs.cpp:1461: void fs_visitor::emit_bool_to_cond_code(ir_rvalue*): Assertion `expr-&gt;operands[i]-&gt;type-&gt;is_scalar()' failed.</li>
93
94 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31934">Bug 31934</a> - [gallium] Mapping empty buffer object causes SIGSEGV</li>
95
96 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31983">Bug 31983</a> -  [i915 gles2] "if (expression with builtin/varying variables) discard" breaks linkage</li>
97
98 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31985">Bug 31985</a> - [GLSL 1.20] initialized uniform array considered as "unsized"</li>
99
100 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31987">Bug 31987</a> - [gles2] if input a wrong pname(GL_NONE) to glGetBoolean, it will not case GL_INVALID_ENUM</li>
101
102 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32035">Bug 32035</a> - [GLSL bisected] comparing unsized array gets segfault</li>
103
104 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32070">Bug 32070</a> - llvmpipe renders stencil demo incorrectly</li>
105
106 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32273">Bug 32273</a> - assertion fails when starting vdrift 2010 release with shaders enabled</li>
107
108 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32287">Bug 32287</a> - [bisected GLSL] float-int failure</li>
109
110 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32311">Bug 32311</a> - [965 bisected] Array look-ups broken on GM45</li>
111
112 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32520">Bug 32520</a> -  [gles2] glBlendFunc(GL_ZERO, GL_DST_COLOR) will result in GL_INVALID_ENUM</li>
113
114 <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32825">Bug 32825</a> - egl_glx driver completely broken in 7.9 branch [fix in master]</li>
115 </ul>
116
117
118 <h2>Changes</h2>
119 <p>The full set of changes can be viewed by using the following GIT command:</p>
120
121 <pre>
122   git log mesa-7.9..mesa-7.9.1
123 </pre>
124
125 <p>Alex Deucher (5):
126 <ul>
127   <li>r100: revalidate after radeon_update_renderbuffers</li>
128   <li>r600c: add missing radeon_prepare_render() call on evergreen</li>
129   <li>r600c: properly align mipmaps to group size</li>
130   <li>gallium/egl: fix r300 vs r600 loading</li>
131   <li>r600c: fix some opcodes on evergreen</li>
132 </ul></p>
133
134 <p>Aras Pranckevicius (2):
135 <ul>
136   <li>glsl: fix crash in loop analysis when some controls can't be determined</li>
137   <li>glsl: fix matrix type check in ir_algebraic</li>
138 </ul></p>
139
140 <p>Brian Paul (27):
141 <ul>
142   <li>swrast: fix choose_depth_texture_level() to respect mipmap filtering state</li>
143   <li>st/mesa: replace assertion w/ conditional in framebuffer invalidation</li>
144   <li>egl/i965: include inline_wrapper_sw_helper.h</li>
145   <li>mesa: Add missing else in do_row_3D</li>
146   <li>mesa: add missing formats in _mesa_format_to_type_and_comps()</li>
147   <li>mesa: handle more pixel types in mipmap generation code</li>
148   <li>mesa: make glIsBuffer() return false for never bound buffers</li>
149   <li>mesa: fix glDeleteBuffers() regression</li>
150   <li>swrast: init alpha value to 1.0 in opt_sample_rgb_2d()</li>
151   <li>meta: Mask Stencil.Clear against stencilMax in _mesa_meta_Clear</li>
152   <li>st/mesa: fix mapping of zero-sized buffer objects</li>
153   <li>mesa: check for posix_memalign() errors</li>
154   <li>llvmpipe: fix broken stencil writemask</li>
155   <li>mesa: fix GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME query</li>
156   <li>mesa: return GL_FRAMEBUFFER_DEFAULT as FBO attachment type</li>
157   <li>mesa: make glGet*(GL_NONE) generate GL_INVALID_ENUM</li>
158   <li>mesa: test for cube map completeness in glGenerateMipmap()</li>
159   <li>tnl: Initialize gl_program_machine memory in run_vp.</li>
160   <li>tnl: a better way to initialize the gl_program_machine memory</li>
161   <li>mesa, st/mesa: disable GL_ARB_geometry_shader4</li>
162   <li>glsl: fix off by one in register index assertion</li>
163   <li>st/mesa: fix mipmap generation bug</li>
164   <li>glsl: new glsl_strtod() wrapper to fix decimal point interpretation</li>
165   <li>mesa: no-op glBufferSubData() on size==0</li>
166   <li>tdfx: s/Format/_BaseFormat/</li>
167   <li>st/mesa: fix renderbuffer pointer check in st_Clear()</li>
168   <li>mesa: Bump the number of bits in the register index.</li>
169 </ul></p>
170
171 <p>Chad Versace (5):
172 <ul>
173   <li>glsl: Fix lexer rule for ^=</li>
174   <li>glsl: Fix ast-to-hir for ARB_fragment_coord_conventions</li>
175   <li>glsl: Fix ir_expression::constant_expression_value()</li>
176   <li>glsl: Fix erroneous cast in ast_jump_statement::hir()</li>
177   <li>glsl: Fix linker bug in cross_validate_globals()</li>
178 </ul></p>
179
180 <p>Chia-I Wu (10):
181 <ul>
182   <li>targets/egl: Fix linking with libdrm.</li>
183   <li>st/vega: Fix version check in context creation.</li>
184   <li>st/egl: Do not finish a fence that is NULL.</li>
185   <li>egl: Fix a false negative check in _eglCheckMakeCurrent.</li>
186   <li>st/mesa: Unreference the sampler view in st_bind_surface.</li>
187   <li>egl_dri2: Fix __DRI_DRI2 version 1 support.</li>
188   <li>st/vega: Do not wait NULL fences.</li>
189   <li>mesa: Do not advertise GL_OES_texture_3D.</li>
190   <li>egl_glx: Fix borken driver.</li>
191   <li>egl: Check extensions.</li>
192 </ul></p>
193
194 <p>Daniel Lichtenberger (1):
195 <ul>
196   <li>radeon: fix potential segfault in renderbuffer update</li>
197 </ul></p>
198
199 <p>Daniel Vetter (1):
200 <ul>
201   <li>r200: revalidate after radeon_update_renderbuffers</li>
202 </ul></p>
203
204 <p>Dave Airlie (1):
205 <ul>
206   <li>r300g: fixup rs690 tiling stride alignment calculations.</li>
207 </ul></p>
208
209 <p>Eric Anholt (13):
210 <ul>
211   <li>intel: Allow CopyTexSubImage to InternalFormat 3/4 textures, like RGB/RGBA.</li>
212   <li>glsl: Free the loop state context when we free the loop state.</li>
213   <li>i965: Allow OPCODE_SWZ to put immediates in the first arg.</li>
214   <li>i965: Add support for rendering to SARGB8 FBOs.</li>
215   <li>glsl: Add a helper constructor for expressions that works out result type.</li>
216   <li>glsl: Fix structure and array comparisions.</li>
217   <li>glsl: Quiet unreachable no-return-from-function warning.</li>
218   <li>glsl: Mark the array access for whole-array comparisons.</li>
219   <li>glsl: Fix flipped return of has_value() for array constants.</li>
220   <li>mesa: Add getters for the rest of the supported draw buffers.</li>
221   <li>mesa: Add getters for ARB_copy_buffer's attachment points.</li>
222   <li>i965: Correct the dp_read message descriptor setup on g4x.</li>
223   <li>glsl: Correct the marking of InputsRead/OutputsWritten on in/out matrices.</li>
224 </ul></p>
225
226 <p>Fabian Bieler (1):
227 <ul>
228   <li>glsl: fix lowering conditional returns in subroutines</li>
229 </ul></p>
230
231 <p>Francisco Jerez (3):
232 <ul>
233   <li>meta: Don't leak alpha function/reference value changes.</li>
234   <li>meta: Fix incorrect rendering of the bitmap alpha component.</li>
235   <li>meta: Don't try to disable cube maps if the driver doesn't expose the extension.</li>
236 </ul></p>
237
238 <p>Henri Verbeet (2):
239 <ul>
240   <li>r600: Evergreen has two extra frac_bits for the sampler LOD state.</li>
241   <li>st/mesa: Handle wrapped depth buffers in st_copy_texsubimage().</li>
242 </ul></p>
243
244 <p>Ian Romanick (33):
245 <ul>
246   <li>Add 7.9 md5sums</li>
247   <li>docs: Import 7.8.x release notes from 7.8 branch.</li>
248   <li>docs: download.html does not need to be updated for each release</li>
249   <li>docs: Update mailing lines from sf.net to freedesktop.org</li>
250   <li>docs: added news item for 7.9 release</li>
251   <li>mesa: Validate assembly shaders when GLSL shaders are used</li>
252   <li>linker: Reject shaders that have unresolved function calls</li>
253   <li>mesa: Refactor validation of shader targets</li>
254   <li>glsl: Slightly change the semantic of _LinkedShaders</li>
255   <li>linker: Improve handling of unread/unwritten shader inputs/outputs</li>
256   <li>glsl: Commit lexer files changed by previous cherry picking</li>
257   <li>mesa: Make metaops use program refcounts instead of names.</li>
258   <li>glsl: Fix incorrect gl_type of sampler2DArray and sampler1DArrayShadow</li>
259   <li>mesa: Allow query of MAX_SAMPLES with EXT_framebuffer_multisample</li>
260   <li>glsl: better handling of linker failures</li>
261   <li>mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.</li>
262   <li>i915: Disallow alpha, red, RG, and sRGB as render targets</li>
263   <li>glsl/linker: Free any IR discarded by optimization passes.</li>
264   <li>glsl: Add an optimization pass to simplify discards.</li>
265   <li>glsl: Add a lowering pass to move discards out of if-statements.</li>
266   <li>i915: Correctly generate unconditional KIL instructions</li>
267   <li>glsl: Add unary ir_expression constructor</li>
268   <li>glsl: Ensure that equality comparisons don't return a NULL IR tree</li>
269   <li>glcpp: Commit changes in generated files cause by previous commit</li>
270   <li>glsl: Inherrit type of declared variable from initializer</li>
271   <li>glsl: Inherrit type of declared variable from initializer after processing assignment</li>
272   <li>linker: Ensure that unsized arrays have a size after linking</li>
273   <li>linker: Fix regressions caused by previous commit</li>
274   <li>linker: Allow built-in arrays to have different sizes between shader stages</li>
275   <li>ir_to_mesa: Don't generate swizzles for record derefs of non-scalar/vectors</li>
276   <li>Refresh autogenerated file builtin_function.cpp.</li>
277   <li>docs: Initial set of release notes for 7.9.1</li>
278   <li>mesa: set version string to 7.9.1</li>
279 </ul></p>
280
281 <p>Julien Cristau (1):
282 <ul>
283   <li>Makefile: don't include the same files twice in the tarball</li>
284 </ul></p>
285
286 <p>Kenneth Graunke (19):
287 <ul>
288   <li>glcpp: Return NEWLINE token for newlines inside multi-line comments.</li>
289   <li>generate_builtins.py: Output large strings as arrays of characters.</li>
290   <li>glsl: Fix constant component count in vector constructor emitting.</li>
291   <li>ir_dead_functions: Actually free dead functions and signatures.</li>
292   <li>glcpp: Define GL_FRAGMENT_PRECISION_HIGH if GLSL version &gt;= 1.30.</li>
293   <li>glsl: Unconditionally define GL_FRAGMENT_PRECISION_HIGH in ES2 shaders.</li>
294   <li>glsl: Fix constant expression handling for &lt, &gt;, &lt=, &gt;= on vectors.</li>
295   <li>glsl: Use do_common_optimization in the standalone compiler.</li>
296   <li>glsl: Don't inline function prototypes.</li>
297   <li>glsl: Add a virtual as_discard() method.</li>
298   <li>glsl: Remove "discard" support from lower_jumps.</li>
299   <li>glsl: Refactor get_num_operands.</li>
300   <li>glcpp: Don't emit SPACE tokens in conditional_tokens production.</li>
301   <li>glsl: Clean up code by adding a new is_break() function.</li>
302   <li>glsl: Consider the "else" branch when looking for loop breaks.</li>
303   <li>Remove OES_compressed_paletted_texture from the ES2 extension list.</li>
304   <li>glsl/builtins: Compute the correct value for smoothstep(vec, vec, vec).</li>
305   <li>Fix build on systems where "python" is python 3.</li>
306   <li>i965: Internally enable GL_NV_blend_square on ES2.</li>
307 </ul></p>
308
309 <p>Kristian Høgsberg (1):
310 <ul>
311   <li>i965: Don't write mrf assignment for pointsize output</li>
312 </ul></p>
313
314 <p>Luca Barbieri (1):
315 <ul>
316   <li>glsl: Unroll loops with conditional breaks anywhere (not just the end)</li>
317 </ul></p>
318
319 <p>Marek Olšák (17):
320 <ul>
321   <li>r300g: fix microtiling for 16-bits-per-channel formats</li>
322   <li>r300g: fix texture border for 16-bits-per-channel formats</li>
323   <li>r300g: add a default channel ordering of texture border for unhandled formats</li>
324   <li>r300g: fix texture border color for all texture formats</li>
325   <li>r300g: fix rendering with no vertex elements</li>
326   <li>r300/compiler: fix rc_rewrite_depth_out for it to work with any instruction</li>
327   <li>r300g: fix texture border color once again</li>
328   <li>r300g: fix texture swizzling with compressed textures on r400-r500</li>
329   <li>r300g: disable ARB_texture_swizzle if S3TC is enabled on r3xx-only</li>
330   <li>mesa, st/mesa: fix gl_FragCoord with FBOs in Gallium</li>
331   <li>st/mesa: initialize key in st_vp_varient</li>
332   <li>r300/compiler: fix swizzle lowering with a presubtract source operand</li>
333   <li>r300g: fix rendering with a vertex attrib having a zero stride</li>
334   <li>ir_to_mesa: Add support for conditional discards.</li>
335   <li>r300g: finally fix the texture corruption on r3xx-r4xx</li>
336   <li>mesa: fix texel store functions for some float formats</li>
337   <li>r300/compiler: disable the rename_regs pass for loops</li>
338 </ul></p>
339
340 <p>Mario Kleiner (1):
341 <ul>
342   <li>mesa/r300classic: Fix dri2Invalidate/radeon_prepare_render for page flipping.</li>
343 </ul></p>
344
345 <p>Peter Clifton (1):
346 <ul>
347   <li>intel: Fix emit_linear_blit to use DWORD aligned width blits</li>
348 </ul></p>
349
350 <p>Robert Hooker (2):
351 <ul>
352   <li>intel: Add a new B43 pci id.</li>
353   <li>egl_dri2: Add missing intel chip ids.</li>
354 </ul></p>
355
356 <p>Roland Scheidegger (1):
357 <ul>
358   <li>r200: fix r200 large points</li>
359 </ul></p>
360
361 <p>Thomas Hellstrom (17):
362 <ul>
363   <li>st/xorg: Don't try to use option values before processing options</li>
364   <li>xorg/vmwgfx: Make vmwarectrl work also on 64-bit servers</li>
365   <li>st/xorg: Add a customizer option to get rid of annoying cursor update flicker</li>
366   <li>xorg/vmwgfx: Don't hide HW cursors when updating them</li>
367   <li>st/xorg: Don't try to remove invalid fbs</li>
368   <li>st/xorg: Fix typo</li>
369   <li>st/xorg, xorg/vmwgfx: Be a bit more frendly towards cross-compiling environments</li>
370   <li>st/xorg: Fix compilation errors for Xservers compiled without Composite</li>
371   <li>st/xorg: Don't use deprecated x*alloc / xfree functions</li>
372   <li>xorg/vmwgfx: Don't use deprecated x*alloc / xfree functions</li>
373   <li>st/xorg: Fix compilation for Xservers &gt;= 1.10</li>
374   <li>mesa: Make sure we have the talloc cflags when using the talloc headers</li>
375   <li>egl: Add an include for size_t</li>
376   <li>mesa: Add talloc includes for gles</li>
377   <li>st/egl: Fix build for include files in nonstandard places</li>
378   <li>svga/drm: Optionally resolve calls to powf during link-time</li>
379   <li>gallium/targets: Trivial crosscompiling fix</li>
380 </ul></p>
381
382 <p>Tom Stellard (7):
383 <ul>
384   <li>r300/compiler: Make sure presubtract sources use supported swizzles</li>
385   <li>r300/compiler: Fix register allocator's handling of loops</li>
386   <li>r300/compiler: Fix instruction scheduling within IF blocks</li>
387   <li>r300/compiler: Use zero as the register index for unused sources</li>
388   <li>r300/compiler: Ignore alpha dest register when replicating the result</li>
389   <li>r300/compiler: Use correct swizzles for all presubtract sources</li>
390   <li>r300/compiler: Don't allow presubtract sources to be remapped twice</li>
391 </ul></p>
392
393 <p>Vinson Lee (1):
394 <ul>
395   <li>glsl: Fix 'control reaches end of non-void function' warning.</li>
396 </ul></p>
397
398 <p>richard (1):
399 <ul>
400   <li>r600c : inline vertex format is not updated in an app, switch to use vfetch constants. For the 7.9 and 7.10 branches as well.</li>
401 </ul></p>
402
403 </body>
404 </html>