From fbe681216618af573ce29ca03b382b39b5919a52 Mon Sep 17 00:00:00 2001 From: marha Date: Sun, 21 Apr 2013 19:17:28 +0200 Subject: dos2unix --- fastforwardotherbranch.sh | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) mode change 100644 => 100755 fastforwardotherbranch.sh diff --git a/fastforwardotherbranch.sh b/fastforwardotherbranch.sh old mode 100644 new mode 100755 index 4b6d1e9a4..f710b052c --- a/fastforwardotherbranch.sh +++ b/fastforwardotherbranch.sh @@ -1,23 +1,23 @@ -#!/bin/sh - -BRANCH=master -NEWER=origin/master - -if [ $(git symbolic-ref HEAD) = "refs/heads/$BRANCH" ] -then - echo "This doesn't make sense if you're already on the branch '$BRANCH'" - echo "Just run: git merge $NEWER" - exit 1 -fi - -BRANCH_HASH=$(git rev-parse $BRANCH) -NEWER_HASH=$(git rev-parse $NEWER) -MERGE_BASE=$(git merge-base $BRANCH_HASH $NEWER_HASH) - -if [ "$MERGE_BASE" = "$BRANCH_HASH" ] -then - git update-ref "refs/heads/$BRANCH" "$NEWER_HASH" "$BRANCH_HASH" -else - echo "$BRANCH can't be fast-forwarded to $NEWER" - exit 1 -fi +#!/bin/sh + +BRANCH=master +NEWER=origin/master + +if [ $(git symbolic-ref HEAD) = "refs/heads/$BRANCH" ] +then + echo "This doesn't make sense if you're already on the branch '$BRANCH'" + echo "Just run: git merge $NEWER" + exit 1 +fi + +BRANCH_HASH=$(git rev-parse $BRANCH) +NEWER_HASH=$(git rev-parse $NEWER) +MERGE_BASE=$(git merge-base $BRANCH_HASH $NEWER_HASH) + +if [ "$MERGE_BASE" = "$BRANCH_HASH" ] +then + git update-ref "refs/heads/$BRANCH" "$NEWER_HASH" "$BRANCH_HASH" +else + echo "$BRANCH can't be fast-forwarded to $NEWER" + exit 1 +fi -- cgit v1.2.3 From 150771e7aabf4c864b0b970c5b8d773634793abe Mon Sep 17 00:00:00 2001 From: marha Date: Tue, 4 Jun 2013 09:07:26 +0200 Subject: xwininfo fontconfig libX11 libXau libXdmcp libXext mesa libXinerama libxcb libxcb/xcb-proto libfontenc pixman xkbcomp mkfontscale xkeyboard-config git update 4 Jun 2013 xserver commit c21344add2fc589df83b29be5831c36a372201bd libxcb commit 9ae84ad187e2ba440c40f44b8eb21c82c2fdbf12 libxcb/xcb-proto commit bdfedfa57a13ff805580cfacafc70f9cc55df363 xkeyboard-config commit dad9ade4e83d1ef5a517fcc4cc9ad3a79b47acce libX11 commit 8496122eb00ce6cd5d2308ee54f64b68c378e455 libXdmcp commit 0b443c1b769b9c9a3b45b4252afe07e18b709ff4 libXext commit d8366afbb0d2e4fbb1e419b1187f490522270bea libfontenc commit 3acba630d8b57084f7e92c15732408711ed5137a libXinerama commit 6e1d1dc328ba8162bba2f4694e7f3c706a1491ff libXau commit 899790011304c4029e15abf410e49ce7cec17e0a xkbcomp commit ed582f4fccd4e23abcfba8b3b03649fea6414f44 pixman commit 2acfac5f8e097ee2ae225d986f981b55d65dd152 mkfontscale commit 19e2cb7c6a3ec2c5b1bc0d24866fa685eef0ee13 xwininfo commit ba0d1b0da21d2dbdd81098ed5778f3792b472e13 fontconfig commit cd9b1033a68816a7acfbba1718ba0aa5888f6ec7 mesa commit 7bafd88c153e395274b632e7eae4bc9fc3aec1d2 --- apps/xwininfo/configure.ac | 2 +- fontconfig/README | 21 +- fontconfig/conf.d/Makefile.am | 11 +- fontconfig/conf.d/README | 23 - fontconfig/conf.d/README.in | 23 + fontconfig/configure.ac | 2 +- fontconfig/doc/fontconfig-devel.sgml | 3 + fontconfig/fontconfig/fontconfig.h | 2 +- fontconfig/src/fcatomic.h | 14 +- fontconfig/src/fccfg.c | 46 +- fontconfig/src/fcfreetype.c | 45 +- fontconfig/src/fchash.c | 57 +- fontconfig/src/fcint.h | 9 + fontconfig/src/fcmatch.c | 32 +- fontconfig/src/fcname.c | 6 + fontconfig/src/fcobjs.h | 2 +- fontconfig/src/fcstr.c | 44 + libX11/README | 5 +- libX11/configure.ac | 2 +- libX11/include/X11/Xlibint.h | 18 +- libX11/man/XCreateGC.man | 3 +- libX11/modules/im/ximcp/Makefile.am | 1 + libX11/modules/im/ximcp/imLcPrs.c | 68 +- libX11/modules/im/ximcp/imTrX.c | 2 +- libX11/nls/en_US.UTF-8/Compose.pre | 2 + libX11/src/AllCells.c | 9 +- libX11/src/Cmap.h | 2 + libX11/src/Context.c | 8 +- libX11/src/Cr.h | 2 + libX11/src/CrGC.c | 2 +- libX11/src/Depths.c | 2 +- libX11/src/FSWrap.c | 6 +- libX11/src/Font.c | 90 +- libX11/src/FontInfo.c | 111 +- libX11/src/FontNames.c | 35 +- libX11/src/GetAtomNm.c | 12 +- libX11/src/GetDflt.c | 25 +- libX11/src/GetFPath.c | 36 +- libX11/src/GetHints.c | 9 +- libX11/src/GetImage.c | 12 +- libX11/src/GetMoEv.c | 26 +- libX11/src/GetPntMap.c | 31 +- libX11/src/GetProp.c | 33 +- libX11/src/GetRGBCMap.c | 3 +- libX11/src/ImUtil.c | 6 +- libX11/src/InitExt.c | 4 +- libX11/src/IntAtom.c | 6 +- libX11/src/Key.h | 3 + libX11/src/KeyBind.c | 8 +- libX11/src/LiHosts.c | 22 +- libX11/src/LiICmaps.c | 8 +- libX11/src/LiProps.c | 8 +- libX11/src/ListExt.c | 36 +- libX11/src/Makefile.am | 1 + libX11/src/ModMap.c | 17 +- libX11/src/OpenDis.c | 23 +- libX11/src/PixFormats.c | 4 +- libX11/src/PolyReg.c | 13 +- libX11/src/PropAlloc.c | 9 +- libX11/src/PutBEvent.c | 2 +- libX11/src/PutImage.c | 13 +- libX11/src/QuColors.c | 10 +- libX11/src/QuTree.c | 8 +- libX11/src/Quarks.c | 9 +- libX11/src/RdBitF.c | 2 +- libX11/src/Region.c | 19 +- libX11/src/RegstFlt.c | 4 +- libX11/src/SetFPath.c | 2 +- libX11/src/SetHints.c | 6 +- libX11/src/StrToText.c | 2 +- libX11/src/TextToStr.c | 4 +- libX11/src/VisUtil.c | 8 +- libX11/src/WrBitF.c | 2 +- libX11/src/Xintatom.h | 1 + libX11/src/Xintconn.h | 1 + libX11/src/XlibInt.c | 20 +- libX11/src/Xprivate.h | 2 + libX11/src/Xresinternal.h | 2 + libX11/src/Xrm.c | 50 +- libX11/src/locking.c | 8 +- libX11/src/locking.h | 2 + libX11/src/pathmax.h | 81 + libX11/src/udcInf.c | 9 +- libX11/src/xcb_io.c | 17 + libX11/src/xcms/cmsColNm.c | 27 +- libX11/src/xcms/cmsMath.c | 4 + libX11/src/xkb/XKBExtDev.c | 6 + libX11/src/xkb/XKBGeom.c | 15 +- libX11/src/xkb/XKBGetMap.c | 33 +- libX11/src/xkb/XKBNames.c | 2 + libX11/src/xlibi18n/lcFile.c | 24 +- libXau/configure.ac | 2 +- libXdmcp/Array.c | 24 +- libXext/COPYING | 3 +- libXext/configure.ac | 8 +- libXext/src/Makefile.am | 1 + libXext/src/XEVI.c | 29 +- libXext/src/XMultibuf.c | 3 +- libXext/src/XSecurity.c | 3 +- libXext/src/XShape.c | 27 +- libXext/src/XSync.c | 35 +- libXext/src/Xcup.c | 49 +- libXext/src/Xdbe.c | 27 +- libXext/src/eat.h | 40 + libXinerama/configure.ac | 8 +- libXinerama/src/Xinerama.c | 61 +- libfontenc/configure.ac | 2 +- libxcb/src/c_client.py | 18 +- libxcb/src/xcb_in.c | 13 +- libxcb/src/xcb_out.c | 40 +- libxcb/src/xcbext.h | 1 + libxcb/src/xcbint.h | 7 +- libxcb/xcb-proto/doc/xml-xcb.txt | 13 +- libxcb/xcb-proto/src/res.xml | 70 +- libxcb/xcb-proto/src/screensaver.xml | 13 +- libxcb/xcb-proto/src/xcb.xsd | 2 +- libxcb/xcb-proto/src/xkb.xml | 447 +- libxcb/xcb-proto/xcbgen/xtypes.py | 18 +- mesalib/Android.mk | 4 +- mesalib/bin/bugzilla_mesa.sh | 52 + mesalib/bin/get-pick-list.sh | 6 + mesalib/bin/perf-annotate-jit | 251 + mesalib/bin/shortlog_mesa.sh | 6 + mesalib/configure.ac | 287 +- mesalib/docs/GL3.txt | 18 +- mesalib/docs/MESA_agp_offset.spec | 95 - mesalib/docs/MESA_copy_sub_buffer.spec | 96 - mesalib/docs/MESA_drm_image.spec | 153 - mesalib/docs/MESA_multithread_makecurrent.spec | 158 - mesalib/docs/MESA_pack_invert.spec | 138 - mesalib/docs/MESA_pixmap_colormap.spec | 90 - mesalib/docs/MESA_release_buffers.spec | 85 - mesalib/docs/MESA_resize_buffers.spec | 81 - mesalib/docs/MESA_set_3dfx_mode.spec | 85 - mesalib/docs/MESA_shader_debug.spec | 264 -- mesalib/docs/MESA_swap_control.spec | 129 - mesalib/docs/MESA_swap_frame_usage.spec | 201 - mesalib/docs/MESA_texture_array.spec | 804 ---- mesalib/docs/MESA_texture_signed_rgba.spec | 214 - mesalib/docs/MESA_window_pos.spec | 126 - mesalib/docs/MESA_ycbcr_texture.spec | 204 - mesalib/docs/README.UVD | 13 + mesalib/docs/RELNOTES-3.1 | 145 - mesalib/docs/RELNOTES-3.2 | 11 - mesalib/docs/RELNOTES-3.2.1 | 31 - mesalib/docs/RELNOTES-3.3 | 270 -- mesalib/docs/RELNOTES-3.4 | 21 - mesalib/docs/RELNOTES-3.4.1 | 21 - mesalib/docs/RELNOTES-3.4.2 | 21 - mesalib/docs/RELNOTES-3.5 | 227 - mesalib/docs/RELNOTES-4.0 | 162 - mesalib/docs/RELNOTES-4.0.1 | 21 - mesalib/docs/RELNOTES-4.0.2 | 49 - mesalib/docs/RELNOTES-4.0.3 | 51 - mesalib/docs/RELNOTES-4.1 | 307 -- mesalib/docs/RELNOTES-5.0 | 84 - mesalib/docs/RELNOTES-5.0.1 | 45 - mesalib/docs/RELNOTES-5.0.2 | 45 - mesalib/docs/RELNOTES-5.1 | 279 -- mesalib/docs/RELNOTES-6.0 | 86 - mesalib/docs/RELNOTES-6.0.1 | 49 - mesalib/docs/RELNOTES-6.1 | 111 - mesalib/docs/RELNOTES-6.2 | 51 - mesalib/docs/RELNOTES-6.2.1 | 49 - mesalib/docs/RELNOTES-6.3 | 114 - mesalib/docs/RELNOTES-6.3.1 | 48 - mesalib/docs/RELNOTES-6.3.2 | 36 - mesalib/docs/RELNOTES-6.4 | 49 - mesalib/docs/WL_bind_wayland_display.spec | 175 - mesalib/docs/devinfo.html | 12 +- mesalib/docs/enums.txt | 57 - mesalib/docs/envvars.html | 5 + mesalib/docs/extensions.html | 34 +- mesalib/docs/index.html | 118 +- mesalib/docs/license.html | 7 +- mesalib/docs/llvmpipe.html | 40 +- mesalib/docs/relnotes-6.4.1.html | 75 - mesalib/docs/relnotes-6.4.2.html | 82 - mesalib/docs/relnotes-6.4.html | 97 - mesalib/docs/relnotes-6.5.1.html | 146 - mesalib/docs/relnotes-6.5.2.html | 133 - mesalib/docs/relnotes-6.5.3.html | 126 - mesalib/docs/relnotes-6.5.html | 138 - mesalib/docs/relnotes-7.0.1.html | 108 - mesalib/docs/relnotes-7.0.2.html | 95 - mesalib/docs/relnotes-7.0.3.html | 91 - mesalib/docs/relnotes-7.0.4.html | 87 - mesalib/docs/relnotes-7.0.html | 100 - mesalib/docs/relnotes-7.1.html | 101 - mesalib/docs/relnotes-7.10.1.html | 383 -- mesalib/docs/relnotes-7.10.2.html | 211 - mesalib/docs/relnotes-7.10.3.html | 308 -- mesalib/docs/relnotes-7.10.html | 2798 ------------ mesalib/docs/relnotes-7.11.1.html | 396 -- mesalib/docs/relnotes-7.11.2.html | 90 - mesalib/docs/relnotes-7.11.html | 353 -- mesalib/docs/relnotes-7.2.html | 111 - mesalib/docs/relnotes-7.3.html | 100 - mesalib/docs/relnotes-7.4.1.html | 86 - mesalib/docs/relnotes-7.4.2.html | 81 - mesalib/docs/relnotes-7.4.3.html | 86 - mesalib/docs/relnotes-7.4.4.html | 75 - mesalib/docs/relnotes-7.4.html | 96 - mesalib/docs/relnotes-7.5.1.html | 77 - mesalib/docs/relnotes-7.5.2.html | 73 - mesalib/docs/relnotes-7.5.html | 108 - mesalib/docs/relnotes-7.6.1.html | 86 - mesalib/docs/relnotes-7.6.html | 91 - mesalib/docs/relnotes-7.7.1.html | 66 - mesalib/docs/relnotes-7.7.html | 77 - mesalib/docs/relnotes-7.8.1.html | 70 - mesalib/docs/relnotes-7.8.2.html | 152 - mesalib/docs/relnotes-7.8.3.html | 95 - mesalib/docs/relnotes-7.8.html | 77 - mesalib/docs/relnotes-7.9.1.html | 411 -- mesalib/docs/relnotes-7.9.2.html | 340 -- mesalib/docs/relnotes-7.9.html | 144 - mesalib/docs/relnotes-8.0.1.html | 158 - mesalib/docs/relnotes-8.0.2.html | 164 - mesalib/docs/relnotes-8.0.3.html | 324 -- mesalib/docs/relnotes-8.0.4.html | 209 - mesalib/docs/relnotes-8.0.5.html | 264 -- mesalib/docs/relnotes-8.0.html | 87 - mesalib/docs/relnotes-9.0.1.html | 167 - mesalib/docs/relnotes-9.0.2.html | 290 -- mesalib/docs/relnotes-9.0.3.html | 247 - mesalib/docs/relnotes-9.0.html | 99 - mesalib/docs/relnotes-9.1.1.html | 235 - mesalib/docs/relnotes-9.1.html | 83 - mesalib/docs/relnotes.html | 156 +- mesalib/docs/relnotes/3.1 | 145 + mesalib/docs/relnotes/3.2 | 11 + mesalib/docs/relnotes/3.2.1 | 31 + mesalib/docs/relnotes/3.3 | 270 ++ mesalib/docs/relnotes/3.4 | 21 + mesalib/docs/relnotes/3.4.1 | 21 + mesalib/docs/relnotes/3.4.2 | 21 + mesalib/docs/relnotes/3.5 | 227 + mesalib/docs/relnotes/4.0 | 162 + mesalib/docs/relnotes/4.0.1 | 21 + mesalib/docs/relnotes/4.0.2 | 49 + mesalib/docs/relnotes/4.0.3 | 51 + mesalib/docs/relnotes/4.1 | 307 ++ mesalib/docs/relnotes/5.0 | 84 + mesalib/docs/relnotes/5.0.1 | 45 + mesalib/docs/relnotes/5.0.2 | 45 + mesalib/docs/relnotes/5.1 | 279 ++ mesalib/docs/relnotes/6.0 | 86 + mesalib/docs/relnotes/6.0.1 | 49 + mesalib/docs/relnotes/6.1 | 111 + mesalib/docs/relnotes/6.2 | 51 + mesalib/docs/relnotes/6.2.1 | 49 + mesalib/docs/relnotes/6.3 | 114 + mesalib/docs/relnotes/6.3.1 | 48 + mesalib/docs/relnotes/6.3.2 | 36 + mesalib/docs/relnotes/6.4 | 49 + mesalib/docs/relnotes/6.4.1.html | 75 + mesalib/docs/relnotes/6.4.2.html | 82 + mesalib/docs/relnotes/6.4.html | 97 + mesalib/docs/relnotes/6.5.1.html | 146 + mesalib/docs/relnotes/6.5.2.html | 133 + mesalib/docs/relnotes/6.5.3.html | 126 + mesalib/docs/relnotes/6.5.html | 138 + mesalib/docs/relnotes/7.0.1.html | 108 + mesalib/docs/relnotes/7.0.2.html | 95 + mesalib/docs/relnotes/7.0.3.html | 91 + mesalib/docs/relnotes/7.0.4.html | 87 + mesalib/docs/relnotes/7.0.html | 100 + mesalib/docs/relnotes/7.1.html | 101 + mesalib/docs/relnotes/7.10.1.html | 383 ++ mesalib/docs/relnotes/7.10.2.html | 211 + mesalib/docs/relnotes/7.10.3.html | 308 ++ mesalib/docs/relnotes/7.10.html | 2798 ++++++++++++ mesalib/docs/relnotes/7.11.1.html | 396 ++ mesalib/docs/relnotes/7.11.2.html | 90 + mesalib/docs/relnotes/7.11.html | 353 ++ mesalib/docs/relnotes/7.2.html | 111 + mesalib/docs/relnotes/7.3.html | 100 + mesalib/docs/relnotes/7.4.1.html | 86 + mesalib/docs/relnotes/7.4.2.html | 81 + mesalib/docs/relnotes/7.4.3.html | 86 + mesalib/docs/relnotes/7.4.4.html | 75 + mesalib/docs/relnotes/7.4.html | 96 + mesalib/docs/relnotes/7.5.1.html | 77 + mesalib/docs/relnotes/7.5.2.html | 73 + mesalib/docs/relnotes/7.5.html | 108 + mesalib/docs/relnotes/7.6.1.html | 86 + mesalib/docs/relnotes/7.6.html | 91 + mesalib/docs/relnotes/7.7.1.html | 66 + mesalib/docs/relnotes/7.7.html | 77 + mesalib/docs/relnotes/7.8.1.html | 70 + mesalib/docs/relnotes/7.8.2.html | 152 + mesalib/docs/relnotes/7.8.3.html | 95 + mesalib/docs/relnotes/7.8.html | 77 + mesalib/docs/relnotes/7.9.1.html | 411 ++ mesalib/docs/relnotes/7.9.2.html | 340 ++ mesalib/docs/relnotes/7.9.html | 144 + mesalib/docs/relnotes/8.0.1.html | 158 + mesalib/docs/relnotes/8.0.2.html | 164 + mesalib/docs/relnotes/8.0.3.html | 324 ++ mesalib/docs/relnotes/8.0.4.html | 209 + mesalib/docs/relnotes/8.0.5.html | 264 ++ mesalib/docs/relnotes/8.0.html | 87 + mesalib/docs/relnotes/9.0.1.html | 167 + mesalib/docs/relnotes/9.0.2.html | 290 ++ mesalib/docs/relnotes/9.0.3.html | 247 + mesalib/docs/relnotes/9.0.html | 99 + mesalib/docs/relnotes/9.1.1.html | 235 + mesalib/docs/relnotes/9.1.2.html | 237 + mesalib/docs/relnotes/9.1.3.html | 230 + mesalib/docs/relnotes/9.1.html | 83 + mesalib/docs/relnotes/9.2.html | 70 + mesalib/docs/specs/MESA_agp_offset.spec | 95 + mesalib/docs/specs/MESA_copy_sub_buffer.spec | 96 + mesalib/docs/specs/MESA_drm_image.spec | 153 + .../docs/specs/MESA_multithread_makecurrent.spec | 158 + mesalib/docs/specs/MESA_pack_invert.spec | 138 + mesalib/docs/specs/MESA_pixmap_colormap.spec | 90 + mesalib/docs/specs/MESA_release_buffers.spec | 85 + mesalib/docs/specs/MESA_resize_buffers.spec | 81 + mesalib/docs/specs/MESA_set_3dfx_mode.spec | 85 + mesalib/docs/specs/MESA_shader_debug.spec | 264 ++ mesalib/docs/specs/MESA_swap_control.spec | 129 + mesalib/docs/specs/MESA_swap_frame_usage.spec | 201 + mesalib/docs/specs/MESA_texture_array.spec | 804 ++++ mesalib/docs/specs/MESA_texture_signed_rgba.spec | 214 + mesalib/docs/specs/MESA_window_pos.spec | 126 + mesalib/docs/specs/MESA_ycbcr_texture.spec | 204 + mesalib/docs/specs/WL_bind_wayland_display.spec | 175 + mesalib/docs/specs/enums.txt | 57 + mesalib/docs/versions.html | 4 +- mesalib/docs/viewperf.html | 30 + mesalib/docs/xlibdriver.html | 6 +- mesalib/include/EGL/eglext.h | 45 +- mesalib/include/GL/gl.h | 7 +- mesalib/include/GL/glx.h | 7 +- mesalib/include/GL/glx_mangle.h | 7 +- mesalib/include/GL/osmesa.h | 7 +- mesalib/scons/crossmingw.py | 42 - mesalib/scons/gallium.py | 25 +- mesalib/src/Makefile.am | 55 +- mesalib/src/gallium/Android.mk | 5 + mesalib/src/gallium/Makefile.am | 22 - mesalib/src/gallium/SConscript | 49 +- mesalib/src/gallium/auxiliary/Makefile.sources | 1 + mesalib/src/gallium/auxiliary/SConscript | 4 - mesalib/src/gallium/auxiliary/hud/hud_context.c | 67 +- mesalib/src/gallium/auxiliary/hud/hud_fps.c | 3 +- mesalib/src/gallium/auxiliary/util/u_blit.c | 3 +- mesalib/src/gallium/auxiliary/util/u_blitter.c | 98 +- mesalib/src/gallium/auxiliary/util/u_blitter.h | 18 +- .../src/gallium/auxiliary/util/u_debug_symbol.c | 6 +- mesalib/src/gallium/auxiliary/util/u_dump_state.c | 3 +- mesalib/src/gallium/auxiliary/util/u_format.c | 34 + mesalib/src/gallium/auxiliary/util/u_format.h | 12 + mesalib/src/gallium/auxiliary/util/u_format_latc.c | 7 +- mesalib/src/gallium/auxiliary/util/u_format_rgtc.c | 7 +- mesalib/src/gallium/auxiliary/util/u_format_s3tc.c | 7 +- mesalib/src/gallium/auxiliary/util/u_gen_mipmap.c | 3 +- mesalib/src/gallium/auxiliary/util/u_inlines.h | 3 +- mesalib/src/gallium/auxiliary/util/u_prim.h | 227 +- mesalib/src/gallium/auxiliary/util/u_simple_list.h | 7 +- mesalib/src/gallium/auxiliary/util/u_sse.h | 7 +- mesalib/src/glsl/Makefile.am | 3 +- mesalib/src/glsl/Makefile.sources | 5 + mesalib/src/glsl/ast.h | 14 +- mesalib/src/glsl/ast_array_index.cpp | 190 + mesalib/src/glsl/ast_function.cpp | 149 +- mesalib/src/glsl/ast_to_hir.cpp | 274 +- mesalib/src/glsl/builtin_variables.cpp | 33 +- mesalib/src/glsl/glcpp/glcpp-parse.y | 6 + mesalib/src/glsl/glcpp/pp.c | 4 +- mesalib/src/glsl/glsl_parser.yy | 188 +- mesalib/src/glsl/glsl_parser_extras.cpp | 15 +- mesalib/src/glsl/glsl_parser_extras.h | 4 + mesalib/src/glsl/glsl_symbol_table.cpp | 84 +- mesalib/src/glsl/glsl_symbol_table.h | 4 + mesalib/src/glsl/glsl_types.cpp | 4 + mesalib/src/glsl/glsl_types.h | 3 +- mesalib/src/glsl/ir.cpp | 16 +- mesalib/src/glsl/ir.h | 68 +- mesalib/src/glsl/ir_basic_block.cpp | 2 +- mesalib/src/glsl/ir_constant_expression.cpp | 185 +- mesalib/src/glsl/ir_optimization.h | 7 +- mesalib/src/glsl/ir_print_visitor.cpp | 5 +- mesalib/src/glsl/ir_reader.cpp | 10 +- mesalib/src/glsl/ir_uniform.h | 27 +- mesalib/src/glsl/ir_validate.cpp | 82 + mesalib/src/glsl/link_interface_blocks.cpp | 110 + mesalib/src/glsl/link_uniform_initializers.cpp | 25 +- mesalib/src/glsl/link_uniforms.cpp | 126 +- mesalib/src/glsl/link_varyings.cpp | 69 +- mesalib/src/glsl/linker.cpp | 28 +- mesalib/src/glsl/linker.h | 8 + mesalib/src/glsl/lower_clip_distance.cpp | 124 +- mesalib/src/glsl/lower_instructions.cpp | 39 + mesalib/src/glsl/lower_named_interface_blocks.cpp | 238 + mesalib/src/glsl/lower_packed_varyings.cpp | 8 + .../src/glsl/lower_vec_index_to_cond_assign.cpp | 149 +- mesalib/src/glsl/lower_vec_index_to_swizzle.cpp | 37 +- mesalib/src/glsl/lower_vector_insert.cpp | 139 + mesalib/src/glsl/main.cpp | 4 +- mesalib/src/glsl/opt_algebraic.cpp | 6 +- mesalib/src/glsl/opt_flip_matrices.cpp | 122 + mesalib/src/glsl/opt_if_simplification.cpp | 27 +- mesalib/src/glsl/program.h | 7 +- mesalib/src/glsl/ralloc.c | 8 +- mesalib/src/glsl/standalone_scaffolding.cpp | 17 +- mesalib/src/glsl/standalone_scaffolding.h | 17 + mesalib/src/glsl/test_optpass.cpp | 14 +- mesalib/src/mapi/Android.mk | 16 +- mesalib/src/mapi/Makefile.am | 42 + mesalib/src/mapi/Makefile.sources | 36 + mesalib/src/mapi/entry.c | 98 + mesalib/src/mapi/entry.h | 48 + mesalib/src/mapi/entry_x86-64_tls.h | 113 + mesalib/src/mapi/entry_x86_tls.h | 133 + mesalib/src/mapi/entry_x86_tsd.h | 104 + mesalib/src/mapi/glapi/Makefile.am | 4 +- mesalib/src/mapi/glapi/Makefile.sources | 19 + mesalib/src/mapi/glapi/SConscript | 10 +- mesalib/src/mapi/glapi/gen/GL3x.xml | 18 +- mesalib/src/mapi/glapi/gen/Makefile.am | 2 +- mesalib/src/mapi/glapi/gen/es_EXT.xml | 23 +- mesalib/src/mapi/glapi/gen/gl_API.xml | 72 +- mesalib/src/mapi/glapi/gen/gl_XML.py | 2 + mesalib/src/mapi/glapi/gen/gl_enums.py | 8 +- mesalib/src/mapi/glapi/gen/gl_genexec.py | 4 +- mesalib/src/mapi/glapi/gen/gl_table.py | 21 - mesalib/src/mapi/glapi/gen/gl_x86-64_asm.py | 13 - mesalib/src/mapi/glapi/gen/gl_x86_asm.py | 13 - mesalib/src/mapi/glapi/gen/glapi_gen.mk | 2 +- mesalib/src/mapi/glapi/gen/mesadef.py | 7 +- mesalib/src/mapi/glapi/glapi.c | 2 +- mesalib/src/mapi/glapi/glapi.h | 7 +- mesalib/src/mapi/glapi/glapi_dispatch.c | 7 +- mesalib/src/mapi/glapi/glapi_entrypoint.c | 9 +- mesalib/src/mapi/glapi/glapi_getproc.c | 7 +- mesalib/src/mapi/glapi/glapi_nop.c | 7 +- mesalib/src/mapi/glapi/glapi_priv.h | 7 +- mesalib/src/mapi/glapi/glthread.h | 2 +- mesalib/src/mapi/glapi/sources.mak | 19 - mesalib/src/mapi/mapi.c | 191 + mesalib/src/mapi/mapi.h | 66 + mesalib/src/mapi/mapi/entry.c | 98 - mesalib/src/mapi/mapi/entry.h | 48 - mesalib/src/mapi/mapi/entry_x86-64_tls.h | 126 - mesalib/src/mapi/mapi/entry_x86_tls.h | 146 - mesalib/src/mapi/mapi/entry_x86_tsd.h | 104 - mesalib/src/mapi/mapi/mapi.c | 191 - mesalib/src/mapi/mapi/mapi.h | 66 - mesalib/src/mapi/mapi/mapi_abi.py | 873 ---- mesalib/src/mapi/mapi/mapi_glapi.c | 240 - mesalib/src/mapi/mapi/mapi_tmp.h | 48 - mesalib/src/mapi/mapi/sources.mak | 36 - mesalib/src/mapi/mapi/stub.c | 229 - mesalib/src/mapi/mapi/stub.h | 60 - mesalib/src/mapi/mapi/table.c | 56 - mesalib/src/mapi/mapi/table.h | 72 - mesalib/src/mapi/mapi/u_compiler.h | 33 - mesalib/src/mapi/mapi/u_current.c | 266 -- mesalib/src/mapi/mapi/u_current.h | 87 - mesalib/src/mapi/mapi/u_execmem.c | 145 - mesalib/src/mapi/mapi/u_execmem.h | 7 - mesalib/src/mapi/mapi/u_macros.h | 12 - mesalib/src/mapi/mapi/u_thread.h | 287 -- mesalib/src/mapi/mapi_abi.py | 873 ++++ mesalib/src/mapi/mapi_glapi.c | 240 + mesalib/src/mapi/mapi_tmp.h | 48 + mesalib/src/mapi/stub.c | 229 + mesalib/src/mapi/stub.h | 60 + mesalib/src/mapi/table.c | 56 + mesalib/src/mapi/table.h | 72 + mesalib/src/mapi/u_compiler.h | 33 + mesalib/src/mapi/u_current.c | 267 ++ mesalib/src/mapi/u_current.h | 87 + mesalib/src/mapi/u_execmem.c | 146 + mesalib/src/mapi/u_execmem.h | 7 + mesalib/src/mapi/u_macros.h | 12 + mesalib/src/mapi/u_thread.h | 288 ++ mesalib/src/mesa/Android.gen.mk | 3 +- mesalib/src/mesa/Android.libmesa_dricore.mk | 2 +- mesalib/src/mesa/Android.libmesa_st_mesa.mk | 2 +- mesalib/src/mesa/Makefile.am | 24 +- mesalib/src/mesa/Makefile.sources | 350 ++ mesalib/src/mesa/SConscript | 12 +- mesalib/src/mesa/drivers/Makefile.am | 22 - mesalib/src/mesa/drivers/common/driverfuncs.c | 10 +- mesalib/src/mesa/drivers/common/driverfuncs.h | 7 +- mesalib/src/mesa/drivers/common/meta.c | 57 +- mesalib/src/mesa/drivers/common/meta.h | 7 +- mesalib/src/mesa/drivers/dri/common/Makefile.am | 1 - mesalib/src/mesa/drivers/dri/common/drisw_util.c | 7 +- mesalib/src/mesa/drivers/dri/common/xmlpool.h | 7 + .../mesa/drivers/dri/common/xmlpool/t_options.h | 30 +- mesalib/src/mesa/drivers/dri/swrast/Makefile.am | 1 - mesalib/src/mesa/drivers/dri/swrast/swrast.c | 7 +- mesalib/src/mesa/drivers/dri/swrast/swrast_priv.h | 7 +- mesalib/src/mesa/main/accum.c | 8 +- mesalib/src/mesa/main/accum.h | 8 +- mesalib/src/mesa/main/api_arrayelt.c | 110 +- mesalib/src/mesa/main/api_arrayelt.h | 12 +- mesalib/src/mesa/main/api_exec.h | 7 +- mesalib/src/mesa/main/api_loopback.c | 8 +- mesalib/src/mesa/main/api_loopback.h | 9 +- mesalib/src/mesa/main/api_validate.c | 41 +- mesalib/src/mesa/main/api_validate.h | 13 +- mesalib/src/mesa/main/arbprogram.c | 7 +- mesalib/src/mesa/main/arbprogram.h | 7 +- mesalib/src/mesa/main/arrayobj.c | 9 +- mesalib/src/mesa/main/arrayobj.h | 8 +- mesalib/src/mesa/main/atifragshader.c | 1 - mesalib/src/mesa/main/atifragshader.h | 1 - mesalib/src/mesa/main/attrib.c | 11 +- mesalib/src/mesa/main/attrib.h | 8 +- mesalib/src/mesa/main/bitset.h | 11 +- mesalib/src/mesa/main/blend.c | 25 +- mesalib/src/mesa/main/blend.h | 11 +- mesalib/src/mesa/main/bufferobj.c | 21 +- mesalib/src/mesa/main/bufferobj.h | 8 +- mesalib/src/mesa/main/buffers.c | 12 +- mesalib/src/mesa/main/buffers.h | 7 +- mesalib/src/mesa/main/clear.c | 56 +- mesalib/src/mesa/main/clear.h | 7 +- mesalib/src/mesa/main/clip.c | 7 +- mesalib/src/mesa/main/clip.h | 7 +- mesalib/src/mesa/main/colormac.h | 7 +- mesalib/src/mesa/main/colortab.c | 8 +- mesalib/src/mesa/main/colortab.h | 8 +- mesalib/src/mesa/main/compiler.h | 7 +- mesalib/src/mesa/main/config.h | 21 +- mesalib/src/mesa/main/context.c | 44 +- mesalib/src/mesa/main/context.h | 38 +- mesalib/src/mesa/main/convolve.c | 8 +- mesalib/src/mesa/main/convolve.h | 8 +- mesalib/src/mesa/main/cpuinfo.c | 7 +- mesalib/src/mesa/main/cpuinfo.h | 7 +- mesalib/src/mesa/main/dd.h | 132 +- mesalib/src/mesa/main/debug.c | 31 +- mesalib/src/mesa/main/debug.h | 9 +- mesalib/src/mesa/main/depth.c | 15 +- mesalib/src/mesa/main/depth.h | 8 +- mesalib/src/mesa/main/dlist.c | 146 +- mesalib/src/mesa/main/dlist.h | 16 +- mesalib/src/mesa/main/dlopen.h | 7 +- mesalib/src/mesa/main/drawpix.c | 8 +- mesalib/src/mesa/main/drawpix.h | 8 +- mesalib/src/mesa/main/drawtex.c | 1 - mesalib/src/mesa/main/drawtex.h | 1 - mesalib/src/mesa/main/enable.c | 27 +- mesalib/src/mesa/main/enable.h | 7 +- mesalib/src/mesa/main/enums.h | 8 +- mesalib/src/mesa/main/errors.c | 7 +- mesalib/src/mesa/main/errors.h | 17 +- mesalib/src/mesa/main/es1_conversion.c | 1 - mesalib/src/mesa/main/eval.c | 18 +- mesalib/src/mesa/main/eval.h | 23 +- mesalib/src/mesa/main/execmem.c | 9 +- mesalib/src/mesa/main/extensions.c | 17 +- mesalib/src/mesa/main/extensions.h | 8 +- mesalib/src/mesa/main/fbobject.c | 187 +- mesalib/src/mesa/main/fbobject.h | 38 +- mesalib/src/mesa/main/feedback.c | 8 +- mesalib/src/mesa/main/feedback.h | 8 +- mesalib/src/mesa/main/ff_fragment_shader.cpp | 5 +- mesalib/src/mesa/main/ffvertex_prog.c | 9 +- mesalib/src/mesa/main/fog.c | 7 +- mesalib/src/mesa/main/fog.h | 8 +- mesalib/src/mesa/main/format_pack.c | 7 +- mesalib/src/mesa/main/format_pack.h | 7 +- mesalib/src/mesa/main/format_unpack.c | 604 ++- mesalib/src/mesa/main/format_unpack.h | 7 +- mesalib/src/mesa/main/formatquery.c | 1 - mesalib/src/mesa/main/formats.c | 8 +- mesalib/src/mesa/main/formats.h | 37 +- mesalib/src/mesa/main/framebuffer.c | 88 +- mesalib/src/mesa/main/framebuffer.h | 7 +- mesalib/src/mesa/main/get.c | 123 +- mesalib/src/mesa/main/get.h | 7 +- mesalib/src/mesa/main/get_hash_generator.py | 26 +- mesalib/src/mesa/main/get_hash_params.py | 26 +- mesalib/src/mesa/main/getstring.c | 8 +- mesalib/src/mesa/main/glformats.c | 7 +- mesalib/src/mesa/main/glformats.h | 7 +- mesalib/src/mesa/main/glheader.h | 7 +- mesalib/src/mesa/main/hash.c | 11 +- mesalib/src/mesa/main/hash.h | 7 +- mesalib/src/mesa/main/hint.c | 7 +- mesalib/src/mesa/main/hint.h | 8 +- mesalib/src/mesa/main/histogram.c | 8 +- mesalib/src/mesa/main/histogram.h | 8 +- mesalib/src/mesa/main/image.c | 8 +- mesalib/src/mesa/main/image.h | 7 +- mesalib/src/mesa/main/imports.c | 7 +- mesalib/src/mesa/main/imports.h | 7 +- mesalib/src/mesa/main/light.c | 11 +- mesalib/src/mesa/main/light.h | 8 +- mesalib/src/mesa/main/lines.c | 7 +- mesalib/src/mesa/main/lines.h | 7 +- mesalib/src/mesa/main/macros.h | 13 +- mesalib/src/mesa/main/matrix.c | 8 +- mesalib/src/mesa/main/matrix.h | 7 +- mesalib/src/mesa/main/mfeatures.h | 53 - mesalib/src/mesa/main/mipmap.c | 7 +- mesalib/src/mesa/main/mipmap.h | 7 +- mesalib/src/mesa/main/mtypes.h | 149 +- mesalib/src/mesa/main/multisample.c | 12 +- mesalib/src/mesa/main/multisample.h | 7 +- mesalib/src/mesa/main/pack.h | 7 +- mesalib/src/mesa/main/pbo.c | 7 +- mesalib/src/mesa/main/pbo.h | 7 +- mesalib/src/mesa/main/pixel.c | 8 +- mesalib/src/mesa/main/pixel.h | 8 +- mesalib/src/mesa/main/pixelstore.c | 25 +- mesalib/src/mesa/main/pixelstore.h | 7 +- mesalib/src/mesa/main/pixeltransfer.c | 7 +- mesalib/src/mesa/main/pixeltransfer.h | 7 +- mesalib/src/mesa/main/points.c | 12 +- mesalib/src/mesa/main/points.h | 7 +- mesalib/src/mesa/main/polygon.c | 12 +- mesalib/src/mesa/main/polygon.h | 7 +- mesalib/src/mesa/main/querymatrix.h | 1 - mesalib/src/mesa/main/queryobj.c | 15 +- mesalib/src/mesa/main/queryobj.h | 8 +- mesalib/src/mesa/main/rastpos.c | 8 +- mesalib/src/mesa/main/rastpos.h | 8 +- mesalib/src/mesa/main/readpix.c | 7 +- mesalib/src/mesa/main/readpix.h | 7 +- mesalib/src/mesa/main/remap.c | 7 - mesalib/src/mesa/main/remap.h | 35 - mesalib/src/mesa/main/renderbuffer.c | 8 +- mesalib/src/mesa/main/renderbuffer.h | 7 +- mesalib/src/mesa/main/samplerobj.c | 8 +- mesalib/src/mesa/main/samplerobj.h | 7 +- mesalib/src/mesa/main/scissor.c | 7 +- mesalib/src/mesa/main/scissor.h | 7 +- mesalib/src/mesa/main/shaderapi.c | 19 +- mesalib/src/mesa/main/shaderapi.h | 7 +- mesalib/src/mesa/main/shaderobj.c | 8 +- mesalib/src/mesa/main/shaderobj.h | 7 +- mesalib/src/mesa/main/shared.c | 8 +- mesalib/src/mesa/main/shared.h | 7 +- mesalib/src/mesa/main/simple_list.h | 7 +- mesalib/src/mesa/main/state.c | 110 +- mesalib/src/mesa/main/state.h | 7 +- mesalib/src/mesa/main/stencil.c | 21 +- mesalib/src/mesa/main/stencil.h | 21 +- mesalib/src/mesa/main/syncobj.c | 1 - mesalib/src/mesa/main/syncobj.h | 1 - mesalib/src/mesa/main/texcompress.c | 10 +- mesalib/src/mesa/main/texcompress.h | 11 +- mesalib/src/mesa/main/texcompress_cpal.c | 8 +- mesalib/src/mesa/main/texcompress_cpal.h | 7 +- mesalib/src/mesa/main/texcompress_etc.c | 52 +- mesalib/src/mesa/main/texcompress_etc.h | 1 - mesalib/src/mesa/main/texcompress_fxt1.c | 16 +- mesalib/src/mesa/main/texcompress_fxt1.h | 8 +- mesalib/src/mesa/main/texcompress_rgtc.c | 71 +- mesalib/src/mesa/main/texcompress_rgtc.h | 1 - mesalib/src/mesa/main/texcompress_s3tc.c | 64 +- mesalib/src/mesa/main/texcompress_s3tc.h | 8 +- mesalib/src/mesa/main/texenv.c | 15 +- mesalib/src/mesa/main/texenv.h | 7 +- mesalib/src/mesa/main/texenvprogram.h | 7 +- mesalib/src/mesa/main/texformat.c | 1475 +++--- mesalib/src/mesa/main/texformat.h | 9 +- mesalib/src/mesa/main/texgen.c | 8 +- mesalib/src/mesa/main/texgen.h | 8 +- mesalib/src/mesa/main/texgetimage.c | 8 +- mesalib/src/mesa/main/texgetimage.h | 7 +- mesalib/src/mesa/main/teximage.c | 108 +- mesalib/src/mesa/main/teximage.h | 7 +- mesalib/src/mesa/main/texobj.c | 8 +- mesalib/src/mesa/main/texobj.h | 7 +- mesalib/src/mesa/main/texparam.c | 8 +- mesalib/src/mesa/main/texparam.h | 7 +- mesalib/src/mesa/main/texstate.c | 8 +- mesalib/src/mesa/main/texstate.h | 7 +- mesalib/src/mesa/main/texstorage.c | 38 +- mesalib/src/mesa/main/texstorage.h | 12 +- mesalib/src/mesa/main/texstore.c | 8 +- mesalib/src/mesa/main/texstore.h | 7 +- mesalib/src/mesa/main/transformfeedback.c | 28 +- mesalib/src/mesa/main/transformfeedback.h | 8 +- mesalib/src/mesa/main/uniform_query.cpp | 31 +- mesalib/src/mesa/main/uniforms.c | 22 +- mesalib/src/mesa/main/uniforms.h | 7 +- mesalib/src/mesa/main/varray.c | 41 +- mesalib/src/mesa/main/varray.h | 10 +- mesalib/src/mesa/main/version.c | 9 +- mesalib/src/mesa/main/version.h | 7 +- mesalib/src/mesa/main/viewport.c | 7 +- mesalib/src/mesa/main/viewport.h | 7 +- mesalib/src/mesa/main/vtxfmt.c | 59 +- mesalib/src/mesa/main/vtxfmt.h | 8 +- mesalib/src/mesa/math/m_clip_tmp.h | 7 +- mesalib/src/mesa/math/m_copy_tmp.h | 7 +- mesalib/src/mesa/math/m_debug.h | 7 +- mesalib/src/mesa/math/m_debug_clip.c | 7 +- mesalib/src/mesa/math/m_debug_norm.c | 7 +- mesalib/src/mesa/math/m_debug_util.h | 7 +- mesalib/src/mesa/math/m_debug_xform.c | 7 +- mesalib/src/mesa/math/m_dotprod_tmp.h | 7 +- mesalib/src/mesa/math/m_eval.c | 7 +- mesalib/src/mesa/math/m_eval.h | 7 +- mesalib/src/mesa/math/m_matrix.c | 7 +- mesalib/src/mesa/math/m_matrix.h | 7 +- mesalib/src/mesa/math/m_norm_tmp.h | 7 +- mesalib/src/mesa/math/m_trans_tmp.h | 7 +- mesalib/src/mesa/math/m_translate.c | 7 +- mesalib/src/mesa/math/m_translate.h | 7 +- mesalib/src/mesa/math/m_vector.c | 7 +- mesalib/src/mesa/math/m_vector.h | 7 +- mesalib/src/mesa/math/m_xform.c | 7 +- mesalib/src/mesa/math/m_xform.h | 7 +- mesalib/src/mesa/math/m_xform_tmp.h | 7 +- mesalib/src/mesa/program/Android.mk | 4 +- mesalib/src/mesa/program/Makefile.am | 4 +- mesalib/src/mesa/program/arbprogparse.c | 7 +- mesalib/src/mesa/program/arbprogparse.h | 7 +- mesalib/src/mesa/program/ir_to_mesa.cpp | 38 +- mesalib/src/mesa/program/prog_execute.c | 142 +- mesalib/src/mesa/program/prog_execute.h | 7 +- mesalib/src/mesa/program/prog_instruction.c | 16 +- mesalib/src/mesa/program/prog_instruction.h | 18 +- mesalib/src/mesa/program/prog_noise.c | 7 +- mesalib/src/mesa/program/prog_noise.h | 7 +- mesalib/src/mesa/program/prog_opt_constant_fold.c | 4 - mesalib/src/mesa/program/prog_parameter.c | 7 +- mesalib/src/mesa/program/prog_parameter.h | 7 +- mesalib/src/mesa/program/prog_print.c | 21 +- mesalib/src/mesa/program/prog_print.h | 7 +- mesalib/src/mesa/program/prog_statevars.c | 7 +- mesalib/src/mesa/program/prog_statevars.h | 7 +- mesalib/src/mesa/program/program.c | 8 +- mesalib/src/mesa/program/program.h | 7 +- mesalib/src/mesa/program/program_parse.y | 7 +- mesalib/src/mesa/program/program_parse_extra.c | 24 +- mesalib/src/mesa/program/programopt.c | 9 +- mesalib/src/mesa/program/programopt.h | 7 +- mesalib/src/mesa/program/register_allocate.c | 6 +- mesalib/src/mesa/program/sampler.cpp | 20 +- mesalib/src/mesa/sources.mak | 349 -- mesalib/src/mesa/state_tracker/st_atom.c | 8 +- mesalib/src/mesa/state_tracker/st_atom_array.c | 2 +- mesalib/src/mesa/state_tracker/st_atom_constbuf.c | 28 +- mesalib/src/mesa/state_tracker/st_atom_depth.c | 9 +- .../src/mesa/state_tracker/st_atom_framebuffer.c | 1 + mesalib/src/mesa/state_tracker/st_atom_msaa.c | 3 +- .../src/mesa/state_tracker/st_atom_rasterizer.c | 11 +- mesalib/src/mesa/state_tracker/st_atom_sampler.c | 33 +- mesalib/src/mesa/state_tracker/st_atom_scissor.c | 2 +- mesalib/src/mesa/state_tracker/st_atom_texture.c | 11 +- mesalib/src/mesa/state_tracker/st_cb_bitmap.c | 8 +- mesalib/src/mesa/state_tracker/st_cb_bitmap.h | 1 - mesalib/src/mesa/state_tracker/st_cb_blit.c | 1 - mesalib/src/mesa/state_tracker/st_cb_blit.h | 1 - .../src/mesa/state_tracker/st_cb_bufferobjects.c | 19 +- mesalib/src/mesa/state_tracker/st_cb_clear.c | 3 +- mesalib/src/mesa/state_tracker/st_cb_drawpixels.c | 6 +- mesalib/src/mesa/state_tracker/st_cb_drawpixels.h | 1 - mesalib/src/mesa/state_tracker/st_cb_drawtex.c | 1 - mesalib/src/mesa/state_tracker/st_cb_drawtex.h | 1 - mesalib/src/mesa/state_tracker/st_cb_eglimage.c | 2 +- mesalib/src/mesa/state_tracker/st_cb_eglimage.h | 1 - mesalib/src/mesa/state_tracker/st_cb_fbo.c | 39 +- mesalib/src/mesa/state_tracker/st_cb_feedback.c | 1 - mesalib/src/mesa/state_tracker/st_cb_feedback.h | 1 - mesalib/src/mesa/state_tracker/st_cb_flush.c | 2 +- mesalib/src/mesa/state_tracker/st_cb_flush.h | 2 +- mesalib/src/mesa/state_tracker/st_cb_msaa.c | 59 + mesalib/src/mesa/state_tracker/st_cb_msaa.h | 39 + mesalib/src/mesa/state_tracker/st_cb_queryobj.c | 1 - mesalib/src/mesa/state_tracker/st_cb_queryobj.h | 1 - mesalib/src/mesa/state_tracker/st_cb_rasterpos.c | 1 - mesalib/src/mesa/state_tracker/st_cb_rasterpos.h | 1 - mesalib/src/mesa/state_tracker/st_cb_texture.c | 51 +- mesalib/src/mesa/state_tracker/st_cb_xformfb.c | 1 - mesalib/src/mesa/state_tracker/st_cb_xformfb.h | 1 - mesalib/src/mesa/state_tracker/st_context.c | 10 +- mesalib/src/mesa/state_tracker/st_context.h | 3 + mesalib/src/mesa/state_tracker/st_draw.c | 5 +- mesalib/src/mesa/state_tracker/st_draw_feedback.c | 15 +- mesalib/src/mesa/state_tracker/st_extensions.c | 148 +- mesalib/src/mesa/state_tracker/st_format.c | 36 - mesalib/src/mesa/state_tracker/st_format.h | 4 - mesalib/src/mesa/state_tracker/st_gen_mipmap.c | 1 + mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 48 +- mesalib/src/mesa/state_tracker/st_manager.c | 34 +- mesalib/src/mesa/state_tracker/st_mesa_to_tgsi.c | 22 +- mesalib/src/mesa/state_tracker/st_program.c | 1 - mesalib/src/mesa/state_tracker/st_texture.c | 8 +- mesalib/src/mesa/state_tracker/st_texture.h | 11 +- mesalib/src/mesa/swrast/s_aaline.c | 7 +- mesalib/src/mesa/swrast/s_aaline.h | 7 +- mesalib/src/mesa/swrast/s_aalinetemp.h | 7 +- mesalib/src/mesa/swrast/s_aatriangle.c | 7 +- mesalib/src/mesa/swrast/s_aatriangle.h | 7 +- mesalib/src/mesa/swrast/s_aatritemp.h | 7 +- mesalib/src/mesa/swrast/s_alpha.c | 7 +- mesalib/src/mesa/swrast/s_alpha.h | 7 +- mesalib/src/mesa/swrast/s_bitmap.c | 7 +- mesalib/src/mesa/swrast/s_blend.c | 7 +- mesalib/src/mesa/swrast/s_blend.h | 7 +- mesalib/src/mesa/swrast/s_blit.c | 99 +- mesalib/src/mesa/swrast/s_chan.h | 7 +- mesalib/src/mesa/swrast/s_clear.c | 7 +- mesalib/src/mesa/swrast/s_context.c | 16 +- mesalib/src/mesa/swrast/s_context.h | 35 +- mesalib/src/mesa/swrast/s_copypix.c | 7 +- mesalib/src/mesa/swrast/s_depth.c | 7 +- mesalib/src/mesa/swrast/s_depth.h | 7 +- mesalib/src/mesa/swrast/s_drawpix.c | 7 +- mesalib/src/mesa/swrast/s_feedback.c | 7 +- mesalib/src/mesa/swrast/s_feedback.h | 7 +- mesalib/src/mesa/swrast/s_fog.c | 7 +- mesalib/src/mesa/swrast/s_fog.h | 7 +- mesalib/src/mesa/swrast/s_fragprog.c | 7 +- mesalib/src/mesa/swrast/s_fragprog.h | 7 +- mesalib/src/mesa/swrast/s_lines.c | 7 +- mesalib/src/mesa/swrast/s_lines.h | 7 +- mesalib/src/mesa/swrast/s_linetemp.h | 7 +- mesalib/src/mesa/swrast/s_logic.c | 7 +- mesalib/src/mesa/swrast/s_logic.h | 7 +- mesalib/src/mesa/swrast/s_masking.c | 7 +- mesalib/src/mesa/swrast/s_masking.h | 7 +- mesalib/src/mesa/swrast/s_points.c | 7 +- mesalib/src/mesa/swrast/s_points.h | 7 +- mesalib/src/mesa/swrast/s_renderbuffer.c | 7 +- mesalib/src/mesa/swrast/s_renderbuffer.h | 7 +- mesalib/src/mesa/swrast/s_span.c | 7 +- mesalib/src/mesa/swrast/s_span.h | 7 +- mesalib/src/mesa/swrast/s_stencil.c | 13 +- mesalib/src/mesa/swrast/s_stencil.h | 7 +- mesalib/src/mesa/swrast/s_texcombine.c | 9 +- mesalib/src/mesa/swrast/s_texcombine.h | 7 +- mesalib/src/mesa/swrast/s_texfetch.c | 22 +- mesalib/src/mesa/swrast/s_texfetch.h | 7 +- mesalib/src/mesa/swrast/s_texfetch_tmp.h | 18 +- mesalib/src/mesa/swrast/s_texfilter.c | 15 +- mesalib/src/mesa/swrast/s_texfilter.h | 7 +- mesalib/src/mesa/swrast/s_texrender.c | 63 +- mesalib/src/mesa/swrast/s_texture.c | 186 +- mesalib/src/mesa/swrast/s_triangle.c | 18 +- mesalib/src/mesa/swrast/s_triangle.h | 7 +- mesalib/src/mesa/swrast/s_tritemp.h | 7 +- mesalib/src/mesa/swrast/s_zoom.c | 7 +- mesalib/src/mesa/swrast/s_zoom.h | 7 +- mesalib/src/mesa/swrast/swrast.h | 19 +- mesalib/src/mesa/swrast_setup/ss_context.c | 7 +- mesalib/src/mesa/swrast_setup/ss_context.h | 7 +- mesalib/src/mesa/swrast_setup/ss_triangle.c | 7 +- mesalib/src/mesa/swrast_setup/ss_triangle.h | 7 +- mesalib/src/mesa/swrast_setup/ss_tritmp.h | 7 +- mesalib/src/mesa/swrast_setup/ss_vb.h | 7 +- mesalib/src/mesa/swrast_setup/swrast_setup.h | 7 +- mesalib/src/mesa/tnl/t_context.c | 7 +- mesalib/src/mesa/tnl/t_context.h | 7 +- mesalib/src/mesa/tnl/t_draw.c | 7 +- mesalib/src/mesa/tnl/t_pipeline.c | 7 +- mesalib/src/mesa/tnl/t_pipeline.h | 7 +- mesalib/src/mesa/tnl/t_rasterpos.c | 7 +- mesalib/src/mesa/tnl/t_vb_cliptmp.h | 7 +- mesalib/src/mesa/tnl/t_vb_fog.c | 7 +- mesalib/src/mesa/tnl/t_vb_light.c | 7 +- mesalib/src/mesa/tnl/t_vb_lighttmp.h | 10 +- mesalib/src/mesa/tnl/t_vb_normals.c | 7 +- mesalib/src/mesa/tnl/t_vb_points.c | 7 +- mesalib/src/mesa/tnl/t_vb_program.c | 11 +- mesalib/src/mesa/tnl/t_vb_render.c | 7 +- mesalib/src/mesa/tnl/t_vb_rendertmp.h | 7 +- mesalib/src/mesa/tnl/t_vb_texgen.c | 10 +- mesalib/src/mesa/tnl/t_vb_texmat.c | 7 +- mesalib/src/mesa/tnl/t_vb_vertex.c | 7 +- mesalib/src/mesa/tnl/t_vertex.c | 13 +- mesalib/src/mesa/tnl/tnl.h | 7 +- mesalib/src/mesa/vbo/vbo.h | 26 +- mesalib/src/mesa/vbo/vbo_context.c | 7 +- mesalib/src/mesa/vbo/vbo_context.h | 8 +- mesalib/src/mesa/vbo/vbo_exec.c | 128 +- mesalib/src/mesa/vbo/vbo_exec.h | 5 +- mesalib/src/mesa/vbo/vbo_exec_api.c | 182 +- mesalib/src/mesa/vbo/vbo_exec_array.c | 235 +- mesalib/src/mesa/vbo/vbo_exec_draw.c | 8 +- mesalib/src/mesa/vbo/vbo_exec_eval.c | 7 +- mesalib/src/mesa/vbo/vbo_noop.c | 100 +- mesalib/src/mesa/vbo/vbo_noop.h | 8 +- mesalib/src/mesa/vbo/vbo_primitive_restart.c | 3 +- mesalib/src/mesa/vbo/vbo_rebase.c | 7 +- mesalib/src/mesa/vbo/vbo_save.c | 10 +- mesalib/src/mesa/vbo/vbo_save.h | 9 +- mesalib/src/mesa/vbo/vbo_save_api.c | 364 +- mesalib/src/mesa/vbo/vbo_save_draw.c | 25 +- mesalib/src/mesa/vbo/vbo_save_loopback.c | 3 +- mesalib/src/mesa/vbo/vbo_split.c | 7 +- mesalib/src/mesa/vbo/vbo_split.h | 7 +- mesalib/src/mesa/vbo/vbo_split_copy.c | 7 +- mesalib/src/mesa/vbo/vbo_split_inplace.c | 7 +- mesalib/src/mesa/x86/3dnow.c | 7 +- mesalib/src/mesa/x86/3dnow.h | 7 +- mesalib/src/mesa/x86/3dnow_normal.S | 7 +- mesalib/src/mesa/x86/3dnow_xform1.S | 7 +- mesalib/src/mesa/x86/3dnow_xform2.S | 7 +- mesalib/src/mesa/x86/3dnow_xform3.S | 7 +- mesalib/src/mesa/x86/3dnow_xform4.S | 7 +- mesalib/src/mesa/x86/Makefile.am | 1 - mesalib/src/mesa/x86/clip_args.h | 7 +- mesalib/src/mesa/x86/common_x86.c | 7 +- mesalib/src/mesa/x86/common_x86_asm.S | 7 +- mesalib/src/mesa/x86/common_x86_asm.h | 7 +- mesalib/src/mesa/x86/common_x86_features.h | 7 +- mesalib/src/mesa/x86/gen_matypes.c | 7 +- mesalib/src/mesa/x86/mmx.h | 7 +- mesalib/src/mesa/x86/norm_args.h | 7 +- mesalib/src/mesa/x86/sse.c | 7 +- mesalib/src/mesa/x86/sse.h | 7 +- mesalib/src/mesa/x86/sse_normal.S | 7 +- mesalib/src/mesa/x86/sse_xform1.S | 7 +- mesalib/src/mesa/x86/sse_xform2.S | 7 +- mesalib/src/mesa/x86/sse_xform3.S | 7 +- mesalib/src/mesa/x86/sse_xform4.S | 7 +- mesalib/src/mesa/x86/x86_cliptest.S | 7 +- mesalib/src/mesa/x86/x86_xform.c | 7 +- mesalib/src/mesa/x86/x86_xform.h | 7 +- mesalib/src/mesa/x86/x86_xform2.S | 7 +- mesalib/src/mesa/x86/x86_xform3.S | 7 +- mesalib/src/mesa/x86/x86_xform4.S | 7 +- mesalib/src/mesa/x86/xform_args.h | 7 +- mkfontscale/man/mkfontscale.man | 6 + pixman/configure.ac | 13 +- pixman/pixman/pixman-arm-neon-asm.h | 2 +- pixman/pixman/pixman-fast-path.c | 99 +- pixman/pixman/pixman-filter.c | 2 + pixman/pixman/pixman-general.c | 92 +- pixman/pixman/pixman-image.c | 10 +- pixman/pixman/pixman-implementation.c | 89 +- pixman/pixman/pixman-mips-dspr2-asm.S | 723 ++- pixman/pixman/pixman-mips-dspr2-asm.h | 51 +- pixman/pixman/pixman-mips-dspr2.c | 31 + pixman/pixman/pixman-mips-dspr2.h | 42 + pixman/pixman/pixman-mmx.c | 82 +- pixman/pixman/pixman-noop.c | 183 +- pixman/pixman/pixman-private.h | 70 +- pixman/pixman/pixman-region.c | 6 +- pixman/pixman/pixman-sse2.c | 93 +- pixman/pixman/pixman-utils.c | 11 + pixman/pixman/pixman-vmx.c | 2 + pixman/pixman/pixman.c | 2 +- pixman/pixman/refactor | 478 -- pixman/test/blitters-test.c | 13 +- pixman/test/lowlevel-blt-bench.c | 13 +- pixman/test/prng-test.c | 5 +- pixman/test/utils-prng.c | 58 +- pixman/test/utils-prng.h | 5 +- xkbcomp/man/xkbcomp.man | 12 + xkbcomp/utils.h | 4 +- xorg-server/COPYING | 1 + xorg-server/Xext/saver.c | 8 +- xorg-server/Xext/xvmain.c | 4 +- xorg-server/Xi/chgdctl.c | 6 + xorg-server/Xi/devbell.c | 3 +- xorg-server/Xi/exevents.c | 179 +- xorg-server/Xi/extinit.c | 38 +- xorg-server/Xi/setdval.c | 3 + xorg-server/Xi/setmode.c | 4 + xorg-server/Xi/ungrdevb.c | 2 +- xorg-server/Xi/ungrdevk.c | 2 +- xorg-server/Xi/xibarriers.c | 12 + xorg-server/Xi/xibarriers.h | 4 +- xorg-server/Xi/xigrabdev.c | 15 +- xorg-server/Xi/xipassivegrab.c | 2 +- xorg-server/configure.ac | 14 +- xorg-server/dix/cursor.c | 29 +- xorg-server/dix/devices.c | 59 +- xorg-server/dix/dispatch.c | 4 +- xorg-server/dix/dixutils.c | 8 +- xorg-server/dix/eventconvert.c | 23 +- xorg-server/dix/events.c | 89 +- xorg-server/dix/getevents.c | 61 +- xorg-server/dix/grabs.c | 21 +- xorg-server/dix/main.c | 7 + xorg-server/dix/pixmap.c | 2 + xorg-server/dix/registry.c | 25 +- xorg-server/dix/touch.c | 118 +- xorg-server/dix/window.c | 15 +- xorg-server/fb/fbpixmap.c | 1 + xorg-server/glx/glxdri.c | 10 +- xorg-server/glx/glxdri2.c | 4 +- xorg-server/hw/dmx/config/dmxcompat.c | 4 + xorg-server/hw/kdrive/ephyr/man/Xephyr.man | 6 +- xorg-server/hw/kdrive/fbdev/fbdev.c | 157 +- xorg-server/hw/kdrive/fbdev/fbdev.h | 2 +- xorg-server/hw/kdrive/src/kdrive.c | 3 +- xorg-server/hw/xfree86/common/xf86.h | 26 +- xorg-server/hw/xfree86/common/xf86Config.c | 1 + xorg-server/hw/xfree86/common/xf86Events.c | 17 +- xorg-server/hw/xfree86/common/xf86Init.c | 2 +- xorg-server/hw/xfree86/common/xf86Xinput.c | 2 +- xorg-server/hw/xfree86/common/xf86platformBus.c | 30 +- xorg-server/hw/xfree86/common/xf86platformBus.h | 4 + xorg-server/hw/xfree86/common/xf86sbusBus.c | 6 +- xorg-server/hw/xfree86/ddc/xf86DDC.h | 2 - xorg-server/hw/xfree86/fbdevhw/Makefile.am | 2 +- xorg-server/hw/xfree86/fbdevhw/fbdevhw.c | 1 + xorg-server/hw/xfree86/modes/Makefile.am | 4 +- xorg-server/hw/xfree86/modes/xf86Crtc.c | 39 +- xorg-server/hw/xfree86/modes/xf86Crtc.h | 3 - xorg-server/hw/xfree86/modes/xf86Cursors.c | 4 +- xorg-server/hw/xfree86/modes/xf86DisplayIDModes.c | 1 + xorg-server/hw/xfree86/modes/xf86Modes.h | 6 +- xorg-server/hw/xfree86/modes/xf86RandR12.c | 3 + xorg-server/hw/xfree86/modes/xf86RandR12.h | 3 - xorg-server/hw/xfree86/modes/xf86Rename.h | 94 - xorg-server/hw/xfree86/os-support/bus/Sbus.c | 8 +- .../hw/xfree86/os-support/linux/lnx_platform.c | 62 +- .../hw/xfree86/os-support/shared/posix_tty.c | 3 +- .../hw/xfree86/os-support/solaris/sun_init.c | 2 +- xorg-server/hw/xfree86/os-support/xf86_OSproc.h | 3 + xorg-server/hw/xfree86/ramdac/xf86Cursor.c | 28 +- xorg-server/hw/xfree86/utils/cvt/Makefile.am | 1 + xorg-server/hw/xfree86/utils/cvt/cvt.c | 1 + xorg-server/hw/xfree86/vbe/Makefile.am | 1 + xorg-server/hw/xfree86/vbe/vbe.c | 1 + xorg-server/hw/xwin/winclipboardthread.c | 5 +- xorg-server/hw/xwin/windialogs.c | 12 +- xorg-server/hw/xwin/winkeybd.c | 2 - xorg-server/hw/xwin/winmultiwindowwindow.c | 5 +- xorg-server/hw/xwin/winpfbdd.c | 13 - xorg-server/hw/xwin/winscrinit.c | 4 - xorg-server/hw/xwin/winwin32rootlesswindow.c | 4 +- xorg-server/hw/xwin/winwindow.c | 4 - xorg-server/hw/xwin/winwindowswm.c | 15 - xorg-server/hw/xwin/winwndproc.c | 2 - xorg-server/include/callback.h | 1 + xorg-server/include/cursor.h | 4 + xorg-server/include/dixgrabs.h | 2 +- xorg-server/include/dixstruct.h | 2 +- xorg-server/include/eventstr.h | 2 + xorg-server/include/hotplug.h | 1 + xorg-server/include/input.h | 2 + xorg-server/include/inputstr.h | 2 +- xorg-server/include/registry.h | 1 + xorg-server/include/xkbsrv.h | 3 + xorg-server/miext/shadow/Makefile.am | 4 + xorg-server/miext/shadow/c2p_core.h | 187 + xorg-server/miext/shadow/shadow.h | 12 + xorg-server/miext/shadow/shafb4.c | 139 + xorg-server/miext/shadow/shafb8.c | 143 + xorg-server/miext/shadow/shiplan2p4.c | 136 + xorg-server/miext/shadow/shiplan2p8.c | 137 + xorg-server/miext/shadow/shpacked.c | 1 - xorg-server/os/io.c | 1 + xorg-server/os/log.c | 111 +- xorg-server/randr/randr.c | 24 +- xorg-server/randr/randrstr.h | 4 + xorg-server/randr/rrcrtc.c | 2 +- xorg-server/randr/rrinfo.c | 2 +- xorg-server/randr/rroutput.c | 2 +- xorg-server/randr/rrscreen.c | 2 +- xorg-server/render/animcur.c | 3 +- xorg-server/test/input.c | 2 +- xorg-server/test/signal-logging.c | 95 +- xorg-server/xfixes/cursor.c | 6 +- xorg-server/xkb/xkbInit.c | 23 +- xorg-server/xkeyboard-config/NEWS | 2 + xorg-server/xkeyboard-config/configure.ac | 4 +- xorg-server/xkeyboard-config/keycodes/Makefile.am | 1 + xorg-server/xkeyboard-config/keycodes/olpc | 24 + xorg-server/xkeyboard-config/po/ca.po | 1036 +++-- xorg-server/xkeyboard-config/po/da.po | 1037 +++-- xorg-server/xkeyboard-config/po/de.po | 1049 +++-- xorg-server/xkeyboard-config/po/eo.po | 1036 +++-- xorg-server/xkeyboard-config/po/fr.po | 1038 +++-- xorg-server/xkeyboard-config/po/ja.po | 4799 +++++++++++--------- xorg-server/xkeyboard-config/po/pl.po | 1030 +++-- xorg-server/xkeyboard-config/po/pt_BR.po | 4145 +++++++++++++++++ xorg-server/xkeyboard-config/po/ru.po | 1036 +++-- xorg-server/xkeyboard-config/po/uk.po | 1038 +++-- .../xkeyboard-config/po/xkeyboard-config.pot | 1020 +++-- xorg-server/xkeyboard-config/po/zh_TW.po | 4335 ++++++++++++++---- xorg-server/xkeyboard-config/rules/base.ml_c.part | 3 +- xorg-server/xkeyboard-config/rules/base.ml_s.part | 2 + xorg-server/xkeyboard-config/rules/base.xml.in | 22 +- xorg-server/xkeyboard-config/rules/evdev.m_k.part | 2 + xorg-server/xkeyboard-config/symbols/cd | 4 +- xorg-server/xkeyboard-config/symbols/es | 47 +- xorg-server/xkeyboard-config/symbols/inet | 2 + xorg-server/xkeyboard-config/symbols/olpc | 8 +- xorg-server/xkeyboard-config/symbols/ru | 19 + xorg-server/xkeyboard-config/symbols/us | 61 +- 1090 files changed, 48297 insertions(+), 36031 deletions(-) delete mode 100644 fontconfig/conf.d/README create mode 100644 fontconfig/conf.d/README.in create mode 100644 libX11/src/pathmax.h create mode 100644 libXext/src/eat.h create mode 100644 mesalib/bin/bugzilla_mesa.sh create mode 100644 mesalib/bin/perf-annotate-jit delete mode 100644 mesalib/docs/MESA_agp_offset.spec delete mode 100644 mesalib/docs/MESA_copy_sub_buffer.spec delete mode 100644 mesalib/docs/MESA_drm_image.spec delete mode 100644 mesalib/docs/MESA_multithread_makecurrent.spec delete mode 100644 mesalib/docs/MESA_pack_invert.spec delete mode 100644 mesalib/docs/MESA_pixmap_colormap.spec delete mode 100644 mesalib/docs/MESA_release_buffers.spec delete mode 100644 mesalib/docs/MESA_resize_buffers.spec delete mode 100644 mesalib/docs/MESA_set_3dfx_mode.spec delete mode 100644 mesalib/docs/MESA_shader_debug.spec delete mode 100644 mesalib/docs/MESA_swap_control.spec delete mode 100644 mesalib/docs/MESA_swap_frame_usage.spec delete mode 100644 mesalib/docs/MESA_texture_array.spec delete mode 100644 mesalib/docs/MESA_texture_signed_rgba.spec delete mode 100644 mesalib/docs/MESA_window_pos.spec delete mode 100644 mesalib/docs/MESA_ycbcr_texture.spec create mode 100644 mesalib/docs/README.UVD delete mode 100644 mesalib/docs/RELNOTES-3.1 delete mode 100644 mesalib/docs/RELNOTES-3.2 delete mode 100644 mesalib/docs/RELNOTES-3.2.1 delete mode 100644 mesalib/docs/RELNOTES-3.3 delete mode 100644 mesalib/docs/RELNOTES-3.4 delete mode 100644 mesalib/docs/RELNOTES-3.4.1 delete mode 100644 mesalib/docs/RELNOTES-3.4.2 delete mode 100644 mesalib/docs/RELNOTES-3.5 delete mode 100644 mesalib/docs/RELNOTES-4.0 delete mode 100644 mesalib/docs/RELNOTES-4.0.1 delete mode 100644 mesalib/docs/RELNOTES-4.0.2 delete mode 100644 mesalib/docs/RELNOTES-4.0.3 delete mode 100644 mesalib/docs/RELNOTES-4.1 delete mode 100644 mesalib/docs/RELNOTES-5.0 delete mode 100644 mesalib/docs/RELNOTES-5.0.1 delete mode 100644 mesalib/docs/RELNOTES-5.0.2 delete mode 100644 mesalib/docs/RELNOTES-5.1 delete mode 100644 mesalib/docs/RELNOTES-6.0 delete mode 100644 mesalib/docs/RELNOTES-6.0.1 delete mode 100644 mesalib/docs/RELNOTES-6.1 delete mode 100644 mesalib/docs/RELNOTES-6.2 delete mode 100644 mesalib/docs/RELNOTES-6.2.1 delete mode 100644 mesalib/docs/RELNOTES-6.3 delete mode 100644 mesalib/docs/RELNOTES-6.3.1 delete mode 100644 mesalib/docs/RELNOTES-6.3.2 delete mode 100644 mesalib/docs/RELNOTES-6.4 delete mode 100644 mesalib/docs/WL_bind_wayland_display.spec delete mode 100644 mesalib/docs/enums.txt delete mode 100644 mesalib/docs/relnotes-6.4.1.html delete mode 100644 mesalib/docs/relnotes-6.4.2.html delete mode 100644 mesalib/docs/relnotes-6.4.html delete mode 100644 mesalib/docs/relnotes-6.5.1.html delete mode 100644 mesalib/docs/relnotes-6.5.2.html delete mode 100644 mesalib/docs/relnotes-6.5.3.html delete mode 100644 mesalib/docs/relnotes-6.5.html delete mode 100644 mesalib/docs/relnotes-7.0.1.html delete mode 100644 mesalib/docs/relnotes-7.0.2.html delete mode 100644 mesalib/docs/relnotes-7.0.3.html delete mode 100644 mesalib/docs/relnotes-7.0.4.html delete mode 100644 mesalib/docs/relnotes-7.0.html delete mode 100644 mesalib/docs/relnotes-7.1.html delete mode 100644 mesalib/docs/relnotes-7.10.1.html delete mode 100644 mesalib/docs/relnotes-7.10.2.html delete mode 100644 mesalib/docs/relnotes-7.10.3.html delete mode 100644 mesalib/docs/relnotes-7.10.html delete mode 100644 mesalib/docs/relnotes-7.11.1.html delete mode 100644 mesalib/docs/relnotes-7.11.2.html delete mode 100644 mesalib/docs/relnotes-7.11.html delete mode 100644 mesalib/docs/relnotes-7.2.html delete mode 100644 mesalib/docs/relnotes-7.3.html delete mode 100644 mesalib/docs/relnotes-7.4.1.html delete mode 100644 mesalib/docs/relnotes-7.4.2.html delete mode 100644 mesalib/docs/relnotes-7.4.3.html delete mode 100644 mesalib/docs/relnotes-7.4.4.html delete mode 100644 mesalib/docs/relnotes-7.4.html delete mode 100644 mesalib/docs/relnotes-7.5.1.html delete mode 100644 mesalib/docs/relnotes-7.5.2.html delete mode 100644 mesalib/docs/relnotes-7.5.html delete mode 100644 mesalib/docs/relnotes-7.6.1.html delete mode 100644 mesalib/docs/relnotes-7.6.html delete mode 100644 mesalib/docs/relnotes-7.7.1.html delete mode 100644 mesalib/docs/relnotes-7.7.html delete mode 100644 mesalib/docs/relnotes-7.8.1.html delete mode 100644 mesalib/docs/relnotes-7.8.2.html delete mode 100644 mesalib/docs/relnotes-7.8.3.html delete mode 100644 mesalib/docs/relnotes-7.8.html delete mode 100644 mesalib/docs/relnotes-7.9.1.html delete mode 100644 mesalib/docs/relnotes-7.9.2.html delete mode 100644 mesalib/docs/relnotes-7.9.html delete mode 100644 mesalib/docs/relnotes-8.0.1.html delete mode 100644 mesalib/docs/relnotes-8.0.2.html delete mode 100644 mesalib/docs/relnotes-8.0.3.html delete mode 100644 mesalib/docs/relnotes-8.0.4.html delete mode 100644 mesalib/docs/relnotes-8.0.5.html delete mode 100644 mesalib/docs/relnotes-8.0.html delete mode 100644 mesalib/docs/relnotes-9.0.1.html delete mode 100644 mesalib/docs/relnotes-9.0.2.html delete mode 100644 mesalib/docs/relnotes-9.0.3.html delete mode 100644 mesalib/docs/relnotes-9.0.html delete mode 100644 mesalib/docs/relnotes-9.1.1.html delete mode 100644 mesalib/docs/relnotes-9.1.html create mode 100644 mesalib/docs/relnotes/3.1 create mode 100644 mesalib/docs/relnotes/3.2 create mode 100644 mesalib/docs/relnotes/3.2.1 create mode 100644 mesalib/docs/relnotes/3.3 create mode 100644 mesalib/docs/relnotes/3.4 create mode 100644 mesalib/docs/relnotes/3.4.1 create mode 100644 mesalib/docs/relnotes/3.4.2 create mode 100644 mesalib/docs/relnotes/3.5 create mode 100644 mesalib/docs/relnotes/4.0 create mode 100644 mesalib/docs/relnotes/4.0.1 create mode 100644 mesalib/docs/relnotes/4.0.2 create mode 100644 mesalib/docs/relnotes/4.0.3 create mode 100644 mesalib/docs/relnotes/4.1 create mode 100644 mesalib/docs/relnotes/5.0 create mode 100644 mesalib/docs/relnotes/5.0.1 create mode 100644 mesalib/docs/relnotes/5.0.2 create mode 100644 mesalib/docs/relnotes/5.1 create mode 100644 mesalib/docs/relnotes/6.0 create mode 100644 mesalib/docs/relnotes/6.0.1 create mode 100644 mesalib/docs/relnotes/6.1 create mode 100644 mesalib/docs/relnotes/6.2 create mode 100644 mesalib/docs/relnotes/6.2.1 create mode 100644 mesalib/docs/relnotes/6.3 create mode 100644 mesalib/docs/relnotes/6.3.1 create mode 100644 mesalib/docs/relnotes/6.3.2 create mode 100644 mesalib/docs/relnotes/6.4 create mode 100644 mesalib/docs/relnotes/6.4.1.html create mode 100644 mesalib/docs/relnotes/6.4.2.html create mode 100644 mesalib/docs/relnotes/6.4.html create mode 100644 mesalib/docs/relnotes/6.5.1.html create mode 100644 mesalib/docs/relnotes/6.5.2.html create mode 100644 mesalib/docs/relnotes/6.5.3.html create mode 100644 mesalib/docs/relnotes/6.5.html create mode 100644 mesalib/docs/relnotes/7.0.1.html create mode 100644 mesalib/docs/relnotes/7.0.2.html create mode 100644 mesalib/docs/relnotes/7.0.3.html create mode 100644 mesalib/docs/relnotes/7.0.4.html create mode 100644 mesalib/docs/relnotes/7.0.html create mode 100644 mesalib/docs/relnotes/7.1.html create mode 100644 mesalib/docs/relnotes/7.10.1.html create mode 100644 mesalib/docs/relnotes/7.10.2.html create mode 100644 mesalib/docs/relnotes/7.10.3.html create mode 100644 mesalib/docs/relnotes/7.10.html create mode 100644 mesalib/docs/relnotes/7.11.1.html create mode 100644 mesalib/docs/relnotes/7.11.2.html create mode 100644 mesalib/docs/relnotes/7.11.html create mode 100644 mesalib/docs/relnotes/7.2.html create mode 100644 mesalib/docs/relnotes/7.3.html create mode 100644 mesalib/docs/relnotes/7.4.1.html create mode 100644 mesalib/docs/relnotes/7.4.2.html create mode 100644 mesalib/docs/relnotes/7.4.3.html create mode 100644 mesalib/docs/relnotes/7.4.4.html create mode 100644 mesalib/docs/relnotes/7.4.html create mode 100644 mesalib/docs/relnotes/7.5.1.html create mode 100644 mesalib/docs/relnotes/7.5.2.html create mode 100644 mesalib/docs/relnotes/7.5.html create mode 100644 mesalib/docs/relnotes/7.6.1.html create mode 100644 mesalib/docs/relnotes/7.6.html create mode 100644 mesalib/docs/relnotes/7.7.1.html create mode 100644 mesalib/docs/relnotes/7.7.html create mode 100644 mesalib/docs/relnotes/7.8.1.html create mode 100644 mesalib/docs/relnotes/7.8.2.html create mode 100644 mesalib/docs/relnotes/7.8.3.html create mode 100644 mesalib/docs/relnotes/7.8.html create mode 100644 mesalib/docs/relnotes/7.9.1.html create mode 100644 mesalib/docs/relnotes/7.9.2.html create mode 100644 mesalib/docs/relnotes/7.9.html create mode 100644 mesalib/docs/relnotes/8.0.1.html create mode 100644 mesalib/docs/relnotes/8.0.2.html create mode 100644 mesalib/docs/relnotes/8.0.3.html create mode 100644 mesalib/docs/relnotes/8.0.4.html create mode 100644 mesalib/docs/relnotes/8.0.5.html create mode 100644 mesalib/docs/relnotes/8.0.html create mode 100644 mesalib/docs/relnotes/9.0.1.html create mode 100644 mesalib/docs/relnotes/9.0.2.html create mode 100644 mesalib/docs/relnotes/9.0.3.html create mode 100644 mesalib/docs/relnotes/9.0.html create mode 100644 mesalib/docs/relnotes/9.1.1.html create mode 100644 mesalib/docs/relnotes/9.1.2.html create mode 100644 mesalib/docs/relnotes/9.1.3.html create mode 100644 mesalib/docs/relnotes/9.1.html create mode 100644 mesalib/docs/relnotes/9.2.html create mode 100644 mesalib/docs/specs/MESA_agp_offset.spec create mode 100644 mesalib/docs/specs/MESA_copy_sub_buffer.spec create mode 100644 mesalib/docs/specs/MESA_drm_image.spec create mode 100644 mesalib/docs/specs/MESA_multithread_makecurrent.spec create mode 100644 mesalib/docs/specs/MESA_pack_invert.spec create mode 100644 mesalib/docs/specs/MESA_pixmap_colormap.spec create mode 100644 mesalib/docs/specs/MESA_release_buffers.spec create mode 100644 mesalib/docs/specs/MESA_resize_buffers.spec create mode 100644 mesalib/docs/specs/MESA_set_3dfx_mode.spec create mode 100644 mesalib/docs/specs/MESA_shader_debug.spec create mode 100644 mesalib/docs/specs/MESA_swap_control.spec create mode 100644 mesalib/docs/specs/MESA_swap_frame_usage.spec create mode 100644 mesalib/docs/specs/MESA_texture_array.spec create mode 100644 mesalib/docs/specs/MESA_texture_signed_rgba.spec create mode 100644 mesalib/docs/specs/MESA_window_pos.spec create mode 100644 mesalib/docs/specs/MESA_ycbcr_texture.spec create mode 100644 mesalib/docs/specs/WL_bind_wayland_display.spec create mode 100644 mesalib/docs/specs/enums.txt delete mode 100644 mesalib/src/gallium/Makefile.am create mode 100644 mesalib/src/glsl/ast_array_index.cpp create mode 100644 mesalib/src/glsl/link_interface_blocks.cpp create mode 100644 mesalib/src/glsl/lower_named_interface_blocks.cpp create mode 100644 mesalib/src/glsl/lower_vector_insert.cpp create mode 100644 mesalib/src/glsl/opt_flip_matrices.cpp create mode 100644 mesalib/src/mapi/Makefile.am create mode 100644 mesalib/src/mapi/Makefile.sources create mode 100644 mesalib/src/mapi/entry.c create mode 100644 mesalib/src/mapi/entry.h create mode 100644 mesalib/src/mapi/entry_x86-64_tls.h create mode 100644 mesalib/src/mapi/entry_x86_tls.h create mode 100644 mesalib/src/mapi/entry_x86_tsd.h create mode 100644 mesalib/src/mapi/glapi/Makefile.sources delete mode 100644 mesalib/src/mapi/glapi/sources.mak create mode 100644 mesalib/src/mapi/mapi.c create mode 100644 mesalib/src/mapi/mapi.h delete mode 100644 mesalib/src/mapi/mapi/entry.c delete mode 100644 mesalib/src/mapi/mapi/entry.h delete mode 100644 mesalib/src/mapi/mapi/entry_x86-64_tls.h delete mode 100644 mesalib/src/mapi/mapi/entry_x86_tls.h delete mode 100644 mesalib/src/mapi/mapi/entry_x86_tsd.h delete mode 100644 mesalib/src/mapi/mapi/mapi.c delete mode 100644 mesalib/src/mapi/mapi/mapi.h delete mode 100644 mesalib/src/mapi/mapi/mapi_abi.py delete mode 100644 mesalib/src/mapi/mapi/mapi_glapi.c delete mode 100644 mesalib/src/mapi/mapi/mapi_tmp.h delete mode 100644 mesalib/src/mapi/mapi/sources.mak delete mode 100644 mesalib/src/mapi/mapi/stub.c delete mode 100644 mesalib/src/mapi/mapi/stub.h delete mode 100644 mesalib/src/mapi/mapi/table.c delete mode 100644 mesalib/src/mapi/mapi/table.h delete mode 100644 mesalib/src/mapi/mapi/u_compiler.h delete mode 100644 mesalib/src/mapi/mapi/u_current.c delete mode 100644 mesalib/src/mapi/mapi/u_current.h delete mode 100644 mesalib/src/mapi/mapi/u_execmem.c delete mode 100644 mesalib/src/mapi/mapi/u_execmem.h delete mode 100644 mesalib/src/mapi/mapi/u_macros.h delete mode 100644 mesalib/src/mapi/mapi/u_thread.h create mode 100644 mesalib/src/mapi/mapi_abi.py create mode 100644 mesalib/src/mapi/mapi_glapi.c create mode 100644 mesalib/src/mapi/mapi_tmp.h create mode 100644 mesalib/src/mapi/stub.c create mode 100644 mesalib/src/mapi/stub.h create mode 100644 mesalib/src/mapi/table.c create mode 100644 mesalib/src/mapi/table.h create mode 100644 mesalib/src/mapi/u_compiler.h create mode 100644 mesalib/src/mapi/u_current.c create mode 100644 mesalib/src/mapi/u_current.h create mode 100644 mesalib/src/mapi/u_execmem.c create mode 100644 mesalib/src/mapi/u_execmem.h create mode 100644 mesalib/src/mapi/u_macros.h create mode 100644 mesalib/src/mapi/u_thread.h create mode 100644 mesalib/src/mesa/Makefile.sources delete mode 100644 mesalib/src/mesa/drivers/Makefile.am delete mode 100644 mesalib/src/mesa/main/mfeatures.h delete mode 100644 mesalib/src/mesa/sources.mak create mode 100644 mesalib/src/mesa/state_tracker/st_cb_msaa.c create mode 100644 mesalib/src/mesa/state_tracker/st_cb_msaa.h delete mode 100644 pixman/pixman/refactor delete mode 100644 xorg-server/hw/xfree86/modes/xf86Rename.h create mode 100644 xorg-server/miext/shadow/c2p_core.h create mode 100644 xorg-server/miext/shadow/shafb4.c create mode 100644 xorg-server/miext/shadow/shafb8.c create mode 100644 xorg-server/miext/shadow/shiplan2p4.c create mode 100644 xorg-server/miext/shadow/shiplan2p8.c create mode 100644 xorg-server/xkeyboard-config/keycodes/olpc create mode 100644 xorg-server/xkeyboard-config/po/pt_BR.po diff --git a/apps/xwininfo/configure.ac b/apps/xwininfo/configure.ac index ae0c3df22..b28dd894a 100644 --- a/apps/xwininfo/configure.ac +++ b/apps/xwininfo/configure.ac @@ -23,7 +23,7 @@ dnl Process this file with autoconf to create configure. # Initialize Autoconf AC_PREREQ([2.60]) -AC_INIT([xwininfo], [1.1.2], +AC_INIT([xwininfo], [1.1.3], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xwininfo]) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_HEADERS([config.h]) diff --git a/fontconfig/README b/fontconfig/README index a855f28ff..8120585a7 100644 --- a/fontconfig/README +++ b/fontconfig/README @@ -1,12 +1,29 @@ Fontconfig Font configuration and customization library - Version 2.10.92 (2.11 RC2) - 2013-03-29 + Version 2.10.93 (2.11 RC3) + 2013-05-20 Check INSTALL for compilation and installation instructions. Report bugs to https://bugs.freedesktop.org in the fontconfig module. +2.10.93 (2.11 RC3) + +Akira TAGOH (10): + Bug 62980 - matching native fonts with even :lang=en + Ensure closing fp on error + Obtain fonts data via FT_Face instead of opening a file directly + Revert the previous change and rework to not export freetype API outside fcfreetype.c + documented FC_HASH and FC_POSTSCRIPT_NAME + Bug 63329 - make check fails: .. contents:: :depth: 2 + Use the glob matching for filename + Bug 63452 - conf.d/README outdated + Fix missing OSAtomicCompareAndSwapPtrBarrier() on Mac OS X 10.4 + Bug 63922 - FcFreeTypeQueryFace fails on postscripts fonts loaded from memory + +Sebastian Freundt (1): + build-chain, replace INCLUDES directive by AM_CPPFLAGS + 2.10.92 (2.11 RC2) Akira TAGOH (33): diff --git a/fontconfig/conf.d/Makefile.am b/fontconfig/conf.d/Makefile.am index 77597e57f..e1fab5061 100644 --- a/fontconfig/conf.d/Makefile.am +++ b/fontconfig/conf.d/Makefile.am @@ -21,8 +21,9 @@ # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -DOC_FILES= \ - README +BUILT_SOURCES = README +DOC_SOURCES = README.in +DOC_FILES = $(DOC_SOURCES:.in=) CONF_LINKS = \ 10-scale-bitmap-fonts.conf \ @@ -41,7 +42,8 @@ CONF_LINKS = \ 80-delicious.conf \ 90-synthetic.conf -EXTRA_DIST = $(template_DATA) $(DOC_FILES) +EXTRA_DIST = $(template_DATA) $(DOC_SOURCES) +CLEANFILES = $(DOC_FILES) configdir=$(CONFIGDIR) config_DATA = $(DOC_FILES) @@ -78,6 +80,9 @@ template_DATA = \ 80-delicious.conf \ 90-synthetic.conf +README: $(srcdir)/README.in + sed "s|\@TEMPLATEDIR\@|$(templatedir)|" $< > $@ + install-data-hook: mkdir -p $(DESTDIR)$(configdir) @(echo cd $(DESTDIR)$(configdir); \ diff --git a/fontconfig/conf.d/README b/fontconfig/conf.d/README deleted file mode 100644 index c2fb52c3b..000000000 --- a/fontconfig/conf.d/README +++ /dev/null @@ -1,23 +0,0 @@ -conf.d/README - -Each file in this directory is a fontconfig configuration file. Fontconfig -scans this directory, loading all files of the form [0-9][0-9]*.conf. -These files are normally installed in ../conf.avail and then symlinked here, -allowing them to be easily installed and then enabled/disabled by adjusting -the symlinks. - -The files are loaded in numeric order, the structure of the configuration -has led to the following conventions in usage: - - Files begining with: Contain: - - 00 through 09 Font directories - 10 through 19 system rendering defaults (AA, etc) - 20 through 29 font rendering options - 30 through 39 family substitution - 40 through 49 generic identification, map family->generic - 50 through 59 alternate config file loading - 60 through 69 generic aliases, map generic->family - 70 through 79 select font (adjust which fonts are available) - 80 through 89 match target="scan" (modify scanned patterns) - 90 through 99 font synthesis diff --git a/fontconfig/conf.d/README.in b/fontconfig/conf.d/README.in new file mode 100644 index 000000000..90c45de52 --- /dev/null +++ b/fontconfig/conf.d/README.in @@ -0,0 +1,23 @@ +conf.d/README + +Each file in this directory is a fontconfig configuration file. Fontconfig +scans this directory, loading all files of the form [0-9][0-9]*.conf. +These files are normally installed in @TEMPLATEDIR@ +and then symlinked here, allowing them to be easily installed and then +enabled/disabled by adjusting the symlinks. + +The files are loaded in numeric order, the structure of the configuration +has led to the following conventions in usage: + + Files begining with: Contain: + + 00 through 09 Font directories + 10 through 19 system rendering defaults (AA, etc) + 20 through 29 font rendering options + 30 through 39 family substitution + 40 through 49 generic identification, map family->generic + 50 through 59 alternate config file loading + 60 through 69 generic aliases, map generic->family + 70 through 79 select font (adjust which fonts are available) + 80 through 89 match target="scan" (modify scanned patterns) + 90 through 99 font synthesis diff --git a/fontconfig/configure.ac b/fontconfig/configure.ac index 791937226..0f129db0d 100644 --- a/fontconfig/configure.ac +++ b/fontconfig/configure.ac @@ -33,7 +33,7 @@ dnl This is the package version number, not the shared library dnl version. This same version number must appear in fontconfig/fontconfig.h dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's dnl not possible to extract the version number here from fontconfig.h -AC_INIT([fontconfig], [2.10.92], [https://bugs.freedesktop.org/enger_bug.cgi?product=fontconfig]) +AC_INIT([fontconfig], [2.10.93], [https://bugs.freedesktop.org/enger_bug.cgi?product=fontconfig]) AM_INIT_AUTOMAKE([1.11 parallel-tests dist-bzip2]) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) diff --git a/fontconfig/doc/fontconfig-devel.sgml b/fontconfig/doc/fontconfig-devel.sgml index 05c5c0928..a7b853021 100644 --- a/fontconfig/doc/fontconfig-devel.sgml +++ b/fontconfig/doc/fontconfig-devel.sgml @@ -196,6 +196,9 @@ convenience for the application's rendering mechanism. default value of familylang, stylelang and fullnamelang prgname FC_PRGNAME String Name of the running program + hash FC_HASH String SHA256 hash value of the font data + with "sha256:" prefix. + postscriptname FC_POSTSCRIPT_NAME String Font name in PostScript diff --git a/fontconfig/fontconfig/fontconfig.h b/fontconfig/fontconfig/fontconfig.h index 361ca4f9e..422187b3c 100644 --- a/fontconfig/fontconfig/fontconfig.h +++ b/fontconfig/fontconfig/fontconfig.h @@ -52,7 +52,7 @@ typedef int FcBool; #define FC_MAJOR 2 #define FC_MINOR 10 -#define FC_REVISION 92 +#define FC_REVISION 93 #define FC_VERSION ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION)) diff --git a/fontconfig/src/fcatomic.h b/fontconfig/src/fcatomic.h index a76431139..362e52164 100644 --- a/fontconfig/src/fcatomic.h +++ b/fontconfig/src/fcatomic.h @@ -70,13 +70,25 @@ typedef LONG fc_atomic_int_t; #elif !defined(FC_NO_MT) && defined(__APPLE__) #include +#ifdef __MAC_OS_X_MIN_REQUIRED +#include +#elif defined(__IPHONE_OS_MIN_REQUIRED) +#include +#endif typedef int fc_atomic_int_t; #define fc_atomic_int_add(AI, V) (OSAtomicAdd32Barrier ((V), &(AI)) - (V)) #define fc_atomic_ptr_get(P) (OSMemoryBarrier (), (void *) *(P)) +#if (MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4 || __IPHONE_VERSION_MIN_REQUIRED >= 20100) #define fc_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwapPtrBarrier ((void *) (O), (void *) (N), (void **) (P)) - +#else +#if __ppc64__ || __x86_64__ +#define fc_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwap64Barrier ((int64_t) (O), (int64_t) (N), (int64_t*) (P)) +#else +#define fc_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwap32Barrier ((int32_t) (O), (int32_t) (N), (int32_t*) (P)) +#endif +#endif #elif !defined(FC_NO_MT) && defined(HAVE_INTEL_ATOMIC_PRIMITIVES) diff --git a/fontconfig/src/fccfg.c b/fontconfig/src/fccfg.c index 7da50b50f..fcdf73efe 100644 --- a/fontconfig/src/fccfg.c +++ b/fontconfig/src/fccfg.c @@ -2210,50 +2210,6 @@ FcConfigGlobAdd (FcConfig *config, return FcStrSetAdd (set, glob); } -static FcBool -FcConfigGlobMatch (const FcChar8 *glob, - const FcChar8 *string) -{ - FcChar8 c; - - while ((c = *glob++)) - { - switch (c) { - case '*': - /* short circuit common case */ - if (!*glob) - return FcTrue; - /* short circuit another common case */ - if (strchr ((char *) glob, '*') == 0) - { - size_t l1, l2; - - l1 = strlen ((char *) string); - l2 = strlen ((char *) glob); - if (l1 < l2) - return FcFalse; - string += (l1 - l2); - } - while (*string) - { - if (FcConfigGlobMatch (glob, string)) - return FcTrue; - string++; - } - return FcFalse; - case '?': - if (*string++ == '\0') - return FcFalse; - break; - default: - if (*string++ != c) - return FcFalse; - break; - } - } - return *string == '\0'; -} - static FcBool FcConfigGlobsMatch (const FcStrSet *globs, const FcChar8 *string) @@ -2261,7 +2217,7 @@ FcConfigGlobsMatch (const FcStrSet *globs, int i; for (i = 0; i < globs->num; i++) - if (FcConfigGlobMatch (globs->strs[i], string)) + if (FcStrGlobMatch (globs->strs[i], string)) return FcTrue; return FcFalse; } diff --git a/fontconfig/src/fcfreetype.c b/fontconfig/src/fcfreetype.c index 8a037c059..02e85cb05 100644 --- a/fontconfig/src/fcfreetype.c +++ b/fontconfig/src/fcfreetype.c @@ -1104,7 +1104,10 @@ FcFreeTypeQueryFace (const FT_Face face, char psname[256]; const char *tmp; - FcChar8 *hashstr; + FcChar8 *hashstr = NULL; + char *fontdata = NULL; + FT_Error err; + FT_ULong len = 0, alen; pat = FcPatternCreate (); if (!pat) @@ -1662,12 +1665,36 @@ FcFreeTypeQueryFace (const FT_Face face, if (!FcPatternAddBool (pat, FC_DECORATIVE, decorative)) goto bail1; - hashstr = FcHashGetSHA256DigestFromFile (file); - if (!hashstr) - goto bail1; - if (!FcPatternAddString (pat, FC_HASH, hashstr)) - goto bail1; - free (hashstr); + err = FT_Load_Sfnt_Table (face, 0, 0, NULL, &len); + if (err == FT_Err_Ok) + { + alen = (len + 63) & ~63; + fontdata = malloc (alen); + if (!fontdata) + goto bail3; + err = FT_Load_Sfnt_Table (face, 0, 0, (FT_Byte *)fontdata, &len); + if (err != FT_Err_Ok) + goto bail3; + memset (&fontdata[len], 0, alen - len); + hashstr = FcHashGetSHA256DigestFromMemory (fontdata, len); + } + else if (err == FT_Err_Invalid_Face_Handle) + { + /* font may not support SFNT. falling back to + * read the font data from file directly + */ + hashstr = FcHashGetSHA256DigestFromFile (file); + } + else + { + goto bail3; + } + if (hashstr) + { + if (!FcPatternAddString (pat, FC_HASH, hashstr)) + goto bail1; + } +bail3: /* * Compute the unicode coverage for the font @@ -1756,6 +1783,10 @@ FcFreeTypeQueryFace (const FT_Face face, bail2: FcCharSetDestroy (cs); bail1: + if (hashstr) + free (hashstr); + if (fontdata) + free (fontdata); FcPatternDestroy (pat); bail0: return NULL; diff --git a/fontconfig/src/fchash.c b/fontconfig/src/fchash.c index 827b20f9f..92585a632 100644 --- a/fontconfig/src/fchash.c +++ b/fontconfig/src/fchash.c @@ -220,7 +220,7 @@ FcHashGetSHA256DigestFromFile (const FcChar8 *filename) ret = FcHashInitSHA256Digest (); if (!ret) - return NULL; + goto bail0; while (!feof (fp)) { @@ -261,5 +261,60 @@ FcHashGetSHA256DigestFromFile (const FcChar8 *filename) bail0: fclose (fp); + return NULL; } + +FcChar8 * +FcHashGetSHA256DigestFromMemory (const char *fontdata, + size_t length) +{ + char ibuf[64]; + FcChar32 *ret; + size_t i = 0; + + ret = FcHashInitSHA256Digest (); + if (!ret) + return NULL; + + while (i <= length) + { + if ((length - i) < 64) + { + long v; + size_t n; + + /* add a padding */ + n = length - i; + if (n > 0) + memcpy (ibuf, &fontdata[i], n); + memset (&ibuf[n], 0, 64 - n); + ibuf[n] = 0x80; + if ((64 - n) < 9) + { + /* process a block once */ + FcHashComputeSHA256Digest (ret, ibuf); + memset (ibuf, 0, 64); + } + /* set input size at the end */ + v = length * 8; + ibuf[63 - 0] = v & 0xff; + ibuf[63 - 1] = (v >> 8) & 0xff; + ibuf[63 - 2] = (v >> 16) & 0xff; + ibuf[63 - 3] = (v >> 24) & 0xff; + ibuf[63 - 4] = (v >> 32) & 0xff; + ibuf[63 - 5] = (v >> 40) & 0xff; + ibuf[63 - 6] = (v >> 48) & 0xff; + ibuf[63 - 7] = (v >> 56) & 0xff; + FcHashComputeSHA256Digest (ret, ibuf); + break; + } + else + { + FcHashComputeSHA256Digest (ret, &fontdata[i]); + } + i += 64; + } + + return FcHashSHA256ToString (ret); +} diff --git a/fontconfig/src/fcint.h b/fontconfig/src/fcint.h index c45075ecc..65bf3330b 100644 --- a/fontconfig/src/fcint.h +++ b/fontconfig/src/fcint.h @@ -818,9 +818,14 @@ FcFontSetSerialize (FcSerialize *serialize, const FcFontSet * s); FcPrivate FcChar8 * FcHashGetSHA256Digest (const FcChar8 *input_strings, size_t len); + FcPrivate FcChar8 * FcHashGetSHA256DigestFromFile (const FcChar8 *filename); +FcPrivate FcChar8 * +FcHashGetSHA256DigestFromMemory (const char *fontdata, + size_t length); + /* fcinit.c */ FcPrivate FcConfig * FcInitLoadOwnConfig (FcConfig *config); @@ -1084,6 +1089,10 @@ FcStrContainsWord (const FcChar8 *s1, const FcChar8 *s2); FcPrivate int FcStrMatchIgnoreCaseAndDelims (const FcChar8 *s1, const FcChar8 *s2, const FcChar8 *delims); +FcPrivate FcBool +FcStrGlobMatch (const FcChar8 *glob, + const FcChar8 *string); + FcPrivate FcBool FcStrUsesHome (const FcChar8 *s); diff --git a/fontconfig/src/fcmatch.c b/fontconfig/src/fcmatch.c index 2d7b79840..10976d6e8 100644 --- a/fontconfig/src/fcmatch.c +++ b/fontconfig/src/fcmatch.c @@ -191,17 +191,26 @@ FcCompareSize (FcValue *value1, FcValue *value2) static double FcCompareFilename (FcValue *v1, FcValue *v2) { - const FcChar8 *s1 = FcValueString (v1), *s2 = FcValueString (v2); - if (FcStrCmp (s1, s2) == 0) - return 0.0; - else if (FcStrCmpIgnoreCase (s1, s2) == 0) - return 1.0; - else if (FcStrRegexCmp (s2, s1)) - return 2.0; - else if (FcStrRegexCmpIgnoreCase (s2, s1)) - return 3.0; - else - return 4.0; + const FcChar8 *s1 = FcValueString (v1), *s2 = FcValueString (v2); + if (FcStrCmp (s1, s2) == 0) + return 0.0; + else if (FcStrCmpIgnoreCase (s1, s2) == 0) + return 1.0; + else if (FcStrGlobMatch (s1, s2)) + return 2.0; + else + return 3.0; +} + +static double +FcCompareHash (FcValue *v1, FcValue *v2) +{ + const FcChar8 *s1 = FcValueString (v1), *s2 = FcValueString (v2); + + /* Do not match an empty string */ + if (!s1 || !s2 || !s1[0] || !s2[0]) + return 1.0; + return FcCompareString (v1, v2); } #define PRI_NULL(n) \ @@ -217,6 +226,7 @@ FcCompareFilename (FcValue *v1, FcValue *v2) #define PRI_FcCompareCharSet(n) PRI1(n) #define PRI_FcCompareLang(n) PRI1(n) #define PRI_FcComparePostScript(n) PRI1(n) +#define PRI_FcCompareHash(n) PRI1(n) #define FC_OBJECT(NAME, Type, Cmp) PRI_##Cmp(NAME) diff --git a/fontconfig/src/fcname.c b/fontconfig/src/fcname.c index 6dd4d4948..a52534548 100644 --- a/fontconfig/src/fcname.c +++ b/fontconfig/src/fcname.c @@ -316,6 +316,12 @@ FcNameFindNext (const FcChar8 *cur, const char *delim, FcChar8 *save, FcChar8 *l { FcChar8 c; + while ((c = *cur)) + { + if (!isspace (c)) + break; + ++cur; + } while ((c = *cur)) { if (c == '\\') diff --git a/fontconfig/src/fcobjs.h b/fontconfig/src/fcobjs.h index b7354012d..682fe6ad3 100644 --- a/fontconfig/src/fcobjs.h +++ b/fontconfig/src/fcobjs.h @@ -43,6 +43,6 @@ FC_OBJECT (LCD_FILTER, FcTypeInteger, NULL) FC_OBJECT (NAMELANG, FcTypeString, NULL) FC_OBJECT (FONT_FEATURES, FcTypeString, NULL) FC_OBJECT (PRGNAME, FcTypeString, NULL) -FC_OBJECT (HASH, FcTypeString, FcCompareString) +FC_OBJECT (HASH, FcTypeString, FcCompareHash) FC_OBJECT (POSTSCRIPT_NAME, FcTypeString, FcComparePostScript) /* ^-------------- Add new objects here. */ diff --git a/fontconfig/src/fcstr.c b/fontconfig/src/fcstr.c index 339a3465d..3a32031a2 100644 --- a/fontconfig/src/fcstr.c +++ b/fontconfig/src/fcstr.c @@ -459,6 +459,50 @@ FcStrMatchIgnoreCaseAndDelims (const FcChar8 *s1, const FcChar8 *s2, const FcCha return w1.src - s1 - 1; } +FcBool +FcStrGlobMatch (const FcChar8 *glob, + const FcChar8 *string) +{ + FcChar8 c; + + while ((c = *glob++)) + { + switch (c) { + case '*': + /* short circuit common case */ + if (!*glob) + return FcTrue; + /* short circuit another common case */ + if (strchr ((char *) glob, '*') == 0) + { + size_t l1, l2; + + l1 = strlen ((char *) string); + l2 = strlen ((char *) glob); + if (l1 < l2) + return FcFalse; + string += (l1 - l2); + } + while (*string) + { + if (FcStrGlobMatch (glob, string)) + return FcTrue; + string++; + } + return FcFalse; + case '?': + if (*string++ == '\0') + return FcFalse; + break; + default: + if (*string++ != c) + return FcFalse; + break; + } + } + return *string == '\0'; +} + const FcChar8 * FcStrStrIgnoreCase (const FcChar8 *s1, const FcChar8 *s2) { diff --git a/libX11/README b/libX11/README index befb5a6d9..e551acb52 100644 --- a/libX11/README +++ b/libX11/README @@ -1,9 +1,10 @@ libX11 - Core X11 protocol client library Documentation for this library can be found in the included man pages, -the xlib spec from the doc/xorg-docs module, also available at: +and in the Xlib spec from the specs subdirectory, also available at: - http://xorg.freedesktop.org/releases/X11R7.0/doc/PDF/xlib.pdf + http://www.x.org/releases/current/doc/libX11/libX11/libX11.html + http://www.x.org/releases/current/doc/libX11/libX11/libX11.pdf and the O'Reilly Xlib books, which they have made freely available online, though only for older versions of X11: diff --git a/libX11/configure.ac b/libX11/configure.ac index 7734219f4..f533f3c4b 100644 --- a/libX11/configure.ac +++ b/libX11/configure.ac @@ -1,7 +1,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) -AC_INIT([libX11], [1.5.99.901], +AC_INIT([libX11], [1.6.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libX11]) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_HEADERS([src/config.h include/X11/XlibConf.h]) diff --git a/libX11/include/X11/Xlibint.h b/libX11/include/X11/Xlibint.h index 06395b32e..acbad6beb 100644 --- a/libX11/include/X11/Xlibint.h +++ b/libX11/include/X11/Xlibint.h @@ -832,6 +832,15 @@ typedef struct _XExten { /* private to extension mechanism */ struct _XExten *next_flush; /* next in list of those with flushes */ } _XExtension; +/* Temporary definition until we can depend on an xproto release with it */ +#ifdef _X_COLD +# define _XLIB_COLD _X_COLD +#elif defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 403) /* 4.3+ */ +# define _XLIB_COLD __attribute__((__cold__)) +#else +# define _XLIB_COLD /* nothing */ +#endif + /* extension hooks */ #ifdef DataRoutineIsProcedure @@ -854,7 +863,14 @@ extern int (*_XErrorFunction)( extern void _XEatData( Display* /* dpy */, unsigned long /* n */ -); +) _XLIB_COLD; +extern void _XEatDataWords( + Display* /* dpy */, + unsigned long /* n */ +) _XLIB_COLD; +#if defined(__SUNPRO_C) /* Studio compiler alternative to "cold" attribute */ +# pragma rarely_called(_XEatData, _XEatDataWords) +#endif extern char *_XAllocScratch( Display* /* dpy */, unsigned long /* nbytes */ diff --git a/libX11/man/XCreateGC.man b/libX11/man/XCreateGC.man index 62a2f00c1..de0d03933 100644 --- a/libX11/man/XCreateGC.man +++ b/libX11/man/XCreateGC.man @@ -460,7 +460,7 @@ are: .\" and operation. .\".CP T 1 .\"Display Functions -.TS H +.TS lw(1.5i) cw(.5i) lw(2i). _ .sp 6p @@ -469,7 +469,6 @@ Function Name Value Operation .sp 6p _ .sp 6p -.TH T{ .ZN GXclear T} T{ diff --git a/libX11/modules/im/ximcp/Makefile.am b/libX11/modules/im/ximcp/Makefile.am index 16a6ca878..8aae839cc 100644 --- a/libX11/modules/im/ximcp/Makefile.am +++ b/libX11/modules/im/ximcp/Makefile.am @@ -6,6 +6,7 @@ AM_CPPFLAGS= \ -I$(top_srcdir)/src/xcms \ -I$(top_srcdir)/src/xkb \ -I$(top_srcdir)/src/xlibi18n \ + -I$(top_srcdir)/src \ -D_BSD_SOURCE -DXIM_t -DTRANS_CLIENT AM_CFLAGS= \ diff --git a/libX11/modules/im/ximcp/imLcPrs.c b/libX11/modules/im/ximcp/imLcPrs.c index 4e54385b5..f3627a0d1 100644 --- a/libX11/modules/im/ximcp/imLcPrs.c +++ b/libX11/modules/im/ximcp/imLcPrs.c @@ -41,6 +41,8 @@ OR PERFORMANCE OF THIS SOFTWARE. #include "Ximint.h" #include #include +#include +#include "pathmax.h" #define XLC_BUFSIZE 256 @@ -56,6 +58,8 @@ extern int _Xmbstoutf8( int len ); +static void parsestringfile(FILE *fp, Xim im, int depth); + /* * Parsing File Format: * @@ -304,9 +308,9 @@ static char* TransFileName(Xim im, char *name) { char *home = NULL, *lcCompose = NULL; - char dir[XLC_BUFSIZE]; - char *i = name, *ret, *j; - int l = 0; + char dir[XLC_BUFSIZE] = ""; + char *i = name, *ret = NULL, *j; + size_t l = 0; while (*i) { if (*i == '%') { @@ -316,30 +320,51 @@ TransFileName(Xim im, char *name) l++; break; case 'H': - home = getenv("HOME"); - if (home) - l += strlen(home); + if (home == NULL) + home = getenv("HOME"); + if (home) { + size_t Hsize = strlen(home); + if (Hsize > PATH_MAX) + /* your home directory length is ridiculous */ + goto end; + l += Hsize; + } break; case 'L': if (lcCompose == NULL) lcCompose = _XlcFileName(im->core.lcd, COMPOSE_FILE); - if (lcCompose) - l += strlen(lcCompose); + if (lcCompose) { + size_t Lsize = strlen(lcCompose); + if (Lsize > PATH_MAX) + /* your compose pathname length is ridiculous */ + goto end; + l += Lsize; + } break; case 'S': - xlocaledir(dir, XLC_BUFSIZE); - l += strlen(dir); + if (dir[0] == '\0') + xlocaledir(dir, XLC_BUFSIZE); + if (dir[0]) { + size_t Ssize = strlen(dir); + if (Ssize > PATH_MAX) + /* your locale directory path length is ridiculous */ + goto end; + l += Ssize; + } break; } } else { l++; } i++; + if (l > PATH_MAX) + /* your expanded path length is ridiculous */ + goto end; } j = ret = Xmalloc(l+1); if (ret == NULL) - return ret; + goto end; i = name; while (*i) { if (*i == '%') { @@ -371,6 +396,7 @@ TransFileName(Xim im, char *name) } } *j = '\0'; +end: Xfree(lcCompose); return ret; } @@ -423,7 +449,8 @@ static int parseline( FILE *fp, Xim im, - char* tokenbuf) + char* tokenbuf, + int depth) { int token; DTModifier modifier_mask; @@ -470,11 +497,13 @@ parseline( goto error; if ((filename = TransFileName(im, tokenbuf)) == NULL) goto error; + if (++depth > 100) + goto error; infp = _XFopenFile(filename, "r"); Xfree(filename); if (infp == NULL) goto error; - _XimParseStringFile(infp, im); + parsestringfile(infp, im, depth); fclose(infp); return (0); } else if ((token == KEY) && (strcmp("None", tokenbuf) == 0)) { @@ -667,6 +696,15 @@ void _XimParseStringFile( FILE *fp, Xim im) +{ + parsestringfile(fp, im, 0); +} + +static void +parsestringfile( + FILE *fp, + Xim im, + int depth) { char tb[8192]; char* tbp; @@ -674,11 +712,13 @@ _XimParseStringFile( if (fstat (fileno (fp), &st) != -1) { unsigned long size = (unsigned long) st.st_size; + if (st.st_size >= INT_MAX) + return; if (size <= sizeof tb) tbp = tb; else tbp = malloc (size); if (tbp != NULL) { - while (parseline(fp, im, tbp) >= 0) {} + while (parseline(fp, im, tbp, depth) >= 0) {} if (tbp != tb) free (tbp); } } diff --git a/libX11/modules/im/ximcp/imTrX.c b/libX11/modules/im/ximcp/imTrX.c index 1412d7046..76ff20e55 100644 --- a/libX11/modules/im/ximcp/imTrX.c +++ b/libX11/modules/im/ximcp/imTrX.c @@ -372,7 +372,7 @@ _XimXGetReadData( XFree(prop_ret); return False; } - if (buf_len >= length) { + if (buf_len >= (int)nitems) { (void)memcpy(buf, prop_ret, (int)nitems); *ret_len = (int)nitems; if (bytes_after_ret > 0) { diff --git a/libX11/nls/en_US.UTF-8/Compose.pre b/libX11/nls/en_US.UTF-8/Compose.pre index 8b45d920d..ab8237643 100644 --- a/libX11/nls/en_US.UTF-8/Compose.pre +++ b/libX11/nls/en_US.UTF-8/Compose.pre @@ -618,6 +618,7 @@ XCOMM Part 3 : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS : "Ï" Idiaeresis # LATIN CAPITAL LETTER I WITH DIAERESIS + : "J́" # LATIN CAPITAL LETTER J U004A with COMBINING ACUTE ACCENT U0301 : "Ð" ETH # LATIN CAPITAL LETTER ETH : "Ñ" Ntilde # LATIN CAPITAL LETTER N WITH TILDE : "Ñ" Ntilde # LATIN CAPITAL LETTER N WITH TILDE @@ -738,6 +739,7 @@ XCOMM Part 3 : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS : "ï" idiaeresis # LATIN SMALL LETTER I WITH DIAERESIS + : "j́" # LATIN SMALL LETTER J U006A with COMBINING ACUTE ACCENT U0301 : "ð" eth # LATIN SMALL LETTER ETH : "ñ" ntilde # LATIN SMALL LETTER N WITH TILDE : "ñ" ntilde # LATIN SMALL LETTER N WITH TILDE diff --git a/libX11/src/AllCells.c b/libX11/src/AllCells.c index ddd9c22ef..6e97e1181 100644 --- a/libX11/src/AllCells.c +++ b/libX11/src/AllCells.c @@ -53,8 +53,13 @@ Status XAllocColorCells( status = _XReply(dpy, (xReply *)&rep, 0, xFalse); if (status) { - _XRead32 (dpy, (long *) pixels, 4L * (long) (rep.nPixels)); - _XRead32 (dpy, (long *) masks, 4L * (long) (rep.nMasks)); + if ((rep.nPixels > ncolors) || (rep.nMasks > nplanes)) { + _XEatDataWords(dpy, rep.length); + status = 0; /* Failure */ + } else { + _XRead32 (dpy, (long *) pixels, 4L * (long) (rep.nPixels)); + _XRead32 (dpy, (long *) masks, 4L * (long) (rep.nMasks)); + } } UnlockDisplay(dpy); diff --git a/libX11/src/Cmap.h b/libX11/src/Cmap.h index 062b5383b..78cc3ea67 100644 --- a/libX11/src/Cmap.h +++ b/libX11/src/Cmap.h @@ -2,6 +2,8 @@ #ifndef _CMAP_H_ #define _CMAP_H_ +#include + extern void _XcmsDeleteCmapRec( Display *dpy, diff --git a/libX11/src/Context.c b/libX11/src/Context.c index 79ae7d66c..4bb465b1a 100644 --- a/libX11/src/Context.c +++ b/libX11/src/Context.c @@ -111,7 +111,7 @@ static void ResizeTable(DB db) otable = db->table; for (i = INITHASHMASK+1; (i + i) < db->numentries; ) i += i; - db->table = (TableEntry *) Xcalloc((unsigned)i, sizeof(TableEntry)); + db->table = Xcalloc(i, sizeof(TableEntry)); if (!db->table) { db->table = otable; return; @@ -180,11 +180,11 @@ int XSaveContext( UnlockDisplay(display); } if (!db) { - db = (DB) Xmalloc(sizeof(DBRec)); + db = Xmalloc(sizeof(DBRec)); if (!db) return XCNOMEM; db->mask = INITHASHMASK; - db->table = (TableEntry *)Xcalloc(db->mask + 1, sizeof(TableEntry)); + db->table = Xcalloc(db->mask + 1, sizeof(TableEntry)); if (!db->table) { Xfree((char *)db); return XCNOMEM; @@ -210,7 +210,7 @@ int XSaveContext( return 0; } } - entry = (TableEntry) Xmalloc(sizeof(TableEntryRec)); + entry = Xmalloc(sizeof(TableEntryRec)); if (!entry) return XCNOMEM; entry->rid = rid; diff --git a/libX11/src/Cr.h b/libX11/src/Cr.h index 800c9ab1c..635e9e452 100644 --- a/libX11/src/Cr.h +++ b/libX11/src/Cr.h @@ -2,6 +2,8 @@ #ifndef _CR_H_ #define _CR_H_ +#include + extern int _XUpdateGCCache( register GC gc, register unsigned long mask, diff --git a/libX11/src/CrGC.c b/libX11/src/CrGC.c index 11de94c1f..2d5f17c00 100644 --- a/libX11/src/CrGC.c +++ b/libX11/src/CrGC.c @@ -72,7 +72,7 @@ GC XCreateGC ( register _XExtension *ext; LockDisplay(dpy); - if ((gc = (GC)Xmalloc (sizeof(struct _XGC))) == NULL) { + if ((gc = Xmalloc (sizeof(struct _XGC))) == NULL) { UnlockDisplay(dpy); SyncHandle(); return (NULL); diff --git a/libX11/src/Depths.c b/libX11/src/Depths.c index f49655cb2..a8b719d00 100644 --- a/libX11/src/Depths.c +++ b/libX11/src/Depths.c @@ -49,7 +49,7 @@ int *XListDepths ( register Depth *dp; register int i; - depths = (int *) Xmalloc (count * sizeof(int)); + depths = Xmalloc (count * sizeof(int)); if (!depths) return NULL; for (i = 0, dp = scr->depths; i < count; i++, dp++) depths[i] = dp->depth; diff --git a/libX11/src/FSWrap.c b/libX11/src/FSWrap.c index 910e602f4..12d0406ba 100644 --- a/libX11/src/FSWrap.c +++ b/libX11/src/FSWrap.c @@ -112,7 +112,7 @@ _XParseBaseFontNameList( if (!*ptr) break; } - if (!(list = (char **) Xmalloc((unsigned)sizeof(char *) * (*num + 1)))) { + if (!(list = Xmalloc(sizeof(char *) * (*num + 1)))) { Xfree(psave); return (char **)NULL; } @@ -133,7 +133,7 @@ copy_string_list( if (string_list == NULL || list_count <= 0) return (char **) NULL; - string_list_ret = (char **) Xmalloc(sizeof(char *) * list_count); + string_list_ret = Xmalloc(sizeof(char *) * list_count); if (string_list_ret == NULL) return (char **) NULL; @@ -142,7 +142,7 @@ copy_string_list( for (length = 0; count-- > 0; list_src++) length += strlen(*list_src) + 1; - dst = (char *) Xmalloc(length); + dst = Xmalloc(length); if (dst == NULL) { Xfree(string_list_ret); return (char **) NULL; diff --git a/libX11/src/Font.c b/libX11/src/Font.c index 25e1790c8..a32f740bd 100644 --- a/libX11/src/Font.c +++ b/libX11/src/Font.c @@ -31,6 +31,7 @@ authorization from the X Consortium and the XFree86 Project. #include #endif #include "Xlibint.h" +#include #if defined(XF86BIGFONT) #define USE_XF86BIGFONT @@ -183,7 +184,8 @@ _XQueryFont ( unsigned long seq) { register XFontStruct *fs; - register long nbytes; + unsigned long nbytes; + unsigned long reply_left; /* unused data words left in reply buffer */ xQueryFontReply reply; register xResourceReq *req; register _XExtension *ext; @@ -211,9 +213,10 @@ _XQueryFont ( } if (seq) DeqAsyncHandler(dpy, &async); - if (! (fs = (XFontStruct *) Xmalloc (sizeof (XFontStruct)))) { - _XEatData(dpy, (unsigned long)(reply.nFontProps * SIZEOF(xFontProp) + - reply.nCharInfos * SIZEOF(xCharInfo))); + reply_left = reply.length - + ((SIZEOF(xQueryFontReply) - SIZEOF(xReply)) >> 2); + if (! (fs = Xmalloc (sizeof (XFontStruct)))) { + _XEatDataWords(dpy, reply_left); return (XFontStruct *)NULL; } fs->ext_data = NULL; @@ -239,16 +242,19 @@ _XQueryFont ( */ fs->properties = NULL; if (fs->n_properties > 0) { - nbytes = reply.nFontProps * sizeof(XFontProp); - fs->properties = (XFontProp *) Xmalloc ((unsigned) nbytes); + /* nFontProps is a CARD16 */ nbytes = reply.nFontProps * SIZEOF(xFontProp); + if ((nbytes >> 2) <= reply_left) { + size_t pbytes = reply.nFontProps * sizeof(XFontProp); + fs->properties = Xmalloc (pbytes); + } if (! fs->properties) { Xfree((char *) fs); - _XEatData(dpy, (unsigned long) - (nbytes + reply.nCharInfos * SIZEOF(xCharInfo))); + _XEatDataWords(dpy, reply_left); return (XFontStruct *)NULL; } _XRead32 (dpy, (long *)fs->properties, nbytes); + reply_left -= (nbytes >> 2); } /* * If no characters in font, then it is a bad font, but @@ -256,16 +262,21 @@ _XQueryFont ( */ fs->per_char = NULL; if (reply.nCharInfos > 0){ - nbytes = reply.nCharInfos * sizeof(XCharStruct); - if (! (fs->per_char = (XCharStruct *) Xmalloc ((unsigned) nbytes))) { + /* nCharInfos is a CARD32 */ + if (reply.nCharInfos < (INT_MAX / sizeof(XCharStruct))) { + nbytes = reply.nCharInfos * SIZEOF(xCharInfo); + if ((nbytes >> 2) <= reply_left) { + size_t cibytes = reply.nCharInfos * sizeof(XCharStruct); + fs->per_char = Xmalloc (cibytes); + } + } + if (! fs->per_char) { if (fs->properties) Xfree((char *) fs->properties); Xfree((char *) fs); - _XEatData(dpy, (unsigned long) - (reply.nCharInfos * SIZEOF(xCharInfo))); + _XEatDataWords(dpy, reply_left); return (XFontStruct *)NULL; } - nbytes = reply.nCharInfos * SIZEOF(xCharInfo); _XRead16 (dpy, (char *)fs->per_char, nbytes); } @@ -312,7 +323,7 @@ _XF86BigfontCodes ( if (pData) return (XF86BigfontCodes *) pData->private_data; - pData = (XExtData *) Xmalloc(sizeof(XExtData) + sizeof(XF86BigfontCodes)); + pData = Xmalloc(sizeof(XExtData) + sizeof(XF86BigfontCodes)); if (!pData) { /* Out of luck. */ return (XF86BigfontCodes *) NULL; @@ -392,7 +403,8 @@ _XF86BigfontQueryFont ( unsigned long seq) { register XFontStruct *fs; - register long nbytes; + unsigned long nbytes; + unsigned long reply_left; /* unused data left in reply buffer */ xXF86BigfontQueryFontReply reply; register xXF86BigfontQueryFontReq *req; register _XExtension *ext; @@ -445,13 +457,10 @@ _XF86BigfontQueryFont ( DeqAsyncHandler(dpy, &async2); if (seq) DeqAsyncHandler(dpy, &async1); - if (! (fs = (XFontStruct *) Xmalloc (sizeof (XFontStruct)))) { - _XEatData(dpy, - reply.nFontProps * SIZEOF(xFontProp) - + (reply.nCharInfos > 0 && reply.shmid == (CARD32)(-1) - ? reply.nUniqCharInfos * SIZEOF(xCharInfo) - + (reply.nCharInfos+1)/2 * 2 * sizeof(CARD16) - : 0)); + reply_left = reply.length - + ((SIZEOF(xXF86BigfontQueryFontReply) - SIZEOF(xReply)) >> 2); + if (! (fs = Xmalloc (sizeof (XFontStruct)))) { + _XEatDataWords(dpy, reply_left); return (XFontStruct *)NULL; } fs->ext_data = NULL; @@ -477,23 +486,33 @@ _XF86BigfontQueryFont ( */ fs->properties = NULL; if (fs->n_properties > 0) { - nbytes = reply.nFontProps * sizeof(XFontProp); - fs->properties = (XFontProp *) Xmalloc ((unsigned) nbytes); + /* nFontProps is a CARD16 */ nbytes = reply.nFontProps * SIZEOF(xFontProp); + if ((nbytes >> 2) <= reply_left) { + size_t pbytes = reply.nFontProps * sizeof(XFontProp); + fs->properties = Xmalloc (pbytes); + } if (! fs->properties) { Xfree((char *) fs); - _XEatData(dpy, - nbytes - + (reply.nCharInfos > 0 && reply.shmid == (CARD32)(-1) - ? reply.nUniqCharInfos * SIZEOF(xCharInfo) - + (reply.nCharInfos+1)/2 * 2 * sizeof(CARD16) - : 0)); + _XEatDataWords(dpy, reply_left); return (XFontStruct *)NULL; } _XRead32 (dpy, (long *)fs->properties, nbytes); + reply_left -= (nbytes >> 2); } fs->per_char = NULL; +#ifndef LONG64 + /* compares each part to half the maximum, which should be far more than + any real font needs, so the combined total doesn't overflow either */ + if (reply.nUniqCharInfos > ((ULONG_MAX / 2) / SIZEOF(xCharInfo)) || + reply.nCharInfos > ((ULONG_MAX / 2) / sizeof(CARD16))) { + Xfree((char *) fs->properties); + Xfree((char *) fs); + _XEatDataWords(dpy, reply_left); + return (XFontStruct *)NULL; + } +#endif if (reply.nCharInfos > 0) { /* fprintf(stderr, "received font metrics, nCharInfos = %d, nUniqCharInfos = %d, shmid = %d\n", reply.nCharInfos, reply.nUniqCharInfos, reply.shmid); */ if (reply.shmid == (CARD32)(-1)) { @@ -503,18 +522,18 @@ _XF86BigfontQueryFont ( nbytes = reply.nUniqCharInfos * SIZEOF(xCharInfo) + (reply.nCharInfos+1)/2 * 2 * sizeof(CARD16); - pUniqCI = (xCharInfo *) Xmalloc (nbytes); + pUniqCI = Xmalloc (nbytes); if (!pUniqCI) { if (fs->properties) Xfree((char *) fs->properties); Xfree((char *) fs); - _XEatData(dpy, nbytes); + _XEatDataWords(dpy, reply_left); return (XFontStruct *)NULL; } - if (! (fs->per_char = (XCharStruct *) Xmalloc (reply.nCharInfos * sizeof(XCharStruct)))) { + if (! (fs->per_char = Xmalloc (reply.nCharInfos * sizeof(XCharStruct)))) { Xfree((char *) pUniqCI); if (fs->properties) Xfree((char *) fs->properties); Xfree((char *) fs); - _XEatData(dpy, nbytes); + _XEatDataWords(dpy, reply_left); return (XFontStruct *)NULL; } _XRead16 (dpy, (char *) pUniqCI, nbytes); @@ -537,7 +556,7 @@ _XF86BigfontQueryFont ( XEDataObject fs_union; char *addr; - pData = (XExtData *) Xmalloc(sizeof(XExtData)); + pData = Xmalloc(sizeof(XExtData)); if (!pData) { if (fs->properties) Xfree((char *) fs->properties); Xfree((char *) fs); @@ -569,6 +588,7 @@ _XF86BigfontQueryFont ( if (!(extcodes->serverCapabilities & CAP_VerifiedLocal)) { struct shmid_ds buf; if (!(shmctl(reply.shmid, IPC_STAT, &buf) >= 0 + && reply.nCharInfos < (LONG_MAX / sizeof(XCharStruct)) && buf.shm_segsz >= reply.shmsegoffset + reply.nCharInfos * sizeof(XCharStruct) + sizeof(CARD32) && *(CARD32 *)(addr + reply.shmsegoffset + reply.nCharInfos * sizeof(XCharStruct)) == extcodes->serverSignature)) { shmdt(addr); diff --git a/libX11/src/FontInfo.c b/libX11/src/FontInfo.c index fb296b8a8..0cb5b1910 100644 --- a/libX11/src/FontInfo.c +++ b/libX11/src/FontInfo.c @@ -28,6 +28,7 @@ in this Software without prior written authorization from The Open Group. #include #endif #include "Xlibint.h" +#include #if defined(XF86BIGFONT) #define USE_XF86BIGFONT @@ -45,10 +46,11 @@ int maxNames, int *actualCount, /* RETURN */ XFontStruct **info) /* RETURN */ { - register long nbytes; + unsigned long nbytes; + unsigned long reply_left; /* unused data left in reply buffer */ register int i; register XFontStruct *fs; - register int size = 0; + unsigned int size = 0; XFontStruct *finfo = NULL; char **flist = NULL; xListFontsWithInfoReply reply; @@ -67,52 +69,44 @@ XFontStruct **info) /* RETURN */ if (!_XReply (dpy, (xReply *) &reply, ((SIZEOF(xListFontsWithInfoReply) - SIZEOF(xGenericReply)) >> 2), xFalse)) { - for (j=(i-1); (j >= 0); j--) { - Xfree(flist[j]); - if (finfo[j].properties) Xfree((char *) finfo[j].properties); - } - if (flist) Xfree((char *) flist); - if (finfo) Xfree((char *) finfo); - UnlockDisplay(dpy); - SyncHandle(); - return ((char **) NULL); + reply.nameLength = 0; /* avoid trying to read more replies */ + reply_left = 0; + goto badmem; } - if (reply.nameLength == 0) + reply_left = reply.length - + ((SIZEOF(xListFontsWithInfoReply) - SIZEOF(xGenericReply)) >> 2); + if (reply.nameLength == 0) { + _XEatDataWords(dpy, reply_left); break; + } + if (reply.nReplies >= (INT_MAX - i)) /* avoid overflowing size */ + goto badmem; if ((i + reply.nReplies) >= size) { size = i + reply.nReplies + 1; + if (size >= (INT_MAX / sizeof(XFontStruct))) + goto badmem; + if (finfo) { - XFontStruct * tmp_finfo = (XFontStruct *) - Xrealloc ((char *) finfo, - (unsigned) (sizeof(XFontStruct) * size)); - char ** tmp_flist = (char **) - Xrealloc ((char *) flist, - (unsigned) (sizeof(char *) * (size+1))); + XFontStruct * tmp_finfo; + char ** tmp_flist; + tmp_finfo = Xrealloc (finfo, sizeof(XFontStruct) * size); if (tmp_finfo) finfo = tmp_finfo; + else + goto badmem; + + tmp_flist = Xrealloc (flist, sizeof(char *) * (size+1)); if (tmp_flist) flist = tmp_flist; - - if ((! tmp_finfo) || (! tmp_flist)) { - /* free all the memory that we allocated */ - for (j=(i-1); (j >= 0); j--) { - Xfree(flist[j]); - if (finfo[j].properties) - Xfree((char *) finfo[j].properties); - } - Xfree((char *) flist); - Xfree((char *) finfo); - goto clearwire; - } + else + goto badmem; } else { - if (! (finfo = (XFontStruct *) - Xmalloc((unsigned) (sizeof(XFontStruct) * size)))) + if (! (finfo = Xmalloc(sizeof(XFontStruct) * size))) goto clearwire; - if (! (flist = (char **) - Xmalloc((unsigned) (sizeof(char *) * (size+1))))) { + if (! (flist = Xmalloc(sizeof(char *) * (size+1)))) { Xfree((char *) finfo); goto clearwire; } @@ -138,24 +132,27 @@ XFontStruct **info) /* RETURN */ fs->max_bounds = * (XCharStruct *) &reply.maxBounds; fs->n_properties = reply.nFontProps; + fs->properties = NULL; if (fs->n_properties > 0) { - nbytes = reply.nFontProps * sizeof(XFontProp); - if (! (fs->properties = (XFontProp *) Xmalloc((unsigned) nbytes))) - goto badmem; + /* nFontProps is a CARD16 */ nbytes = reply.nFontProps * SIZEOF(xFontProp); + if ((nbytes >> 2) <= reply_left) { + size_t pbytes = reply.nFontProps * sizeof(XFontProp); + fs->properties = Xmalloc (pbytes); + } + if (! fs->properties) + goto badmem; _XRead32 (dpy, (long *)fs->properties, nbytes); + reply_left -= (nbytes >> 2); + } - } else - fs->properties = NULL; - - j = reply.nameLength + 1; + /* nameLength is a CARD8 */ + nbytes = reply.nameLength + 1; if (!i) - j++; /* make first string 1 byte longer, to match XListFonts */ - flist[i] = (char *) Xmalloc ((unsigned int) j); + nbytes++; /* make first string 1 byte longer, to match XListFonts */ + flist[i] = Xmalloc (nbytes); if (! flist[i]) { if (finfo[i].properties) Xfree((char *) finfo[i].properties); - nbytes = (reply.nameLength + 3) & ~3; - _XEatData(dpy, (unsigned long) nbytes); goto badmem; } if (!i) { @@ -177,27 +174,25 @@ XFontStruct **info) /* RETURN */ badmem: /* Free all memory allocated by this function. */ for (j=(i-1); (j >= 0); j--) { - Xfree(flist[j]); - if (finfo[j].properties) Xfree((char *) finfo[j].properties); + if (j == 0) + flist[j]--; /* was incremented above */ + Xfree(flist[j]); + if (finfo[j].properties) Xfree((char *) finfo[j].properties); } if (flist) Xfree((char *) flist); if (finfo) Xfree((char *) finfo); clearwire: /* Clear the wire. */ - do { - if (reply.nFontProps) - _XEatData(dpy, (unsigned long) - (reply.nFontProps * SIZEOF(xFontProp))); - nbytes = (reply.nameLength + 3) & ~3; - _XEatData(dpy, (unsigned long) nbytes); - } - while (_XReply(dpy,(xReply *) &reply, ((SIZEOF(xListFontsWithInfoReply) - - SIZEOF(xGenericReply)) >> 2), - xFalse) && (reply.nameLength != 0)); - + _XEatDataWords(dpy, reply_left); + while ((reply.nameLength != 0) && + _XReply(dpy, (xReply *) &reply, + ((SIZEOF(xListFontsWithInfoReply) - SIZEOF(xGenericReply)) + >> 2), xTrue)); UnlockDisplay(dpy); SyncHandle(); + *info = NULL; + *actualCount = 0; return (char **) NULL; } diff --git a/libX11/src/FontNames.c b/libX11/src/FontNames.c index 3018cf2cf..b5bc7b4ba 100644 --- a/libX11/src/FontNames.c +++ b/libX11/src/FontNames.c @@ -29,6 +29,7 @@ in this Software without prior written authorization from The Open Group. #include #endif #include "Xlibint.h" +#include char ** XListFonts( @@ -40,11 +41,13 @@ int *actualCount) /* RETURN */ register long nbytes; register unsigned i; register int length; - char **flist; - char *ch; + char **flist = NULL; + char *ch = NULL; + char *chend; + int count = 0; xListFontsReply rep; register xListFontsReq *req; - register long rlen; + unsigned long rlen; LockDisplay(dpy); GetReq(ListFonts, req); @@ -62,15 +65,17 @@ int *actualCount) /* RETURN */ } if (rep.nFonts) { - flist = (char **)Xmalloc ((unsigned)rep.nFonts * sizeof(char *)); - rlen = rep.length << 2; - ch = (char *) Xmalloc((unsigned) (rlen + 1)); + flist = Xmalloc (rep.nFonts * sizeof(char *)); + if (rep.length < (LONG_MAX >> 2)) { + rlen = rep.length << 2; + ch = Xmalloc(rlen + 1); /* +1 to leave room for last null-terminator */ + } if ((! flist) || (! ch)) { if (flist) Xfree((char *) flist); if (ch) Xfree(ch); - _XEatData(dpy, (unsigned long) rlen); + _XEatDataWords(dpy, rep.length); *actualCount = 0; UnlockDisplay(dpy); SyncHandle(); @@ -81,17 +86,21 @@ int *actualCount) /* RETURN */ /* * unpack into null terminated strings. */ + chend = ch + (rlen + 1); length = *(unsigned char *)ch; *ch = 1; /* make sure it is non-zero for XFreeFontNames */ for (i = 0; i < rep.nFonts; i++) { - flist[i] = ch + 1; /* skip over length */ - ch += length + 1; /* find next length ... */ - length = *(unsigned char *)ch; - *ch = '\0'; /* and replace with null-termination */ + if (ch + length < chend) { + flist[i] = ch + 1; /* skip over length */ + ch += length + 1; /* find next length ... */ + length = *(unsigned char *)ch; + *ch = '\0'; /* and replace with null-termination */ + count++; + } else + flist[i] = NULL; } } - else flist = (char **) NULL; - *actualCount = rep.nFonts; + *actualCount = count; UnlockDisplay(dpy); SyncHandle(); return (flist); diff --git a/libX11/src/GetAtomNm.c b/libX11/src/GetAtomNm.c index 9823c690c..32de50d23 100644 --- a/libX11/src/GetAtomNm.c +++ b/libX11/src/GetAtomNm.c @@ -46,7 +46,7 @@ char *_XGetAtomName( for (idx = TABLESIZE; --idx >= 0; ) { if ((e = *table++) && (e->atom == atom)) { idx = strlen(EntryName(e)) + 1; - if ((name = (char *)Xmalloc(idx))) + if ((name = Xmalloc(idx))) strcpy(name, EntryName(e)); return name; } @@ -73,12 +73,12 @@ char *XGetAtomName( SyncHandle(); return(NULL); } - if ((name = (char *) Xmalloc(rep.nameLength+1))) { + if ((name = Xmalloc(rep.nameLength + 1))) { _XReadPad(dpy, name, (long)rep.nameLength); name[rep.nameLength] = '\0'; _XUpdateAtomCache(dpy, name, atom, 0, -1, 0); } else { - _XEatData(dpy, (unsigned long) (rep.nameLength + 3) & ~3); + _XEatDataWords(dpy, rep.length); name = (char *) NULL; } UnlockDisplay(dpy); @@ -124,7 +124,7 @@ Bool _XGetAtomNameHandler( _XGetAsyncReply(dpy, (char *)&replbuf, rep, buf, len, (SIZEOF(xGetAtomNameReply) - SIZEOF(xReply)) >> 2, False); - state->names[state->idx] = (char *) Xmalloc(repl->nameLength+1); + state->names[state->idx] = Xmalloc(repl->nameLength + 1); _XGetAsyncData(dpy, state->names[state->idx], buf, len, SIZEOF(xGetAtomNameReply), repl->nameLength, repl->length << 2); @@ -170,13 +170,13 @@ XGetAtomNames ( } if (missed >= 0) { if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - if ((names_return[missed] = (char *) Xmalloc(rep.nameLength+1))) { + if ((names_return[missed] = Xmalloc(rep.nameLength + 1))) { _XReadPad(dpy, names_return[missed], (long)rep.nameLength); names_return[missed][rep.nameLength] = '\0'; _XUpdateAtomCache(dpy, names_return[missed], atoms[missed], 0, -1, 0); } else { - _XEatData(dpy, (unsigned long) (rep.nameLength + 3) & ~3); + _XEatDataWords(dpy, rep.length); async_state.status = 0; } } diff --git a/libX11/src/GetDflt.c b/libX11/src/GetDflt.c index 6f62cd820..496253065 100644 --- a/libX11/src/GetDflt.c +++ b/libX11/src/GetDflt.c @@ -52,30 +52,7 @@ SOFTWARE. #include "Xlibint.h" #include #include - -#ifndef X_NOT_POSIX -#ifdef _POSIX_SOURCE -#include -#else -#define _POSIX_SOURCE -#include -#undef _POSIX_SOURCE -#endif -#endif -#ifndef PATH_MAX -#ifdef WIN32 -#define PATH_MAX 512 -#else -#include -#endif -#ifndef PATH_MAX -#ifdef MAXPATHLEN -#define PATH_MAX MAXPATHLEN -#else -#define PATH_MAX 1024 -#endif -#endif -#endif +#include "pathmax.h" #ifdef XTHREADS #include diff --git a/libX11/src/GetFPath.c b/libX11/src/GetFPath.c index 7d497c92e..abd4a5dbd 100644 --- a/libX11/src/GetFPath.c +++ b/libX11/src/GetFPath.c @@ -28,15 +28,18 @@ in this Software without prior written authorization from The Open Group. #include #endif #include "Xlibint.h" +#include char **XGetFontPath( register Display *dpy, int *npaths) /* RETURN */ { xGetFontPathReply rep; - register long nbytes; - char **flist; - char *ch; + unsigned long nbytes; + char **flist = NULL; + char *ch = NULL; + char *chend; + int count = 0; register unsigned i; register int length; register xReq *req; @@ -46,16 +49,17 @@ char **XGetFontPath( (void) _XReply (dpy, (xReply *) &rep, 0, xFalse); if (rep.nPaths) { - flist = (char **) - Xmalloc((unsigned) rep.nPaths * sizeof (char *)); - nbytes = (long)rep.length << 2; - ch = (char *) Xmalloc ((unsigned) (nbytes + 1)); + flist = Xmalloc(rep.nPaths * sizeof (char *)); + if (rep.length < (LONG_MAX >> 2)) { + nbytes = (unsigned long) rep.length << 2; + ch = Xmalloc (nbytes + 1); /* +1 to leave room for last null-terminator */ + } if ((! flist) || (! ch)) { if (flist) Xfree((char *) flist); if (ch) Xfree(ch); - _XEatData(dpy, (unsigned long) nbytes); + _XEatDataWords(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); return (char **) NULL; @@ -65,16 +69,20 @@ char **XGetFontPath( /* * unpack into null terminated strings. */ + chend = ch + (nbytes + 1); length = *ch; for (i = 0; i < rep.nPaths; i++) { - flist[i] = ch+1; /* skip over length */ - ch += length + 1; /* find next length ... */ - length = *ch; - *ch = '\0'; /* and replace with null-termination */ + if (ch + length < chend) { + flist[i] = ch+1; /* skip over length */ + ch += length + 1; /* find next length ... */ + length = *ch; + *ch = '\0'; /* and replace with null-termination */ + count++; + } else + flist[i] = NULL; } } - else flist = NULL; - *npaths = rep.nPaths; + *npaths = count; UnlockDisplay(dpy); SyncHandle(); return (flist); diff --git a/libX11/src/GetHints.c b/libX11/src/GetHints.c index 4800fe793..3c410d33d 100644 --- a/libX11/src/GetHints.c +++ b/libX11/src/GetHints.c @@ -128,7 +128,7 @@ XWMHints *XGetWMHints ( return(NULL); } /* static copies not allowed in library, due to reentrancy constraint*/ - if ((hints = (XWMHints *) Xcalloc (1, (unsigned) sizeof(XWMHints)))) { + if ((hints = Xcalloc (1, sizeof(XWMHints)))) { hints->flags = prop->flags; hints->input = (prop->input ? True : False); hints->initial_state = cvtINT32toInt (prop->initialState); @@ -203,8 +203,7 @@ Status XGetIconSizes ( /* static copies not allowed in library, due to reentrancy constraint*/ nitems /= NumPropIconSizeElements; - if (! (hp = hints = (XIconSize *) - Xcalloc ((unsigned) nitems, (unsigned) sizeof(XIconSize)))) { + if (! (hp = hints = Xcalloc (nitems, sizeof(XIconSize)))) { if (prop) Xfree ((char *) prop); return 0; } @@ -317,14 +316,14 @@ XGetClassHint( if ( (actual_type == XA_STRING) && (actual_format == 8) ) { len_name = strlen((char *) data); - if (! (classhint->res_name = Xmalloc((unsigned) (len_name+1)))) { + if (! (classhint->res_name = Xmalloc(len_name + 1))) { Xfree((char *) data); return (0); } strcpy(classhint->res_name, (char *) data); if (len_name == nitems) len_name--; len_class = strlen((char *) (data+len_name+1)); - if (! (classhint->res_class = Xmalloc((unsigned) (len_class+1)))) { + if (! (classhint->res_class = Xmalloc(len_class + 1))) { Xfree(classhint->res_name); classhint->res_name = (char *) NULL; Xfree((char *) data); diff --git a/libX11/src/GetImage.c b/libX11/src/GetImage.c index e8f1b0309..c461abc09 100644 --- a/libX11/src/GetImage.c +++ b/libX11/src/GetImage.c @@ -30,6 +30,7 @@ in this Software without prior written authorization from The Open Group. #include "Xlibint.h" #include /* for XDestroyImage */ #include "ImUtil.h" +#include #define ROUNDUP(nbytes, pad) (((((nbytes) - 1) + (pad)) / (pad)) * (pad)) @@ -56,7 +57,7 @@ XImage *XGetImage ( xGetImageReply rep; register xGetImageReq *req; char *data; - long nbytes; + unsigned long nbytes; XImage *image; LockDisplay(dpy); GetReq (GetImage, req); @@ -78,10 +79,13 @@ XImage *XGetImage ( return (XImage *)NULL; } - nbytes = (long)rep.length << 2; - data = (char *) Xmalloc((unsigned) nbytes); + if (rep.length < (INT_MAX >> 2)) { + nbytes = (unsigned long)rep.length << 2; + data = Xmalloc(nbytes); + } else + data = NULL; if (! data) { - _XEatData(dpy, (unsigned long) nbytes); + _XEatDataWords(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); return (XImage *) NULL; diff --git a/libX11/src/GetMoEv.c b/libX11/src/GetMoEv.c index 3db176feb..ad9c77277 100644 --- a/libX11/src/GetMoEv.c +++ b/libX11/src/GetMoEv.c @@ -28,6 +28,7 @@ in this Software without prior written authorization from The Open Group. #include #endif #include "Xlibint.h" +#include XTimeCoord *XGetMotionEvents( register Display *dpy, @@ -39,7 +40,6 @@ XTimeCoord *XGetMotionEvents( xGetMotionEventsReply rep; register xGetMotionEventsReq *req; XTimeCoord *tc = NULL; - long nbytes; LockDisplay(dpy); GetReq(GetMotionEvents, req); req->window = w; @@ -52,26 +52,22 @@ XTimeCoord *XGetMotionEvents( return (NULL); } - if (rep.nEvents) { - if (! (tc = (XTimeCoord *) - Xmalloc( (unsigned) - (nbytes = (long) rep.nEvents * sizeof(XTimeCoord))))) { - _XEatData (dpy, (unsigned long) nbytes); - UnlockDisplay(dpy); - SyncHandle(); - return (NULL); - } + if (rep.nEvents && (rep.nEvents < (INT_MAX / sizeof(XTimeCoord)))) + tc = Xmalloc(rep.nEvents * sizeof(XTimeCoord)); + if (tc == NULL) { + /* server returned either no events or a bad event count */ + *nEvents = 0; + _XEatDataWords (dpy, rep.length); } - - *nEvents = rep.nEvents; - nbytes = SIZEOF (xTimecoord); + else { register XTimeCoord *tcptr; - register int i; + unsigned int i; xTimecoord xtc; + *nEvents = (int) rep.nEvents; for (i = rep.nEvents, tcptr = tc; i > 0; i--, tcptr++) { - _XRead (dpy, (char *) &xtc, nbytes); + _XRead (dpy, (char *) &xtc, SIZEOF (xTimecoord)); tcptr->time = xtc.time; tcptr->x = cvtINT16toShort (xtc.x); tcptr->y = cvtINT16toShort (xtc.y); diff --git a/libX11/src/GetPntMap.c b/libX11/src/GetPntMap.c index 0fcdb6696..29fdf21f0 100644 --- a/libX11/src/GetPntMap.c +++ b/libX11/src/GetPntMap.c @@ -29,6 +29,7 @@ in this Software without prior written authorization from The Open Group. #include #endif #include "Xlibint.h" +#include #ifdef MIN /* some systems define this in */ #undef MIN @@ -42,7 +43,7 @@ int XGetPointerMapping ( { unsigned char mapping[256]; /* known fixed size */ - long nbytes, remainder = 0; + unsigned long nbytes, remainder = 0; xGetPointerMappingReply rep; register xReq *req; @@ -54,9 +55,15 @@ int XGetPointerMapping ( return 0; } - nbytes = (long)rep.length << 2; - /* Don't count on the server returning a valid value */ + if (rep.length >= (INT_MAX >> 2)) { + _XEatDataWords(dpy, rep.length); + UnlockDisplay(dpy); + SyncHandle(); + return 0; + } + + nbytes = (unsigned long) rep.length << 2; if (nbytes > sizeof mapping) { remainder = nbytes - sizeof mapping; nbytes = sizeof mapping; @@ -69,7 +76,7 @@ int XGetPointerMapping ( } if (remainder) - _XEatData(dpy, (unsigned long)remainder); + _XEatData(dpy, remainder); UnlockDisplay(dpy); SyncHandle(); @@ -86,8 +93,8 @@ XGetKeyboardMapping (Display *dpy, int count, int *keysyms_per_keycode) { - long nbytes; - unsigned long nkeysyms; + unsigned long nbytes; + CARD32 nkeysyms; register KeySym *mapping = NULL; xGetKeyboardMappingReply rep; register xGetKeyboardMappingReq *req; @@ -102,17 +109,19 @@ XGetKeyboardMapping (Display *dpy, return (KeySym *) NULL; } - nkeysyms = (unsigned long) rep.length; + nkeysyms = rep.length; if (nkeysyms > 0) { - nbytes = nkeysyms * sizeof (KeySym); - mapping = (KeySym *) Xmalloc ((unsigned) nbytes); - nbytes = nkeysyms << 2; + if (nkeysyms < (INT_MAX / sizeof (KeySym))) { + nbytes = nkeysyms * sizeof (KeySym); + mapping = Xmalloc (nbytes); + } if (! mapping) { - _XEatData(dpy, (unsigned long) nbytes); + _XEatDataWords(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); return (KeySym *) NULL; } + nbytes = nkeysyms << 2; _XRead32 (dpy, (long *) mapping, nbytes); } *keysyms_per_keycode = rep.keySymsPerKeyCode; diff --git a/libX11/src/GetProp.c b/libX11/src/GetProp.c index 5d6e0b8c4..9eb422ee3 100644 --- a/libX11/src/GetProp.c +++ b/libX11/src/GetProp.c @@ -28,6 +28,7 @@ in this Software without prior written authorization from The Open Group. #include #endif #include "Xlibint.h" +#include int XGetWindowProperty( @@ -48,6 +49,13 @@ XGetWindowProperty( register xGetPropertyReq *req; xError error = {0}; + /* Always initialize return values, in case callers fail to initialize + them and fail to check the return code for an error. */ + *actual_type = None; + *actual_format = 0; + *nitems = *bytesafter = 0L; + *prop = (unsigned char *) NULL; + LockDisplay(dpy); GetReq (GetProperty, req); req->window = w; @@ -64,10 +72,18 @@ XGetWindowProperty( return (1); /* not Success */ } - *prop = (unsigned char *) NULL; if (reply.propertyType != None) { - long nbytes, netbytes; - switch (reply.format) { + unsigned long nbytes, netbytes; + int format = reply.format; + + /* + * Protect against both integer overflow and just plain oversized + * memory allocation - no server should ever return this many props. + */ + if (reply.nItems >= (INT_MAX >> 4)) + format = -1; /* fall through to default error case */ + + switch (format) { /* * One extra byte is malloced than is needed to contain the property * data, but this last byte is null terminated and convenient for @@ -76,24 +92,21 @@ XGetWindowProperty( */ case 8: nbytes = netbytes = reply.nItems; - if (nbytes + 1 > 0 && - (*prop = (unsigned char *) Xmalloc ((unsigned)nbytes + 1))) + if (nbytes + 1 > 0 && (*prop = Xmalloc (nbytes + 1))) _XReadPad (dpy, (char *) *prop, netbytes); break; case 16: nbytes = reply.nItems * sizeof (short); netbytes = reply.nItems << 1; - if (nbytes + 1 > 0 && - (*prop = (unsigned char *) Xmalloc ((unsigned)nbytes + 1))) + if (nbytes + 1 > 0 && (*prop = Xmalloc (nbytes + 1))) _XRead16Pad (dpy, (short *) *prop, netbytes); break; case 32: nbytes = reply.nItems * sizeof (long); netbytes = reply.nItems << 2; - if (nbytes + 1 > 0 && - (*prop = (unsigned char *) Xmalloc ((unsigned)nbytes + 1))) + if (nbytes + 1 > 0 && (*prop = Xmalloc (nbytes + 1))) _XRead32 (dpy, (long *) *prop, netbytes); break; @@ -115,7 +128,7 @@ XGetWindowProperty( break; } if (! *prop) { - _XEatData(dpy, (unsigned long) netbytes); + _XEatDataWords(dpy, reply.length); UnlockDisplay(dpy); SyncHandle(); return(BadAlloc); /* not Success */ diff --git a/libX11/src/GetRGBCMap.c b/libX11/src/GetRGBCMap.c index 9e227a263..2f0b752a8 100644 --- a/libX11/src/GetRGBCMap.c +++ b/libX11/src/GetRGBCMap.c @@ -99,8 +99,7 @@ Status XGetRGBColormaps ( /* * allocate array */ - cmaps = (XStandardColormap *) Xmalloc (ncmaps * - sizeof (XStandardColormap)); + cmaps = Xmalloc (ncmaps * sizeof (XStandardColormap)); if (!cmaps) { if (data) Xfree ((char *) data); return False; diff --git a/libX11/src/ImUtil.c b/libX11/src/ImUtil.c index fa8d464aa..240a26181 100644 --- a/libX11/src/ImUtil.c +++ b/libX11/src/ImUtil.c @@ -332,7 +332,7 @@ XImage *XCreateImage ( (xpad != 8 && xpad != 16 && xpad != 32) || offset < 0) return (XImage *) NULL; - if ((image = (XImage *) Xcalloc(1, (unsigned) sizeof(XImage))) == NULL) + if ((image = Xcalloc(1, sizeof(XImage))) == NULL) return (XImage *) NULL; image->width = width; @@ -842,7 +842,7 @@ static XImage *_XSubImage ( register unsigned long pixel; char *data; - if ((subimage = (XImage *) Xcalloc (1, sizeof (XImage))) == NULL) + if ((subimage = Xcalloc (1, sizeof (XImage))) == NULL) return (XImage *) NULL; subimage->width = width; subimage->height = height; @@ -868,7 +868,7 @@ static XImage *_XSubImage ( _XInitImageFuncPtrs (subimage); dsize = subimage->bytes_per_line * height; if (subimage->format == XYPixmap) dsize = dsize * subimage->depth; - if (((data = Xcalloc (1, (unsigned) dsize)) == NULL) && (dsize > 0)) { + if (((data = Xcalloc (1, dsize)) == NULL) && (dsize > 0)) { Xfree((char *) subimage); return (XImage *) NULL; } diff --git a/libX11/src/InitExt.c b/libX11/src/InitExt.c index 19515ccd0..75991bd6d 100644 --- a/libX11/src/InitExt.c +++ b/libX11/src/InitExt.c @@ -49,7 +49,7 @@ XExtCodes *XInitExtension ( &codes.first_error)) return (NULL); LockDisplay (dpy); - if (! (ext = (_XExtension *) Xcalloc (1, sizeof (_XExtension))) || + if (! (ext = Xcalloc (1, sizeof (_XExtension))) || ! (ext->name = strdup(name))) { if (ext) Xfree((char *) ext); UnlockDisplay(dpy); @@ -71,7 +71,7 @@ XExtCodes *XAddExtension (Display *dpy) register _XExtension *ext; LockDisplay (dpy); - if (! (ext = (_XExtension *) Xcalloc (1, sizeof (_XExtension)))) { + if (! (ext = Xcalloc (1, sizeof (_XExtension)))) { UnlockDisplay(dpy); return (XExtCodes *) NULL; } diff --git a/libX11/src/IntAtom.c b/libX11/src/IntAtom.c index 7a5625840..25466ca20 100644 --- a/libX11/src/IntAtom.c +++ b/libX11/src/IntAtom.c @@ -72,7 +72,7 @@ Atom _XInternAtom( /* look in the cache first */ if (!(atoms = dpy->atoms)) { - dpy->atoms = atoms = (AtomTable *)Xcalloc(1, sizeof(AtomTable)); + dpy->atoms = atoms = Xcalloc(1, sizeof(AtomTable)); dpy->free_funcs->atoms = _XFreeAtomTable; } sig = 0; @@ -127,7 +127,7 @@ _XUpdateAtomCache( if (!dpy->atoms) { if (idx < 0) { - dpy->atoms = (AtomTable *)Xcalloc(1, sizeof(AtomTable)); + dpy->atoms = Xcalloc(1, sizeof(AtomTable)); dpy->free_funcs->atoms = _XFreeAtomTable; } if (!dpy->atoms) @@ -147,7 +147,7 @@ _XUpdateAtomCache( } } } - e = (Entry)Xmalloc(sizeof(EntryRec) + n + 1); + e = Xmalloc(sizeof(EntryRec) + n + 1); if (e) { e->sig = sig; e->atom = atom; diff --git a/libX11/src/Key.h b/libX11/src/Key.h index 0fe89ba37..bb254393c 100644 --- a/libX11/src/Key.h +++ b/libX11/src/Key.h @@ -2,6 +2,9 @@ #ifndef _KEY_H_ #define _KEY_H_ +#include +#include + #ifndef NEEDKTABLE extern const unsigned char _XkeyTable[]; #endif diff --git a/libX11/src/KeyBind.c b/libX11/src/KeyBind.c index f22feca59..2110772ce 100644 --- a/libX11/src/KeyBind.c +++ b/libX11/src/KeyBind.c @@ -997,11 +997,9 @@ XRebindKeysym ( tmp = dpy->key_bindings; nb = sizeof(KeySym) * nm; - if ((! (p = (struct _XKeytrans *) Xcalloc( 1, sizeof(struct _XKeytrans)))) || - ((! (p->string = (char *) Xmalloc( (unsigned) nbytes))) && - (nbytes > 0)) || - ((! (p->modifiers = (KeySym *) Xmalloc( (unsigned) nb))) && - (nb > 0))) { + if ((! (p = Xcalloc( 1, sizeof(struct _XKeytrans)))) || + ((! (p->string = Xmalloc(nbytes))) && (nbytes > 0)) || + ((! (p->modifiers = Xmalloc(nb))) && (nb > 0))) { if (p) { if (p->string) Xfree(p->string); if (p->modifiers) Xfree((char *) p->modifiers); diff --git a/libX11/src/LiHosts.c b/libX11/src/LiHosts.c index 0f5e837d1..83cf3c791 100644 --- a/libX11/src/LiHosts.c +++ b/libX11/src/LiHosts.c @@ -62,6 +62,8 @@ X Window System is a trademark of The Open Group. #include #endif #include "Xlibint.h" +#include + /* * can be freed using XFree. */ @@ -73,7 +75,6 @@ XHostAddress *XListHosts ( { register XHostAddress *outbuf = NULL, *op; xListHostsReply reply; - long nbytes; unsigned char *buf, *bp; register unsigned i; register xListHostsReq *req; @@ -90,19 +91,26 @@ XHostAddress *XListHosts ( } if (reply.nHosts) { - nbytes = reply.length << 2; /* compute number of bytes in reply */ + unsigned long nbytes = reply.length << 2; /* number of bytes in reply */ + const unsigned long max_hosts = INT_MAX / + (sizeof(XHostAddress) + sizeof(XServerInterpretedAddress)); + + if (reply.nHosts < max_hosts) { + unsigned long hostbytes = reply.nHosts * + (sizeof(XHostAddress) + sizeof(XServerInterpretedAddress)); - op = outbuf = (XHostAddress *) - Xmalloc((unsigned) (nbytes + - (reply.nHosts * sizeof(XHostAddress)) + - (reply.nHosts * sizeof(XServerInterpretedAddress)))); + if (reply.length < (INT_MAX >> 2) && + (hostbytes >> 2) < ((INT_MAX >> 2) - reply.length)) + outbuf = Xmalloc(nbytes + hostbytes); + } if (! outbuf) { - _XEatData(dpy, (unsigned long) nbytes); + _XEatDataWords(dpy, reply.length); UnlockDisplay(dpy); SyncHandle(); return (XHostAddress *) NULL; } + op = outbuf; sip = (XServerInterpretedAddress *) (((unsigned char *) outbuf) + (reply.nHosts * sizeof(XHostAddress))); bp = buf = ((unsigned char *) sip) diff --git a/libX11/src/LiICmaps.c b/libX11/src/LiICmaps.c index e98161916..45a2f2fd3 100644 --- a/libX11/src/LiICmaps.c +++ b/libX11/src/LiICmaps.c @@ -34,7 +34,7 @@ Colormap *XListInstalledColormaps( Window win, int *n) /* RETURN */ { - long nbytes; + unsigned long nbytes; Colormap *cmaps; xListInstalledColormapsReply rep; register xResourceReq *req; @@ -51,14 +51,14 @@ Colormap *XListInstalledColormaps( if (rep.nColormaps) { nbytes = rep.nColormaps * sizeof(Colormap); - cmaps = (Colormap *) Xmalloc((unsigned) nbytes); - nbytes = rep.nColormaps << 2; + cmaps = Xmalloc(nbytes); if (! cmaps) { - _XEatData(dpy, (unsigned long) nbytes); + _XEatDataWords(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); return((Colormap *) NULL); } + nbytes = rep.nColormaps << 2; _XRead32 (dpy, (long *) cmaps, nbytes); } else cmaps = (Colormap *) NULL; diff --git a/libX11/src/LiProps.c b/libX11/src/LiProps.c index 72560aba7..d9c746563 100644 --- a/libX11/src/LiProps.c +++ b/libX11/src/LiProps.c @@ -34,7 +34,7 @@ Atom *XListProperties( Window window, int *n_props) /* RETURN */ { - long nbytes; + unsigned long nbytes; xListPropertiesReply rep; Atom *properties; register xResourceReq *req; @@ -50,14 +50,14 @@ Atom *XListProperties( if (rep.nProperties) { nbytes = rep.nProperties * sizeof(Atom); - properties = (Atom *) Xmalloc ((unsigned) nbytes); - nbytes = rep.nProperties << 2; + properties = Xmalloc (nbytes); if (! properties) { - _XEatData(dpy, (unsigned long) nbytes); + _XEatDataWords(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); return (Atom *) NULL; } + nbytes = rep.nProperties << 2; _XRead32 (dpy, (long *) properties, nbytes); } else properties = (Atom *) NULL; diff --git a/libX11/src/ListExt.c b/libX11/src/ListExt.c index 16b522e88..e925c4773 100644 --- a/libX11/src/ListExt.c +++ b/libX11/src/ListExt.c @@ -28,18 +28,21 @@ in this Software without prior written authorization from The Open Group. #include #endif #include "Xlibint.h" +#include char **XListExtensions( register Display *dpy, int *nextensions) /* RETURN */ { xListExtensionsReply rep; - char **list; - char *ch; + char **list = NULL; + char *ch = NULL; + char *chend; + int count = 0; register unsigned i; register int length; register xReq *req; - register long rlen; + unsigned long rlen; LockDisplay(dpy); GetEmptyReq (ListExtensions, req); @@ -51,16 +54,17 @@ char **XListExtensions( } if (rep.nExtensions) { - list = (char **) Xmalloc ( - (unsigned)(rep.nExtensions * sizeof (char *))); - rlen = rep.length << 2; - ch = (char *) Xmalloc ((unsigned) rlen + 1); + list = Xmalloc (rep.nExtensions * sizeof (char *)); + if (rep.length < (LONG_MAX >> 2)) { + rlen = rep.length << 2; + ch = Xmalloc (rlen + 1); /* +1 to leave room for last null-terminator */ + } if ((!list) || (!ch)) { if (list) Xfree((char *) list); if (ch) Xfree((char *) ch); - _XEatData(dpy, (unsigned long) rlen); + _XEatDataWords(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); return (char **) NULL; @@ -70,17 +74,21 @@ char **XListExtensions( /* * unpack into null terminated strings. */ + chend = ch + (rlen + 1); length = *ch; for (i = 0; i < rep.nExtensions; i++) { - list[i] = ch+1; /* skip over length */ - ch += length + 1; /* find next length ... */ - length = *ch; - *ch = '\0'; /* and replace with null-termination */ + if (ch + length < chend) { + list[i] = ch+1; /* skip over length */ + ch += length + 1; /* find next length ... */ + length = *ch; + *ch = '\0'; /* and replace with null-termination */ + count++; + } else + list[i] = NULL; } } - else list = (char **) NULL; - *nextensions = rep.nExtensions; + *nextensions = count; UnlockDisplay(dpy); SyncHandle(); return (list); diff --git a/libX11/src/Makefile.am b/libX11/src/Makefile.am index 71e02e71b..27b74b014 100644 --- a/libX11/src/Makefile.am +++ b/libX11/src/Makefile.am @@ -210,6 +210,7 @@ libX11_la_SOURCES = \ ParseCmd.c \ ParseCol.c \ ParseGeom.c \ + pathmax.h \ PeekEvent.c \ PeekIfEv.c \ Pending.c \ diff --git a/libX11/src/ModMap.c b/libX11/src/ModMap.c index c99bfdd5f..5c5b42612 100644 --- a/libX11/src/ModMap.c +++ b/libX11/src/ModMap.c @@ -28,6 +28,7 @@ in this Software without prior written authorization from The Open Group. #include #endif #include "Xlibint.h" +#include XModifierKeymap * XGetModifierMapping(register Display *dpy) @@ -41,13 +42,17 @@ XGetModifierMapping(register Display *dpy) GetEmptyReq(GetModifierMapping, req); (void) _XReply (dpy, (xReply *)&rep, 0, xFalse); - nbytes = (unsigned long)rep.length << 2; - res = (XModifierKeymap *) Xmalloc(sizeof (XModifierKeymap)); - if (res) res->modifiermap = (KeyCode *) Xmalloc ((unsigned) nbytes); + if (rep.length < (LONG_MAX >> 2)) { + nbytes = (unsigned long)rep.length << 2; + res = Xmalloc(sizeof (XModifierKeymap)); + if (res) + res->modifiermap = Xmalloc (nbytes); + } else + res = NULL; if ((! res) || (! res->modifiermap)) { if (res) Xfree((char *) res); res = (XModifierKeymap *) NULL; - _XEatData(dpy, nbytes); + _XEatDataWords(dpy, rep.length); } else { _XReadPad(dpy, (char *) res->modifiermap, (long) nbytes); res->max_keypermod = rep.numKeyPerModifier; @@ -92,11 +97,11 @@ XSetModifierMapping( XModifierKeymap * XNewModifiermap(int keyspermodifier) { - XModifierKeymap *res = (XModifierKeymap *) Xmalloc((sizeof (XModifierKeymap))); + XModifierKeymap *res = Xmalloc((sizeof (XModifierKeymap))); if (res) { res->max_keypermod = keyspermodifier; res->modifiermap = (keyspermodifier > 0 ? - (KeyCode *) Xmalloc((unsigned) (8 * keyspermodifier)) + Xmalloc(8 * keyspermodifier) : (KeyCode *) NULL); if (keyspermodifier && (res->modifiermap == NULL)) { Xfree((char *) res); diff --git a/libX11/src/OpenDis.c b/libX11/src/OpenDis.c index f6d8c701b..fc67d1a66 100644 --- a/libX11/src/OpenDis.c +++ b/libX11/src/OpenDis.c @@ -112,7 +112,7 @@ XOpenDisplay ( /* * Attempt to allocate a display structure. Return NULL if allocation fails. */ - if ((dpy = (Display *)Xcalloc(1, sizeof(Display))) == NULL) { + if ((dpy = Xcalloc(1, sizeof(Display))) == NULL) { return(NULL); } @@ -246,9 +246,7 @@ XOpenDisplay ( dpy->qlen = 0; /* Set up free-function record */ - if ((dpy->free_funcs = (_XFreeFuncRec *)Xcalloc(1, - sizeof(_XFreeFuncRec))) - == NULL) { + if ((dpy->free_funcs = Xcalloc(1, sizeof(_XFreeFuncRec))) == NULL) { OutOfMemory (dpy); return(NULL); } @@ -316,7 +314,7 @@ XOpenDisplay ( return (NULL); } - dpy->vendor = (char *) Xmalloc((unsigned) (u.setup->nbytesVendor + 1)); + dpy->vendor = Xmalloc(u.setup->nbytesVendor + 1); if (dpy->vendor == NULL) { OutOfMemory(dpy); return (NULL); @@ -342,9 +340,7 @@ XOpenDisplay ( /* * Now iterate down setup information..... */ - dpy->pixmap_format = - (ScreenFormat *)Xmalloc( - (unsigned) (dpy->nformats *sizeof(ScreenFormat))); + dpy->pixmap_format = Xcalloc(dpy->nformats, sizeof(ScreenFormat)); if (dpy->pixmap_format == NULL) { OutOfMemory (dpy); return(NULL); @@ -372,8 +368,7 @@ XOpenDisplay ( /* * next the Screen structures. */ - dpy->screens = - (Screen *)Xmalloc((unsigned) dpy->nscreens*sizeof(Screen)); + dpy->screens = Xcalloc(dpy->nscreens, sizeof(Screen)); if (dpy->screens == NULL) { OutOfMemory (dpy); return(NULL); @@ -415,8 +410,7 @@ XOpenDisplay ( /* * lets set up the depth structures. */ - sp->depths = (Depth *)Xmalloc( - (unsigned)sp->ndepths*sizeof(Depth)); + sp->depths = Xcalloc(sp->ndepths, sizeof(Depth)); if (sp->depths == NULL) { OutOfMemory (dpy); return(NULL); @@ -438,8 +432,7 @@ XOpenDisplay ( dp->nvisuals = u.dp->nVisuals; u.dp = (xDepth *) (((char *) u.dp) + sz_xDepth); if (dp->nvisuals > 0) { - dp->visuals = - (Visual *)Xmalloc((unsigned)dp->nvisuals*sizeof(Visual)); + dp->visuals = Xcalloc(dp->nvisuals, sizeof(Visual)); if (dp->visuals == NULL) { OutOfMemory (dpy); return(NULL); @@ -552,7 +545,7 @@ XOpenDisplay ( dpy->xdefaults[reply.nItems] = '\0'; } else if (reply.propertyType != None) - _XEatData(dpy, reply.nItems * (reply.format >> 3)); + _XEatDataWords(dpy, reply.length); } } UnlockDisplay(dpy); diff --git a/libX11/src/PixFormats.c b/libX11/src/PixFormats.c index 8e4a10027..6d9f64d2c 100644 --- a/libX11/src/PixFormats.c +++ b/libX11/src/PixFormats.c @@ -38,8 +38,8 @@ XPixmapFormatValues *XListPixmapFormats ( Display *dpy, int *count) /* RETURN */ { - XPixmapFormatValues *formats = (XPixmapFormatValues *) - Xmalloc((unsigned) (dpy->nformats * sizeof (XPixmapFormatValues))); + XPixmapFormatValues *formats = + Xmalloc(dpy->nformats * sizeof (XPixmapFormatValues)); if (formats) { register int i; diff --git a/libX11/src/PolyReg.c b/libX11/src/PolyReg.c index 74c8765fe..6d0277332 100644 --- a/libX11/src/PolyReg.c +++ b/libX11/src/PolyReg.c @@ -95,8 +95,7 @@ InsertEdgeInET( { if (*iSLLBlock > SLLSPERBLOCK-1) { - tmpSLLBlock = - (ScanLineListBlock *)Xmalloc(sizeof(ScanLineListBlock)); + tmpSLLBlock = Xmalloc(sizeof(ScanLineListBlock)); (*SLLBlock)->next = tmpSLLBlock; tmpSLLBlock->next = (ScanLineListBlock *)NULL; *SLLBlock = tmpSLLBlock; @@ -410,8 +409,7 @@ static int PtsToRegion( numRects = ((numFullPtBlocks * NUMPTSTOBUFFER) + iCurPtBlock) >> 1; - if (!(reg->rects = (BOX *)Xrealloc((char *)reg->rects, - (unsigned) (sizeof(BOX) * numRects)))) { + if (!(reg->rects = Xrealloc(reg->rects, sizeof(BOX) * numRects))) { Xfree(prevRects); return(0); } @@ -521,8 +519,7 @@ XPolygonRegion( if (Count < 2) return region; - if (! (pETEs = (EdgeTableEntry *) - Xmalloc((unsigned) (sizeof(EdgeTableEntry) * Count)))) { + if (! (pETEs = Xmalloc(sizeof(EdgeTableEntry) * Count))) { XDestroyRegion(region); return (Region) NULL; } @@ -559,7 +556,7 @@ XPolygonRegion( * send out the buffer */ if (iPts == NUMPTSTOBUFFER) { - tmpPtBlock = (POINTBLOCK *)Xmalloc(sizeof(POINTBLOCK)); + tmpPtBlock = Xmalloc(sizeof(POINTBLOCK)); curPtBlock->next = tmpPtBlock; curPtBlock = tmpPtBlock; pts = curPtBlock->pts; @@ -605,7 +602,7 @@ XPolygonRegion( * send out the buffer */ if (iPts == NUMPTSTOBUFFER) { - tmpPtBlock = (POINTBLOCK *)Xmalloc(sizeof(POINTBLOCK)); + tmpPtBlock = Xmalloc(sizeof(POINTBLOCK)); curPtBlock->next = tmpPtBlock; curPtBlock = tmpPtBlock; pts = curPtBlock->pts; diff --git a/libX11/src/PropAlloc.c b/libX11/src/PropAlloc.c index 516283080..87817d88a 100644 --- a/libX11/src/PropAlloc.c +++ b/libX11/src/PropAlloc.c @@ -39,20 +39,19 @@ in this Software without prior written authorization from The Open Group. XSizeHints *XAllocSizeHints (void) { - return ((XSizeHints *) Xcalloc (1, (unsigned) sizeof (XSizeHints))); + return Xcalloc (1, sizeof (XSizeHints)); } XStandardColormap *XAllocStandardColormap (void) { - return ((XStandardColormap *) - Xcalloc (1, (unsigned) sizeof (XStandardColormap))); + return Xcalloc (1, sizeof (XStandardColormap)); } XWMHints *XAllocWMHints (void) { - return ((XWMHints *) Xcalloc (1, (unsigned) sizeof (XWMHints))); + return Xcalloc (1, sizeof (XWMHints)); } @@ -64,7 +63,7 @@ XClassHint *XAllocClassHint (void) XIconSize *XAllocIconSize (void) { - return ((XIconSize *) Xcalloc (1, (unsigned) sizeof (XIconSize))); + return Xcalloc (1, sizeof (XIconSize)); } diff --git a/libX11/src/PutBEvent.c b/libX11/src/PutBEvent.c index f9d4c29bd..1768e032c 100644 --- a/libX11/src/PutBEvent.c +++ b/libX11/src/PutBEvent.c @@ -41,7 +41,7 @@ _XPutBackEvent ( XEvent store = *event; if (!dpy->qfree) { - if ((dpy->qfree = (_XQEvent *) Xmalloc (sizeof (_XQEvent))) == NULL) { + if ((dpy->qfree = Xmalloc (sizeof (_XQEvent))) == NULL) { return 0; } dpy->qfree->next = NULL; diff --git a/libX11/src/PutImage.c b/libX11/src/PutImage.c index 6dad4f13a..2a694f099 100644 --- a/libX11/src/PutImage.c +++ b/libX11/src/PutImage.c @@ -680,7 +680,7 @@ SendXYImage( length = ROUNDUP(length, 4); if ((dpy->bufptr + length) > dpy->bufmax) { - if ((buf = _XAllocScratch(dpy, (unsigned long) (length))) == NULL) { + if ((buf = _XAllocScratch(dpy, length)) == NULL) { UnGetReq(PutImage); return; } @@ -703,13 +703,13 @@ SendXYImage( bytes_per_temp_plane = bytes_per_line * req->height; temp_length = ROUNDUP(bytes_per_temp_plane * image->depth, 4); if (buf == dpy->bufptr) { - if (! (temp = _XAllocScratch(dpy, (unsigned long) temp_length))) { + if (! (temp = _XAllocScratch(dpy, temp_length))) { UnGetReq(PutImage); return; } } else - if ((extra = temp = Xmalloc((unsigned) temp_length)) == NULL) { + if ((extra = temp = Xmalloc(temp_length)) == NULL) { UnGetReq(PutImage); return; } @@ -778,8 +778,7 @@ SendZImage( (req_yoffset * image->bytes_per_line) + ((req_xoffset * image->bits_per_pixel) >> 3); if ((image->bits_per_pixel == 4) && ((unsigned int) req_xoffset & 0x01)) { - if (! (shifted_src = (unsigned char *) - Xmalloc((unsigned) (req->height * image->bytes_per_line)))) { + if (! (shifted_src = Xmalloc(req->height * image->bytes_per_line))) { UnGetReq(PutImage); return; } @@ -810,7 +809,7 @@ SendZImage( dest = (unsigned char *)dpy->bufptr; else if ((dest = (unsigned char *) - _XAllocScratch(dpy, (unsigned long)(length))) == NULL) { + _XAllocScratch(dpy, length)) == NULL) { if (shifted_src) Xfree((char *) shifted_src); UnGetReq(PutImage); return; @@ -1001,7 +1000,7 @@ XPutImage ( img.bits_per_pixel = dest_bits_per_pixel; img.bytes_per_line = ROUNDUP((dest_bits_per_pixel * width), dest_scanline_pad) >> 3; - img.data = Xmalloc((unsigned) (img.bytes_per_line * height)); + img.data = Xmalloc(img.bytes_per_line * height); if (img.data == NULL) return 0; _XInitImageFuncPtrs(&img); diff --git a/libX11/src/QuColors.c b/libX11/src/QuColors.c index 237b8bf03..13a63eb25 100644 --- a/libX11/src/QuColors.c +++ b/libX11/src/QuColors.c @@ -37,9 +37,7 @@ _XQueryColors( int ncolors) { register int i; - xrgb *color; xQueryColorsReply rep; - long nbytes; register xQueryColorsReq *req; GetReq(QueryColors, req); @@ -52,8 +50,9 @@ _XQueryColors( /* XXX this isn't very efficient */ if (_XReply(dpy, (xReply *) &rep, 0, xFalse) != 0) { - if ((color = (xrgb *) - Xmalloc((unsigned) (nbytes = (long) ncolors * SIZEOF(xrgb))))) { + unsigned long nbytes = (long) ncolors * SIZEOF(xrgb); + xrgb *color = Xmalloc(nbytes); + if (color != NULL) { _XRead(dpy, (char *) color, nbytes); @@ -67,7 +66,8 @@ _XQueryColors( } Xfree((char *)color); } - else _XEatData(dpy, (unsigned long) nbytes); + else + _XEatDataWords(dpy, rep.length); } } diff --git a/libX11/src/QuTree.c b/libX11/src/QuTree.c index 3cea282fa..8da2ae261 100644 --- a/libX11/src/QuTree.c +++ b/libX11/src/QuTree.c @@ -37,7 +37,7 @@ Status XQueryTree ( Window **children, /* RETURN */ unsigned int *nchildren) /* RETURN */ { - long nbytes; + unsigned long nbytes; xQueryTreeReply rep; register xResourceReq *req; @@ -52,14 +52,14 @@ Status XQueryTree ( *children = (Window *) NULL; if (rep.nChildren != 0) { nbytes = rep.nChildren * sizeof(Window); - *children = (Window *) Xmalloc((unsigned) nbytes); - nbytes = rep.nChildren << 2; + *children = Xmalloc(nbytes); if (! *children) { - _XEatData(dpy, (unsigned long) nbytes); + _XEatDataWords(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); return (0); } + nbytes = rep.nChildren << 2; _XRead32 (dpy, (long *) *children, nbytes); } *parent = rep.parent; diff --git a/libX11/src/Quarks.c b/libX11/src/Quarks.c index 4eb90c51d..60fe127bd 100644 --- a/libX11/src/Quarks.c +++ b/libX11/src/Quarks.c @@ -186,15 +186,14 @@ ExpandQuarkTable(void) newmask = (oldmask << 1) + 1; else { if (!stringTable) { - stringTable = (XrmString **)Xmalloc(sizeof(XrmString *) * - CHUNKPER); + stringTable = Xmalloc(sizeof(XrmString *) * CHUNKPER); if (!stringTable) return False; stringTable[0] = (XrmString *)NULL; } #ifdef PERMQ if (!permTable) - permTable = (Bits **)Xmalloc(sizeof(Bits *) * CHUNKPER); + permTable = Xmalloc(sizeof(Bits *) * CHUNKPER); if (!permTable) return False; #endif @@ -289,13 +288,13 @@ nomatch: if (!rehash) q = nextQuark; if (!(q & QUANTUMMASK)) { if (!(q & CHUNKMASK)) { - if (!(new = Xrealloc((char *)stringTable, + if (!(new = Xrealloc(stringTable, sizeof(XrmString *) * ((q >> QUANTUMSHIFT) + CHUNKPER)))) goto fail; stringTable = (XrmString **)new; #ifdef PERMQ - if (!(new = Xrealloc((char *)permTable, + if (!(new = Xrealloc(permTable, sizeof(Bits *) * ((q >> QUANTUMSHIFT) + CHUNKPER)))) goto fail; diff --git a/libX11/src/RdBitF.c b/libX11/src/RdBitF.c index ab7d800d3..727204fca 100644 --- a/libX11/src/RdBitF.c +++ b/libX11/src/RdBitF.c @@ -191,7 +191,7 @@ XReadBitmapFileData ( bytes_per_line = (ww+7)/8 + padding; size = bytes_per_line * hh; - bits = (unsigned char *) Xmalloc ((unsigned int) size); + bits = Xmalloc (size); if (!bits) RETURN (BitmapNoMemory); diff --git a/libX11/src/Region.c b/libX11/src/Region.c index 41047b242..d3d431a64 100644 --- a/libX11/src/Region.c +++ b/libX11/src/Region.c @@ -139,9 +139,9 @@ XCreateRegion(void) { Region temp; - if (! (temp = ( Region )Xmalloc( (unsigned) sizeof( REGION )))) + if (! (temp = Xmalloc(sizeof( REGION )))) return (Region) NULL; - if (! (temp->rects = ( BOX * )Xmalloc( (unsigned) sizeof( BOX )))) { + if (! (temp->rects = Xmalloc(sizeof( BOX )))) { Xfree((char *) temp); return (Region) NULL; } @@ -521,9 +521,9 @@ miRegionCopy( { BOX *prevRects = dstrgn->rects; - if (! (dstrgn->rects = (BOX *) - Xrealloc((char *) dstrgn->rects, - (unsigned) rgn->numRects * (sizeof(BOX))))) { + dstrgn->rects = Xrealloc(dstrgn->rects, + rgn->numRects * (sizeof(BOX))); + if (! dstrgn->rects) { Xfree(prevRects); return; } @@ -788,8 +788,7 @@ miRegionOp( */ newReg->size = max(reg1->numRects,reg2->numRects) * 2; - if (! (newReg->rects = (BoxPtr) - Xmalloc ((unsigned) (sizeof(BoxRec) * newReg->size)))) { + if (! (newReg->rects = Xmalloc (sizeof(BoxRec) * newReg->size))) { newReg->size = 0; return; } @@ -980,8 +979,8 @@ miRegionOp( { BoxPtr prev_rects = newReg->rects; newReg->size = newReg->numRects; - newReg->rects = (BoxPtr) Xrealloc ((char *) newReg->rects, - (unsigned) (sizeof(BoxRec) * newReg->size)); + newReg->rects = Xrealloc (newReg->rects, + sizeof(BoxRec) * newReg->size); if (! newReg->rects) newReg->rects = prev_rects; } @@ -993,7 +992,7 @@ miRegionOp( */ newReg->size = 1; Xfree((char *) newReg->rects); - newReg->rects = (BoxPtr) Xmalloc(sizeof(BoxRec)); + newReg->rects = Xmalloc(sizeof(BoxRec)); } } Xfree ((char *) oldRects); diff --git a/libX11/src/RegstFlt.c b/libX11/src/RegstFlt.c index 9a560e794..5a1faa7e9 100644 --- a/libX11/src/RegstFlt.c +++ b/libX11/src/RegstFlt.c @@ -85,7 +85,7 @@ _XRegisterFilterByMask( { XFilterEventRec *rec; - rec = (XFilterEventList)Xmalloc(sizeof(XFilterEventRec)); + rec = Xmalloc(sizeof(XFilterEventRec)); if (!rec) return; rec->window = window; @@ -117,7 +117,7 @@ _XRegisterFilterByType( { XFilterEventRec *rec; - rec = (XFilterEventList)Xmalloc(sizeof(XFilterEventRec)); + rec = Xmalloc(sizeof(XFilterEventRec)); if (!rec) return; rec->window = window; diff --git a/libX11/src/SetFPath.c b/libX11/src/SetFPath.c index 89955c23e..b1afd8201 100644 --- a/libX11/src/SetFPath.c +++ b/libX11/src/SetFPath.c @@ -52,7 +52,7 @@ XSetFontPath ( } nbytes = (n + 3) & ~3; req->length += nbytes >> 2; - if ((p = (char *) Xmalloc ((unsigned) nbytes))) { + if ((p = Xmalloc (nbytes))) { /* * pack into counted strings. */ diff --git a/libX11/src/SetHints.c b/libX11/src/SetHints.c index 1cde48f85..0ae076438 100644 --- a/libX11/src/SetHints.c +++ b/libX11/src/SetHints.c @@ -184,7 +184,7 @@ XSetIconSizes ( #define size_of_the_real_thing sizeof /* avoid grepping screwups */ unsigned nbytes = count * size_of_the_real_thing(xPropIconSize); #undef size_of_the_real_thing - if ((prop = pp = (xPropIconSize *) Xmalloc (nbytes))) { + if ((prop = pp = Xmalloc (nbytes))) { for (i = 0; i < count; i++) { pp->minWidth = list->min_width; pp->minHeight = list->min_height; @@ -216,7 +216,7 @@ XSetCommand ( for (i = 0, nbytes = 0; i < argc; i++) { nbytes += safestrlen(argv[i]) + 1; } - if ((bp = buf = Xmalloc((unsigned) nbytes))) { + if ((bp = buf = Xmalloc(nbytes))) { /* copy arguments into single buffer */ for (i = 0; i < argc; i++) { if (argv[i]) { @@ -299,7 +299,7 @@ XSetClassHint( len_nm = safestrlen(classhint->res_name); len_cl = safestrlen(classhint->res_class); - if ((class_string = s = Xmalloc((unsigned) (len_nm + len_cl + 2)))) { + if ((class_string = s = Xmalloc(len_nm + len_cl + 2))) { if (len_nm) { strcpy(s, classhint->res_name); s += len_nm + 1; diff --git a/libX11/src/StrToText.c b/libX11/src/StrToText.c index b5327e8fc..ef927f3d9 100644 --- a/libX11/src/StrToText.c +++ b/libX11/src/StrToText.c @@ -78,7 +78,7 @@ Status XStringListToTextProperty ( } } } else { - proto.value = (unsigned char *) Xmalloc (1); /* easier for client */ + proto.value = Xmalloc (1); /* easier for client */ if (!proto.value) return False; proto.value[0] = '\0'; diff --git a/libX11/src/TextToStr.c b/libX11/src/TextToStr.c index 216391c2e..36d9f0706 100644 --- a/libX11/src/TextToStr.c +++ b/libX11/src/TextToStr.c @@ -72,10 +72,10 @@ Status XTextPropertyToStringList ( /* * allocate list and duplicate */ - list = (char **) Xmalloc (nelements * sizeof (char *)); + list = Xmalloc (nelements * sizeof (char *)); if (!list) return False; - start = (char *) Xmalloc ((datalen + 1) * sizeof (char)); /* for */ + start = Xmalloc ((datalen + 1) * sizeof (char)); /* for */ if (!start) { Xfree ((char *) list); return False; diff --git a/libX11/src/VisUtil.c b/libX11/src/VisUtil.c index 3434c0161..aa679928a 100644 --- a/libX11/src/VisUtil.c +++ b/libX11/src/VisUtil.c @@ -75,8 +75,7 @@ XVisualInfo *XGetVisualInfo( count = 0; total = 10; - if (! (vip_base = vip = (XVisualInfo *) - Xmalloc((unsigned) (sizeof(XVisualInfo) * total)))) { + if (! (vip_base = vip = Xmalloc(sizeof(XVisualInfo) * total))) { UnlockDisplay(dpy); return (XVisualInfo *) NULL; } @@ -132,9 +131,8 @@ XVisualInfo *XGetVisualInfo( { XVisualInfo *old_vip_base = vip_base; total += 10; - if (! (vip_base = (XVisualInfo *) - Xrealloc((char *) vip_base, - (unsigned) (sizeof(XVisualInfo) * total)))) { + if (! (vip_base = Xrealloc(vip_base, + sizeof(XVisualInfo) * total))) { Xfree((char *) old_vip_base); UnlockDisplay(dpy); return (XVisualInfo *) NULL; diff --git a/libX11/src/WrBitF.c b/libX11/src/WrBitF.c index 1ec6280fb..75a93a79d 100644 --- a/libX11/src/WrBitF.c +++ b/libX11/src/WrBitF.c @@ -53,7 +53,7 @@ static char *Format_Image( bytes_per_line = (width+7)/8; *resultsize = bytes_per_line * height; /* Calculate size of data */ - data = (char *) Xmalloc( *resultsize ); /* Get space for data */ + data = Xmalloc( *resultsize ); /* Get space for data */ if (!data) return(ERR_RETURN); diff --git a/libX11/src/Xintatom.h b/libX11/src/Xintatom.h index 82dba36e1..516a72b1d 100644 --- a/libX11/src/Xintatom.h +++ b/libX11/src/Xintatom.h @@ -2,6 +2,7 @@ #ifndef _XINTATOM_H_ #define _XINTATOM_H_ 1 +#include #include /* IntAtom.c */ diff --git a/libX11/src/Xintconn.h b/libX11/src/Xintconn.h index db59061a0..cd9aee32e 100644 --- a/libX11/src/Xintconn.h +++ b/libX11/src/Xintconn.h @@ -3,6 +3,7 @@ #define _XINTCONN_H_ 1 #include +#include _XFUNCPROTOBEGIN diff --git a/libX11/src/XlibInt.c b/libX11/src/XlibInt.c index 1c964fdea..b06e57baa 100644 --- a/libX11/src/XlibInt.c +++ b/libX11/src/XlibInt.c @@ -152,7 +152,7 @@ Bool _XPollfdCacheInit( #ifdef USE_POLL struct pollfd *pfp; - pfp = (struct pollfd *)Xmalloc(POLLFD_CACHE_SIZE * sizeof(struct pollfd)); + pfp = Xmalloc(POLLFD_CACHE_SIZE * sizeof(struct pollfd)); if (!pfp) return False; pfp[0].fd = dpy->fd; @@ -374,10 +374,10 @@ _XRegisterInternalConnection( struct _XConnWatchInfo *watchers; XPointer *wd; - new_conni = (struct _XConnectionInfo*)Xmalloc(sizeof(struct _XConnectionInfo)); + new_conni = Xmalloc(sizeof(struct _XConnectionInfo)); if (!new_conni) return 0; - new_conni->watch_data = (XPointer *)Xmalloc(dpy->watcher_count * sizeof(XPointer)); + new_conni->watch_data = Xmalloc(dpy->watcher_count * sizeof(XPointer)); if (!new_conni->watch_data) { Xfree(new_conni); return 0; @@ -464,7 +464,7 @@ XInternalConnectionNumbers( count = 0; for (info_list=dpy->im_fd_info; info_list; info_list=info_list->next) count++; - fd_list = (int*) Xmalloc (count * sizeof(int)); + fd_list = Xmalloc (count * sizeof(int)); if (!fd_list) { UnlockDisplay(dpy); return 0; @@ -537,9 +537,8 @@ XAddConnectionWatch( /* allocate new watch data */ for (info_list=dpy->im_fd_info; info_list; info_list=info_list->next) { - wd_array = (XPointer *)Xrealloc((char *)info_list->watch_data, - (dpy->watcher_count + 1) * - sizeof(XPointer)); + wd_array = Xrealloc(info_list->watch_data, + (dpy->watcher_count + 1) * sizeof(XPointer)); if (!wd_array) { UnlockDisplay(dpy); return 0; @@ -548,7 +547,7 @@ XAddConnectionWatch( wd_array[dpy->watcher_count] = NULL; /* for cleanliness */ } - new_watcher = (struct _XConnWatchInfo*)Xmalloc(sizeof(struct _XConnWatchInfo)); + new_watcher = Xmalloc(sizeof(struct _XConnWatchInfo)); if (!new_watcher) { UnlockDisplay(dpy); return 0; @@ -756,8 +755,7 @@ void _XEnq( /* If dpy->qfree is non-NULL do this, else malloc a new one. */ dpy->qfree = qelt->next; } - else if ((qelt = - (_XQEvent *) Xmalloc((unsigned)sizeof(_XQEvent))) == NULL) { + else if ((qelt = Xmalloc(sizeof(_XQEvent))) == NULL) { /* Malloc call failed! */ ESET(ENOMEM); _XIOError(dpy); @@ -1518,7 +1516,7 @@ char *_XAllocScratch( { if (nbytes > dpy->scratch_length) { if (dpy->scratch_buffer) Xfree (dpy->scratch_buffer); - if ((dpy->scratch_buffer = Xmalloc((unsigned) nbytes))) + if ((dpy->scratch_buffer = Xmalloc(nbytes))) dpy->scratch_length = nbytes; else dpy->scratch_length = 0; } diff --git a/libX11/src/Xprivate.h b/libX11/src/Xprivate.h index 006b1705e..6bfe70baa 100644 --- a/libX11/src/Xprivate.h +++ b/libX11/src/Xprivate.h @@ -8,6 +8,8 @@ #ifndef XPRIVATE_H #define XPRIVATE_H +#include + extern _X_HIDDEN void _XIDHandler(Display *dpy); extern _X_HIDDEN void _XSeqSyncFunction(Display *dpy); extern _X_HIDDEN void _XSetPrivSyncFunction(Display *dpy); diff --git a/libX11/src/Xresinternal.h b/libX11/src/Xresinternal.h index c2f355fe6..b5cc7ffc4 100644 --- a/libX11/src/Xresinternal.h +++ b/libX11/src/Xresinternal.h @@ -2,6 +2,8 @@ #ifndef _XRESINTERNAL_H_ #define _XRESINTERNAL_H_ +#include +#include #include /* type defines */ diff --git a/libX11/src/Xrm.c b/libX11/src/Xrm.c index d6899d970..d8272ee78 100644 --- a/libX11/src/Xrm.c +++ b/libX11/src/Xrm.c @@ -62,6 +62,7 @@ from The Open Group. #endif #include #include +#include #include "Xresinternal.h" #include "Xresource.h" @@ -494,7 +495,7 @@ static XrmDatabase NewDatabase(void) { register XrmDatabase db; - db = (XrmDatabase) Xmalloc(sizeof(XrmHashBucketRec)); + db = Xmalloc(sizeof(XrmHashBucketRec)); if (db) { _XCreateMutex(&db->linfo); db->table = (NTable)NULL; @@ -827,7 +828,7 @@ static void PutEntry( NTable *nprev, *firstpprev; #define NEWTABLE(q,i) \ - table = (NTable)Xmalloc(sizeof(LTableRec)); \ + table = Xmalloc(sizeof(LTableRec)); \ if (!table) \ return; \ table->name = q; \ @@ -840,7 +841,7 @@ static void PutEntry( nprev = NodeBuckets(table); \ } else { \ table->leaf = 1; \ - if (!(nprev = (NTable *)Xmalloc(sizeof(VEntry *)))) {\ + if (!(nprev = Xmalloc(sizeof(VEntry *)))) {\ Xfree(table); \ return; \ } \ @@ -954,9 +955,8 @@ static void PutEntry( prev = nprev; } /* now allocate the value entry */ - entry = (VEntry)Xmalloc(((type == XrmQString) ? - sizeof(VEntryRec) : sizeof(DEntryRec)) + - value->size); + entry = Xmalloc(((type == XrmQString) ? + sizeof(VEntryRec) : sizeof(DEntryRec)) + value->size); if (!entry) return; entry->name = q = *quarks; @@ -986,13 +986,12 @@ static void PutEntry( if (resourceQuarks) { unsigned char *prevQuarks = resourceQuarks; - resourceQuarks = (unsigned char *)Xrealloc((char *)resourceQuarks, - size); + resourceQuarks = Xrealloc(resourceQuarks, size); if (!resourceQuarks) { Xfree(prevQuarks); } } else - resourceQuarks = (unsigned char *)Xmalloc(size); + resourceQuarks = Xmalloc(size); if (resourceQuarks) { bzero((char *)&resourceQuarks[oldsize], size - oldsize); maxResourceQuark = (size << 3) - 1; @@ -1087,13 +1086,15 @@ static void GetIncludeFile( XrmDatabase db, _Xconst char *base, _Xconst char *fname, - int fnamelen); + int fnamelen, + int depth); static void GetDatabase( XrmDatabase db, _Xconst char *str, _Xconst char *filename, - Bool doall) + Bool doall, + int depth) { char *rhs; char *lhs, lhs_s[DEF_BUFF_SIZE]; @@ -1135,11 +1136,11 @@ static void GetDatabase( str_len = strlen (str); if (DEF_BUFF_SIZE > str_len) lhs = lhs_s; - else if ((lhs = (char*) Xmalloc (str_len)) == NULL) + else if ((lhs = Xmalloc (str_len)) == NULL) return; alloc_chars = DEF_BUFF_SIZE < str_len ? str_len : DEF_BUFF_SIZE; - if ((rhs = (char*) Xmalloc (alloc_chars)) == NULL) { + if ((rhs = Xmalloc (alloc_chars)) == NULL) { if (lhs != lhs_s) Xfree (lhs); return; } @@ -1203,7 +1204,8 @@ static void GetDatabase( } while (c != '"' && !is_EOL(bits)); /* must have an ending " */ if (c == '"') - GetIncludeFile(db, filename, fname, str - len - fname); + GetIncludeFile(db, filename, fname, str - len - fname, + depth); } } /* spin to next newline */ @@ -1544,7 +1546,7 @@ XrmPutLineResource( { if (!*pdb) *pdb = NewDatabase(); _XLockMutex(&(*pdb)->linfo); - GetDatabase(*pdb, line, (char *)NULL, False); + GetDatabase(*pdb, line, (char *)NULL, False, 0); _XUnlockMutex(&(*pdb)->linfo); } @@ -1556,7 +1558,7 @@ XrmGetStringDatabase( db = NewDatabase(); _XLockMutex(&db->linfo); - GetDatabase(db, data, (char *)NULL, True); + GetDatabase(db, data, (char *)NULL, True, 0); _XUnlockMutex(&db->linfo); return db; } @@ -1594,11 +1596,12 @@ ReadInFile(_Xconst char *filename) */ { struct stat status_buffer; - if ( (fstat(fd, &status_buffer)) == -1 ) { + if ( ((fstat(fd, &status_buffer)) == -1 ) || + (status_buffer.st_size >= INT_MAX) ) { close (fd); return (char *)NULL; } else - size = status_buffer.st_size; + size = (int) status_buffer.st_size; } if (!(filebuf = Xmalloc(size + 1))) { /* leave room for '\0' */ @@ -1634,7 +1637,8 @@ GetIncludeFile( XrmDatabase db, _Xconst char *base, _Xconst char *fname, - int fnamelen) + int fnamelen, + int depth) { int len; char *str; @@ -1642,6 +1646,8 @@ GetIncludeFile( if (fnamelen <= 0 || fnamelen >= BUFSIZ) return; + if (depth >= MAXDBDEPTH) + return; if (*fname != '/' && base && (str = strrchr(base, '/'))) { len = str - base + 1; if (len + fnamelen >= BUFSIZ) @@ -1655,7 +1661,7 @@ GetIncludeFile( } if (!(str = ReadInFile(realfname))) return; - GetDatabase(db, str, realfname, True); + GetDatabase(db, str, realfname, True, depth + 1); Xfree(str); } @@ -1671,7 +1677,7 @@ XrmGetFileDatabase( db = NewDatabase(); _XLockMutex(&db->linfo); - GetDatabase(db, str, filename, True); + GetDatabase(db, str, filename, True, 0); _XUnlockMutex(&db->linfo); Xfree(str); return db; @@ -1695,7 +1701,7 @@ XrmCombineFileDatabase( } else db = NewDatabase(); _XLockMutex(&db->linfo); - GetDatabase(db, str, filename, True); + GetDatabase(db, str, filename, True, 0); _XUnlockMutex(&db->linfo); Xfree(str); if (!override) diff --git a/libX11/src/locking.c b/libX11/src/locking.c index b3dfb3b01..7c09c44d2 100644 --- a/libX11/src/locking.c +++ b/libX11/src/locking.c @@ -82,7 +82,7 @@ _Xthread_waiter(void) struct _xthread_waiter *me; if (!(me = TlsGetValue(_X_TlsIndex))) { - me = (struct _xthread_waiter *)xmalloc(sizeof(struct _xthread_waiter)); + me = xmalloc(sizeof(struct _xthread_waiter)); me->sem = CreateSemaphore(NULL, 0, 1, NULL); me->next = NULL; TlsSetValue(_X_TlsIndex, me); @@ -249,7 +249,7 @@ static struct _XCVList *_XCreateCVL( dpy->lock->free_cvls = cvl->next; dpy->lock->num_free_cvls--; } else { - cvl = (struct _XCVList *)Xmalloc(sizeof(struct _XCVList)); + cvl = Xmalloc(sizeof(struct _XCVList)); if (!cvl) return NULL; cvl->cv = xcondition_malloc(); @@ -512,10 +512,10 @@ void _XUserUnlockDisplay( static int _XInitDisplayLock( Display *dpy) { - dpy->lock_fns = (struct _XLockPtrs*)Xmalloc(sizeof(struct _XLockPtrs)); + dpy->lock_fns = Xmalloc(sizeof(struct _XLockPtrs)); if (dpy->lock_fns == NULL) return -1; - dpy->lock = (struct _XLockInfo *)Xmalloc(sizeof(struct _XLockInfo)); + dpy->lock = Xmalloc(sizeof(struct _XLockInfo)); if (dpy->lock == NULL) { _XFreeDisplayLock(dpy); return -1; diff --git a/libX11/src/locking.h b/libX11/src/locking.h index 96019fc91..5251a60c1 100644 --- a/libX11/src/locking.h +++ b/libX11/src/locking.h @@ -36,6 +36,8 @@ in this Software without prior written authorization from The Open Group. #define xmalloc(s) Xmalloc(s) #define xfree(s) Xfree(s) +#include +#include #include struct _XCVList { diff --git a/libX11/src/pathmax.h b/libX11/src/pathmax.h new file mode 100644 index 000000000..3aa3d5097 --- /dev/null +++ b/libX11/src/pathmax.h @@ -0,0 +1,81 @@ + +/*********************************************************** + +Copyright 1987, 1988, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ + +/* + * Provides a single definition of PATH_MAX instead of replicating this mess + * in multiple files + */ + +#ifdef HAVE_CONFIG_H +#include +#endif +#include + +#ifndef X_NOT_POSIX +#ifdef _POSIX_SOURCE +#include +#else +#define _POSIX_SOURCE +#include +#undef _POSIX_SOURCE +#endif +#endif +#ifndef PATH_MAX +#ifdef WIN32 +#define PATH_MAX 512 +#else +#include +#endif +#ifndef PATH_MAX +#ifdef MAXPATHLEN +#define PATH_MAX MAXPATHLEN +#else +#define PATH_MAX 1024 +#endif +#endif +#endif diff --git a/libX11/src/udcInf.c b/libX11/src/udcInf.c index b7577ac96..9ecf1566e 100644 --- a/libX11/src/udcInf.c +++ b/libX11/src/udcInf.c @@ -145,12 +145,11 @@ int *num_codeset; if(!_XlcCompareISOLatin1(charset_str,buf)){ num_ret += 1; if(num_ret == 1){ - ret = (int *)Xmalloc(sizeof(int)); + ret = Xmalloc(sizeof(int)); } else { int *prev_ret = ret; - ret = - (int *)Xrealloc(ret,num_ret*sizeof(int)); + ret = Xrealloc(ret, num_ret * sizeof(int)); if (ret == NULL){ Xfree(prev_ret); } @@ -272,7 +271,7 @@ int *num_gr; sprintf(buf, "fs%d.charset.udc_area", codeset-1); _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count); if(count > 0){ - udc = (_XUDCGlyphRegion *)Xmalloc(count * sizeof(_XUDCGlyphRegion)); + udc = Xmalloc(count * sizeof(_XUDCGlyphRegion)); if(udc == NULL){ _xudc_utyerrno = 0x03 ; _xudc_utyerrno |= (0x0b<<8) ; @@ -524,7 +523,7 @@ int *num_cr; return(ret); } - crr = (_XUDCCodeRegion *)Xmalloc(num_gr*sizeof(_XUDCCodeRegion)); + crr = Xmalloc(num_gr * sizeof(_XUDCCodeRegion)); if(crr == NULL){ Xfree(gr); _xudc_utyerrno = 0x03 ; diff --git a/libX11/src/xcb_io.c b/libX11/src/xcb_io.c index 300ef571f..727c6c79f 100644 --- a/libX11/src/xcb_io.c +++ b/libX11/src/xcb_io.c @@ -19,6 +19,7 @@ #include #include #include +#include #ifdef HAVE_SYS_SELECT_H #include #endif @@ -757,3 +758,19 @@ void _XEatData(Display *dpy, unsigned long n) dpy->xcb->reply_consumed += n; _XFreeReplyData(dpy, False); } + +/* + * Read and discard "n" 32-bit words of data + * Matches the units of the length field in X protocol replies, and provides + * a single implementation of overflow checking to avoid having to replicate + * those checks in every caller. + */ +void _XEatDataWords(Display *dpy, unsigned long n) +{ + if (n < ((INT_MAX - dpy->xcb->reply_consumed) >> 2)) + dpy->xcb->reply_consumed += (n << 2); + else + /* Overflow would happen, so just eat the rest of the reply */ + dpy->xcb->reply_consumed = dpy->xcb->reply_length; + _XFreeReplyData(dpy, False); +} diff --git a/libX11/src/xcms/cmsColNm.c b/libX11/src/xcms/cmsColNm.c index a6749c02e..8d0d4a771 100644 --- a/libX11/src/xcms/cmsColNm.c +++ b/libX11/src/xcms/cmsColNm.c @@ -40,6 +40,7 @@ #include #include #include +#include #define XK_LATIN1 #include #include "Cv.h" @@ -542,7 +543,10 @@ stringSectionSize( char *pBuf; char *f1; char *f2; - int i; + size_t i; + + unsigned int numEntries = 0; + unsigned int sectionSize = 0; *pNumEntries = 0; *pSectionSize = 0; @@ -576,26 +580,37 @@ stringSectionSize( return(XcmsFailure); } - (*pNumEntries)++; + numEntries++; + if (numEntries >= INT_MAX) + return(XcmsFailure); - (*pSectionSize) += (i = strlen(f1)) + 1; + i = strlen(f1); + if (i >= INT_MAX - sectionSize) + return(XcmsFailure); + sectionSize += i + 1; for (; i; i--, f1++) { /* REMOVE SPACES FROM COUNT */ if (isspace(*f1)) { - (*pSectionSize)--; + sectionSize--; } } - (*pSectionSize) += (i = strlen(f2)) + 1; + i = strlen(f2); + if (i >= INT_MAX - sectionSize) + return(XcmsFailure); + sectionSize += i + 1; for (; i; i--, f2++) { /* REMOVE SPACES FROM COUNT */ if (isspace(*f2)) { - (*pSectionSize)--; + sectionSize--; } } } + *pNumEntries = (int) numEntries; + *pSectionSize = (int) sectionSize; + return(XcmsSuccess); } diff --git a/libX11/src/xcms/cmsMath.c b/libX11/src/xcms/cmsMath.c index 70b067587..487eb3f9c 100644 --- a/libX11/src/xcms/cmsMath.c +++ b/libX11/src/xcms/cmsMath.c @@ -35,6 +35,10 @@ in this Software without prior written authorization from The Open Group. #include "Xlibint.h" #include "Xcmsint.h" +#ifdef DEBUG +#include +#endif + #include #ifndef DBL_EPSILON #define DBL_EPSILON 1e-6 diff --git a/libX11/src/xkb/XKBExtDev.c b/libX11/src/xkb/XKBExtDev.c index 353e769bf..dd383bc10 100644 --- a/libX11/src/xkb/XKBExtDev.c +++ b/libX11/src/xkb/XKBExtDev.c @@ -181,6 +181,9 @@ int tmp; return tmp; } if (rep->nBtnsWanted>0) { + if (((unsigned short) rep->firstBtnWanted + rep->nBtnsWanted) + >= devi->num_btns) + goto BAILOUT; act= &devi->btn_acts[rep->firstBtnWanted]; bzero((char *)act,(rep->nBtnsWanted*sizeof(XkbAction))); } @@ -190,6 +193,9 @@ int tmp; goto BAILOUT; if (rep->nBtnsRtrn>0) { int size; + if (((unsigned short) rep->firstBtnRtrn + rep->nBtnsRtrn) + >= devi->num_btns) + goto BAILOUT; act= &devi->btn_acts[rep->firstBtnRtrn]; size= rep->nBtnsRtrn*SIZEOF(xkbActionWireDesc); if (!_XkbCopyFromReadBuffer(&buf,(char *)act,size)) diff --git a/libX11/src/xkb/XKBGeom.c b/libX11/src/xkb/XKBGeom.c index 7594a3de4..7140a7247 100644 --- a/libX11/src/xkb/XKBGeom.c +++ b/libX11/src/xkb/XKBGeom.c @@ -364,12 +364,16 @@ Status rtrn; } ol->num_points= olWire->nPoints; } - if (shapeWire->primaryNdx!=XkbNoShape) + if ((shapeWire->primaryNdx!=XkbNoShape) && + (shapeWire->primaryNdx < shapeWire->nOutlines)) shape->primary= &shape->outlines[shapeWire->primaryNdx]; - else shape->primary= NULL; - if (shapeWire->approxNdx!=XkbNoShape) + else + shape->primary= NULL; + if ((shapeWire->approxNdx!=XkbNoShape) && + (shapeWire->approxNdx < shapeWire->nOutlines)) shape->approx= &shape->outlines[shapeWire->approxNdx]; - else shape->approx= NULL; + else + shape->approx= NULL; XkbComputeShapeBounds(shape); } return Success; @@ -615,6 +619,9 @@ XkbGeometryPtr geom; if (status==Success) status= _XkbReadGeomKeyAliases(&buf,geom,rep); left= _XkbFreeReadBuffer(&buf); + if ((rep->baseColorNdx > geom->num_colors) || + (rep->labelColorNdx > geom->num_colors)) + status = BadLength; if ((status!=Success) || left || buf.error) { if (status==Success) status= BadLength; diff --git a/libX11/src/xkb/XKBGetMap.c b/libX11/src/xkb/XKBGetMap.c index 30fb62971..c73e655ae 100644 --- a/libX11/src/xkb/XKBGetMap.c +++ b/libX11/src/xkb/XKBGetMap.c @@ -151,9 +151,12 @@ XkbClientMapPtr map; map= xkb->map; if (map->key_sym_map==NULL) { register int offset; + int size = xkb->max_key_code + 1; XkbSymMapPtr oldMap; xkbSymMapWireDesc *newMap; - map->key_sym_map= _XkbTypedCalloc((xkb->max_key_code+1),XkbSymMapRec); + if (((unsigned short)rep->firstKeySym + rep->nKeySyms) > size) + return BadLength; + map->key_sym_map= _XkbTypedCalloc(size,XkbSymMapRec); if (map->key_sym_map==NULL) return BadAlloc; if (map->syms==NULL) { @@ -209,6 +212,8 @@ XkbClientMapPtr map; KeySym * newSyms; int tmp; + if (((unsigned short)rep->firstKeySym + rep->nKeySyms) > map->num_syms) + return BadLength; oldMap = &map->key_sym_map[rep->firstKeySym]; for (i=0;i<(int)rep->nKeySyms;i++,oldMap++) { newMap= (xkbSymMapWireDesc *) @@ -264,6 +269,10 @@ Status ret = Success; symMap = &info->map->key_sym_map[rep->firstKeyAct]; for (i=0;i<(int)rep->nKeyActs;i++,symMap++) { if (numDesc[i]==0) { + if ((i + rep->firstKeyAct) > (info->max_key_code + 1)) { + ret = BadLength; + goto done; + } info->server->key_acts[i+rep->firstKeyAct]= 0; } else { @@ -296,8 +305,10 @@ register int i; xkbBehaviorWireDesc *wire; if ( rep->totalKeyBehaviors>0 ) { + int size = xkb->max_key_code + 1; + if ( ((int) rep->firstKeyBehavior + rep->nKeyBehaviors) > size) + return BadLength; if ( xkb->server->behaviors == NULL ) { - int size = xkb->max_key_code+1; xkb->server->behaviors = _XkbTypedCalloc(size,XkbBehavior); if (xkb->server->behaviors==NULL) return BadAlloc; @@ -309,7 +320,7 @@ xkbBehaviorWireDesc *wire; for (i=0;itotalKeyBehaviors;i++) { wire= (xkbBehaviorWireDesc *)_XkbGetReadBufferPtr(buf, SIZEOF(xkbBehaviorWireDesc)); - if (wire==NULL) + if (wire==NULL || wire->key >= size) return BadLength; xkb->server->behaviors[wire->key].type= wire->type; xkb->server->behaviors[wire->key].data= wire->data; @@ -351,8 +362,10 @@ register int i; unsigned char *wire; if ( rep->totalKeyExplicit>0 ) { + int size = xkb->max_key_code + 1; + if ( ((int) rep->firstKeyExplicit + rep->nKeyExplicit) > size) + return BadLength; if ( xkb->server->explicit == NULL ) { - int size = xkb->max_key_code+1; xkb->server->explicit = _XkbTypedCalloc(size,unsigned char); if (xkb->server->explicit==NULL) return BadAlloc; @@ -366,6 +379,8 @@ unsigned char *wire; if (!wire) return BadLength; for (i=0;itotalKeyExplicit;i++,wire+=2) { + if (wire[0] > xkb->max_key_code || wire[1] > xkb->max_key_code) + return BadLength; xkb->server->explicit[wire[0]]= wire[1]; } } @@ -379,6 +394,9 @@ register int i; unsigned char *wire; if ( rep->totalModMapKeys>0 ) { + if ( ((int)rep->firstModMapKey + rep->nModMapKeys) > + (xkb->max_key_code + 1)) + return BadLength; if ((xkb->map->modmap==NULL)&& (XkbAllocClientMap(xkb,XkbModifierMapMask,0)!=Success)) { return BadAlloc; @@ -391,6 +409,8 @@ unsigned char *wire; if (!wire) return BadLength; for (i=0;itotalModMapKeys;i++,wire+=2) { + if (wire[0] > xkb->max_key_code || wire[1] > xkb->max_key_code) + return BadLength; xkb->map->modmap[wire[0]]= wire[1]; } } @@ -405,6 +425,9 @@ xkbVModMapWireDesc * wire; XkbServerMapPtr srv; if ( rep->totalVModMapKeys>0 ) { + if (((int) rep->firstVModMapKey + rep->nVModMapKeys) + > xkb->max_key_code + 1) + return BadLength; if (((xkb->server==NULL)||(xkb->server->vmodmap==NULL))&& (XkbAllocServerMap(xkb,XkbVirtualModMapMask,0)!=Success)) { return BadAlloc; @@ -461,6 +484,8 @@ unsigned mask; if ( xkb->device_spec == XkbUseCoreKbd ) xkb->device_spec= rep->deviceID; + if ( rep->maxKeyCode < rep->minKeyCode ) + return BadImplementation; xkb->min_key_code = rep->minKeyCode; xkb->max_key_code = rep->maxKeyCode; diff --git a/libX11/src/xkb/XKBNames.c b/libX11/src/xkb/XKBNames.c index 0276c05b3..3a8860be7 100644 --- a/libX11/src/xkb/XKBNames.c +++ b/libX11/src/xkb/XKBNames.c @@ -180,6 +180,8 @@ _XkbReadGetNamesReply( Display * dpy, nKeys= xkb->max_key_code+1; names->keys= _XkbTypedCalloc(nKeys,XkbKeyNameRec); } + if ( ((int)rep->firstKey + rep->nKeys) > xkb->max_key_code + 1) + goto BAILOUT; if (names->keys!=NULL) { if (!_XkbCopyFromReadBuffer(&buf, (char *)&names->keys[rep->firstKey], diff --git a/libX11/src/xlibi18n/lcFile.c b/libX11/src/xlibi18n/lcFile.c index 2c06fa2d7..61a14e764 100644 --- a/libX11/src/xlibi18n/lcFile.c +++ b/libX11/src/xlibi18n/lcFile.c @@ -54,29 +54,7 @@ #define XLC_BUFSIZE 256 -#ifndef X_NOT_POSIX -#ifdef _POSIX_SOURCE -#include -#else -#define _POSIX_SOURCE -#include -#undef _POSIX_SOURCE -#endif -#endif -#ifndef PATH_MAX -#ifdef WIN32 -#define PATH_MAX 512 -#else -#include -#endif -#ifndef PATH_MAX -#ifdef MAXPATHLEN -#define PATH_MAX MAXPATHLEN -#else -#define PATH_MAX 1024 -#endif -#endif -#endif +#include "pathmax.h" #define NUM_LOCALEDIR 64 diff --git a/libXau/configure.ac b/libXau/configure.ac index e55cfceb6..7f914ea1b 100644 --- a/libXau/configure.ac +++ b/libXau/configure.ac @@ -22,7 +22,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) -AC_INIT([libXau], [1.0.7], +AC_INIT([libXau], [1.0.8], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXau]) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_HEADERS([config.h]) diff --git a/libXdmcp/Array.c b/libXdmcp/Array.c index 8862773b9..f529781db 100644 --- a/libXdmcp/Array.c +++ b/libXdmcp/Array.c @@ -62,8 +62,11 @@ XdmcpAllocARRAY8 (ARRAY8Ptr array, int length) return FALSE; newData = (CARD8Ptr) xmalloc(length * sizeof (CARD8)); - if (!newData) + if (!newData) { + array->length = 0; + array->data = NULL; return FALSE; + } array->length = (CARD16) length; array->data = newData; return TRUE; @@ -79,8 +82,11 @@ XdmcpAllocARRAY16 (ARRAY16Ptr array, int length) return FALSE; newData = (CARD16Ptr) xmalloc(length * sizeof (CARD16)); - if (!newData) + if (!newData) { + array->length = 0; + array->data = NULL; return FALSE; + } array->length = (CARD8) length; array->data = newData; return TRUE; @@ -96,8 +102,11 @@ XdmcpAllocARRAY32 (ARRAY32Ptr array, int length) return FALSE; newData = (CARD32Ptr) xmalloc(length * sizeof (CARD32)); - if (!newData) + if (!newData) { + array->length = 0; + array->data = NULL; return FALSE; + } array->length = (CARD8) length; array->data = newData; return TRUE; @@ -113,8 +122,11 @@ XdmcpAllocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length) return FALSE; newData = (ARRAY8Ptr) xmalloc(length * sizeof (ARRAY8)); - if (!newData) + if (!newData) { + array->length = 0; + array->data = NULL; return FALSE; + } array->length = (CARD8) length; array->data = newData; return TRUE; @@ -133,9 +145,7 @@ XdmcpARRAY8Equal (const ARRAY8Ptr array1, const ARRAY8Ptr array2) int XdmcpCopyARRAY8 (const ARRAY8Ptr src, ARRAY8Ptr dst) { - dst->length = src->length; - dst->data = (CARD8 *) xmalloc(dst->length * sizeof (CARD8)); - if (!dst->data) + if (!XdmcpAllocARRAY8(dst, src->length)) return FALSE; memmove (dst->data, src->data, src->length * sizeof (CARD8)); return TRUE; diff --git a/libXext/COPYING b/libXext/COPYING index 80622a057..e3a63ef7c 100644 --- a/libXext/COPYING +++ b/libXext/COPYING @@ -160,7 +160,8 @@ makes no representations about the suitability for any purpose of the information in this document. This documentation is provided ``as is'' without express or implied warranty. -Copyright (c) 1999, 2005, 2006, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 1999, 2005, 2006, 2013, Oracle and/or its affiliates. +All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), diff --git a/libXext/configure.ac b/libXext/configure.ac index 63775de77..9a1e0c2c6 100644 --- a/libXext/configure.ac +++ b/libXext/configure.ac @@ -1,7 +1,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) -AC_INIT([libXext], [1.3.1], +AC_INIT([libXext], [1.3.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXext]) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_HEADERS([config.h]) @@ -38,6 +38,12 @@ AC_SUBST(XEXT_SOREV) # Obtain compiler/linker options for depedencies PKG_CHECK_MODULES(XEXT, [xproto >= 7.0.13] [x11 >= 1.1.99.1] [xextproto >= 7.1.99]) +# Check for _XEatDataWords function that may be patched into older Xlib releases +SAVE_LIBS="$LIBS" +LIBS="$XEXT_LIBS" +AC_CHECK_FUNCS([_XEatDataWords]) +LIBS="$SAVE_LIBS" + # Allow checking code with lint, sparse, etc. XORG_WITH_LINT XORG_LINT_LIBRARY([Xext]) diff --git a/libXext/src/Makefile.am b/libXext/src/Makefile.am index e236c3345..b8285470a 100644 --- a/libXext/src/Makefile.am +++ b/libXext/src/Makefile.am @@ -12,6 +12,7 @@ libXext_la_LDFLAGS = -version-number $(XEXT_SOREV) -no-undefined libXext_la_LIBADD = $(XEXT_LIBS) libXext_la_SOURCES = \ + eat.h \ DPMS.c \ MITMisc.c \ XAppgroup.c \ diff --git a/libXext/src/XEVI.c b/libXext/src/XEVI.c index eb09daa9a..5a9558364 100644 --- a/libXext/src/XEVI.c +++ b/libXext/src/XEVI.c @@ -30,6 +30,9 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #include #include #include +#include +#include "eat.h" + static XExtensionInfo *xevi_info;/* needs to move to globals.c */ static const char *xevi_extension_name = EVINAME; #define XeviCheckExtension(dpy,i,val) \ @@ -163,15 +166,22 @@ Status XeviGetVisualInfo( return BadAccess; } Xfree(temp_visual); - sz_info = rep.n_info * sizeof(ExtendedVisualInfo); - sz_xInfo = rep.n_info * sz_xExtendedVisualInfo; - sz_conflict = rep.n_conflicts * sizeof(VisualID); - sz_xConflict = rep.n_conflicts * sz_VisualID32; - infoPtr = *evi_return = (ExtendedVisualInfo *)Xmalloc(sz_info + sz_conflict); - xInfoPtr = temp_xInfo = (xExtendedVisualInfo *)Xmalloc(sz_xInfo); - xConflictPtr = temp_conflict = (VisualID32 *)Xmalloc(sz_xConflict); + if ((rep.n_info < 65536) && (rep.n_conflicts < 65536)) { + sz_info = rep.n_info * sizeof(ExtendedVisualInfo); + sz_xInfo = rep.n_info * sz_xExtendedVisualInfo; + sz_conflict = rep.n_conflicts * sizeof(VisualID); + sz_xConflict = rep.n_conflicts * sz_VisualID32; + *evi_return = Xmalloc(sz_info + sz_conflict); + temp_xInfo = Xmalloc(sz_xInfo); + temp_conflict = Xmalloc(sz_xConflict); + } else { + sz_xInfo = sz_xConflict = 0; + *evi_return = NULL; + temp_xInfo = NULL; + temp_conflict = NULL; + } if (!*evi_return || !temp_xInfo || !temp_conflict) { - _XEatData(dpy, (sz_xInfo + sz_xConflict + 3) & ~3); + _XEatDataWords(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); if (evi_return) @@ -186,6 +196,9 @@ Status XeviGetVisualInfo( _XRead(dpy, (char *)temp_conflict, sz_xConflict); UnlockDisplay(dpy); SyncHandle(); + infoPtr = *evi_return; + xInfoPtr = temp_xInfo; + xConflictPtr = temp_conflict; n_data = rep.n_info; conflict = (VisualID *)(infoPtr + n_data); while (n_data-- > 0) { diff --git a/libXext/src/XMultibuf.c b/libXext/src/XMultibuf.c index 7a746bac5..43d56d3eb 100644 --- a/libXext/src/XMultibuf.c +++ b/libXext/src/XMultibuf.c @@ -34,6 +34,7 @@ in this Software without prior written authorization from The Open Group. #include #include #include +#include "eat.h" static XExtensionInfo _multibuf_info_data; static XExtensionInfo *multibuf_info = &_multibuf_info_data; @@ -408,7 +409,7 @@ Status XmbufGetWindowAttributes ( attr->buffers = (Multibuffer *) Xmalloc((unsigned) nbytes); nbytes = rep.length << 2; if (! attr->buffers) { - _XEatData(dpy, (unsigned long) nbytes); + _XEatDataWords(dpy, rep.length); UnlockDisplay(dpy); SyncHandle(); return (0); diff --git a/libXext/src/XSecurity.c b/libXext/src/XSecurity.c index f8c7da13b..ab17755c8 100644 --- a/libXext/src/XSecurity.c +++ b/libXext/src/XSecurity.c @@ -33,6 +33,7 @@ in this Software without prior written authorization from The Open Group. #include #include #include +#include "eat.h" static XExtensionInfo _Security_info_data; static XExtensionInfo *Security_info = &_Security_info_data; @@ -282,7 +283,7 @@ XSecurityGenerateAuthorization( } else { - _XEatData(dpy, (unsigned long) (rep.dataLength + 3) & ~3); + _XEatDataWords(dpy, rep.length); } UnlockDisplay (dpy); diff --git a/libXext/src/XShape.c b/libXext/src/XShape.c index 6e8fbae9f..d02502004 100644 --- a/libXext/src/XShape.c +++ b/libXext/src/XShape.c @@ -35,6 +35,8 @@ in this Software without prior written authorization from The Open Group. #include #include #include +#include +#include "eat.h" static XExtensionInfo _shape_info_data; static XExtensionInfo *shape_info = &_shape_info_data; @@ -442,7 +444,7 @@ XRectangle *XShapeGetRectangles ( xShapeGetRectanglesReply rep; XRectangle *rects; xRectangle *xrects; - int i; + unsigned int i; ShapeCheckExtension (dpy, info, (XRectangle *)NULL); @@ -460,20 +462,23 @@ XRectangle *XShapeGetRectangles ( *count = rep.nrects; *ordering = rep.ordering; rects = NULL; - if (*count) { - xrects = (xRectangle *) Xmalloc (*count * sizeof (xRectangle)); - rects = (XRectangle *) Xmalloc (*count * sizeof (XRectangle)); + if (rep.nrects) { + if (rep.nrects < (INT_MAX / sizeof (XRectangle))) { + xrects = Xmalloc (rep.nrects * sizeof (xRectangle)); + rects = Xmalloc (rep.nrects * sizeof (XRectangle)); + } else { + xrects = NULL; + rects = NULL; + } if (!xrects || !rects) { - if (xrects) - Xfree (xrects); - if (rects) - Xfree (rects); - _XEatData (dpy, *count * sizeof (xRectangle)); + Xfree (xrects); + Xfree (rects); + _XEatDataWords (dpy, rep.length); rects = NULL; *count = 0; } else { - _XRead (dpy, (char *) xrects, *count * sizeof (xRectangle)); - for (i = 0; i < *count; i++) { + _XRead (dpy, (char *) xrects, rep.nrects * sizeof (xRectangle)); + for (i = 0; i < rep.nrects; i++) { rects[i].x = (short) cvtINT16toInt (xrects[i].x); rects[i].y = (short) cvtINT16toInt (xrects[i].y); rects[i].width = xrects[i].width; diff --git a/libXext/src/XSync.c b/libXext/src/XSync.c index 577529388..ce4ab44d9 100644 --- a/libXext/src/XSync.c +++ b/libXext/src/XSync.c @@ -59,6 +59,8 @@ PERFORMANCE OF THIS SOFTWARE. #include #include #include +#include +#include "eat.h" static XExtensionInfo _sync_info_data; static XExtensionInfo *sync_info = &_sync_info_data; @@ -351,20 +353,29 @@ XSyncListSystemCounters(Display *dpy, int *n_counters_return) if (rep.nCounters > 0) { xSyncSystemCounter *pWireSysCounter, *pNextWireSysCounter; + xSyncSystemCounter *pLastWireSysCounter; XSyncCounter counter; - int replylen; + unsigned int replylen; int i; - list = Xmalloc(rep.nCounters * sizeof(XSyncSystemCounter)); - replylen = rep.length << 2; - pWireSysCounter = Xmalloc ((unsigned) replylen + sizeof(XSyncCounter)); - /* +1 to leave room for last counter read-ahead */ + if (rep.nCounters < (INT_MAX / sizeof(XSyncSystemCounter))) + list = Xmalloc(rep.nCounters * sizeof(XSyncSystemCounter)); + if (rep.length < (INT_MAX >> 2)) { + replylen = rep.length << 2; + pWireSysCounter = Xmalloc (replylen + sizeof(XSyncCounter)); + /* +1 to leave room for last counter read-ahead */ + pLastWireSysCounter = (xSyncSystemCounter *) + ((char *)pWireSysCounter) + replylen; + } else { + replylen = 0; + pWireSysCounter = NULL; + } if ((!list) || (!pWireSysCounter)) { - if (list) Xfree((char *) list); - if (pWireSysCounter) Xfree((char *) pWireSysCounter); - _XEatData(dpy, (unsigned long) replylen); + Xfree(list); + Xfree(pWireSysCounter); + _XEatDataWords(dpy, rep.length); list = NULL; goto bail; } @@ -387,6 +398,14 @@ XSyncListSystemCounters(Display *dpy, int *n_counters_return) pNextWireSysCounter = (xSyncSystemCounter *) (((char *)pWireSysCounter) + ((SIZEOF(xSyncSystemCounter) + pWireSysCounter->name_length + 3) & ~3)); + /* Make sure we haven't gone too far */ + if (pNextWireSysCounter > pLastWireSysCounter) { + Xfree(list); + Xfree(pWireSysCounter); + list = NULL; + goto bail; + } + counter = pNextWireSysCounter->counter; list[i].name = ((char *)pWireSysCounter) + diff --git a/libXext/src/Xcup.c b/libXext/src/Xcup.c index bb9e90f7e..cdc64c2a3 100644 --- a/libXext/src/Xcup.c +++ b/libXext/src/Xcup.c @@ -36,6 +36,8 @@ in this Software without prior written authorization from The Open Group. #include #include #include +#include +#include "eat.h" static XExtensionInfo _xcup_info_data; static XExtensionInfo *xcup_info = &_xcup_info_data; @@ -133,18 +135,22 @@ XcupGetReservedColormapEntries( req->xcupReqType = X_XcupGetReservedColormapEntries; req->screen = screen; if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - long nbytes; + unsigned long nbytes; xColorItem* rbufp; - int nentries = rep.length / 3; + unsigned int nentries = rep.length / 3; - nbytes = nentries * SIZEOF (xColorItem); - if (nentries > TYP_RESERVED_ENTRIES) - rbufp = (xColorItem*) Xmalloc (nbytes); - else - rbufp = rbuf; + if (nentries < (INT_MAX / SIZEOF (xColorItem))) { + nbytes = nentries * SIZEOF (xColorItem); + + if (nentries > TYP_RESERVED_ENTRIES) + rbufp = Xmalloc (nbytes); + else + rbufp = rbuf; + } else + rbufp = NULL; if (rbufp == NULL) { - _XEatData (dpy, (unsigned long) nbytes); + _XEatDataWords(dpy, rep.length); UnlockDisplay (dpy); SyncHandle (); return False; @@ -213,27 +219,24 @@ XcupStoreColors( } if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - long nbytes; + unsigned long nbytes; xColorItem* rbufp; xColorItem* cs; - int nentries = rep.length / 3; - - nbytes = nentries * SIZEOF (xColorItem); + unsigned int nentries = rep.length / 3; - if (nentries != ncolors) { - _XEatData (dpy, (unsigned long) nbytes); - UnlockDisplay (dpy); - SyncHandle (); - return False; - } + if ((nentries == ncolors) && + (nentries < (INT_MAX / SIZEOF (xColorItem)))) { + nbytes = nentries * SIZEOF (xColorItem); - if (ncolors > 256) - rbufp = (xColorItem*) Xmalloc (nbytes); - else - rbufp = rbuf; + if (ncolors > 256) + rbufp = Xmalloc (nbytes); + else + rbufp = rbuf; + } else + rbufp = NULL; if (rbufp == NULL) { - _XEatData (dpy, (unsigned long) nbytes); + _XEatDataWords(dpy, rep.length); UnlockDisplay (dpy); SyncHandle (); return False; diff --git a/libXext/src/Xdbe.c b/libXext/src/Xdbe.c index 4b5fa186c..016886c58 100644 --- a/libXext/src/Xdbe.c +++ b/libXext/src/Xdbe.c @@ -39,6 +39,8 @@ #include #include #include +#include +#include "eat.h" static XExtensionInfo _dbe_info_data; static XExtensionInfo *dbe_info = &_dbe_info_data; @@ -352,9 +354,12 @@ XdbeScreenVisualInfo *XdbeGetVisualInfo ( *num_screens = rep.m; /* allocate list of visual information to be returned */ - if (!(scrVisInfo = - (XdbeScreenVisualInfo *)Xmalloc( - (unsigned)(*num_screens * sizeof(XdbeScreenVisualInfo))))) { + if ((*num_screens > 0) && (*num_screens < 65536)) + scrVisInfo = Xmalloc(*num_screens * sizeof(XdbeScreenVisualInfo)); + else + scrVisInfo = NULL; + if (scrVisInfo == NULL) { + _XEatDataWords(dpy, rep.length); UnlockDisplay (dpy); SyncHandle (); return NULL; @@ -362,25 +367,27 @@ XdbeScreenVisualInfo *XdbeGetVisualInfo ( for (i = 0; i < *num_screens; i++) { - int nbytes; int j; - long c; + unsigned long c; - _XRead32 (dpy, &c, sizeof(CARD32)); - scrVisInfo[i].count = c; + _XRead32 (dpy, (long *) &c, sizeof(CARD32)); - nbytes = scrVisInfo[i].count * sizeof(XdbeVisualInfo); + if (c < 65536) { + scrVisInfo[i].count = c; + scrVisInfo[i].visinfo = Xmalloc(c * sizeof(XdbeVisualInfo)); + } else + scrVisInfo[i].visinfo = NULL; /* if we can not allocate the list of visual/depth info * then free the lists that we already allocate as well * as the visual info list itself */ - if (!(scrVisInfo[i].visinfo = (XdbeVisualInfo *)Xmalloc( - (unsigned)nbytes))) { + if (scrVisInfo[i].visinfo == NULL) { for (j = 0; j < i; j++) { Xfree ((char *)scrVisInfo[j].visinfo); } Xfree ((char *)scrVisInfo); + _XEatDataWords(dpy, rep.length); UnlockDisplay (dpy); SyncHandle (); return NULL; diff --git a/libXext/src/eat.h b/libXext/src/eat.h new file mode 100644 index 000000000..239532b6d --- /dev/null +++ b/libXext/src/eat.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifndef HAVE__XEATDATAWORDS +#include /* for LONG64 on 64-bit platforms */ +#include + +static inline void _XEatDataWords(Display *dpy, unsigned long n) +{ +# ifndef LONG64 + if (n >= (ULONG_MAX >> 2)) + _XIOError(dpy); +# endif + _XEatData (dpy, n << 2); +} +#endif diff --git a/libXinerama/configure.ac b/libXinerama/configure.ac index e3355083b..17c5cb1fd 100644 --- a/libXinerama/configure.ac +++ b/libXinerama/configure.ac @@ -21,7 +21,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) -AC_INIT([libXinerama], [1.1.2], +AC_INIT([libXinerama], [1.1.3], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXinerama]) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_HEADERS([config.h]) @@ -42,6 +42,12 @@ XORG_CHECK_MALLOC_ZERO # Obtain compiler/linker options for depedencies PKG_CHECK_MODULES(XINERAMA, x11 xext xextproto [xineramaproto >= 1.1.99.1]) +# Check for _XEatDataWords function that may be patched into older Xlib releases +SAVE_LIBS="$LIBS" +LIBS="$XINERAMA_LIBS" +AC_CHECK_FUNCS([_XEatDataWords]) +LIBS="$SAVE_LIBS" + # Allow checking code with lint, sparse, etc. XORG_WITH_LINT LINT_FLAGS="${LINT_FLAGS} ${XINERAMA_CFLAGS}" diff --git a/libXinerama/src/Xinerama.c b/libXinerama/src/Xinerama.c index 7d7e4d856..67a35b578 100644 --- a/libXinerama/src/Xinerama.c +++ b/libXinerama/src/Xinerama.c @@ -23,6 +23,10 @@ dealings in this Software without prior written authorization from Digital Equipment Corporation. ******************************************************************/ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + #include #include #include @@ -31,6 +35,19 @@ Equipment Corporation. #include #include +#ifndef HAVE__XEATDATAWORDS +#include /* for LONG64 on 64-bit platforms */ +#include + +static inline void _XEatDataWords(Display *dpy, unsigned long n) +{ +# ifndef LONG64 + if (n >= (ULONG_MAX >> 2)) + _XIOError(dpy); +# endif + _XEatData (dpy, n << 2); +} +#endif static XExtensionInfo _panoramiX_ext_info_data; static XExtensionInfo *panoramiX_ext_info = &_panoramiX_ext_info_data; @@ -286,24 +303,36 @@ XineramaQueryScreens( return NULL; } - if(rep.number) { - if((scrnInfo = Xmalloc(sizeof(XineramaScreenInfo) * rep.number))) { + /* + * rep.number is a CARD32 so could be as large as 2^32 + * The X11 protocol limits the total screen size to 64k x 64k, + * and no screen can be smaller than a pixel. While technically + * that means we could theoretically reach 2^32 screens, and that's + * not even taking overlap into account, Xorg is currently limited + * to 16 screens, and few known servers have a much higher limit, + * so 1024 seems more than enough to prevent both integer overflow + * and insane X server responses causing massive memory allocation. + */ + if ((rep.number > 0) && (rep.number <= 1024)) + scrnInfo = Xmalloc(sizeof(XineramaScreenInfo) * rep.number); + if (scrnInfo != NULL) { + int i; + + for (i = 0; i < rep.number; i++) { xXineramaScreenInfo scratch; - int i; - - for(i = 0; i < rep.number; i++) { - _XRead(dpy, (char*)(&scratch), sz_XineramaScreenInfo); - scrnInfo[i].screen_number = i; - scrnInfo[i].x_org = scratch.x_org; - scrnInfo[i].y_org = scratch.y_org; - scrnInfo[i].width = scratch.width; - scrnInfo[i].height = scratch.height; - } - - *number = rep.number; - } else - _XEatData(dpy, rep.length << 2); + + _XRead(dpy, (char*)(&scratch), sz_XineramaScreenInfo); + + scrnInfo[i].screen_number = i; + scrnInfo[i].x_org = scratch.x_org; + scrnInfo[i].y_org = scratch.y_org; + scrnInfo[i].width = scratch.width; + scrnInfo[i].height = scratch.height; + } + + *number = rep.number; } else { + _XEatDataWords(dpy, rep.length); *number = 0; } diff --git a/libfontenc/configure.ac b/libfontenc/configure.ac index 953a81f86..62a959304 100644 --- a/libfontenc/configure.ac +++ b/libfontenc/configure.ac @@ -21,7 +21,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) -AC_INIT([libfontenc], [1.1.1], +AC_INIT([libfontenc], [1.1.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libfontenc]) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_HEADERS([config.h]) diff --git a/libxcb/src/c_client.py b/libxcb/src/c_client.py index ec66223f1..942e78a61 100644 --- a/libxcb/src/c_client.py +++ b/libxcb/src/c_client.py @@ -687,10 +687,20 @@ def _c_serialize_helper_switch(context, self, complex_name, switch_expr = _c_accessor_get_expr(self.expr, None) for b in self.bitcases: - bitcase_expr = _c_accessor_get_expr(b.type.expr, None) - code_lines.append(' if(%s & %s) {' % (switch_expr, bitcase_expr)) -# code_lines.append(' printf("switch %s: entering bitcase section %s (mask=%%%%d)...\\n", %s);' % -# (self.name[-1], b.type.name[-1], bitcase_expr)) + len_expr = len(b.type.expr) + for n, expr in enumerate(b.type.expr): + bitcase_expr = _c_accessor_get_expr(expr, None) + # only one in the + if len_expr == 1: + code_lines.append(' if(%s & %s) {' % (switch_expr, bitcase_expr)) + # multiple in the + elif n == 0: # first + code_lines.append(' if((%s & %s) ||' % (switch_expr, bitcase_expr)) + elif len_expr == (n + 1): # last + code_lines.append(' (%s & %s)) {' % (switch_expr, bitcase_expr)) + else: # between first and last + code_lines.append(' (%s & %s) ||' % (switch_expr, bitcase_expr)) + b_prefix = prefix if b.type.has_name: b_prefix = prefix + [(b.c_field_name, '.', b.type)] diff --git a/libxcb/src/xcb_in.c b/libxcb/src/xcb_in.c index b8107834c..8a7af920b 100644 --- a/libxcb/src/xcb_in.c +++ b/libxcb/src/xcb_in.c @@ -93,8 +93,9 @@ static void remove_finished_readers(reader_list **prev_reader, uint64_t complete static int read_packet(xcb_connection_t *c) { xcb_generic_reply_t genrep; - int length = 32; - int eventlength = 0; /* length after first 32 bytes for GenericEvents */ + uint64_t length = 32; + uint64_t eventlength = 0; /* length after first 32 bytes for GenericEvents */ + uint64_t bufsize; void *buf; pending_reply *pend = 0; struct event_list *event; @@ -169,8 +170,12 @@ static int read_packet(xcb_connection_t *c) if ((genrep.response_type & 0x7f) == XCB_XGE_EVENT) eventlength = genrep.length * 4; - buf = malloc(length + eventlength + - (genrep.response_type == XCB_REPLY ? 0 : sizeof(uint32_t))); + bufsize = length + eventlength + + (genrep.response_type == XCB_REPLY ? 0 : sizeof(uint32_t)); + if (bufsize < INT32_MAX) + buf = malloc((size_t) bufsize); + else + buf = NULL; if(!buf) { _xcb_conn_shutdown(c, XCB_CONN_CLOSED_MEM_INSUFFICIENT); diff --git a/libxcb/src/xcb_out.c b/libxcb/src/xcb_out.c index 405f963de..429fa99d3 100644 --- a/libxcb/src/xcb_out.c +++ b/libxcb/src/xcb_out.c @@ -86,21 +86,24 @@ static void send_sync(xcb_connection_t *c) static void get_socket_back(xcb_connection_t *c) { - while(c->out.return_socket && c->out.socket_moving) - pthread_cond_wait(&c->out.socket_cond, &c->iolock); - if(!c->out.return_socket) - return; - - c->out.socket_moving = 1; - pthread_mutex_unlock(&c->iolock); - c->out.return_socket(c->out.socket_closure); - pthread_mutex_lock(&c->iolock); - c->out.socket_moving = 0; - - pthread_cond_broadcast(&c->out.socket_cond); - c->out.return_socket = 0; - c->out.socket_closure = 0; - _xcb_in_replies_done(c); + while (c->out.return_socket) { + /* we are about to release the lock, + so make a copy of the current status */ + xcb_return_socket_func_t return_socket = c->out.return_socket; + void *socket_closure = c->out.socket_closure; + int socket_seq = c->out.socket_seq; + + pthread_mutex_unlock(&c->iolock); + return_socket(socket_closure); + pthread_mutex_lock(&c->iolock); + + /* make sure nobody else has acquired the socket */ + if (socket_seq == c->out.socket_seq) { + c->out.return_socket = 0; + c->out.socket_closure = 0; + _xcb_in_replies_done(c); + } + } } /* Public interface */ @@ -272,12 +275,13 @@ int xcb_take_socket(xcb_connection_t *c, void (*return_socket)(void *closure), v * write requests, so keep flushing until we're done */ do - ret = _xcb_out_flush_to(c, c->out.request); + ret = _xcb_out_flush_to(c, c->out.request); while (ret && c->out.request != c->out.request_written); if(ret) { c->out.return_socket = return_socket; c->out.socket_closure = closure; + ++c->out.socket_seq; if(flags) _xcb_in_expect_reply(c, c->out.request, WORKAROUND_EXTERNAL_SOCKET_OWNER, flags); assert(c->out.request == c->out.request_written); @@ -314,11 +318,9 @@ int xcb_flush(xcb_connection_t *c) int _xcb_out_init(_xcb_out *out) { - if(pthread_cond_init(&out->socket_cond, 0)) - return 0; out->return_socket = 0; out->socket_closure = 0; - out->socket_moving = 0; + out->socket_seq = 0; if(pthread_cond_init(&out->cond, 0)) return 0; diff --git a/libxcb/src/xcbext.h b/libxcb/src/xcbext.h index 98b3c93c1..4e1f2f73d 100644 --- a/libxcb/src/xcbext.h +++ b/libxcb/src/xcbext.h @@ -66,6 +66,7 @@ unsigned int xcb_send_request(xcb_connection_t *c, int flags, struct iovec *vect * callback which XCB can call when it wants the write side of the * socket back to make a request. This callback synchronizes with the * external socket owner and flushes any output queues if appropriate. + * The callback might be called from different threads at the same time. * If you are sending requests which won't cause a reply, please note the * comment for xcb_writev which explains some sequence number wrap issues. * */ diff --git a/libxcb/src/xcbint.h b/libxcb/src/xcbint.h index f9e5a52f7..7f9ab2838 100644 --- a/libxcb/src/xcbint.h +++ b/libxcb/src/xcbint.h @@ -79,14 +79,15 @@ void *_xcb_map_remove(_xcb_map *q, unsigned int key); /* xcb_out.c */ +typedef void (*xcb_return_socket_func_t)(void *closure); + typedef struct _xcb_out { pthread_cond_t cond; int writing; - pthread_cond_t socket_cond; - void (*return_socket)(void *closure); + xcb_return_socket_func_t return_socket; void *socket_closure; - int socket_moving; + unsigned int socket_seq; char queue[XCB_QUEUE_BUFFER_SIZE]; int queue_len; diff --git a/libxcb/xcb-proto/doc/xml-xcb.txt b/libxcb/xcb-proto/doc/xml-xcb.txt index 705772736..cf6d14e46 100644 --- a/libxcb/xcb-proto/doc/xml-xcb.txt +++ b/libxcb/xcb-proto/doc/xml-xcb.txt @@ -229,13 +229,18 @@ enum; the value is restricted to one of the constants named in the enum. instead for new protocol definitions. switch expression - bitcase expression, fields + bitcase expression(s), fields This element represents conditional inclusion of fields. It can be viewed as sequence of multiple ifs: if ( switch expression & bitcase expression ) - is equal to bitcase expression, bitcase fields are included in structure. - It can be used only as the last field of structure. New protocol definitions - should prefer to use this instead of . + is non-zero, bitcase fields are included in structure. It can be used only + as the last field of a structure. + + When a bitcase includes multiple clauses, the contents of the + bitcase are only present once regardless of the number of bitcase expressions + that match. + + New protocol definitions should prefer to use this instead of . Expressions ----------- diff --git a/libxcb/xcb-proto/src/res.xml b/libxcb/xcb-proto/src/res.xml index d758d893b..1dd3bd196 100644 --- a/libxcb/xcb-proto/src/res.xml +++ b/libxcb/xcb-proto/src/res.xml @@ -26,9 +26,10 @@ sale, use or other dealings in this Software without prior written authorization from the authors. --> + major-version="1" minor-version="2"> xproto + @@ -39,6 +40,41 @@ authorization from the authors. + + + + + + + + + + + length + + + + + + + + + + + + + + + + + + + + num_cross_references + + + + @@ -80,4 +116,36 @@ authorization from the authors. + + + + + + num_specs + + + + + + + num_ids + + + + + + + + + num_specs + + + + + + + num_sizes + + + diff --git a/libxcb/xcb-proto/src/screensaver.xml b/libxcb/xcb-proto/src/screensaver.xml index 9c7bccb08..7449c0a0b 100644 --- a/libxcb/xcb-proto/src/screensaver.xml +++ b/libxcb/xcb-proto/src/screensaver.xml @@ -75,14 +75,14 @@ Draft Standard Version 1.1 - + - + @@ -92,7 +92,7 @@ Draft Standard Version 1.1 - + - - - - + - + diff --git a/libxcb/xcb-proto/src/xcb.xsd b/libxcb/xcb-proto/src/xcb.xsd index cfa90c9c2..4ef269e10 100644 --- a/libxcb/xcb-proto/src/xcb.xsd +++ b/libxcb/xcb-proto/src/xcb.xsd @@ -59,7 +59,7 @@ authorization from the authors. - + diff --git a/libxcb/xcb-proto/src/xkb.xml b/libxcb/xcb-proto/src/xkb.xml index a6ef37490..0e263c4fb 100644 --- a/libxcb/xcb-proto/src/xkb.xml +++ b/libxcb/xcb-proto/src/xkb.xml @@ -268,7 +268,7 @@ authorization from the authors. 0 - + 0 1 2 @@ -311,7 +311,7 @@ authorization from the authors. - + @@ -370,33 +370,42 @@ authorization from the authors. - + 4 - + 4 - + 4 - - - - length - - - - + length - + + + + + length + 5 + + + 3 + + + + length + 2 + + + @@ -1020,6 +1029,23 @@ authorization from the authors. + + + + 7 + + + + + + + + + + + + + @@ -1060,11 +1086,11 @@ authorization from the authors. - - - - - + + + + + affectWhich @@ -1211,9 +1237,9 @@ authorization from the authors. - - - + + + 32 @@ -1234,8 +1260,8 @@ authorization from the authors. - - + + @@ -1247,8 +1273,8 @@ authorization from the authors. - - + + @@ -1258,8 +1284,8 @@ authorization from the authors. - - + + @@ -1281,7 +1307,7 @@ authorization from the authors. - + @@ -1337,7 +1363,7 @@ authorization from the authors. VirtualMods - nVModMapKeys + virtualMods @@ -1364,7 +1390,7 @@ authorization from the authors. - + @@ -1421,7 +1447,7 @@ authorization from the authors. VirtualMods - nVModMapKeys + virtualMods @@ -1459,11 +1485,8 @@ authorization from the authors. - - - 16 - nSIRtrn - + + nSIRtrn @@ -1482,11 +1505,8 @@ authorization from the authors. - - - 16 - nSI - + + nSI @@ -1516,7 +1536,7 @@ authorization from the authors. - nIndicators + which @@ -1984,6 +2004,8 @@ authorization from the authors. reported Types + ClientSymbols + ServerSymbols @@ -1995,7 +2017,7 @@ authorization from the authors. - + @@ -2051,7 +2073,7 @@ authorization from the authors. VirtualMods - nVModMapKeys + virtualMods @@ -2076,18 +2098,20 @@ authorization from the authors. CompatMap + + + + + - - - 16 - nSIRtrn - + + nSIRtrn @@ -2095,179 +2119,14 @@ authorization from the authors. - - ClientSymbols - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - present - - KeyTypes - - nTypes - - - - KeySyms - - nKeySyms - - - - KeyActions - - nKeyActions - - - totalActions - - - - KeyBehaviors - - totalKeyBehaviors - - - - VirtualMods - - nVModMapKeys - - - - ExplicitComponents - - totalKeyExplicit - - - - ModifierMap - - totalModMapKeys - - - - VirtualModMap - - totalVModMapKeys - - - - - - ServerSymbols - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - present - - KeyTypes - - nTypes - - - - KeySyms - - nKeySyms - - - - KeyActions - - nKeyActions - - - totalActions - - - - KeyBehaviors - - totalKeyBehaviors - - - - VirtualMods - - nVModMapKeys - - - - ExplicitComponents - - totalKeyExplicit - - - - ModifierMap - - totalModMapKeys - - - - VirtualModMap - - totalVModMapKeys - - - - IndicatorMaps + + + + + @@ -2278,7 +2137,13 @@ authorization from the authors. KeyNames + OtherNames + + + + + @@ -2377,110 +2242,14 @@ authorization from the authors. - - OtherNames - - - - - - - - - - - - - - - - which - - Keycodes - - - - Geometry - - - - Symbols - - - - PhysSymbols - - - - Types - - - - Compat - - - - KeyTypeNames - - nTypes - - - - KTLevelNames - - nKTLevels - - - - - - - IndicatorNames - - - indicators - - - - - VirtualModNames - - - virtualMods - - - - - GroupNames - - - groupNames - - - - - KeyNames - - nKeys - - - - KeyAliases - - nKeyAliases - - - - RGNames - - nRadioGroups - - - - Geometry + + + + + @@ -2593,9 +2362,8 @@ authorization from the authors. - + - @@ -2609,9 +2377,8 @@ authorization from the authors. - + - @@ -2636,9 +2403,8 @@ authorization from the authors. - + - @@ -2662,9 +2428,8 @@ authorization from the authors. - + - @@ -2679,9 +2444,8 @@ authorization from the authors. - + - @@ -2690,9 +2454,8 @@ authorization from the authors. - + - @@ -2701,9 +2464,8 @@ authorization from the authors. - + - @@ -2723,9 +2485,8 @@ authorization from the authors. - + - @@ -2735,9 +2496,8 @@ authorization from the authors. - + - @@ -2751,9 +2511,8 @@ authorization from the authors. - + - @@ -2767,9 +2526,8 @@ authorization from the authors. - + - @@ -2779,9 +2537,8 @@ authorization from the authors. - + - diff --git a/libxcb/xcb-proto/xcbgen/xtypes.py b/libxcb/xcb-proto/xcbgen/xtypes.py index f6d463445..5469cd961 100644 --- a/libxcb/xcb-proto/xcbgen/xtypes.py +++ b/libxcb/xcb-proto/xcbgen/xtypes.py @@ -481,8 +481,14 @@ class BitcaseType(ComplexType): ''' def __init__(self, index, name, elt, *parent): elts = list(elt) - self.expr = Expression(elts[0] if len(elts) else elt, self) - ComplexType.__init__(self, name, elts[1:]) + self.expr = [] + fields = [] + for elt in elts: + if elt.tag == 'enumref': + self.expr.append(Expression(elt, self)) + else: + fields.append(elt) + ComplexType.__init__(self, name, fields) self.has_name = True self.index = 1 self.lenfield_parent = list(parent) + [self] @@ -510,8 +516,9 @@ class BitcaseType(ComplexType): def resolve(self, module): if self.resolved: return - - self.expr.resolve(module, self.parents+[self]) + + for e in self.expr: + e.resolve(module, self.parents+[self]) # Resolve the bitcase expression ComplexType.resolve(self, module) @@ -593,8 +600,7 @@ class Event(ComplexType): ComplexType.__init__(self, name, elt) self.opcodes = {} - tmp = elt.get('no-sequence-number') - self.has_seq = (tmp == None or tmp.lower() == 'false' or tmp == '0') + self.has_seq = not bool(elt.get('no-sequence-number')) self.doc = None for item in list(elt): diff --git a/mesalib/Android.mk b/mesalib/Android.mk index 80c0e1395..c3c1f08f0 100644 --- a/mesalib/Android.mk +++ b/mesalib/Android.mk @@ -24,7 +24,7 @@ # BOARD_GPU_DRIVERS should be defined. The valid values are # # classic drivers: i915 i965 -# gallium drivers: swrast i915g nouveau r300g r600g radeonsi vmwgfx +# gallium drivers: swrast i915g ilo nouveau r300g r600g radeonsi vmwgfx # # The main target is libGLES_mesa. For each classic driver enabled, a DRI # module will also be built. DRI modules will be loaded by libGLES_mesa. @@ -42,7 +42,7 @@ DRM_TOP := external/drm DRM_GRALLOC_TOP := hardware/drm_gralloc classic_drivers := i915 i965 -gallium_drivers := swrast i915g nouveau r300g r600g radeonsi vmwgfx +gallium_drivers := swrast i915g ilo nouveau r300g r600g radeonsi vmwgfx MESA_GPU_DRIVERS := $(strip $(BOARD_GPU_DRIVERS)) diff --git a/mesalib/bin/bugzilla_mesa.sh b/mesalib/bin/bugzilla_mesa.sh new file mode 100644 index 000000000..491ca0e7c --- /dev/null +++ b/mesalib/bin/bugzilla_mesa.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# This script is used to generate the list of fixed bugs that +# appears in the release notes files, with HTML formatting. +# +# Note: This script could take a while until all details have +# been fetched from bugzilla. +# +# Usage examples: +# +# $ bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 +# $ bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 > bugfixes +# $ bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 | tee bugfixes +# $ DRYRUN=yes bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 +# $ DRYRUN=yes bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 | wc -l + + +# regex pattern: trim before url +trim_before='s/.*\(http\)/\1/' + +# regex pattern: trim after url +trim_after='s/\(show_bug.cgi?id=[0-9]*\).*/\1/' + +# regex pattern: always use https +use_https='s/http:/https:/' + +# extract fdo urls from commit log +urls=$(git log $* | grep 'bugs.freedesktop.org/show_bug' | sed -e $trim_before -e $trim_after -e $use_https | sort | uniq) + +# if DRYRUN is set to "yes", simply print the URLs and don't fetch the +# details from fdo bugzilla. +#DRYRUN=yes + +if [ "x$DRYRUN" = xyes ]; then + for i in $urls + do + echo $i + done +else + echo "
    " + echo "" + + for i in $urls + do + id=$(echo $i | cut -d'=' -f2) + summary=$(wget --quiet -O - $i | grep -e '.*' | sed -e 's/ *Bug [0-9]\+ – \(.*\)<\/title>/\1/') + echo "<li><a href=\"$i\">Bug $id</a> - $summary</li>" + echo "" + done + + echo "</ul>" +fi diff --git a/mesalib/bin/get-pick-list.sh b/mesalib/bin/get-pick-list.sh index d3ac511c1..d2b76e7e6 100644 --- a/mesalib/bin/get-pick-list.sh +++ b/mesalib/bin/get-pick-list.sh @@ -1,6 +1,12 @@ #!/bin/sh # Script for generating a list of candidates for cherry-picking to a stable branch +# +# Usage examples: +# +# $ bin/get-pick-list.sh +# $ bin/get-pick-list.sh > picklist +# $ bin/get-pick-list.sh | tee picklist # Grep for commits with "cherry picked from commit" in the commit message. git log --reverse --grep="cherry picked from commit" origin/master..HEAD |\ diff --git a/mesalib/bin/perf-annotate-jit b/mesalib/bin/perf-annotate-jit new file mode 100644 index 000000000..746434008 --- /dev/null +++ b/mesalib/bin/perf-annotate-jit @@ -0,0 +1,251 @@ +#!/usr/bin/env python +# +# Copyright 2012 VMware Inc +# Copyright 2008-2009 Jose Fonseca +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# + +"""Perf annotate for JIT code. + +Linux `perf annotate` does not work with JIT code. This script takes the data +produced by `perf script` command, plus the diassemblies outputed by gallivm +into /tmp/perf-XXXXX.map.asm and produces output similar to `perf annotate`. + +See docs/llvmpipe.html for usage instructions. + +The `perf script` output parser was derived from the gprof2dot.py script. +""" + + +import sys +import os.path +import re +import optparse +import subprocess + + +class Parser: + """Parser interface.""" + + def __init__(self): + pass + + def parse(self): + raise NotImplementedError + + +class LineParser(Parser): + """Base class for parsers that read line-based formats.""" + + def __init__(self, file): + Parser.__init__(self) + self._file = file + self.__line = None + self.__eof = False + self.line_no = 0 + + def readline(self): + line = self._file.readline() + if not line: + self.__line = '' + self.__eof = True + else: + self.line_no += 1 + self.__line = line.rstrip('\r\n') + + def lookahead(self): + assert self.__line is not None + return self.__line + + def consume(self): + assert self.__line is not None + line = self.__line + self.readline() + return line + + def eof(self): + assert self.__line is not None + return self.__eof + + +mapFile = None + +def lookupMap(filename, matchSymbol): + global mapFile + mapFile = filename + stream = open(filename, 'rt') + for line in stream: + start, length, symbol = line.split() + + start = int(start, 16) + length = int(length,16) + + if symbol == matchSymbol: + return start + + return None + +def lookupAsm(filename, desiredFunction): + stream = open(filename + '.asm', 'rt') + while stream.readline() != desiredFunction + ':\n': + pass + + asm = [] + line = stream.readline().strip() + while line: + addr, instr = line.split(':', 1) + addr = int(addr) + asm.append((addr, instr)) + line = stream.readline().strip() + + return asm + + + +samples = {} + + +class PerfParser(LineParser): + """Parser for linux perf callgraph output. + + It expects output generated with + + perf record -g + perf script + """ + + def __init__(self, infile, symbol): + LineParser.__init__(self, infile) + self.symbol = symbol + + def readline(self): + # Override LineParser.readline to ignore comment lines + while True: + LineParser.readline(self) + if self.eof() or not self.lookahead().startswith('#'): + break + + def parse(self): + # read lookahead + self.readline() + + while not self.eof(): + self.parse_event() + + asm = lookupAsm(mapFile, self.symbol) + + addresses = samples.keys() + addresses.sort() + total_samples = 0 + + sys.stdout.write('%s:\n' % self.symbol) + for address, instr in asm: + try: + sample = samples.pop(address) + except KeyError: + sys.stdout.write(6*' ') + else: + sys.stdout.write('%6u' % (sample)) + total_samples += sample + sys.stdout.write('%6u: %s\n' % (address, instr)) + print 'total:', total_samples + assert len(samples) == 0 + + sys.exit(0) + + def parse_event(self): + if self.eof(): + return + + line = self.consume() + assert line + + callchain = self.parse_callchain() + if not callchain: + return + + def parse_callchain(self): + callchain = [] + while self.lookahead(): + function = self.parse_call(len(callchain) == 0) + if function is None: + break + callchain.append(function) + if self.lookahead() == '': + self.consume() + return callchain + + call_re = re.compile(r'^\s+(?P<address>[0-9a-fA-F]+)\s+(?P<symbol>.*)\s+\((?P<module>[^)]*)\)$') + + def parse_call(self, first): + line = self.consume() + mo = self.call_re.match(line) + assert mo + if not mo: + return None + + if not first: + return None + + function_name = mo.group('symbol') + if not function_name: + function_name = mo.group('address') + + module = mo.group('module') + + function_id = function_name + ':' + module + + address = mo.group('address') + address = int(address, 16) + + if function_name != self.symbol: + return None + + start_address = lookupMap(module, function_name) + address -= start_address + + #print function_name, module, address + + samples[address] = samples.get(address, 0) + 1 + + return True + + +def main(): + """Main program.""" + + optparser = optparse.OptionParser( + usage="\n\t%prog [options] symbol_name") + (options, args) = optparser.parse_args(sys.argv[1:]) + if len(args) != 1: + optparser.error('wrong number of arguments') + + symbol = args[0] + + p = subprocess.Popen(['perf', 'script'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + parser = PerfParser(p.stdout, symbol) + parser.parse() + + +if __name__ == '__main__': + main() + + +# vim: set sw=4 et: diff --git a/mesalib/bin/shortlog_mesa.sh b/mesalib/bin/shortlog_mesa.sh index b20c52fdd..2ba0815de 100644 --- a/mesalib/bin/shortlog_mesa.sh +++ b/mesalib/bin/shortlog_mesa.sh @@ -2,6 +2,12 @@ # This script is used to generate the list of changes that # appears in the release notes files, with HTML formatting. +# +# Usage examples: +# +# $ bin/shortlog_mesa.sh mesa-9.0.2..mesa-9.0.3 +# $ bin/shortlog_mesa.sh mesa-9.0.2..mesa-9.0.3 > changes +# $ bin/shortlog_mesa.sh mesa-9.0.2..mesa-9.0.3 | tee changes typeset -i in_log=0 diff --git a/mesalib/configure.ac b/mesalib/configure.ac index 81d4a3f3e..521331bb4 100644 --- a/mesalib/configure.ac +++ b/mesalib/configure.ac @@ -31,7 +31,7 @@ AC_SUBST([OSMESA_VERSION]) dnl Versions for external dependencies LIBDRM_REQUIRED=2.4.24 -LIBDRM_RADEON_REQUIRED=2.4.42 +LIBDRM_RADEON_REQUIRED=2.4.45 LIBDRM_INTEL_REQUIRED=2.4.38 LIBDRM_NVVIEUX_REQUIRED=2.4.33 LIBDRM_NOUVEAU_REQUIRED="2.4.33 libdrm >= 2.4.41" @@ -652,7 +652,7 @@ GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast" AC_ARG_WITH([gallium-drivers], [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@], [comma delimited Gallium drivers list, e.g. - "i915,nouveau,r300,r600,radeonsi,freedreno,svga,swrast" + "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast" @<:@default=r300,r600,svga,swrast@:>@])], [with_gallium_drivers="$withval"], [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"]) @@ -676,19 +676,23 @@ if test "x$enable_opengl" = xno -a \ AC_MSG_ERROR([at least one API should be enabled]) fi -API_DEFINES="" -if test "x$enable_opengl" = xno; then - API_DEFINES="$API_DEFINES -DFEATURE_GL=0" -else - API_DEFINES="$API_DEFINES -DFEATURE_GL=1" -fi -if test "x$enable_gles1" = xyes; then - API_DEFINES="$API_DEFINES -DFEATURE_ES1=1" +# Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x +if test "x$enable_opengl" = xno -a \ + "x$enable_gles1" = xyes; then + AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported]) fi -if test "x$enable_gles2" = xyes; then - API_DEFINES="$API_DEFINES -DFEATURE_ES2=1" + +if test "x$enable_opengl" = xno -a \ + "x$enable_gles2" = xyes; then + AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported]) fi -AC_SUBST([API_DEFINES]) + +AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes) +AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes) +AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes) +AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \ + "x$enable_gles1" = xyes -o \ + "x$enable_gles2" = xyes) if test "x$enable_glx" = xno; then AC_MSG_WARN([GLX disabled, disabling Xlib-GLX]) @@ -717,6 +721,8 @@ if test "x$enable_glx" = xyes -a \ enable_glx=no fi +AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \ + "x$enable_dri" = xyes) AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes) AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \ "x$enable_osmesa" = xyes) @@ -733,80 +739,35 @@ if test "x$enable_dri" = xno; then enable_shared_glapi=no fi -if test "x$enable_shared_glapi" = xyes; then - # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use - # the remap table) - DEFINES="$DEFINES -DIN_DRI_DRIVER" - CORE_DIRS="mapi/shared-glapi" -fi AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes) dnl dnl Driver specific build directories dnl -GALLIUM_DIRS="auxiliary drivers state_trackers" GALLIUM_TARGET_DIRS="" GALLIUM_WINSYS_DIRS="sw" GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity" GALLIUM_STATE_TRACKERS_DIRS="" -# build glapi if OpenGL is enabled -if test "x$enable_opengl" = xyes; then - CORE_DIRS="$CORE_DIRS mapi/glapi" -fi - -# build es1api if OpenGL ES 1.x is enabled -if test "x$enable_gles1" = xyes; then - CORE_DIRS="$CORE_DIRS mapi/es1api" -fi - -# build es2api if OpenGL ES 2.x is enabled -if test "x$enable_gles2" = xyes; then - CORE_DIRS="$CORE_DIRS mapi/es2api" -fi - -# build glsl and mesa if OpenGL or OpenGL ES is enabled -case "x$enable_opengl$enable_gles1$enable_gles2" in -x*yes*) - CORE_DIRS="mapi/glapi/gen $CORE_DIRS gtest glsl mesa" - ;; -esac - case "x$enable_glx$enable_xlib_glx" in xyesyes) - DRIVER_DIRS="$DRIVER_DIRS x11" GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib" GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib" GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS" - HAVE_WINSYS_XLIB="yes" - ;; -xyesno) - # DRI-based GLX - SRC_DIRS="$SRC_DIRS glx" + NEED_WINSYS_XLIB="yes" ;; esac if test "x$enable_dri" = xyes; then - DRIVER_DIRS="$DRIVER_DIRS dri" - GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri" GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS" - HAVE_ST_DRI="yes" fi if test "x$enable_osmesa" = xyes; then - DRIVER_DIRS="$DRIVER_DIRS osmesa" GALLIUM_STATE_TRACKERS_DIRS="osmesa $GALLIUM_STATE_TRACKERS_DIRS" GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS osmesa" fi -AC_SUBST([SRC_DIRS]) -AC_SUBST([DRIVER_DIRS]) -AC_SUBST([GALLIUM_DIRS]) -AC_SUBST([GALLIUM_TARGET_DIRS]) -AC_SUBST([GALLIUM_WINSYS_DIRS]) -AC_SUBST([GALLIUM_DRIVERS_DIRS]) -AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS]) AC_SUBST([MESA_LLVM]) # Check for libdrm @@ -977,7 +938,7 @@ DRI_DIRS="" case "$with_dri_drivers" in no) ;; yes) - # classic DRI drivers require FEATURE_GL to build + # classic DRI drivers if test "x$enable_opengl" = xyes; then DRI_DIRS="yes" fi @@ -1001,7 +962,7 @@ if test "x$enable_dri" = xyes; then # Platform specific settings and drivers to build case "$host_os" in linux*) - DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" + DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1" DEFINES="$DEFINES -DHAVE_ALIAS" case "$host_cpu" in @@ -1026,21 +987,21 @@ if test "x$enable_dri" = xyes; then ;; freebsd* | dragonfly* | *netbsd*) DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1" - DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS" + DEFINES="$DEFINES -DHAVE_ALIAS" if test "x$DRI_DIRS" = "xyes"; then DRI_DIRS="i915 i965 nouveau r200 radeon swrast" fi ;; gnu*) - DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" + DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1" DEFINES="$DEFINES -DHAVE_ALIAS" ;; solaris*) - DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" + DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1" ;; cygwin*) - DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" + DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1" if test "x$DRI_DIRS" = "xyes"; then DRI_DIRS="swrast" fi @@ -1086,7 +1047,6 @@ if test "x$enable_dri" = xyes; then GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS" fi AM_CONDITIONAL(NEED_LIBDRICORE, test -n "$DRI_DIRS") -AC_SUBST([DRI_DIRS]) AC_SUBST([EXPAT_INCLUDES]) AC_SUBST([DRI_LIB_DEPS]) AC_SUBST([GALLIUM_DRI_LIB_DEPS]) @@ -1197,8 +1157,6 @@ if test "x$enable_gbm" = xauto; then esac fi if test "x$enable_gbm" = xyes; then - SRC_DIRS="$SRC_DIRS gbm" - PKG_CHECK_MODULES([LIBUDEV], [libudev], [], AC_MSG_ERROR([gbm needs udev])) @@ -1209,6 +1167,7 @@ if test "x$enable_gbm" = xyes; then fi fi fi +AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes) GBM_PC_REQ_PRIV="libudev" GBM_PC_LIB_PRIV="$DLOPEN_LIBS" AC_SUBST([GBM_PC_REQ_PRIV]) @@ -1220,7 +1179,6 @@ dnl EGL_CLIENT_APIS="" if test "x$enable_egl" = xyes; then - SRC_DIRS="$SRC_DIRS egl" EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS" AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"]) @@ -1239,6 +1197,7 @@ if test "x$enable_egl" = xyes; then fi fi +AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes) AC_SUBST([EGL_LIB_DEPS]) dnl @@ -1257,14 +1216,14 @@ if test "x$enable_gallium_egl" = xyes; then GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS" GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static" - HAVE_ST_EGL="yes" fi +AM_CONDITIONAL(HAVE_GALLIUM_EGL, test "x$enable_gallium_egl" = xyes) dnl dnl gbm Gallium configuration dnl if test "x$enable_gallium_gbm" = xauto; then - case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in + case "$enable_gbm$enable_gallium_egl$enable_dri$with_egl_platforms" in yesyesyes*drm*) enable_gallium_gbm=yes ;; *) @@ -1285,9 +1244,9 @@ if test "x$enable_gallium_gbm" = xyes; then GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS" GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm" - HAVE_ST_GBM="yes" enable_gallium_loader=yes fi +AM_CONDITIONAL(HAVE_GALLIUM_GBM, test "x$enable_gallium_gbm" = xyes) dnl dnl X.Org DDX configuration @@ -1300,8 +1259,8 @@ if test "x$enable_xorg" = xyes; then HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71", HAVE_XEXTPROTO_71="no") GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS" - HAVE_ST_XORG=yes fi +AM_CONDITIONAL(HAVE_ST_XORG, test "x$enable_xorg" = xyes) dnl dnl XA configuration @@ -1317,11 +1276,11 @@ fi fi if test "x$enable_xa" = xyes; then GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS" - HAVE_ST_XA=yes AC_SUBST(AWK) AC_SUBST(GREP) AC_SUBST(NM) fi +AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes) dnl dnl OpenVG configuration @@ -1341,9 +1300,7 @@ if test "x$enable_openvg" = xyes; then EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)' VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS" - CORE_DIRS="$CORE_DIRS mapi/vgapi" GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS" - HAVE_ST_VEGA=yes VG_PC_LIB_PRIV="-lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS" AC_SUBST([VG_PC_LIB_PRIV]) fi @@ -1352,16 +1309,7 @@ AM_CONDITIONAL(HAVE_OPENVG, test "x$enable_openvg" = xyes) dnl dnl Gallium G3DVL configuration dnl -AC_ARG_ENABLE([gallium-g3dvl], - [AS_HELP_STRING([--enable-gallium-g3dvl], - [build gallium g3dvl @<:@default=disabled@:>@])], - [enable_gallium_g3dvl="$enableval"], - [enable_gallium_g3dvl=no]) -if test "x$enable_gallium_g3dvl" = xyes; then - if test "x$with_gallium_drivers" = x; then - AC_MSG_ERROR([cannot enable G3DVL without Gallium]) - fi - +if test -n "$with_gallium_drivers"; then if test "x$enable_xvmc" = xauto; then PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no]) fi @@ -1374,14 +1322,14 @@ fi if test "x$enable_xvmc" = xyes; then PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8]) GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc" - HAVE_ST_XVMC="yes" fi +AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes) if test "x$enable_vdpau" = xyes; then PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8]) GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau" - HAVE_ST_VDPAU="yes" fi +AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes) dnl dnl OpenCL configuration @@ -1428,18 +1376,12 @@ if test "x$enable_opencl" = xyes; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl" enable_gallium_loader=yes fi - -if test "x$enable_gallium_gbm" = xyes || test "x$enable_opencl" = xyes; then - GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS pipe-loader" -fi +AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes) dnl dnl Gallium configuration dnl -if test "x$with_gallium_drivers" != x; then - SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets" -fi -AM_CONDITIONAL(HAVE_GALLIUM, test "x$with_gallium_drivers" != x) +AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers") AC_SUBST([LLVM_BINDIR]) AC_SUBST([LLVM_CFLAGS]) @@ -1455,10 +1397,8 @@ AC_SUBST([CLANG_RESOURCE_DIR]) case "x$enable_opengl$enable_gles1$enable_gles2" in x*yes*) EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)' - HAVE_OPENGL=yes ;; esac -AM_CONDITIONAL(HAVE_OPENGL, test "x$HAVE_OPENGL" = xyes) AC_SUBST([VG_LIB_DEPS]) AC_SUBST([EGL_CLIENT_APIS]) @@ -1487,10 +1427,6 @@ fi egl_platforms=`IFS=', '; echo $with_egl_platforms` for plat in $egl_platforms; do case "$plat" in - fbdev|null) - GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/$plat" - ;; - wayland) PKG_CHECK_MODULES([WAYLAND], [wayland-client >= 1.0.2 wayland-server >= 1.0.2]) GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland" @@ -1513,7 +1449,7 @@ for plat in $egl_platforms; do AC_MSG_ERROR([EGL platform drm needs gbm]) ;; - android|gdi) + android|fbdev|gdi|null) ;; *) @@ -1538,6 +1474,9 @@ fi EGL_PLATFORMS="$egl_platforms" +if echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1; then + NEED_WINSYS_XLIB=yes +fi AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1) AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1) AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1) @@ -1644,12 +1583,13 @@ if test "x$enable_gallium_llvm" = xyes; then if $LLVM_CONFIG --components | grep -q '\<mcjit\>'; then LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit" fi - if $LLVM_CONFIG --components | grep -q '\<oprofilejit\>'; then - LLVM_COMPONENTS="${LLVM_COMPONENTS} oprofilejit" - fi if test "x$enable_opencl" = xyes; then LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation" + # LLVM 3.3 >= 177971 requires IRReader + if $LLVM_CONFIG --components | grep -q '\<irreader\>'; then + LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader" + fi fi LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags` LLVM_BINDIR=`$LLVM_CONFIG --bindir` @@ -1691,9 +1631,14 @@ dnl dnl Gallium Tests dnl if test "x$enable_gallium_tests" = xyes; then - SRC_DIRS="$SRC_DIRS gallium/tests/trivial gallium/tests/unit" enable_gallium_loader=yes fi +AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes) + +if test "x$enable_gallium_loader" = xyes; then + GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS pipe-loader" +fi +AM_CONDITIONAL(NEED_GALLIUM_LOADER, test "x$enable_gallium_loader" = xyes) dnl Directory for VDPAU libs AC_ARG_WITH([vdpau-libdir], @@ -1715,28 +1660,26 @@ dnl dnl Gallium helper functions dnl gallium_check_st() { - if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes || - test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes || - test "x$HAVE_ST_VDPAU" = xyes; then + if test "x$NEED_NONNULL_WINSYS" = xyes; then if test "x$have_libdrm" != xyes; then AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED]) fi GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1" fi - if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then + if test "x$enable_dri" = xyes && test "x$2" != x; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2" HAVE_COMMON_DRI=yes fi - if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then + if test "x$enable_xorg" = xyes && test "x$3" != x; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3" fi - if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then + if test "x$enable_xa" = xyes && test "x$4" != x; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4" fi - if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then + if test "x$enable_xvmc" = xyes && test "x$5" != x; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5" fi - if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then + if test "x$enable_vdpau" = xyes && test "x$6" != x; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6" fi } @@ -1762,23 +1705,29 @@ gallium_require_drm_loader() { radeon_llvm_check() { LLVM_REQUIRED_VERSION_MAJOR="3" - LLVM_REQUIRED_VERSION_MINOR="2" + LLVM_REQUIRED_VERSION_MINOR="3" if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then - AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer with R600 target enabled is required. - To use the r600/radeonsi LLVM backend, you need to fetch the LLVM source from: - git://people.freedesktop.org/~tstellar/llvm master - and build with --enable-experimental-targets=R600]) + AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required for r600g and radeonsi.]) fi if test true && $LLVM_CONFIG --targets-built | grep -qv '\<R600\>' ; then AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM sources with the --enable-experimental-targets=R600 configure flag]) fi - AC_MSG_WARN([Please ensure you use the latest llvm tree from git://people.freedesktop.org/~tstellar/llvm master before submitting a bug]) - LLVM_COMPONENTS="${LLVM_COMPONENTS} r600 bitreader" + LLVM_COMPONENTS="${LLVM_COMPONENTS} r600 bitreader ipo" + NEED_RADEON_LLVM=yes + AC_CHECK_LIB([elf], [elf_memory], [ELF_LIB=-lelf], + [AC_MSG_ERROR([radeonsi and r600g require libelf when using LLVM])]) } dnl Gallium drivers +if test "x$enable_dri" = xyes -o "x$enable_xorg" = xyes -o \ + "x$enable_xa" = xyes -o "x$enable_xvmc" = xyes -o \ + "x$enable_vdpau" = xyes; then + NEED_NONNULL_WINSYS=yes +fi +AM_CONDITIONAL(NEED_NONNULL_WINSYS, test "x$NEED_NONNULL_WINSYS" = xyes) + dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block if test "x$with_gallium_drivers" != x; then gallium_drivers=`IFS=', '; echo $with_gallium_drivers` @@ -1799,6 +1748,13 @@ if test "x$with_gallium_drivers" != x; then GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw" gallium_check_st "i915/drm" "dri-i915" "xorg-i915" ;; + xilo) + HAVE_GALLIUM_ILO=yes + PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) + gallium_require_drm_loader + GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS ilo" + gallium_check_st "intel/drm" "dri-ilo" + ;; xr300) HAVE_GALLIUM_R300=yes PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) @@ -1813,9 +1769,8 @@ if test "x$with_gallium_drivers" != x; then GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600" if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then radeon_llvm_check - NEED_RADEON_GALLIUM=yes; R600_NEED_RADEON_GALLIUM=yes; - LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo bitreader asmparser" + LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser" fi if test "x$enable_r600_llvm" = xyes; then USE_R600_LLVM_COMPILER=yes; @@ -1831,7 +1786,6 @@ if test "x$with_gallium_drivers" != x; then gallium_require_drm_loader GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi" radeon_llvm_check - NEED_RADEON_GALLIUM=yes; gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi" "" "" "vdpau-radeonsi" "" ;; xnouveau) @@ -1856,20 +1810,18 @@ if test "x$with_gallium_drivers" != x; then GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe" fi - if test "x$HAVE_ST_DRI" = xyes; then + if test "x$enable_dri" = xyes; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast" fi - if test "x$HAVE_ST_VDPAU" = xyes; then + if test "x$enable_vdpau" = xyes; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe" fi - if test "x$HAVE_ST_XVMC" = xyes; then + if test "x$enable_xvmc" = xyes; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe" fi - if test "x$HAVE_ST_VDPAU" = xyes || - test "x$HAVE_ST_XVMC" = xyes; then - if test "x$HAVE_WINSYS_XLIB" != xyes; then - GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib" - fi + if test "x$enable_vdpau" = xyes -o "x$enable_xvmc" = xyes; then + NEED_WINSYS_XLIB=yes + GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib" fi ;; *) @@ -1924,6 +1876,7 @@ fi AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes) AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes) +AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes) AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes) AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes) AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes) @@ -1932,23 +1885,22 @@ AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes) AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes) AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes) +AM_CONDITIONAL(NEED_GALLIUM_SOFTPIPE_DRIVER, test "x$HAVE_GALLIUM_SVGA" = xyes -o \ + "x$HAVE_GALLIUM_I915" = xyes -o \ + "x$HAVE_GALLIUM_SOFTPIPE" = xyes) +AM_CONDITIONAL(NEED_GALLIUM_LLVMPIPE_DRIVER, test "x$HAVE_GALLIUM_I915" = xyes -o \ + "x$HAVE_GALLIUM_SOFTPIPE" = xyes -a \ + "x$MESA_LLVM" = x1) + if test "x$enable_gallium_loader" = xyes; then GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null" - GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW" - GALLIUM_PIPE_LOADER_LIBS="\$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la" - GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(top_builddir)/src/gallium/winsys/sw/null/libws_null.la" - - if test "x$HAVE_WINSYS_XLIB" = xyes; then - GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB" - GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(top_builddir)/src/gallium/winsys/sw/xlib/libws_xlib.la" - fi if test "x$enable_gallium_drm_loader" = xyes; then GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM" PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2], pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no) if test "x$pipe_loader_have_xcb" = xyes; then - GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DPIPE_LOADER_HAVE_XCB" + GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XCB" GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS" fi fi @@ -1957,24 +1909,6 @@ if test "x$enable_gallium_loader" = xyes; then AC_SUBST([GALLIUM_PIPE_LOADER_LIBS]) fi -dnl Tell Automake which drivers to build -for driver in $GALLIUM_DRIVERS_DIRS; do - case "x$driver" in - xgalahad) - HAVE_GALAHAD_GALLIUM=yes; - ;; - xidentity) - HAVE_IDENTITY_GALLIUM=yes; - ;; - xnoop) - HAVE_NOOP_GALLIUM=yes; - ;; - *) - GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver" - ;; - esac -done - AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes) AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes) AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes) @@ -1983,10 +1917,14 @@ AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes) AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes) AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes) -AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes) -AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes) -AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes) -AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes) +AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$NEED_NONNULL_WINSYS" = xyes -a \ + "x$HAVE_GALLIUM_R300" = xyes -o \ + "x$HAVE_GALLIUM_R600" = xyes -o \ + "x$HAVE_GALLIUM_RADEONSI" = xyes) +AM_CONDITIONAL(NEED_WINSYS_WRAPPER, test "x$HAVE_GALLIUM_I915" = xyes -o \ + "x$HAVE_GALLIUM_SVGA" = xyes) +AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$NEED_WINSYS_XLIB" = xyes) +AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes) AM_CONDITIONAL(R600_NEED_RADEON_GALLIUM, test x$R600_NEED_RADEON_GALLIUM = xyes) AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes) AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes) @@ -1995,12 +1933,13 @@ AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes) AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1) AM_CONDITIONAL(LLVM_NEEDS_FNORTTI, test $LLVM_VERSION_INT -ge 302) -AC_SUBST([GALLIUM_MAKE_DIRS]) +AC_SUBST([ELF_LIB]) AM_CONDITIONAL(NEED_LIBPROGRAM, test "x$with_gallium_drivers" != x -o \ "x$enable_xlib_glx" = xyes -o \ "x$enable_osmesa" = xyes) -AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1) +AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes) +AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes) AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1) AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1) @@ -2019,9 +1958,6 @@ AC_SUBST([XA_MINOR], 0) AC_SUBST([XA_TINY], 0) AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY") -dnl prepend CORE_DIRS to SRC_DIRS -SRC_DIRS="$CORE_DIRS $SRC_DIRS" - dnl Restore LDFLAGS and CPPFLAGS LDFLAGS="$_SAVE_LDFLAGS" CPPFLAGS="$_SAVE_CPPFLAGS" @@ -2043,12 +1979,12 @@ AC_CONFIG_FILES([Makefile src/egl/wayland/wayland-drm/Makefile src/egl/wayland/wayland-egl/Makefile src/egl/wayland/wayland-egl/wayland-egl.pc - src/gallium/Makefile src/gallium/auxiliary/Makefile src/gallium/auxiliary/pipe-loader/Makefile src/gallium/drivers/Makefile src/gallium/drivers/freedreno/Makefile src/gallium/drivers/i915/Makefile + src/gallium/drivers/ilo/Makefile src/gallium/drivers/llvmpipe/Makefile src/gallium/drivers/nouveau/Makefile src/gallium/drivers/nv30/Makefile @@ -2079,6 +2015,7 @@ AC_CONFIG_FILES([Makefile src/gallium/targets/Makefile src/gallium/targets/dri-freedreno/Makefile src/gallium/targets/dri-i915/Makefile + src/gallium/targets/dri-ilo/Makefile src/gallium/targets/dri-nouveau/Makefile src/gallium/targets/dri-r300/Makefile src/gallium/targets/dri-r600/Makefile @@ -2112,10 +2049,10 @@ AC_CONFIG_FILES([Makefile src/gallium/winsys/freedreno/drm/Makefile src/gallium/winsys/i915/drm/Makefile src/gallium/winsys/i915/sw/Makefile + src/gallium/winsys/intel/drm/Makefile src/gallium/winsys/nouveau/drm/Makefile src/gallium/winsys/radeon/drm/Makefile src/gallium/winsys/svga/drm/Makefile - src/gallium/winsys/sw/Makefile src/gallium/winsys/sw/dri/Makefile src/gallium/winsys/sw/fbdev/Makefile src/gallium/winsys/sw/null/Makefile @@ -2129,6 +2066,7 @@ AC_CONFIG_FILES([Makefile src/glx/Makefile src/glx/tests/Makefile src/gtest/Makefile + src/mapi/Makefile src/mapi/es1api/Makefile src/mapi/es1api/glesv1_cm.pc src/mapi/es2api/Makefile @@ -2142,7 +2080,6 @@ AC_CONFIG_FILES([Makefile src/mapi/vgapi/vg.pc src/mesa/Makefile src/mesa/gl.pc - src/mesa/drivers/Makefile src/mesa/drivers/dri/dri.pc src/mesa/drivers/dri/common/Makefile src/mesa/drivers/dri/common/xmlpool/Makefile @@ -2167,7 +2104,6 @@ dnl Sort the dirs alphabetically GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "` GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "` GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "` -GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "` GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "` AC_OUTPUT @@ -2231,7 +2167,7 @@ if test "$enable_egl" = yes; then egl_drivers="$egl_drivers builtin:egl_dri2" fi - if test "x$HAVE_ST_EGL" = xyes; then + if test "x$enable_gallium_egl" = xyes; then echo " EGL drivers: ${egl_drivers} egl_gallium" echo " EGL Gallium STs:$EGL_CLIENT_APIS" else @@ -2249,9 +2185,8 @@ else fi echo "" -if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then +if test -n "$with_gallium_drivers"; then echo " Gallium: yes" - echo " Gallium dirs: $GALLIUM_DIRS" echo " Target dirs: $GALLIUM_TARGET_DIRS" echo " Winsys dirs: $GALLIUM_WINSYS_DIRS" echo " Driver dirs: $GALLIUM_DRIVERS_DIRS" diff --git a/mesalib/docs/GL3.txt b/mesalib/docs/GL3.txt index d150b0874..f2152a31e 100644 --- a/mesalib/docs/GL3.txt +++ b/mesalib/docs/GL3.txt @@ -23,12 +23,12 @@ GL_EXT_texture_shared_exponent DONE (i965, r600, swrast) Float depth buffers (GL_ARB_depth_buffer_float) DONE (i965, r600) Framebuffer objects (GL_ARB_framebuffer_object) DONE (i965, r300, r600, swrast) Half-float DONE -Non-normalized Integer texture/framebuffer formats DONE (i965, r600) +Non-normalized Integer texture/framebuffer formats DONE (i965, r600) 1D/2D Texture arrays DONE Per-buffer blend and masks (GL_EXT_draw_buffers2) DONE (i965, r600, swrast) GL_EXT_texture_compression_rgtc DONE (i965, r300, r600, swrast) Red and red/green texture formats DONE (i965, swrast, gallium) -Transform feedback (GL_EXT_transform_feedback) DONE (i965, r600) +Transform feedback (GL_EXT_transform_feedback) DONE (i965, r600) Vertex array objects (GL_APPLE_vertex_array_object) DONE (i965, r300, r600, swrast) sRGB framebuffer format (GL_EXT_framebuffer_sRGB) DONE (i965, r600) glClearBuffer commands DONE @@ -56,8 +56,8 @@ Signed normalized textures (GL_EXT_texture_snorm) DONE (i965, r300, r600) GL 3.2: Core/compatibility profiles DONE -GLSL 1.50 not started -Geometry shaders (GL_ARB_geometry_shader4) partially done (Zack) +GLSL 1.50 in progress +Geometry shaders (GL_ARB_geometry_shader4) partially done BGRA vertex order (GL_ARB_vertex_array_bgra) DONE (i965, r300, r600, swrast) Base vertex offset(GL_ARB_draw_elements_base_vertex) DONE (i965, r300, r600, swrast) Frag shader coord (GL_ARB_fragment_coord_conventions) DONE (i965, r300, r600, swrast) @@ -79,7 +79,7 @@ GL_ARB_sampler_objects DONE (i965, r300, r600) GL_ARB_shader_bit_encoding DONE GL_ARB_texture_rgb10_a2ui DONE (i965, r600) GL_ARB_texture_swizzle DONE (same as EXT version) (i965, r300, r600, swrast) -GL_ARB_timer_query DONE (i965, r600) +GL_ARB_timer_query DONE (i965, r600) GL_ARB_instanced_arrays DONE (i965, r300, r600) GL_ARB_vertex_type_2_10_10_10_rev DONE (i965, r600) @@ -89,15 +89,15 @@ GL 4.0: GLSL 4.0 not started GL_ARB_texture_query_lod DONE (i965) GL_ARB_draw_buffers_blend DONE (i965, r600, softpipe) -GL_ARB_draw_indirect not started -GL_ARB_gpu_shader5 not started +GL_ARB_draw_indirect started (Christoph) +GL_ARB_gpu_shader5 started GL_ARB_gpu_shader_fp64 not started GL_ARB_sample_shading not started GL_ARB_shader_subroutine not started GL_ARB_tessellation_shader not started GL_ARB_texture_buffer_object_rgb32 DONE (i965, softpipe) GL_ARB_texture_cube_map_array DONE (i965, softpipe) -GL_ARB_texture_gather not started +GL_ARB_texture_gather started (Maxence, Chris) GL_ARB_transform_feedback2 DONE GL_ARB_transform_feedback3 DONE @@ -124,7 +124,7 @@ GL_ARB_transform_feedback_instanced DONE GL_ARB_base_instance DONE (i965, nv50, nvc0, r600, radeonsi) GL_ARB_shader_image_load_store not started GL_ARB_conservative_depth DONE (softpipe) -GL_ARB_shading_language_420pack not started +GL_ARB_shading_language_420pack started (Todd) GL_ARB_internalformat_query DONE (i965, gallium) GL_ARB_map_buffer_alignment DONE (r300, r600, radeonsi) diff --git a/mesalib/docs/MESA_agp_offset.spec b/mesalib/docs/MESA_agp_offset.spec deleted file mode 100644 index 06e1d902e..000000000 --- a/mesalib/docs/MESA_agp_offset.spec +++ /dev/null @@ -1,95 +0,0 @@ -Name - - MESA_agp_offset - -Name Strings - - GLX_MESA_agp_offset - -Contact - - Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com) - Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com) - -Status - - Shipping (Mesa 4.0.4 and later. Only implemented in particular - XFree86/DRI drivers.) - -Version - - 1.0 - -Number - - TBD - -Dependencies - - OpenGL 1.0 or later is required - GLX_NV_vertex_array_range is required. - This extensions is written against the OpenGL 1.4 Specification. - -Overview - - This extensions provides a way to convert pointers in an AGP memory - region into byte offsets into the AGP aperture. - Note, this extension depends on GLX_NV_vertex_array_range, for which - no real specification exists. See GL_NV_vertex_array_range for more - information. - -IP Status - - None - -Issues - - None - -New Procedures and Functions - - unsigned int glXGetAGPOffsetMESA( const void *pointer ) - -New Tokens - - None - -Additions to the OpenGL 1.4 Specification - - None - -Additions to Chapter 3 the GLX 1.4 Specification (Functions and Errors) - - Add a new section, 3.6 as follows: - - 3.6 AGP Memory Access - - On "PC" computers, AGP memory can be allocated with glXAllocateMemoryNV - and freed with glXFreeMemoryNV. Sometimes it's useful to know where a - block of AGP memory is located with respect to the start of the AGP - aperture. The function - - GLuint glXGetAGPOffsetMESA( const GLvoid *pointer ) - - Returns the offset of the given memory block from the start of AGP - memory in basic machine units (i.e. bytes). If pointer is invalid - the value ~0 will be returned. - -GLX Protocol - - None. This is a client side-only extension. - -Errors - - glXGetAGPOffsetMESA will return ~0 if the pointer does not point to - an AGP memory region. - -New State - - None - -Revision History - - 20 September 2002 - Initial draft - 2 October 2002 - finished GLX chapter 3 additions - 27 July 2004 - use unsigned int instead of GLuint, void instead of GLvoid diff --git a/mesalib/docs/MESA_copy_sub_buffer.spec b/mesalib/docs/MESA_copy_sub_buffer.spec deleted file mode 100644 index 752a014b3..000000000 --- a/mesalib/docs/MESA_copy_sub_buffer.spec +++ /dev/null @@ -1,96 +0,0 @@ -Name - - MESA_copy_sub_buffer - -Name Strings - - GLX_MESA_copy_sub_buffer - -Contact - - Brian Paul (brian.paul 'at' tungstengraphics.com) - -Status - - Shipping since Mesa 2.6 in February, 1998. - -Version - - Last Modified Date: 12 January 2009 - -Number - - 215 - -Dependencies - - OpenGL 1.0 or later is required. - GLX 1.0 or later is required. - -Overview - - The glxCopySubBufferMESA() function copies a rectangular region - of the back color buffer to the front color buffer. This can be - used to quickly repaint 3D windows in response to expose events - when the back color buffer cannot be damaged by other windows. - -IP Status - - Open-source; freely implementable. - -Issues - - None. - -New Procedures and Functions - - void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable, - int x, int y, int width, int height ); - -New Tokens - - None. - -Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors) - - Add to section 3.3.10 Double Buffering: - - The function - - void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable, - int x, int y, int width, int height ); - - may be used to copy a rectangular region of the back color buffer to - the front color buffer. This can be used to quickly repaint 3D windows - in response to expose events when the back color buffer cannot be - damaged by other windows. - - <x> and <y> indicates the lower-left corner of the region to copy and - <width> and <height> indicate the size in pixels. Coordinate (0,0) - corresponds to the lower-left pixel of the window, like glReadPixels. - - If dpy and drawable are the display and drawable for the calling - thread's current context, glXCopySubBufferMESA performs an - implicit glFlush before it returns. Subsequent OpenGL commands - may be issued immediately after calling glXCopySubBufferMESA, but - are not executed until the copy is completed. - -GLX Protocol - - None at this time. The extension is implemented in terms of ordinary - Xlib protocol inside of Mesa. - -Errors - - None. - -New State - - None. - -Revision History - - 12 January 2009 Ian Romanick - Added language about implicit flush - and command completion. - 8 June 2000 Brian Paul - initial specification - diff --git a/mesalib/docs/MESA_drm_image.spec b/mesalib/docs/MESA_drm_image.spec deleted file mode 100644 index 1150a4c43..000000000 --- a/mesalib/docs/MESA_drm_image.spec +++ /dev/null @@ -1,153 +0,0 @@ -Name - - MESA_drm_image - -Name Strings - - EGL_MESA_drm_image - -Contact - - Kristian Høgsberg <krh@bitplanet.net> - -Status - - Proposal - -Version - - Version 2, August 25, 2010 - -Number - - EGL Extension #not assigned - -Dependencies - - Requires EGL 1.4 or later. This extension is written against the - wording of the EGL 1.4 specification. - - EGL_KHR_base_image is required. - -Overview - - This extension provides entry points for integrating EGLImage with the - Linux DRM mode setting and memory management drivers. The extension - lets applications create EGLImages without a client API resource and - lets the application get the DRM buffer handles. - -IP Status - - Open-source; freely implementable. - -New Procedures and Functions - - EGLImageKHR eglCreateDRMImageMESA(EGLDisplay dpy, - const EGLint *attrib_list); - - EGLBoolean eglExportDRMImageMESA(EGLDisplay dpy, - EGLImageKHR image, - EGLint *name, - EGLint *handle, - EGLint *stride); - -New Tokens - - Accepted in the <attrib_list> parameter of eglCreateDRMImageMESA: - - EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 - EGL_DRM_BUFFER_USE_MESA 0x31D1 - - Accepted as values for the EGL_IMAGE_FORMAT_MESA attribute: - - EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2 - - Bits accepted in EGL_DRM_BUFFER_USE_MESA: - - EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x0001 - EGL_DRM_BUFFER_USE_SHARE_MESA 0x0002 - EGL_DRM_BUFFER_USE_CURSOR_MESA 0x0004 - - Accepted in the <target> parameter of eglCreateImageKHR: - - EGL_DRM_BUFFER_MESA 0x31D3 - - Use when importing drm buffer: - - EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 - EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 - -Additions to the EGL 1.4 Specification: - - To create a DRM EGLImage, call - - EGLImageKHR eglCreateDRMImageMESA(EGLDisplay dpy, - const EGLint *attrib_list); - - In the attribute list, pass EGL_WIDTH, EGL_HEIGHT and format and - use in the attrib list using EGL_DRM_BUFFER_FORMAT_MESA and - EGL_DRM_BUFFER_USE_MESA. The only format specified by this - extension is EGL_DRM_BUFFER_FORMAT_ARGB32_MESA, where each pixel - is a CPU-endian, 32-bit quantity, with alpha in the upper 8 bits, - then red, then green, then blue. The bit values accepted by - EGL_DRM_BUFFER_USE_MESA are EGL_DRM_BUFFER_USE_SCANOUT_MESA, - EGL_DRM_BUFFER_USE_SHARE_MESA and EGL_DRM_BUFFER_USE_CURSOR_MESA. - EGL_DRM_BUFFER_USE_SCANOUT_MESA requests that the created EGLImage - should be usable as a scanout buffer with the DRM kernel - modesetting API. EGL_DRM_BUFFER_USE_SHARE_MESA requests that the - EGLImage can be shared with other processes by passing the - underlying DRM buffer name. EGL_DRM_BUFFER_USE_CURSOR_MESA - requests that the image must be usable as a cursor with KMS. When - EGL_DRM_BUFFER_USE_CURSOR_MESA is set, width and height must both - be 64. - - To create a process local handle or a global DRM name for a - buffer, call - - EGLBoolean eglExportDRMImageMESA(EGLDisplay dpy, - EGLImageKHR image, - EGLint *name, - EGLint *handle, - EGLint *stride); - - If <name> is non-NULL, a global name is assigned to the image and - written to <name>, the handle (local to the DRM file descriptor, - for use with DRM kernel modesetting API) is written to <handle> if - non-NULL and the stride (in bytes) is written to <stride>, if - non-NULL. - - Import a shared buffer by calling eglCreateImageKHR with - EGL_DRM_BUFFER_MESA as the target, using EGL_WIDTH, EGL_HEIGHT, - EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_STRIDE_MESA - in the attrib list. - -Issues - - 1. Why don't we use eglCreateImageKHR with a target that - indicates that we want to create an EGLImage from scratch? - - RESOLVED: The eglCreateImageKHR entry point is reserved for - creating an EGLImage from an already existing client API - resource. This is fine when we're creating the EGLImage from - an existing DRM buffer name, it doesn't seem right to overload - the function to also allocate the underlying resource. - - 2. Why don't we use an eglQueryImageMESA type functions for - querying the DRM EGLImage attributes (name, handle, and stride)? - - RESOLVED: The eglQueryImage function has been proposed often, - but it goes against the EGLImage design. EGLImages are opaque - handles to a 2D array of pixels, which can be passed between - client APIs. By referencing an EGLImage in a client API, the - EGLImage target (a texture, a renderbuffer or such) can be - used to query the attributes of the EGLImage. We don't have a - full client API for creating and querying DRM buffers, though, - so we use a new EGL extension entry point instead. - -Revision History - - Version 1, June 3, 2010 - Initial draft (Kristian Høgsberg) - Version 2, August 25, 2010 - Flesh out the extension a bit, add final EGL tokens, capture - some of the original discussion in the issues section. diff --git a/mesalib/docs/MESA_multithread_makecurrent.spec b/mesalib/docs/MESA_multithread_makecurrent.spec deleted file mode 100644 index 5065c2fc0..000000000 --- a/mesalib/docs/MESA_multithread_makecurrent.spec +++ /dev/null @@ -1,158 +0,0 @@ -Name - - MESA_multithread_makecurrent - -Name Strings - - GLX_MESA_multithread_makecurrent - -Contact - - Eric Anholt (eric@anholt.net) - -Status - - Not shipping. - -Version - - Last Modified Date: 21 February 2011 - -Number - - TBD - -Dependencies - - OpenGL 1.0 or later is required. - GLX 1.3 or later is required. - -Overview - - The GLX context setup encourages multithreaded applications to - create a context per thread which each operate on their own - objects in parallel, and leaves synchronization for write access - to shared objects up to the application. - - For some applications, maintaining per-thread contexts and - ensuring that the glFlush happens in one thread before another - thread starts working on that object is difficult. For them, - using the same context across multiple threads and protecting its - usage with a mutex is both higher performance and easier to - implement. This extension gives those applications that option by - relaxing the context binding requirements. - - This new behavior matches the requirements of AGL, while providing - a feature not specified in WGL. - -IP Status - - Open-source; freely implementable. - -Issues - - None. - -New Procedures and Functions - - None. - -New Tokens - - None. - -Changes to Chapter 2 of the GLX 1.3 Specification (Functions and Errors) - - Replace the following sentence from section 2.2 Rendering Contexts: - In addition, a rendering context can be current for only one - thread at a time. - with: - In addition, an indirect rendering context can be current for - only one thread at a time. A direct rendering context may be - current to multiple threads, with synchronization of access to - the context thruogh the GL managed by the application through - mutexes. - -Changes to Chapter 3 of the GLX 1.3 Specification (Functions and Errors) - - Replace the following sentence from section 3.3.7 Rendering Contexts: - If ctx is current to some other thread, then - glXMakeContextCurrent will generate a BadAccess error. - with: - If ctx is an indirect context current to some other thread, - then glXMakeContextCurrent will generate a BadAccess error. - - Replace the following sentence from section 3.5 Rendering Contexts: - If ctx is current to some other thread, then - glXMakeCurrent will generate a BadAccess error. - with: - If ctx is an indirect context current to some other thread, - then glXMakeCurrent will generate a BadAccess error. - -GLX Protocol - - None. The GLX extension only extends to direct rendering contexts. - -Errors - - None. - -New State - - None. - -Issues - - (1) What happens if the app binds a context/drawable in multiple - threads, then binds a different context/thread in one of them? - - As with binding a new context from the current thread, the old - context's refcount is reduced and the new context's refcount is - increased. - - (2) What happens if the app binds a context/drawable in multiple - threads, then binds None/None in one of them? - - The GLX context is unreferenced from that thread, and the other - threads retain their GLX context binding. - - (3) What happens if the app binds a context/drawable in 7 threads, - then destroys the context in one of them? - - As with GLX context destruction previously, the XID is destroyed - but the context remains usable by threads that have the context - current. - - (4) What happens if the app binds a new drawable/readable with - glXMakeCurrent() when it is already bound to another thread? - - The context becomes bound to the new drawable/readable, and - further rendering in either thread will use the new - drawable/readable. - - (5) What requirements should be placed on the user managing contexts - from multiple threads? - - The intention is to allow multithreaded access to the GL at the - minimal performance cost, so requiring that the GL do general - synchronization (beyond that already required by context sharing) - is not an option, and synchronizing of GL's access to the GL - context between multiple threads is left to the application to do - across GL calls. However, it would be unfortunate for a library - doing multithread_makecurrent to require that other libraries - share in synchronization for binding of their own contexts, so the - refcounting of the contexts is required to be threadsafe. - - (6) Does this apply to indirect contexts? - - This was ignored in the initial revision of the spec. Behavior - for indirect contexts is left as-is. - -Revision History - - 20 November 2009 Eric Anholt - initial specification - 22 November 2009 Eric Anholt - added issues from Ian Romanick. - 3 February 2011 Eric Anholt - updated with resolution to issues 1-3 - 3 February 2011 Eric Anholt - added issue 4, 5 - 21 February 2011 Eric Anholt - Include glXMakeCurrent() sentence - along with glXMakeContextCurrent() for removal. diff --git a/mesalib/docs/MESA_pack_invert.spec b/mesalib/docs/MESA_pack_invert.spec deleted file mode 100644 index 33fb3c7bf..000000000 --- a/mesalib/docs/MESA_pack_invert.spec +++ /dev/null @@ -1,138 +0,0 @@ -Name - - MESA_pack_invert - -Name Strings - - GL_MESA_pack_invert - -Contact - - Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com) - Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com) - -Status - - Shipping (Mesa 4.0.4 and later) - -Version - - 1.0 - -Number - - TBD - -Dependencies - - OpenGL 1.0 or later is required - This extensions is written against the OpenGL 1.4 Specification. - -Overview - - This extension adds a new pixel storage parameter to indicate that - images are to be packed in top-to-bottom order instead of OpenGL's - conventional bottom-to-top order. Only pixel packing can be - inverted (i.e. for glReadPixels, glGetTexImage, glGetConvolutionFilter, - etc). - - Almost all known image file formats store images in top-to-bottom - order. As it is, OpenGL reads images from the frame buffer in - bottom-to-top order. Thus, images usually have to be inverted before - writing them to a file with image I/O libraries. This extension - allows images to be read such that inverting isn't needed. - -IP Status - - None - -Issues - - 1. Should we also define UNPACK_INVERT_MESA for glDrawPixels, etc? - - Resolved: No, we're only concerned with pixel packing. There are other - solutions for inverting images when using glDrawPixels (negative Y pixel - zoom) or glTexImage (invert the vertex T coordinates). It would be easy - enough to define a complementary extension for pixel packing in the - future if needed. - -New Procedures and Functions - - None - -New Tokens - - Accepted by the <pname> parameter of PixelStorei and PixelStoref - and the <pname> parameter of GetIntegerv, GetFloatv, GetDoublev - and GetBooleanv: - - PACK_INVERT_MESA 0x8758 - -Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation) - - None - -Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization) - - None - -Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment -Operations and the Frame Buffer) - - Add the following entry to table 4.4 (PixelStore parameters) on page 182: - - Parameter Name Type Initial Value Valid Range - --------------------------------------------------------- - PACK_INVERT_MESA boolean FALSE TRUE/FALSE - - In the section labeled "Placement in Client Memory" on page 184 - insert the following text into the paragraph before the sentence - that starts with "If the format is RED, GREEN, BLUE...": - - "The parameter PACK_INVERT_MESA controls whether the image is packed - in bottom-to-top order (the default) or top-to-bottom order. Equation - 3.8 is modified as follows: - - ... the first element of the Nth row is indicated by - - p + Nk, if PACK_INVERT_MESA is false - p + k * (H - 1) - Nk, if PACK_INVERT_MESA is true, where H is the - image height - " - -Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions) - - None - -Additions to Chapter 6 of the OpenGL 1.4 Specification (State and -State Requests) - - None - -Additions to Appendix A of the OpenGL 1.4 Specification (Invariance) - - None - -Additions to the AGL/GLX/WGL Specifications - - None - -GLX Protocol - - None - -Errors - - None - -New State - - Add the following entry to table 6.20 (Pixels) on page 235: - - Get Value Type Get Cmd Initial Value Description Sec Attribute - -------------------------------------------------------------------------------------------------- - PACK_INVERT_MESA boolean GetBoolean FALSE Value of PACK_INVERT_MESA 4.3.2 pixel-store - -Revision History - - 21 September 2002 - Initial draft diff --git a/mesalib/docs/MESA_pixmap_colormap.spec b/mesalib/docs/MESA_pixmap_colormap.spec deleted file mode 100644 index fb0b441cc..000000000 --- a/mesalib/docs/MESA_pixmap_colormap.spec +++ /dev/null @@ -1,90 +0,0 @@ -Name - - MESA_pixmap_colormap - -Name Strings - - GLX_MESA_pixmap_colormap - -Contact - - Brian Paul (brian.paul 'at' tungstengraphics.com) - -Status - - Shipping since Mesa 1.2.8 in May, 1996. - -Version - - Last Modified Date: 8 June 2000 - -Number - - 216 - -Dependencies - - OpenGL 1.0 or later is required. - GLX 1.0 or later is required. - -Overview - - Since Mesa allows RGB rendering into drawables with PseudoColor, - StaticColor, GrayScale and StaticGray visuals, Mesa needs a colormap - in order to compute pixel values during rendering. - - The colormap associated with a window can be queried with normal - Xlib functions but there is no colormap associated with pixmaps. - - The glXCreateGLXPixmapMESA function is an alternative to glXCreateGLXPixmap - which allows specification of a colormap. - -IP Status - - Open-source; freely implementable. - -Issues - - None. - -New Procedures and Functions - - GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual, - Pixmap pixmap, Colormap cmap ); - -New Tokens - - None. - -Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors) - - Add to section 3.4.2 Off Screen Rendering - - The Mesa implementation of GLX allows RGB rendering into X windows and - pixmaps of any visual class, not just TrueColor or DirectColor. In order - to compute pixel values from RGB values Mesa requires a colormap. - - The function - - GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual, - Pixmap pixmap, Colormap cmap ); - - allows one to create a GLXPixmap with a specific colormap. The image - rendered into the pixmap may then be copied to a window (which uses the - same colormap and visual) with the expected results. - -GLX Protocol - - None since this is a client-side extension. - -Errors - - None. - -New State - - None. - -Revision History - - 8 June 2000 - initial specification diff --git a/mesalib/docs/MESA_release_buffers.spec b/mesalib/docs/MESA_release_buffers.spec deleted file mode 100644 index 52d1e5a9c..000000000 --- a/mesalib/docs/MESA_release_buffers.spec +++ /dev/null @@ -1,85 +0,0 @@ -Name - - MESA_release_buffers - -Name Strings - - GLX_MESA_release_buffers - -Contact - - Brian Paul (brian.paul 'at' tungstengraphics.com) - -Status - - Shipping since Mesa 2.0 in October, 1996. - -Version - - Last Modified Date: 8 June 2000 - -Number - - 217 - -Dependencies - - OpenGL 1.0 or later is required. - GLX 1.0 or later is required. - -Overview - - Mesa's implementation of GLX is entirely implemented on the client side. - Therefore, Mesa cannot immediately detect when an X window or pixmap is - destroyed in order to free any ancillary data associated with the window - or pixmap. - - The glxMesaReleaseBuffers() function can be used to explicitly indicate - when the back color buffer, depth buffer, stencil buffer, and/or accumu- - lation buffer associated with a drawable can be freed. - -IP Status - - Open-source; freely implementable. - -Issues - - None. - -New Procedures and Functions - - Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d ); - -New Tokens - - None. - -Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors) - - The function - - Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d ); - - causes all software ancillary buffers (back buffer, depth, stencil, - accum, etc) associated with the named drawable to be immediately - deallocated. True is returned if <d> is a valid Mesa GLX drawable, - else False is returned. After calling glXReleaseBuffersMESA, the - drawable should no longer be used for GL rendering. Results of - attempting to do so are undefined. - - -GLX Protocol - - None, since this is a client-side operation. - -Errors - - None. - -New State - - None. - -Revision History - - 8 June 2000 - initial specification diff --git a/mesalib/docs/MESA_resize_buffers.spec b/mesalib/docs/MESA_resize_buffers.spec deleted file mode 100644 index dabc7c421..000000000 --- a/mesalib/docs/MESA_resize_buffers.spec +++ /dev/null @@ -1,81 +0,0 @@ -Name - - MESA_resize_buffers - -Name Strings - - GL_MESA_resize_buffers - -Contact - - Brian Paul (brian.paul 'at' tungstengraphics.com) - -Status - - Shipping (since Mesa version 2.2) - -Version - - -Number - - 196 - -Dependencies - - Mesa 2.2 or later is required. - -Overview - - Mesa is often used as a client library with no integration with - the computer's window system (an X server, for example). And since - Mesa does not have an event loop nor window system callbacks, it - cannot properly respond to window system events. In particular, - Mesa cannot automatically detect when a window has been resized. - - Mesa's glViewport command queries the current window size and updates - its internal data structors accordingly. This normally works fine - since most applications call glViewport in response to window size - changes. - - In some situations, however, the application may not call glViewport - when a window size changes but would still like Mesa to adjust to - the new window size. This extension exports a new function to solve - this problem. - -New Procedures and Functions - - void glResizeBuffersMESA( void ) - -New Tokens - - none - -Additions to the OpenGL Specification (no particular section) - - The glResizeBuffersMESA command may be called when the client - determines that a window has been resized. Calling - glResizeBuffersMESA causes Mesa to query the current window size - and adjust its internal data structures. This may include - reallocating depth, stencil, alpha and accumulation buffers. - -Additions to the AGL/GLX/WGL Specifications - - None - -Errors - - INVALID_OPERATION is generated if glResizeBuffersMESA is called between - Begin and End. - -New State - - None. - -New Implementation Dependent State - - None. - -Revision History - - * Revision 1.0 - Initial specification diff --git a/mesalib/docs/MESA_set_3dfx_mode.spec b/mesalib/docs/MESA_set_3dfx_mode.spec deleted file mode 100644 index 06d97ca02..000000000 --- a/mesalib/docs/MESA_set_3dfx_mode.spec +++ /dev/null @@ -1,85 +0,0 @@ -Name - - MESA_set_3dfx_mode - -Name Strings - - GLX_MESA_set_3dfx_mode - -Contact - - Brian Paul (brian.paul 'at' tungstengraphics.com) - -Status - - Shipping since Mesa 2.6 in February, 1998. - -Version - - Last Modified Date: 8 June 2000 - -Number - - 218 - -Dependencies - - OpenGL 1.0 or later is required. - GLX 1.0 or later is required. - -Overview - - The Mesa Glide driver allows full-screen rendering or rendering into - an X window. The glXSet3DfxModeMESA() function allows an application - to switch between full-screen and windowed rendering. - -IP Status - - Open-source; freely implementable. - -Issues - - None. - -New Procedures and Functions - - GLboolean glXSet3DfxModeMESA( GLint mode ); - -New Tokens - - GLX_3DFX_WINDOW_MODE_MESA 0x1 - GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 - -Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors) - - The Mesa Glide device driver allows either rendering in full-screen - mode or rendering into an X window. An application can switch between - full-screen and window rendering with the command: - - GLboolean glXSet3DfxModeMESA( GLint mode ); - - <mode> may either be GLX_3DFX_WINDOW_MODE_MESA to indicate window - rendering or GLX_3DFX_FULLSCREEN_MODE_MESA to indicate full-screen mode. - - GL_TRUE is returned if <mode> is valid and the operation completed - normally. GL_FALSE is returned if <mode> is invalid or if the Glide - driver is not being used. - - Note that only one drawable and context can be created at any given - time with the Mesa Glide driver. - -GLX Protocol - - None since this is a client-side extension. - -Errors - - None. - -New State - - None. - -Revision History - - 8 June 2000 - initial specification diff --git a/mesalib/docs/MESA_shader_debug.spec b/mesalib/docs/MESA_shader_debug.spec deleted file mode 100644 index fab92abc7..000000000 --- a/mesalib/docs/MESA_shader_debug.spec +++ /dev/null @@ -1,264 +0,0 @@ -Name - - MESA_shader_debug - -Name Strings - - GL_MESA_shader_debug - -Contact - - Brian Paul (brian.paul 'at' tungstengraphics.com) - Michal Krol (mjkrol 'at' gmail.com) - -Status - - Obsolete. - -Version - - Last Modified Date: July 30, 2006 - Author Revision: 0.2 - -Number - - TBD - -Dependencies - - OpenGL 1.0 is required. - - The ARB_shader_objects extension is required. - - The ARB_shading_language_100 extension is required. - - The extension is written against the OpenGL 1.5 specification. - - The extension is written against the OpenGL Shading Language 1.10 - Specification. - -Overview - - This extension introduces a debug object that can be attached to - a program object to enable debugging. Vertex and/or fragment shader, - during execution, issue diagnostic function calls that are logged - to the debug object's log. A separate debug log for each shader type - is maintained. A debug object can be attached, detached and queried - at any time outside the Begin/End pair. Multiple debug objects can - be attached to a single program object. - -IP Status - - None - -Issues - - None - -New Procedures and Functions - - handleARB CreateDebugObjectMESA(void) - void ClearDebugLogMESA(handleARB obj, enum logType, enum shaderType) - void GetDebugLogMESA(handleARB obj, enum logType, enum shaderType, - sizei maxLength, sizei *length, - charARB *debugLog) - sizei GetDebugLogLengthMESA(handleARB obj, enum logType, - enum shaderType) - -New Types - - None - -New Tokens - - Returned by the <params> parameter of GetObjectParameter{fi}vARB: - - DEBUG_OBJECT_MESA 0x8759 - - Accepted by the <logType> argument of ClearDebugLogMESA, - GetDebugLogLengthMESA and GetDebugLogMESA: - - DEBUG_PRINT_MESA 0x875A - DEBUG_ASSERT_MESA 0x875B - -Additions to Chapter 2 of the OpenGL 1.5 Specification -(OpenGL Operation) - - None - -Additions to Chapter 3 of the OpenGL 1.5 Specification (Rasterization) - - None - -Additions to Chapter 4 of the OpenGL 1.5 Specification (Per-Fragment -Operations and the Frame Buffer) - - None - -Additions to Chapter 5 of the OpenGL 1.5 Specification -(Special Functions) - - None - -Additions to Chapter 6 of the OpenGL 1.5 Specification (State and State -Requests) - - None - -Additions to Appendix A of the OpenGL 1.5 Specification (Invariance) - - None - -Additions to Chapter 1 of the OpenGL Shading Language 1.10 Specification -(Introduction) - - None - -Additions to Chapter 2 of the OpenGL Shading Language 1.10 Specification -(Overview of OpenGL Shading) - - None - -Additions to Chapter 3 of the OpenGL Shading Language 1.10 Specification -(Basics) - - None - -Additions to Chapter 4 of the OpenGL Shading Language 1.10 Specification -(Variables and Types) - - None - -Additions to Chapter 5 of the OpenGL Shading Language 1.10 Specification -(Operators and Expressions) - - None - -Additions to Chapter 6 of the OpenGL Shading Language 1.10 Specification -(Statements and Structure) - - None - -Additions to Chapter 7 of the OpenGL Shading Language 1.10 Specification -(Built-in Variables) - - None - -Additions to Chapter 8 of the OpenGL Shading Language 1.10 Specification -(Built-in Functions) - - Add a new section 8.10 "Debug Functions": - - Debug functions are available to both fragment and vertex shaders. - They are used to track the execution of a shader by logging - passed-in arguments to the debug object's log. Those values can be - retrieved by the application for inspection after shader execution - is complete. - - The text, if any, produced by any of these functions is appended - to each debug object that is attached to the program object. - There are different debug log types - - Add a new section 8.10.1 "Print Function": - - The following printMESA prototypes are available. - - void printMESA(const float value) - void printMESA(const int value) - void printMESA(const bool value) - void printMESA(const vec2 value) - void printMESA(const vec3 value) - void printMESA(const vec4 value) - void printMESA(const ivec2 value) - void printMESA(const ivec3 value) - void printMESA(const ivec4 value) - void printMESA(const bvec2 value) - void printMESA(const bvec3 value) - void printMESA(const bvec4 value) - void printMESA(const mat2 value) - void printMESA(const mat3 value) - void printMESA(const mat4 value) - void printMESA(const sampler1D value) - void printMESA(const sampler2D value) - void printMESA(const sampler3D value) - void printMESA(const samplerCube value) - void printMESA(const sampler1DShadow value) - void printMESA(const sampler2DShadow value) - - The printMESA function writes the argument <value> to the "debug - print log" (XXX DEBUG_PRINT_MESA?). Each component is written in - text format (XXX format!) and is delimited by a white space (XXX 1 - or more?). - - Add a new section 8.10.2 "Assert Function": - - The following assertMESA prototypes are available. - - void assertMESA(const bool condition) - void assertMESA(const bool condition, const int cookie) - void assertMESA(const bool condition, const int cookie, - const int file, const int line) - - The assertMESA function checks if the argument <condition> is - true or false. If it is true, nothing happens. If it is false, - a diagnostic message is written to the "debug assert log". - The message contains the argument <file>, <line>, <cookie> and - implementation dependent double-quoted string, each of this - delimited by a white space. If the argument <cookie> is not present, - it is meant as if it was of value 0. If the arguments <file> and - <line> are not present, they are meant as if they were of values - __FILE__ and __LINE__, respectively. The following three calls - produce the same output, assuming they were issued from the same - file and line. - - assertMESA (false); - assertMESA (false, 0); - assertMESA (false, 0, __FILE__, __LINE__); - - The diagnostic message examples follow. - - 1 89 0 "" - 1 45 333 "all (lessThanEqual (fragColor, vec4 (1.0)))" - 1 66 1 "assertion failed in file 1, line 66, cookie 1" - -Additions to Chapter 9 of the OpenGL Shading Language 1.10 Specification -(Shading Language Grammar) - - None - -Additions to Chapter 10 of the OpenGL Shading Language 1.10 -Specification (Issues) - - None - -Additions to the AGL/EGL/GLX/WGL Specifications - - None - -GLX Protocol - - None - -Errors - - TBD - -New State - - TBD - -New Implementation Dependent State - - TBD - -Sample Code - - TBD - -Revision History - - 29 May 2006 - Initial draft. (Michal Krol) - 30 July 2006 - Add Overview, New Procedures and Functions, New Tokens sections. - Add sections 8.10.1, 8.10.2 to GLSL spec. diff --git a/mesalib/docs/MESA_swap_control.spec b/mesalib/docs/MESA_swap_control.spec deleted file mode 100644 index a002563c9..000000000 --- a/mesalib/docs/MESA_swap_control.spec +++ /dev/null @@ -1,129 +0,0 @@ -Name - - MESA_swap_control - -Name Strings - - GLX_MESA_swap_control - -Contact - - Ian Romanick, IBM, idr at us.ibm.com - -Status - - Deployed in DRI drivers post-XFree86 4.3. - -Version - - Date: 5/1/2003 Revision: 1.1 - -Number - - ??? - -Dependencies - - None - - Based on GLX_SGI_swap_control version 1.9 and WGL_EXT_swap_control - version 1.5. - -Overview - - This extension allows an application to specify a minimum periodicity - of color buffer swaps, measured in video frame periods. - -Issues - - * Should implementations that export GLX_MESA_swap_control also export - GL_EXT_swap_control for compatibility with WGL_EXT_swap_control? - - UNRESOLVED. - -New Procedures and Functions - - int glXSwapIntervalMESA(unsigned int interval) - int glXGetSwapIntervalMESA(void) - -New Tokens - - None - -Additions to Chapter 2 of the 1.4 GL Specification (OpenGL Operation) - - None - -Additions to Chapter 3 of the 1.4 GL Specification (Rasterization) - - None - -Additions to Chapter 4 of the 1.4 GL Specification (Per-Fragment Operations -and the Framebuffer) - - None - -Additions to Chapter 5 of the 1.4 GL Specification (Special Functions) - - None - -Additions to Chapter 6 of the 1.4 GL Specification (State and State Requests) - - None - -Additions to the GLX 1.3 Specification - - [Add the following to Section 3.3.10 of the GLX Specification (Double - Buffering)] - - glXSwapIntervalMESA specifies the minimum number of video frame periods - per buffer swap. (e.g. a value of two means that the color buffers - will be swapped at most every other video frame.) A return value - of zero indicates success; otherwise an error occurred. The interval - takes effect when glXSwapBuffers is first called subsequent to the - glXSwapIntervalMESA call. - - A video frame period is the time required by the monitor to display a - full frame of video data. In the case of an interlaced monitor, - this is typically the time required to display both the even and odd - fields of a frame of video data. - - If <interval> is set to a value of 0, buffer swaps are not synchro- - nized to a video frame. The <interval> value is silently clamped to - the maximum implementation-dependent value supported before being - stored. - - The swap interval is not part of the render context state. It cannot - be pushed or popped. The current swap interval for the window - associated with the current context can be obtained by calling - glXGetSwapIntervalMESA. The default swap interval is 0. - - On XFree86, setting the environment variable LIBGL_THROTTLE_REFRESH sets - the swap interval to 1. - -Errors - - glXSwapIntervalMESA returns GLX_BAD_CONTEXT if there is no current - GLXContext or if the current context is not a direct rendering context. - -GLX Protocol - - None. This extension only extends to direct rendering contexts. - -New State - - Get Value Get Command Type Initial Value - --------- ----------- ---- ------------- - [swap interval] GetSwapInterval Z+ 0 - -New Implementation Dependent State - - None - - -Revision History - - 1.1, 5/1/03 Added the issues section and contact information. - Changed the default swap interval to 0. - 1.0, 3/17/03 Initial version based on GLX_SGI_swap_control and - WGL_EXT_swap_control. diff --git a/mesalib/docs/MESA_swap_frame_usage.spec b/mesalib/docs/MESA_swap_frame_usage.spec deleted file mode 100644 index 5023eadd8..000000000 --- a/mesalib/docs/MESA_swap_frame_usage.spec +++ /dev/null @@ -1,201 +0,0 @@ -Name - - MESA_swap_frame_usage - -Name Strings - - GLX_MESA_swap_frame_usage - -Contact - - Ian Romanick, IBM, idr at us.ibm.com - -Status - - Deployed in DRI drivers post-XFree86 4.3. - -Version - - Date: 5/1/2003 Revision: 1.1 - -Number - - ??? - -Dependencies - - GLX_SGI_swap_control affects the definition of this extension. - GLX_MESA_swap_control affects the definition of this extension. - GLX_OML_sync_control affects the definition of this extension. - - Based on WGL_I3D_swap_frame_usage version 1.3. - -Overview - - This extension allows an application to determine what portion of the - swap period has elapsed since the last swap operation completed. The - "usage" value is a floating point value on the range [0,max] which is - calculated as follows: - - td - percent = ---- - tf - - where td is the time measured from the last completed buffer swap (or - call to enable the statistic) to when the next buffer swap completes, tf - is the entire time for a frame which may be multiple screen refreshes - depending on the swap interval as set by the GLX_SGI_swap_control or - GLX_OML_sync_control extensions. - - The value, percent, indicates the amount of time spent between the - completion of the two swaps. If the value is in the range [0,1], the - buffer swap occurred within the time period required to maintain a - constant frame rate. If the value is in the range (1,max], a constant - frame rate was not achieved. The value indicates the number of frames - required to draw. - - This definition of "percent" differs slightly from - WGL_I3D_swap_frame_usage. In WGL_I3D_swap_frame_usage, the measurement - is taken from the completion of one swap to the issuance of the next. - This representation may not be as useful as measuring between - completions, as a significant amount of time may pass between the - issuance of a swap and the swap actually occurring. - - There is also a mechanism to determine whether a frame swap was - missed. - -New Procedures and Functions - - int glXGetFrameUsageMESA(Display *dpy, - GLXDrawable drawable, - float *usage) - - int glXBeginFrameTrackingMESA(Display *dpy, - GLXDrawable drawable) - - int glXEndFrameTrackingMESA(Display *dpy, - GLXDrawable drawable) - - int glXQueryFrameTrackingMESA(Display *dpy, - GLXDrawable drawable, - int64_t *swapCount, - int64_t *missedFrames, - float *lastMissedUsage) - -New Tokens - - None - -Additions to Chapter 2 of the 1.4 GL Specification (OpenGL Operation) - - None - -Additions to Chapter 3 of the 1.4 GL Specification (Rasterization) - - None - -Additions to Chapter 4 of the 1.4 GL Specification (Per-Fragment Operations -and the Framebuffer) - - None - -Additions to Chapter 5 of the 1.4 GL Specification (Special Functions) - - None - -Additions to Chapter 6 of the 1.4 GL Specification (State and State Requests) - - None - -Additions to the GLX 1.3 Specification - - The frame usage is measured as the percentage of the swap period elapsed - between two buffer-swap operations being committed. In unextended GLX the - swap period is the vertical refresh time. If SGI_swap_control or - MESA_swap_control are supported, the swap period is the vertical refresh - time multiplied by the swap interval (or one if the swap interval is set - to zero). - - If OML_sync_control is supported, the swap period is the vertical - refresh time multiplied by the divisor parameter to - glXSwapBuffersMscOML. The frame usage in this case is less than 1.0 if - the swap is committed before target_msc, and is greater than or equal to - 1.0 otherwise. The actual usage value is based on the divisor and is - never less than 0.0. - - int glXBeginFrameTrackingMESA(Display *dpy, - GLXDrawable drawable, - float *usage) - - glXGetFrameUsageMESA returns a floating-point value in <usage> - that represents the current swap usage, as defined above. - - Missed frame swaps can be tracked by calling the following function: - - int glXBeginFrameTrackingMESA(Display *dpy, - GLXDrawable drawable) - - glXBeginFrameTrackingMESA resets a "missed frame" count and - synchronizes with the next frame vertical sync before it returns. - If a swap is missed based in the rate control specified by the - <interval> set by glXSwapIntervalSGI or the default swap of once - per frame, the missed frame count is incremented. - - The current missed frame count and total number of swaps since - the last call to glXBeginFrameTrackingMESA can be obtained by - calling the following function: - - int glXQueryFrameTrackingMESA(Display *dpy, - GLXDrawable drawable, - int64_t *swapCount, - int64_t *missedFrames, - float *lastMissedUsage) - - The location pointed to by <swapCount> will be updated with the - number of swaps that have been committed. This value may not match the - number of swaps that have been requested since swaps may be - queued by the implementation. This function can be called at any - time and does not synchronize to vertical blank. - - The location pointed to by <missedFrames> will contain the number - swaps that missed the specified frame. The frame usage for the - last missed frame is returned in the location pointed to by - <lastMissedUsage>. - - Frame tracking is disabled by calling the function - - int glXEndFrameTrackingMESA(Display *dpy, - GLXDrawable drawable) - - This function will not return until all swaps have occurred. The - application can call glXQueryFrameTrackingMESA for a final swap and - missed frame count. - - If these functions are successful, zero is returned. If the context - associated with dpy and drawable is not a direct context, - GLX_BAD_CONTEXT is returned. - -Errors - - If the function succeeds, zero is returned. If the function - fails, one of the following error codes is returned: - - GLX_BAD_CONTEXT The current rendering context is not a direct - context. - -GLX Protocol - - None. This extension only extends to direct rendering contexts. - -New State - - None - -New Implementation Dependent State - - None - -Revision History - - 1.1, 5/1/03 Added contact information. - 1.0, 3/17/03 Initial version based on WGL_I3D_swap_frame_usage. diff --git a/mesalib/docs/MESA_texture_array.spec b/mesalib/docs/MESA_texture_array.spec deleted file mode 100644 index b146821f7..000000000 --- a/mesalib/docs/MESA_texture_array.spec +++ /dev/null @@ -1,804 +0,0 @@ -Name - - MESA_texture_array - -Name Strings - - GL_MESA_texture_array - -Contact - - Ian Romanick, IBM (idr 'at' us.ibm.com) - -IP Status - - No known IP issues. - -Status - - Shipping in Mesa 7.1 - -Version - - -Number - - TBD - -Dependencies - - OpenGL 1.2 or GL_EXT_texture3D is required. - - Support for ARB_fragment_program is assumed, but not required. - - Support for ARB_fragment_program_shadow is assumed, but not required. - - Support for EXT_framebuffer_object is assumed, but not required. - - Written based on the wording of the OpenGL 2.0 specification and - ARB_fragment_program_shadow but not dependent on them. - -Overview - - There are a number of circumstances where an application may wish to - blend two textures out of a larger set of textures. Moreover, in some - cases the selected textures may vary on a per-fragment basis within - a polygon. Several examples include: - - 1. High dynamic range textures. The application stores several - different "exposures" of an image as different textures. On a - per-fragment basis, the application selects which exposures are - used. - - 2. A terrain engine where the altitude of a point determines the - texture applied to it. If the transition is from beach sand to - grass to rocks to snow, the application will store each texture - in a different texture map, and dynamically select which two - textures to blend at run-time. - - 3. Storing short video clips in textures. Each depth slice is a - single frame of video. - - Several solutions to this problem have been proposed, but they either - involve using a separate texture unit for each texture map or using 3D - textures without mipmaps. Both of these options have major drawbacks. - - This extension provides a third alternative that eliminates the major - drawbacks of both previous methods. A new texture target, - TEXTURE_2D_ARRAY, is added that functions identically to TEXTURE_3D in - all aspects except the sizes of the non-base level images. In - traditional 3D texturing, the size of the N+1 LOD is half the size - of the N LOD in all three dimensions. For the TEXTURE_2D_ARRAY target, - the height and width of the N+1 LOD is halved, but the depth is the - same for all levels of detail. The texture then becomes an array of - 2D textures. The per-fragment texel is selected by the R texture - coordinate. - - References: - - http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011557 - http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=000516 - http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011903 - http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm - -New Procedures and Functions - - All functions come directly from EXT_texture_array. - - void FramebufferTextureLayerEXT(enum target, enum attachment, - uint texture, int level, int layer); - -New Tokens - - All token names and values come directly from EXT_texture_array. - - Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, by - the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and - GetDoublev, and by the <target> parameter of TexImage3D, GetTexImage, - GetTexLevelParameteriv, GetTexLevelParameterfv, GetTexParameteriv, and - GetTexParameterfv: - - TEXTURE_1D_ARRAY_EXT 0x8C18 - TEXTURE_2D_ARRAY_EXT 0x8C1A - - Accepted by the <target> parameter of TexImage2D, TexSubImage2D, - CopyTexImage2D, CopyTexSubImage2D, CompressedTexImage2D, - CompressedTexSubImage2D, GetTexLevelParameteriv, and - GetTexLevelParameterfv: - - TEXTURE_1D_ARRAY_EXT - PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 - - Accepted by the <target> parameter of TexImage3D, TexSubImage3D, - CopyTexSubImage3D, CompressedTexImage3D, CompressedTexSubImage3D, - GetTexLevelParameteriv, and GetTexLevelParameterfv: - - TEXTURE_2D_ARRAY_EXT - PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B - - Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, - GetFloatv, and GetDoublev - - TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C - TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D - MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF - - Accepted by the <param> parameter of TexParameterf, TexParameteri, - TexParameterfv, and TexParameteriv when the <pname> parameter is - TEXTURE_COMPARE_MODE_ARB: - - COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E - - (Note: COMPARE_REF_DEPTH_TO_TEXTURE_EXT is simply an alias for the - existing COMPARE_R_TO_TEXTURE token in OpenGL 2.0; the alternate name - reflects the fact that the R coordinate is not always used.) - - Accepted by the <internalformat> parameter of TexImage3D and - CompressedTexImage3D, and by the <format> parameter of - CompressedTexSubImage3D: - - COMPRESSED_RGB_S3TC_DXT1_EXT - COMPRESSED_RGBA_S3TC_DXT1_EXT - COMPRESSED_RGBA_S3TC_DXT3_EXT - COMPRESSED_RGBA_S3TC_DXT5_EXT - - Accepted by the <pname> parameter of - GetFramebufferAttachmentParameterivEXT: - - FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 - - (Note: FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER is simply an alias for the - FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT token provided in - EXT_framebuffer_object. This extension generalizes the notion of - "<zoffset>" to include layers of an array texture.) - -Additions to Chapter 2 of the OpenGL 2.0 Specification (OpenGL Operation) - - None - -Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization) - - -- Section 3.8.1 "Texture Image Specification" - - Change the first paragraph (page 150) to say (spec changes identical to - EXT_texture_array): - - "The command - - void TexImage3D(enum target, int level, int internalformat, - sizei width, sizei height, sizei depth, int border, - enum format, enum type, void *data); - - is used to specify a three-dimensional texture image. target must be one - one of TEXTURE_3D for a three-dimensional texture or - TEXTURE_2D_ARRAY_EXT for an two-dimensional array texture. - Additionally, target may be either PROXY_TEXTURE_3D for a - three-dimensional proxy texture, or PROXY_TEXTURE_2D_ARRAY_EXT for a - two-dimensional proxy array texture." - - Change the fourth paragraph on page 151 to say (spec changes identical - to EXT_texture_array): - - "Textures with a base internal format of DEPTH_COMPONENT are supported - by texture image specification commands only if target is TEXTURE_1D, - TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, TEXTURE_2D_ARRAY_EXT, - PROXY_TEXTURE_1D, PROXY_TEXTURE_2D, PROXY_TEXTURE_1D_ARRAY_EXT, or - PROXY_TEXTURE_2D_ARRAY_EXT. Using this format in conjunction with any - other target will result in an INVALID_OPERATION error." - - - Change the fourth paragraph on page 156 to say (spec changes identical - to EXT_texture_array): - - "The command - - void TexImage2D(enum target, int level, - int internalformat, sizei width, sizei height, - int border, enum format, enum type, void *data); - - is used to specify a two-dimensional texture image. target must be one - of TEXTURE_2D for a two-dimensional texture, TEXTURE_1D_ARRAY_EXT for a - one-dimensional array texture, or one of TEXTURE_CUBE_MAP_POSITIVE_X, - TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE_MAP_POSITIVE_Y, - TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, or - TEXTURE_CUBE_MAP_NEGATIVE_Z for a cube map texture. Additionally, - target may be either PROXY_TEXTURE_2D for a two-dimensional proxy - texture, PROXY_TEXTURE_1D_ARRAY_EXT for a one-dimensional proxy array - texture, or PROXY TEXTURE_CUBE_MAP for a cube map proxy texture in the - special case discussed in section 3.8.11. The other parameters match - the corresponding parameters of TexImage3D. - - For the purposes of decoding the texture image, TexImage2D is - equivalent to calling TexImage3D with corresponding arguments and depth - of 1, except that - - * The border depth, d_b, is zero, and the depth of the image is - always 1 regardless of the value of border. - - * The border height, h_b, is zero if <target> is - TEXTURE_1D_ARRAY_EXT, and <border> otherwise. - - * Convolution will be performed on the image (possibly changing its - width and height) if SEPARABLE 2D or CONVOLUTION 2D is enabled. - - * UNPACK SKIP IMAGES is ignored." - - -- Section 3.8.2 "Alternate Texture Image Specification Commands" - - Change the second paragraph (page 159) (spec changes identical - to EXT_texture_array): - - "The command - - void CopyTexImage2D(enum target, int level, - enum internalformat, int x, int y, sizei width, - sizei height, int border); - - defines a two-dimensional texture image in exactly the manner of - TexImage2D, except that the image data are taken from the framebuffer - rather than from client memory. Currently, target must be one of - TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, TEXTURE_CUBE_MAP_POSITIVE_X, - TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE MAP_POSITIVE_Y, - TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, or - TEXTURE_CUBE_MAP_NEGATIVE_Z. - - - Change the last paragraph on page 160 to say (spec changes identical - to EXT_texture_array): - - "Currently the target arguments of TexSubImage1D and CopyTexSubImage1D - must be TEXTURE_1D, the target arguments of TexSubImage2D and - CopyTexSubImage2D must be one of TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, - TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_NEGATIVE_X, - TEXTURE_CUBE_MAP_POSITIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Y, - TEXTURE_CUBE_MAP_POSITIVE_Z, or TEXTURE_CUBE_MAP_NEGATIVE_Z, and the - target arguments of TexSubImage3D and CopyTexSubImage3D must be - TEXTURE_3D or TEXTURE_2D_ARRAY_EXT. ..." - - - -- Section 3.8.4 "Texture Parameters" - - Change the first paragraph (page 166) to say: - - "Various parameters control how the texel array is treated when - specified or changed, and when applied to a fragment. Each parameter is - set by calling - - void TexParameter{if}(enum target, enum pname, T param); - void TexParameter{if}v(enum target, enum pname, T params); - - target is the target, either TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, - TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT." - - - -- Section 3.8.8 "Texture Minification" in the section "Scale Factor and Level of Detail" - - Change the first paragraph (page 172) to say: - - "Let s(x,y) be the function that associates an s texture coordinate - with each set of window coordinates (x,y) that lie within a primitive; - define t(x,y) and r(x,y) analogously. Let u(x,y) = w_t * s(x,y), - v(x,y) = h_t * t(x,y), and w(x,y) = d_t * r(x,y), where w_t, h_t, - and d_t are as defined by equations 3.15, 3.16, and 3.17 with - w_s, h_s, and d_s equal to the width, height, and depth of the - image array whose level is level_base. For a one-dimensional - texture or a one-dimensional array texture, define v(x,y) = 0 and - w(x,y) = 0; for a two-dimensional texture or a two-dimensional array - texture, define w(x,y) = 0..." - - -- Section 3.8.8 "Texture Minification" in the section "Mipmapping" - - Change the third paragraph (page 174) to say: - - "For a two-dimensional texture, two-dimensional array texture, or - cube map texture," - - Change the fourth paragraph (page 174) to say: - - "And for a one-dimensional texture or a one-dimensional array texture," - - After the first paragraph (page 175) add: - - "For one-dimensional array textures, h_b and d_b are treated as 1, - regardless of the actual values, when performing mipmap calculations. - For two-dimensional array textures, d_b is always treated as one, - regardless of the actual value, when performing mipmap calculations." - - -- Section 3.8.8 "Automatic Mipmap Generation" in the section "Mipmapping" - - Change the third paragraph (page 176) to say (spec changes identical - to EXT_texture_array): - - "The contents of the derived arrays are computed by repeated, filtered - reduction of the level_base array. For one- and two-dimensional array - textures, each layer is filtered independently. ..." - - -- Section 3.8.8 "Manual Mipmap Generation" in the section "Mipmapping" - - Change first paragraph to say (spec changes identical to - EXT_texture_array): - - "Mipmaps can be generated manually with the command - - void GenerateMipmapEXT(enum target); - - where <target> is one of TEXTURE_1D, TEXTURE_2D, TEXTURE_CUBE_MAP, - TEXTURE_3D, TEXTURE_1D_ARRAY, or TEXTURE_2D_ARRAY. Mipmap generation - affects the texture image attached to <target>. ..." - - -- Section 3.8.10 "Texture Completeness" - - Change the second paragraph (page 177) to say (spec changes identical - to EXT_texture_array): - - "For one-, two-, or three-dimensional textures and one- or - two-dimensional array textures, a texture is complete if the following - conditions all hold true:" - - -- Section 3.8.11 "Texture State and Proxy State" - - Change the second and third paragraphs (page 179) to say (spec changes - identical to EXT_texture_array): - - "In addition to image arrays for one-, two-, and three-dimensional - textures, one- and two-dimensional array textures, and the six image - arrays for the cube map texture, partially instantiated image arrays - are maintained for one-, two-, and three-dimensional textures and one- - and two-dimensional array textures. Additionally, a single proxy image - array is maintained for the cube map texture. Each proxy image array - includes width, height, depth, border width, and internal format state - values, as well as state for the red, green, blue, alpha, luminance, - and intensity component resolutions. Proxy image arrays do not include - image data, nor do they include texture properties. When TexImage3D is - executed with target specified as PROXY_TEXTURE_3D, the - three-dimensional proxy state values of the specified level-of-detail - are recomputed and updated. If the image array would not be supported - by TexImage3D called with target set to TEXTURE 3D, no error is - generated, but the proxy width, height, depth, border width, and - component resolutions are set to zero. If the image array would be - supported by such a call to TexImage3D, the proxy state values are set - exactly as though the actual image array were being specified. No pixel - data are transferred or processed in either case. - - Proxy arrays for one- and two-dimensional textures and one- and - two-dimensional array textures are operated on in the same way when - TexImage1D is executed with target specified as PROXY_TEXTURE_1D, - TexImage2D is executed with target specified as PROXY_TEXTURE_2D or - PROXY_TEXTURE_1D_ARRAY_EXT, or TexImage3D is executed with target - specified as PROXY_TETXURE_2D_ARRAY_EXT." - - -- Section 3.8.12 "Texture Objects" - - Change section (page 180) to say (spec changes identical to - EXT_texture_array): - - "In addition to the default textures TEXTURE_1D, TEXTURE_2D, - TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and TEXTURE_2D_EXT, - named one-, two-, and three-dimensional, cube map, and one- and - two-dimensional array texture objects can be created and operated upon. - The name space for texture objects is the unsigned integers, with zero - reserved by the GL. - - A texture object is created by binding an unused name to TEXTURE_1D, - TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or - TEXTURE_2D_ARRAY_EXT. The binding is effected by calling - - void BindTexture(enum target, uint texture); - - with <target> set to the desired texture target and <texture> set to - the unused name. The resulting texture object is a new state vector, - comprising all the state values listed in section 3.8.11, set to the - same initial values. If the new texture object is bound to TEXTURE_1D, - TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or - TEXTURE_2D_ARRAY_EXT, it is and remains a one-, two-, - three-dimensional, cube map, one- or two-dimensional array texture - respectively until it is deleted. - - BindTexture may also be used to bind an existing texture object to - either TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, - TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT. The error - INVALID_OPERATION is generated if an attempt is made to bind a texture - object of different dimensionality than the specified target. If the - bind is successful no change is made to the state of the bound texture - object, and any previous binding to target is broken. - - While a texture object is bound, GL operations on the target to which - it is bound affect the bound object, and queries of the target to which - it is bound return state from the bound object. If texture mapping of - the dimensionality of the target to which a texture object is bound is - enabled, the state of the bound texture object directs the texturing - operation. - - In the initial state, TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, - TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and TEXTURE_2D_ARRAY_EXT have - one-, two-, three-dimensional, cube map, and one- and two-dimensional - array texture state vectors respectively associated with them. In order - that access to these initial textures not be lost, they are treated as - texture objects all of whose names are 0. The initial one-, two-, - three-dimensional, cube map, one- and two-dimensional array textures - are therefore operated upon, queried, and applied as TEXTURE_1D, - TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and - TEXTURE_2D_ARRAY_EXT respectively while 0 is bound to the corresponding - targets. - - Change second paragraph on page 181 to say (spec changes identical to - EXT_texture_array): - - "... If a texture that is currently bound to one of the targets - TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, - TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT is deleted, it is as - though BindTexture had been executed with the same target and texture - zero. ..." - - Change second paragraph on page 182 to say (spec changes identical to - EXT_texture_array): - - "The texture object name space, including the initial one-, two-, and - three dimensional, cube map, and one- and two-dimensional array texture - objects, is shared among all texture units. ..." - - - -- Section 3.8.14 "Depth Texture Comparison Modes" in "Texture Comparison Modes" - - Change second through fourth paragraphs (page 188) to say: - - "Let D_t be the depth texture value, in the range [0, 1]. For - texture lookups from one- and two-dimensional, rectangle, and - one-dimensional array targets, let R be the interpolated <r> - texture coordinate, clamped to the range [0, 1]. For texture lookups - from two-dimensional array texture targets, let R be the interpolated - <q> texture coordinate, clamped to the range [0, 1]. Then the - effective texture value L_t, I_t, or A_t is computed as follows: - - If the value of TEXTURE_COMPARE_MODE is NONE, then - - r = Dt - - If the value of TEXTURE_COMPARE_MODE is - COMPARE_REF_DEPTH_TO_TEXTURE_EXT), then r depends on the texture - comparison function as shown in table 3.27." - - -- Section 3.8.15 "Texture Application" - - Change the first paragraph (page 189) to say: - - "Texturing is enabled or disabled using the generic Enable and Disable - commands, respectively, with the symbolic constants TEXTURE_1D, - TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or - TEXTURE_2D_ARRAY_EXT to enable one-, two-, three-dimensional, cube - map, one-dimensional array, or two-dimensional array texture, - respectively. If both two- and one-dimensional textures are enabled, - the two-dimensional texture is used. If the three-dimensional and - either of the two- or one-dimensional textures is enabled, the - three-dimensional texture is used. If the cube map texture and any of - the three-, two-, or one-dimensional textures is enabled, then cube map - texturing is used. If one-dimensional array texture is enabled and any - of cube map, three-, two-, or one-dimensional textures is enabled, - one-dimensional array texturing is used. If two-dimensional array - texture is enabled and any of cube map, three-, two-, one-dimensional - textures or one-dimensional array texture is enabled, two-dimensional - array texturing is used..." - - -- Section 3.11.2 of ARB_fragment_program (Fragment Program Grammar and Restrictions): - - (mostly add to existing grammar rules) - - <optionName> ::= "MESA_texture_array" - - <texTarget> ::= "1D" - | "2D" - | "3D" - | "CUBE" - | "RECT" - | <arrayTarget> (if program option is present) - | <shadowTarget> (if program option is present) - - <arrayTarget> ::= "ARRAY1D" - | "ARRAY2D" - - <shadowTarget> ::= "SHADOW1D" - | "SHADOW2D" - | "SHADOWRECT" - | <shadowArrayTarget> (if program option is present) - - <shadowArrayTarget> ::= "SHADOWARRAY1D" - | "SHADOWARRAY2D" - - - -- Add Section 3.11.4.5.4 "Texture Stack Option" - - "If a fragment program specifies the "MESA_texture_array" program - option, the <texTarget> rule is modified to add the texture targets - ARRAY1D and ARRAY2D (See Section 3.11.2)." - - -- Section 3.11.6 "Fragment Program Texture Instruction Set" - - (replace 1st and 2nd paragraphs with the following paragraphs) - - "The first three texture instructions described below specify the - mapping of 4-tuple input vectors to 4-tuple output vectors. - The sampling of the texture works as described in section 3.8, - except that texture environments and texture functions are not - applicable, and the texture enables hierarchy is replaced by explicit - references to the desired texture target (i.e., 1D, 2D, 3D, cube map, - rectangle, ARRAY1D, ARRAY2D). These texture instructions specify - how the 4-tuple is mapped into the coordinates used for sampling. The - following function is used to describe the texture sampling in the - descriptions below: - - vec4 TextureSample(vec4 coord, float lodBias, int texImageUnit, - enum texTarget); - - Note that not all four components of the texture coordinates <coord> - are used by all texture targets. Component usage for each <texTarget> - is defined in table X. - - coordinates used - texTarget Texture Type s t r layer shadow - ---------------- --------------------- ----- ----- ------ - 1D TEXTURE_1D x - - - - - 2D TEXTURE_2D x y - - - - 3D TEXTURE_3D x y z - - - CUBE TEXTURE_CUBE_MAP x y z - - - RECT TEXTURE_RECTANGLE_ARB x y - - - - ARRAY1D TEXTURE_1D_ARRAY_EXT x - - y - - ARRAY2D TEXTURE_2D_ARRAY_EXT x y - z - - SHADOW1D TEXTURE_1D x - - - z - SHADOW2D TEXTURE_2D x y - - z - SHADOWRECT TEXTURE_RECTANGLE_ARB x y - - z - SHADOWARRAY1D TEXTURE_1D_ARRAY_EXT x - - y z - SHADOWARRAY2D TEXTURE_2D_ARRAY_EXT x y - z w - - Table X: Texture types accessed for each of the <texTarget>, and - coordinate mappings. The "coordinates used" column indicate the - input values used for each coordinate of the texture lookup, the - layer selector for array textures, and the reference value for - texture comparisons." - - -- Section 3.11.6.2 "TXP: Project coordinate and map to color" - - Add to the end of the section: - - "A program will fail to load if the TXP instruction is used in - conjunction with the SHADOWARRAY2D target." - -Additions to Chapter 4 of the OpenGL 2.0 Specification (Per-Fragment Operations) - - -- Section 4.4.2.3 "Attaching Texture Images to a Framebuffer" - - Add to the end of the section (spec changes identical to - EXT_texture_array): - - "The command - - void FramebufferTextureLayerEXT(enum target, enum attachment, - uint texture, int level, int layer); - - operates identically to FramebufferTexture3DEXT, except that it - attaches a single layer of a three-dimensional texture or a one- or - two-dimensional array texture. <layer> is an integer indicating the - layer number, and is treated identically to the <zoffset> parameter in - FramebufferTexture3DEXT. The error INVALID_VALUE is generated if - <layer> is negative. The error INVALID_OPERATION is generated if - <texture> is non-zero and is not the name of a three dimensional - texture or one- or two-dimensional array texture. Unlike - FramebufferTexture3D, no <textarget> parameter is accepted. - - If <texture> is non-zero and the command does not result in an error, - the framebuffer attachment state corresponding to <attachment> is - updated as in the other FramebufferTexture commands, except that - FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT is set to <layer>." - - -- Section 4.4.4.1 "Framebuffer Attachment Completeness" - - Add to the end of the list of completeness rules (spec changes - identical to EXT_texture_array): - - "* If FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT is TEXTURE and - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT names a one- or - two-dimensional array texture, then - FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT must be smaller than the - number of layers in the texture." - -Additions to Chapter 5 of the OpenGL 2.0 Specification (Special Functions) - - -- Section 5.4 "Display Lists" - - Change the first paragraph on page 242 to say (spec changes - identical to EXT_texture_array): - - "TexImage3D, TexImage2D, TexImage1D, Histogram, and ColorTable are - executed immediately when called with the corresponding proxy arguments - PROXY_TEXTURE_3D or PROXY_TEXTURE_2D_ARRAY_EXT; PROXY_TEXTURE_2D, - PROXY_TEXTURE_CUBE_MAP, or PROXY_TEXTURE_1D_ARRAY_EXT; - PROXY_TEXTURE_1D; PROXY_HISTOGRAM; and PROXY_COLOR_TABLE, - PROXY_POST_CONVOLUTION_COLOR_TABLE, or - PROXY_POST_COLOR_MATRIX_COLOR_TABLE." - -Additions to Chapter 6 of the OpenGL 2.0 Specification (State and State Requests) - - -- Section 6.1.3 "Enumerated Queries" - - Add after the line beginning "If the value of - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT is TEXTURE" (spec changes - identical to EXT_texture_array): - - "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT and the - texture object named FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT is a - three-dimensional texture or a one- or two-dimensional array texture, - then <params> will contain the number of texture layer attached to the - attachment point. Otherwise, <params> will contain the value zero." - - -- Section 6.1.4 "Texture Queries" - - Change the first three paragraphs (page 248) to say (spec changes - identical to EXT_texture_array): - - "The command - - void GetTexImage(enum tex, int lod, enum format, - enum type, void *img); - - is used to obtain texture images. It is somewhat different from the - other get commands; tex is a symbolic value indicating which texture - (or texture face in the case of a cube map texture target name) is to - be obtained. TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_1D_ARRAY_EXT, - and TEXTURE_2D_ARRAY_EXT indicate a one-, two-, or three-dimensional - texture, or one- or two-dimensional array texture, respectively. - TEXTURE_CUBE_MAP_POSITIVE_X, ... - - GetTexImage obtains... from the first image to the last for - three-dimensional textures. One- and two-dimensional array textures - are treated as two- and three-dimensional images, respectively, where - the layers are treated as rows or images. These groups are then... - - For three-dimensional and two-dimensional array textures, pixel storage - operations are applied as if the image were two-dimensional, except - that the additional pixel storage state values PACK_IMAGE_HEIGHT and - PACK_SKIP_IMAGES are applied. ..." - -Additions to Appendix A of the OpenGL 2.0 Specification (Invariance) - - None - -Additions to the AGL/GLX/WGL Specifications - - None - -GLX Protocol - - None - -Dependencies on ARB_fragment_program - - If ARB_fragment_program is not supported, the changes to section 3.11 - should be ignored. - -Dependencies on EXT_framebuffer_object - - If EXT_framebuffer_object is not supported, the changes to section - 3.8.8 ("Manual Mipmap Generation"), 4.4.2.3, and 6.1.3 should be ignored. - -Dependencies on EXT_texture_compression_s3tc and NV_texture_compression_vtc - - (Identical dependency as EXT_texture_array.) - - S3TC texture compression is supported for two-dimensional array textures. - When <target> is TEXTURE_2D_ARRAY_EXT, each layer is stored independently - as a compressed two-dimensional textures. When specifying or querying - compressed images using one of the S3TC formats, the images are provided - and/or returned as a series of two-dimensional textures stored - consecutively in memory, with the layer closest to zero specified first. - For array textures, images are not arranged in 4x4x4 or 4x4x2 blocks as in - the three-dimensional compression format provided in the - EXT_texture_compression_vtc extension. Pixel store parameters, including - those specific to three-dimensional images, are ignored when compressed - image data are provided or returned, as in the - EXT_texture_compression_s3tc extension. - - S3TC compression is not supported for one-dimensional texture targets in - EXT_texture_compression_s3tc, and is not supported for one-dimensional - array textures in this extension. If compressed one-dimensional arrays - are needed, use a two-dimensional texture with a height of one. - - This extension allows the use of the four S3TC internal format types in - TexImage3D, CompressedTexImage3D, and CompressedTexSubImage3D calls. - -Errors - - None - -New State - - (add to table 6.15, p. 276) - - Initial - Get Value Type Get Command Value Description Sec. Attribute - ---------------------------- ----- ----------- ----- -------------------- ------ --------- - TEXTURE_BINDING_1D_ARRAY_EXT 2*xZ+ GetIntegerv 0 texture object bound 3.8.12 texture - to TEXTURE_1D_ARRAY - TEXTURE_BINDING_2D_ARRAY_EXT 2*xZ+ GetIntegerv 0 texture object bound 3.8.12 texture - to TEXTURE_2D_ARRAY - - -New Implementation Dependent State - - (add to Table 6.32, p. 293) - - Minimum - Get Value Type Get Command Value Description Sec. Attribute - ---------------------------- ---- ----------- ------- ------------------ ----- --------- - MAX_TEXTURE_ARRAY_LAYERS_EXT Z+ GetIntegerv 64 maximum number of 3.8.1 - - layers for texture - arrays - -Issues - - (1) Is "texture stack" a good name for this functionality? - - NO. The name is changed to "array texture" to match the - nomenclature used by GL_EXT_texture_array. - - (2) Should the R texture coordinate be treated as normalized or - un-normalized? If it were un-normalized, floor(R) could be thought - of as a direct index into the array texture. This may be more - convenient for applications. - - RESOLVED. All texture coordinates are normalized. The issue of - un-normalized texture coordinates has been discussed in the ARB - before and should be left for a layered extension. - - RE-RESOLVED. The R coordinate is un-normalized. Accessing an array - using [0, layers-1] coordinates is much more natural. - - (3) How does LOD selection work for stacked textures? - - RESOLVED. For 2D array textures the R coordinate is ignored, and - the LOD selection equations for 2D textures are used. For 1D - array textures the T coordinate is ignored, and the LOD selection - equations for 1D textures are used. The expected usage is in a - fragment program with an explicit LOD selection. - - (4) What is the maximum size of a 2D array texture? Is it the same - as for a 3D texture, or should a new query be added? How about for 1D - array textures? - - RESOLVED. A new query is added. - - (5) How are array textures exposed in GLSL? - - RESOLVED. Use GL_EXT_texture_array. - - (6) Should a 1D array texture also be exposed? - - RESOLVED. For orthogonality, yes. - - (7) How are stacked textures attached to framebuffer objects? - - RESOLVED. Layers of both one- and two-dimensional array textures - are attached using FreambufferTextureLayerEXT. Once attached, the - array texture layer behaves exactly as either a one- or - two-dimensional texture. - - (8) How is this extension related to GL_EXT_texture_array? - - This extension adapats GL_MESAX_texture_stack to the notation, - indexing, and FBO access of GL_EXT_texture_array. This extension - replaces the GLSL support of GL_EXT_texture_array with - GL_ARB_fragment_program support. - - Assembly program support is also provided by GL_NV_gpu_program4. - GL_NV_gpu_program4 also adds support for other features that are - specific to Nvidia hardware, while this extension adds only support - for array textures. - - Much of text of this extension that has changed since - GL_MESAX_texture_stack comes directly from either - GL_EXT_texture_array or GL_NV_gpu_program4. - -Revision History - - ||2005/11/15||0.1||idr||Initial draft MESAX version.|| - ||2005/12/07||0.2||idr||Added framebuffer object interactions.|| - ||2005/12/12||0.3||idr||Updated fragment program interactions.|| - ||2007/05/16||0.4||idr||Converted to MESA_texture_array. Brought in line with EXT_texture_array and NV_gpu_program4.|| diff --git a/mesalib/docs/MESA_texture_signed_rgba.spec b/mesalib/docs/MESA_texture_signed_rgba.spec deleted file mode 100644 index e3a6b59af..000000000 --- a/mesalib/docs/MESA_texture_signed_rgba.spec +++ /dev/null @@ -1,214 +0,0 @@ -Name - - MESA_texture_signed_rgba - -Name Strings - - GL_MESA_texture_signed_rgba - -Contact - - - -Notice - - - -IP Status - - No known IP issues - -Status - - - -Version - - 0.3, 2009-03-24 - -Number - - Not assigned ? - -Dependencies - - Written based on the wording of the OpenGL 2.0 specification. - - This extension trivially interacts with ARB_texture_float. - This extension shares some language with ARB_texture_compression_rgtc - but does not depend on it. - -Overview - - OpenGL prior to 3.1 does not support any signed texture formats. - ARB_texture_compression_rgtc introduces some compressed red and - red_green signed formats but no uncompressed ones, which might - still be useful. NV_texture_shader adds signed texture formats, - but also a lot of functionality which has been superseded by fragment - shaders. - It is usually possible to get the same functionality - using a unsigned format by doing scale and bias in a shader, but this - is undesirable since modern hardware has direct support for this. - This extension adds a signed 4-channel texture format by backporting - the relevant features from OpenGL 3.1, as a means to support this in - OpenGL implementations only supporting older versions. - -Issues - - 1) What should this extension be called? - - RESOLVED: MESA_texture_signed_rgba seems reasonable. - The rgba part is there because only 4 channel format is supported. - - - 2) Should the full set of signed formats (alpha, luminance, rgb, etc.) - be supported? - - RESOLVED: NO. To keep this extension simple, only add the most - universal format, rgba. alpha/luminance can't be trivially supported - since OpenGL 3.1 does not support them any longer, and there is some - implied dependency on ARB_texture_rg for red/red_green formats so - avoid all this. Likewise, only 8 bits per channel is supported. - - - 3) Should this extension use new enums for the texture formats? - - RESOLVED: NO. Same enums as those used in OpenGL 3.1. - - - 4) How are signed integer values mapped to floating-point values? - - RESOLVED: Same as described in issue 5) of - ARB_texture_compression_rgtc (quote): - A signed 8-bit two's complement value X is computed to - a floating-point value Xf with the formula: - - { X / 127.0, X > -128 - Xf = { - { -1.0, X == -128 - - This conversion means -1, 0, and +1 are all exactly representable, - however -128 and -127 both map to -1.0. Mapping -128 to -1.0 - avoids the numerical awkwardness of have a representable value - slightly more negative than -1.0. - - This conversion is intentionally NOT the "byte" conversion listed - in Table 2.9 for component conversions. That conversion says: - - Xf = (2*X + 1) / 255.0 - - The Table 2.9 conversion is incapable of exactly representing - zero. - - (Difference to ARB_texture_compression_rgtc): - This is the same mapping as OpenGL 3.1 uses. - This is also different to what NV_texture_shader used. - The above mapping should be considered the reference, but there - is some leeway so other mappings are allowed for implementations which - cannot do this. Particularly the mapping given in NV_texture_shader or - the standard OpenGL byte/float mapping is considered acceptable too, as - might be a mapping which represents -1.0 by -128, 0.0 by 0 and 1.0 by - 127 (that is, uses different scale factors for negative and positive - numbers). - Also, it is ok to store incoming GL_BYTE user data as-is, without - converting to GL_FLOAT (using the standard OpenGL float/byte mapping) - and converting back (using the mapping described here). - Other than those subtle issues there are no other non-standard - conversions used, so when using for instance CopyTexImage2D with - a framebuffer clamped to [0,1] all converted numbers will be in the range - [0, 127] (and not scaled and biased). - - - 5) How will signed components resulting from RGBA8_SNORM texture - fetches interact with fragment coloring? - - RESOLVED: Same as described in issue 6) of - ARB_texture_compression_rgtc (quote): - The specification language for this extension is silent - about clamping behavior leaving this to the core specification - and other extensions. The clamping or lack of clamping is left - to the core specification and other extensions. - - For assembly program extensions supporting texture fetches - (ARB_fragment_program, NV_fragment_program, NV_vertex_program3, - etc.) or the OpenGL Shading Language, these signed formats will - appear as expected with unclamped signed components as a result - of a texture fetch instruction. - - If ARB_color_buffer_float is supported, its clamping controls - will apply. - - NV_texture_shader extension, if supported, adds support for - fixed-point textures with signed components and relaxed the - fixed-function texture environment clamping appropriately. If the - NV_texture_shader extension is supported, its specified behavior - for the texture environment applies where intermediate values - are clamped to [-1,1] unless stated otherwise as in the case - of explicitly clamped to [0,1] for GL_COMBINE. or clamping the - linear interpolation weight to [0,1] for GL_DECAL and GL_BLEND. - - Otherwise, the conventional core texture environment clamps - incoming, intermediate, and output color components to [0,1]. - - This implies that the conventional texture environment - functionality of unextended OpenGL 1.5 or OpenGL 2.0 without - using GLSL (and with none of the extensions referred to above) - is unable to make proper use of the signed texture formats added - by this extension because the conventional texture environment - requires texture source colors to be clamped to [0,1]. Texture - filtering of these signed formats would be still signed, but - negative values generated post-filtering would be clamped to - zero by the core texture environment functionality. The - expectation is clearly that this extension would be co-implemented - with one of the previously referred to extensions or used with - GLSL for the new signed formats to be useful. - - - 6) Should the RGBA_SNORM tokens also be accepted by CopyTexImage - functions? - - RESOLVED: YES. - - - 7) What to do with GetTexParameter if ARB_texture_float is supported, - in particular what datatype should this return for TEXTURE_RED_TYPE_ARB, - TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB, TEXTURE_ALPHA_TYPE_ARB? - - RESOLVED: ARB_texture_float states type is either NONE, - UNSIGNED_NORMALIZED_ARB, or FLOAT. This extension adds a new enum, - SIGNED_NORMALIZED, which will be returned accordingly. This is the - same behaviour as in OpenGL 3.1. - - -New Tokens - - - Accepted by the <internalformat> parameter of - TexImage1D, TexImage2D, TexImage3D, CopyTexImage1D, and CopyTexImage2D: - - RGBA_SNORM 0x8F93 - RGBA8_SNORM 0x8F97 - - Returned by the <params> parameter of GetTexLevelParameter: - - SIGNED_NORMALIZED 0x8F9C - - -Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization): - - -- Section 3.8.1, Texture Image Specification - - Add to Table 3.16 (page 154): Sized internal formats - - Sized Base R G B A L I D - Internal Format Internal Format bits bits bits bits bits bits bits - --------------- --------------- ---- ---- ---- ---- ---- ---- ---- - RGBA8_SNORM RGBA 8 8 8 8 0 0 0 - - -Dependencies on ARB_texture_float extension: - - If ARB_texture_float is supported, GetTexParameter queries with <value> - of TEXTURE_RED_TYPE_ARB, TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB or - TEXTURE_ALPHA_TYPE_ARB return SIGNED_NORMALIZED if - the base internal format is RGBA_SNORM. diff --git a/mesalib/docs/MESA_window_pos.spec b/mesalib/docs/MESA_window_pos.spec deleted file mode 100644 index 9e81e9c4d..000000000 --- a/mesalib/docs/MESA_window_pos.spec +++ /dev/null @@ -1,126 +0,0 @@ -Name - - MESA_window_pos - -Name Strings - - GL_MESA_window_pos - -Contact - - Brian Paul, brian.paul 'at' tungstengraphics.com - -Status - - Shipping (since Mesa version 1.2.8) - -Version - - -Number - - 197 - -Dependencies - - OpenGL 1.0 is required. - The extension is written against the OpenGL 1.2 Specification - -Overview - - In order to set the current raster position to a specific window - coordinate with the RasterPos command, the modelview matrix, projection - matrix and viewport must be set very carefully. Furthermore, if the - desired window coordinate is outside of the window's bounds one must - rely on a subtle side-effect of the Bitmap command in order to circumvent - frustum clipping. - - This extension provides a set of functions to directly set the - current raster position, bypassing the modelview matrix, the - projection matrix and the viewport to window mapping. Furthermore, - clip testing is not performed. - - This greatly simplifies the process of setting the current raster - position to a specific window coordinate prior to calling DrawPixels, - CopyPixels or Bitmap. - -New Procedures and Functions - - void WindowPos2dMESA(double x, double y) - void WindowPos2fMESA(float x, float y) - void WindowPos2iMESA(int x, int y) - void WindowPos2sMESA(short x, short y) - void WindowPos2ivMESA(const int *p) - void WindowPos2svMESA(const short *p) - void WindowPos2fvMESA(const float *p) - void WindowPos2dvMESA(const double *p) - void WindowPos3iMESA(int x, int y, int z) - void WindowPos3sMESA(short x, short y, short z) - void WindowPos3fMESA(float x, float y, float z) - void WindowPos3dMESA(double x, double y, double z) - void WindowPos3ivMESA(const int *p) - void WindowPos3svMESA(const short *p) - void WindowPos3fvMESA(const float *p) - void WindowPos3dvMESA(const double *p) - void WindowPos4iMESA(int x, int y, int z, int w) - void WindowPos4sMESA(short x, short y, short z, short w) - void WindowPos4fMESA(float x, float y, float z, float w) - void WindowPos4dMESA(double x, double y, double z, double ) - void WindowPos4ivMESA(const int *p) - void WindowPos4svMESA(const short *p) - void WindowPos4fvMESA(const float *p) - void WindowPos4dvMESA(const double *p) - -New Tokens - - none - -Additions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation) - - - (2.12, p. 41) Insert after third paragraph: - - Alternately, the current raster position may be set by one of the - WindowPosMESA commands: - - void WindowPos{234}{sidf}MESA( T coords ); - void WindowPos{234}{sidf}vMESA( T coords ); - - WindosPos4MESA takes four values indicating x, y, z, and w. - WindowPos3MESA (or WindowPos2MESA) is analaguos, but sets only - x, y, and z with w implicitly set to 1 (or only x and y with z - implicitly set to 0 and w implicitly set to 1). - - WindowPosMESA operates like RasterPos except that the current modelview - matrix, projection matrix and viewport parameters are ignored and the - clip test operation always passes. The current raster position values - are directly set to the parameters passed to WindowPosMESA. The current - color, color index and texture coordinate update the current raster - position's associated data. - -Additions to the AGL/GLX/WGL Specifications - - None - -GLX Protocol - - Not specified at this time. However, a protocol message very similar - to that of RasterPos is expected. - -Errors - - INVALID_OPERATION is generated if WindowPosMESA is called between - Begin and End. - -New State - - None. - -New Implementation Dependent State - - None. - -Revision History - - * Revision 1.0 - Initial specification - * Revision 1.1 - Minor clean-up (7 Jan 2000, Brian Paul) - diff --git a/mesalib/docs/MESA_ycbcr_texture.spec b/mesalib/docs/MESA_ycbcr_texture.spec deleted file mode 100644 index 6a730e81c..000000000 --- a/mesalib/docs/MESA_ycbcr_texture.spec +++ /dev/null @@ -1,204 +0,0 @@ -Name - - MESA_ycbcr_texture - -Name Strings - - GL_MESA_ycbcr_texture - -Contact - - Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com) - Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com) - -Status - - Shipping (Mesa 4.0.4 and later) - -Version - - 1.0 - -Number - - TBD - -Dependencies - - OpenGL 1.0 or later is required - This extension is written against the OpenGL 1.4 Specification. - NV_texture_rectangle effects the definition of this extension. - -Overview - - This extension supports texture images stored in the YCbCr format. - There is no support for converting YCbCr images to RGB or vice versa - during pixel transfer. The texture's YCbCr colors are converted to - RGB during texture sampling, after-which, all the usual per-fragment - operations take place. Only 2D texture images are supported (not - glDrawPixels, glReadPixels, etc). - - A YCbCr pixel (texel) is a 16-bit unsigned short with two components. - The first component is luminance (Y). For pixels in even-numbered - image columns, the second component is Cb. For pixels in odd-numbered - image columns, the second component is Cr. If one were to convert the - data to RGB one would need to examine two pixels from columns N and N+1 - (where N is even) to deduce the RGB color. - -IP Status - - None - -Issues - - None - -New Procedures and Functions - - None - -New Tokens - - Accepted by the <internalFormat> and <format> parameters of - TexImage2D and TexSubImage2D: - - YCBCR_MESA 0x8757 - - Accepted by the <type> parameter of TexImage2D and TexSubImage2D: - - UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */ - UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */ - -Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation) - - None - -Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization) - - In section 3.6.4, Rasterization of Pixel Rectangles, on page 101, - add the following to Table 3.8 (Packed pixel formats): - - type Parameter GL Data Number of Matching - Token Name Type Components Pixel Formats - -------------- ------- ---------- ------------- - UNSIGNED_SHORT_8_8_MESA ushort 2 YCBCR_MESA - UNSIGNED_SHORT_8_8_REV_MESA ushort 2 YCBCR_MESA - - - In section 3.6.4, Rasterization of Pixel Rectangles, on page 102, - add the following to Table 3.10 (UNSIGNED_SHORT formats): - - UNSIGNED_SHORT_8_8_MESA: - - 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 - +-------------------------------+-------------------------------+ - | 1st | 2nd | - +-------------------------------+-------------------------------+ - - UNSIGNED_SHORT_8_8_REV_MESA: - - 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 - +-------------------------------+-------------------------------+ - | 2nd | 1st | - +-------------------------------+-------------------------------+ - - - In section 3.6.4, Rasterization of Pixel Rectangles, on page 104, - add the following to Table 3.12 (Packed pixel field assignments): - - First Second Third Fourth - Format Element Element Element Element - ------ ------- ------- ------- ------- - YCBCR_MESA luminance chroma - - - In section 3.8.1, Texture Image Specification, on page 125, add - another item to the list of TexImage2D and TexImage3D equivalence - exceptions: - - * The value of internalformat and format may be YCBCR_MESA to - indicate that the image data is in YCbCr format. type must - be either UNSIGNED_SHORT_8_8_MESA or UNSIGNED_SHORT_8_8_REV_MESA - as seen in tables 3.8 and 3.10. Table 3.12 describes the mapping - between Y and Cb/Cr to the components. - If NV_texture_rectangle is supported target may also be - TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV. - All pixel transfer operations are bypassed. The texture is stored as - YCbCr, not RGB. Queries of the texture's red, green and blue component - sizes will return zero. The YCbCr colors are converted to RGB during - texture sampling using an implementation dependent conversion. - - - In section 3.8.1, Texture Image Specification, on page 126, add - another item to the list of TexImage1D and TexImage2D equivalence - exceptions: - - * The value of internalformat and format can not be YCBCR_MESA. - - - In section 3.8.2, Alternate Texture Image Specification Commands, on - page 129, insert this paragraph after the first full paragraph on the - page: - - "If the internal storage format of the image being updated by - TexSubImage2D is YCBCR_MESA then format must be YCBCR_MESA. - The error INVALID_OPERATION will be generated otherwise." - - -Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment -Operations and the Frame Buffer) - - None - -Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions) - - None - -Additions to Chapter 6 of the OpenGL 1.4 Specification (State and -State Requests) - - None - -Additions to Appendix A of the OpenGL 1.4 Specification (Invariance) - - None - -Additions to the AGL/GLX/WGL Specifications - - None - -GLX Protocol - - None - -Errors - - INVALID_ENUM is generated by TexImage2D if <internalFormat> is - MESA_YCBCR but <format> is not MESA_YCBCR. - - INVALID_ENUM is generated by TexImage2D if <format> is MESA_YCBCR but - <internalFormat> is not MESA_YCBCR. - - INVALID_VALUE is generated by TexImage2D if <format> is MESA_YCBCR and - <internalFormat> is MESA_YCBCR and <border> is not zero. - - INVALID_OPERATION is generated by TexSubImage2D if the internal image - format is YCBCR_MESA and <format> is not YCBCR_MESA. - - INVALID_OPERATION is generated by CopyTexSubImage2D if the internal - image is YCBCR_MESA. - -New State - - Edit table 6.16 on page 231: change the type of TEXTURE_INTERNAL_FORMAT - from n x Z42 to n x Z43 to indicate that internal format may also be - YCBCR_MESA. - -Revision History - - 20 September 2002 - Initial draft - 29 April 2003 - minor updates - 3 September 2003 - further clarify when YCbCr->RGB conversion takes place - 19 September 2003 - a few more updates prior to submitting to extension - registry. - 3 April 2004 - fix assorted inaccuracies diff --git a/mesalib/docs/README.UVD b/mesalib/docs/README.UVD new file mode 100644 index 000000000..36b467edf --- /dev/null +++ b/mesalib/docs/README.UVD @@ -0,0 +1,13 @@ +The software may implement third party technologies (e.g. third party +libraries) that are not licensed to you by AMD and for which you may need +to obtain licenses from other parties. Unless explicitly stated otherwise, +these third party technologies are not licensed hereunder. Such third +party technologies include, but are not limited, to H.264, MPEG-2, MPEG-4, +AVC, and VC-1. + +For MPEG-2 Encoding Products ANY USE OF THIS PRODUCT IN ANY MANNER OTHER +THAN PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD FOR ENCODING VIDEO +INFORMATION FOR PACKAGED MEDIA IS EXPRESSLY PROHIBITED WITHOUT A LICENSE +UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT PORTFOLIO, WHICH LICENSES IS +AVAILABLE FROM MPEG LA, LLC, 6312 S. Fiddlers Green Circle, Suite 400E, +Greenwood Village, Colorado 80111 U.S.A. diff --git a/mesalib/docs/RELNOTES-3.1 b/mesalib/docs/RELNOTES-3.1 deleted file mode 100644 index 65324eb49..000000000 --- a/mesalib/docs/RELNOTES-3.1 +++ /dev/null @@ -1,145 +0,0 @@ - - Mesa 3.1 release notes - - PLEASE READ!!!! - - -New copyright -------------- - -Mesa 3.1 will be distributed under an XFree86-style copyright instead -of the GNU LGPL. - - -New directories ---------------- - -All documentation files are now in the docs/ directory. -All shell scripts are now in the bin/ directory. - - -New library names ------------------ - -Formerly, the main Mesa library was named libMesaGL.so (or libMesaGL.a) -and the GLU library was named libMesaGLU.so (or libMesaGLU.a). - -Now, the main library is named libGL.so (or libGL.a) and the GLU library -is named libGLU.so (or libGLU.a). - -The change allows Mesa to be more easily substituted for OpenGL. -Specifically, the linker/loader on some Unix-like systems won't -allow libMesaGL.so to be used instead of libGL.so if the application -was linked with the former. - -Warning: if you have another OpenGL implementation installed on your -system (i.e. you have another OpenGL libGL.so) you'll have to be -carefull about which library (OpenGL or Mesa) you link against. Be -aware of -L linker flags and the value of the LD_LIBRARY_PATH environment -variable. - - -New library versioning ----------------------- - -Previously, the Mesa GL library was named libMesaGL.so.3.0 -To better support Linux/OpenGL standards, the Mesa GL library is now -named libGL.so.1.2.030100 This indicates version 1.2 of the OpenGL spec -and Mesa implementation 3.1.0 - -In the long term this will allow better interoperability with other -OpenGL implementations, especially on Linux. In the short term, -OpenGL apps may have to be relinked to use the new library naming. - - - -New makefiles -------------- - -The old Makefiles found in the various directories have been renamed -to Makefile.X11 in order to prevent filename collisions with autoconfig- -generated Makefiles. - -The top-level Makefile simply includes Makefile.X11 -If your top-level Makefile get's overwritten/destroyed you can restore -it by copying Makefile.X11 to Makefile - - -New extensions --------------- - -GL_EXT_stencil_wrap - Implements two new stencil operations: GL_INCR_WRAP_EXT and - GL_DECR_WRAP_EXT which allow stencil increment and decrement - without clamping. - -GL_INGR_blend_func_separate - Allows specification of blend factors for RGB and Alpha independently. - (INGR = Intergraph) - -GL_ARB_multitexture - Multiple simultaneous textures. (ARB = Architecture Review Board) - -GL_NV_texgen_reflection - nVidia texgen extension for better reflection mapping. - -GL_PGI_misc_hints - Assorted transformation hints. - -GL_EXT_compiled_vertex_array - Compiled vertex arrays. - -GL_EXT_clip_volume_hint - Allows one to disable clip volume (frustum) testing. - - - -Extensions removed ------------------- - -GL_EXT_multitexture - obsolete in favor of GL_ARB_multitexture - - - -Config file ------------ - -By default, /etc/mesa.conf will be read when Mesa starts. This -file controls default hints, enable/disable of extensions, and -more. See the CONFIG file for documentation. - - - -Optimizations -------------- - -Keith Whitwell has contributed significant optimizations to Mesa's -vertex transformation code. Basically, the whole transformation -stage of Mesa has been rewritten. - -It's impossible to give a speedup factor. You'll just have to -try your app and see how it performs. - - - -Device Driver changes ---------------------- - -A bunch of new device driver functions have been added. See src/dd.h -Keith Harrison contributed many of them. I've been planning on adding -a bunch of functions like these to make writing hardware drivers easier. -More such function will probably be added in the near future. - - - -Miscellaneous -------------- - -util/glstate.c has some handy functions for debugging. Basically, it -offers a simple function for printing GL state variables. It's not -finished yet. There's a LOT more GLenum records to be added (see the -code). Anyone want to help? - - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.2 b/mesalib/docs/RELNOTES-3.2 deleted file mode 100644 index ec7d4f8dc..000000000 --- a/mesalib/docs/RELNOTES-3.2 +++ /dev/null @@ -1,11 +0,0 @@ - - Mesa 3.2 release notes - - PLEASE READ!!!! - - -Mesa 3.2 is a stabilization of the Mesa 3.1 release. No new features -have been added. For a list of bug fixes please read the VERSIONS file. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.2.1 b/mesalib/docs/RELNOTES-3.2.1 deleted file mode 100644 index d34efcc86..000000000 --- a/mesalib/docs/RELNOTES-3.2.1 +++ /dev/null @@ -1,31 +0,0 @@ - - Mesa 3.2.1 release notes - - PLEASE READ!!!! - - - -The Mesa 3.2.1 release mainly just fixes bugs since the 3.2 release. -See the VERSIONS file for the exact list. - - - -GLU Polygon Tessellator ------------------------ - -The GLU tessellator has been reverted back to the version included -with Mesa 3.0 since it's more stable. The Mesa 3.1/3.2 tessellator -implemented the GLU 1.3 specification but suffered from a number of -bugs. - -Mesa implements GLU 1.1. - -Ideally, people should use the GLU 1.3 library included in SGI's -OpenGL Sample Implementation (SI) available from -http://oss.sgi.com/projects/ogl-sample/ -People are working to make easy-to-install Linux RPMs of the -GLU library. - - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.3 b/mesalib/docs/RELNOTES-3.3 deleted file mode 100644 index 3850767bb..000000000 --- a/mesalib/docs/RELNOTES-3.3 +++ /dev/null @@ -1,270 +0,0 @@ - - Mesa 3.3 release notes - - July 21, 2000 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 3.3) designate new developmental releases. -Even numbered versions (such as 3.2.1) designate stable releases. - -Mesa 3.3 has a undergone many internal changes since version 3.2 -and features a lot of new extensions. 3.3 is expected to be pretty -stable, but perhaps not as stable as 3.2 which has been used by -thousands of users over the past months. - -Everyone is encouraged to try Mesa 3.3. Bugs should be reported to -the Mesa bug database on www.sourceforge.net. - - - -Header file / GLenum changes ----------------------------- - -The gl.h and glu.h headers now use #defines to define all GL_* tokens -instead of C-language enums. This change improves Mesa/OpenGL -interoperability. - - - -New API dispatch code ---------------------- - -The core Mesa gl* functions are now implemented with a new dispatch -(jump table) which will allow simultaneous direct/indirect rendering. - -The code is found in the glapi*.[ch] files. - -Of interest: the actual "glFooBar" functions are generated with -templatized code defined in glapitemp.h and included by glapi.c -The glapitemp.h template should be reusable for all sorts of OpenGL -projects. - -The new dispatch code has also optimized with x86 assembly code. -This optimization eliminates copying the function arguments during -dispatch. - - - -New thread support ------------------- - -Thread support in Mesa has been rewritten. The glthread.[ch] files -replace mthreads.[ch]. Thread safety is always enabled (on platforms -which support threads, that is). There is virtually no performance -penalty for typical single-thread applications. See the glapi.c -file for details. - -The Xlib driver (XMesa) is now thread-safe as well. Be sure to -call XInitThreads() in your app first. See the xdemos/glthreads.c -demo for an example. - - - -Make configuration changes --------------------------- - -If you use the old-style (non GNU automake) method to build Mesa note -that several of the configuration names have changed: - - Old name New name - ------------- ---------------- - linux-elf linux - linux linux-static - linux-386-elf linux-386 - linux-386 linux-386-static - etc. - - - -New extensions --------------- - -GL_ARB_transpose_matrix - Adds glLoadTransposeMatrixARB() and glMultTransposeMatrixARB() - functions. - -GL_ARB_texture_cube_map - For cube-based reflection mapping. - -GL_EXT_texture_add_env - Adds GL_ADD texture environment mode. - See http://www.berkelium.com/OpenGL/EXT/texture_env_add.txt - -GL_EXT_texture_lod_bias - Allows mipmapped texture blurring and sharpening. - -GLX_EXT_visual_rating extension - This extension has no effect in stand-alone Mesa (used for DRI). - -GL_HP_occlusion_test - Used for bounding box occlusion testing (see demos/occlude.c). - -GL_SGIX_pixel_texture / GL_SGIS_pixel_texture - Lets glDraw/CopyPixels draw a texture coordinate image. - -GL_SGI_color_matrix - Adds a color matrix and another set of scale and bias parameters - to the glDraw/CopyPixels paths. - -GL_SGI_color_table - Adds additional color tables to the glDraw/Read/CopyPixels paths. - -GL_EXT_histogram - Compute histograms for glDraw/Read/CopyPixels. - -GL_EXT_blend_func_separate - This is the same as GL_INGR_blend_func_separate. - -GL_ARB_texture_cube_mapping - 6-face cube mapping, nicer than sphere mapping - -GL_EXT_texture_env_combine - For advanced texture environment effects. - - -Documentation for all these functions can be found at -http://oss.sgi.com/projects/ogl-sample/registry/ - - - -GLX_SGI_make_current_read functionality ---------------------------------------- - -The functionality of this extension is needed for GLX 1.3 (and required -for the Linux/OpenGL standards base). - -Implementing this function required a **DEVICE DRIVER CHANGE**. -The old SetBuffer() function has been replaced by SetReadBuffer() and -SetDrawBuffer(). All device drivers will have to be updated because -of this change. - -The new function, glXMakeContextCurrent(), in GLX 1.3 now works in Mesa. -The xdemos/wincopy.c program demonstrates it. - - - -Image-related code changes --------------------------- - -The imaging path code used by glDrawPixels, glTexImage[123]D, -glTexSubImage[123], etc has been rewritten. It's now faster, -uses less memory and has several bug fixes. This work was -actually started in Mesa 3.1 with the glTexImage paths but has now -been carried over to glDrawPixels as well. - - - -Device driver interface changes -------------------------------- - -Added new functions for hardware stencil buffer support: - WriteStencilSpan - ReadStencilSpan - WriteStencilPixels - ReadStencilPixels - - -Removed old depth buffer functions: - AllocDepthBuffer - DepthTestSpan - DepthTestPixels - ReadDepthSpanFloat - ReadDepthSpanInt - - -Added new depth buffer functions: - WriteDepthSpan - ReadDepthSpan - WriteDepthPixels - ReadDepthPixels - - These functions always read/write 32-bit GLuints. This will allow - drivers to have anywhere from 0 to 32-bit Z buffers without - recompiling for 16 vs 32 bits as was previously needed. - - -New texture image functions - The entire interface for texture image specification has been updated. - With the new functions, it's optional for Mesa to keep an internal copy - of all textures. Texture download should be a lot faster when the extra - copy isn't made. - -Misc changes - TexEnv now takes a target argument - Removed UseGlobalTexturePalette (use Enable function instead) - - -Also added - ReadPixels - CopyPixels - - -The SetBufffer function has been replaced by SetDrawBuffer and -SetReadBuffer functions. This lets core Mesa independently -specify which buffer is to be used for reading and which for -drawing. - -The Clear function's mask parameter has changed. Instead of -mask being the flags specified by the user to glClear, the -mask is now a bitmask of the DD_*_BIT flags in dd.h. Now -multiple color buffers can be specified for clearing (ala -glDrawBuffers). The driver's Clear function must also -check the glColorMask glIndexMask, and glStencilMask settings -and do the right thing. See the X/Mesa, OS/Mesa, or FX/Mesa -drivers for examples. - - -The depth buffer changes shouldn't be hard to make for existing -drivers. In fact, it should simply the code. Be careful with -the depthBits value passed to gl_create_context(). 1 is a bad -value! It should normally be 0, 16, 24, or 32. - - -gl_create_framebuffer() takes new arguments which explicitly tell -core Mesa which ancillary buffers (depth, stencil, accum, alpha) -should be implemented in software. Mesa hardware drivers should -carefully set these flags depending on which buffers are in the -graphics card. - - - -Internal constants ------------------- - -Point and line size range and granularity limits are now stored -in the gl_constants struct, which is the Const member of GLcontext. -The limits are initialized from values in config.h but may be -overridden by device drivers to reflect the limits of that driver's -hardware. - -Also added constants for NumAuxBuffers and SubPixelBits. - - - -OpenGL Conformance ------------------- - -Mesa now passes all the OpenGL 1.1 conformance tests, except for -antialiased lines. AA lines fail on some, but not all, the tests. -In order to fix the remaining failures, a new AA line algorithm will -be needed (which computes coverage values for end-point fragments). -This will be done for Mesa 3.5/3.6. - - - -OpenGL 1.2 GL_ARB_imaging subset --------------------------------- - -Mesa 3.3 implements all the features of GL_ARB_imaging except for -image convolution. This will (hopefully) be done for Mesa 3.5/3.6. - - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.4 b/mesalib/docs/RELNOTES-3.4 deleted file mode 100644 index 657ccdaab..000000000 --- a/mesalib/docs/RELNOTES-3.4 +++ /dev/null @@ -1,21 +0,0 @@ - - Mesa 3.4 release notes - - November 3, 2000 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 3.3) designate new developmental releases. -Even numbered versions (such as 3.4) designate stable releases. - -Mesa 3.4 simply fixes bugs found in the Mesa 3.3 release. For details, -see the VERSIONS file. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.4.1 b/mesalib/docs/RELNOTES-3.4.1 deleted file mode 100644 index 73d75c64d..000000000 --- a/mesalib/docs/RELNOTES-3.4.1 +++ /dev/null @@ -1,21 +0,0 @@ - - Mesa 3.4.1 release notes - - February 9, 2001 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 3.3) designate new developmental releases. -Even numbered versions (such as 3.4) designate stable releases. - -Mesa 3.4.1 is a maintenance release that simply fixes bugs found since -the Mesa 3.4 release. For details, see the VERSIONS file. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.4.2 b/mesalib/docs/RELNOTES-3.4.2 deleted file mode 100644 index 9caea900d..000000000 --- a/mesalib/docs/RELNOTES-3.4.2 +++ /dev/null @@ -1,21 +0,0 @@ - - Mesa 3.4.2 release notes - - May 17, 2001 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 3.3) designate new developmental releases. -Even numbered versions (such as 3.4) designate stable releases. - -Mesa 3.4.2 is a maintenance release that simply fixes bugs found since -the Mesa 3.4.1 release. For details, see the VERSIONS file. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.5 b/mesalib/docs/RELNOTES-3.5 deleted file mode 100644 index b2aa1b852..000000000 --- a/mesalib/docs/RELNOTES-3.5 +++ /dev/null @@ -1,227 +0,0 @@ - - Mesa 3.5 release notes - - June 21, 2001 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 3.5) designate new developmental releases. -Even numbered versions (such as 3.4) designate stable releases. - -The biggest change in Mesa 3.5 is a complete overhaul of the source -code in order to make it more modular. This was driven by the DRI -hardware drivers. It simplifies the DRI drivers and opens the door -to hardware transform/clip/lighting (TCL). Keith Whitwell can take -the credit for that. - - - -Driver Support --------------- - -The device driver interface in Mesa 3.5 has changed a lot since Mesa 3.4 -Not all of the older Mesa drivers have been updated. Here's the status: - -Driver Status ----------------------- ----------- -XMesa (Xlib) updated -OSMesa (off-screen) updated -FX (3dfx Voodoo1/2) updated -SVGA updated -GGI not updated -Windows/Win32 not updated -DOS/DJGPP not updated -BeOS not updated -Allegro not updated -D3D not updated -DOS not updated - -We're looking for volunteers to update the remaining drivers. Please -post to the Mesa3d-dev mailing list if you can help. - - - -GLU 1.3 -------- - -Mesa 3.5 includes the SGI Sample Implementation (SI) GLU library. -This version of GLU supports the GLU 1.3 specification. The old -Mesa GLU library implemented the 1.1 specification. The SI GLU -library should work much better. - -You'll need a C++ compiler to compile the SI GLU library. This may -be a problem on some systems. - - - -New Extensions --------------- - -GL_EXT_convolution - Adds image convolution to glRead/Copy/DrawPixels/TexImage. - -GL_ARB_imaging - This is the optional imaging subset of OpenGL 1.2. - It's the GL_EXT_convolution, GL_HP_convolution_border_modes, - GL_EXT_histogram, GL_EXT_color_table, GL_EXT_color_subtable - GL_EXT_blend_color, GL_EXT_blend_minmax, GL_EXT_blend_subtract - and GL_SGI_color_matrix extensions all rolled together. - This is supported in all software renderers but not in all - hardware drivers (3dfx for example). - -GL_ARB_texture_compression - This is supported in Mesa but only used by the 3dfx DRI drivers - for Voodoo4 and later. - -GL_ARB_texture_env_add - This is identical to GL_EXT_texture_env_add. - -GL_NV_blend_square - Adds extra blend source and dest factors which allow squaring - of color values. - -GL_EXT_fog_coord - Allows specification of a per-vertex fog coordinate instead of - having fog always computed from the eye distance. - -GL_EXT_secondary_color - Allows specifying the secondary (specular) color for each vertex - instead of getting it only from lighting in GL_SEPARATE_SPECULAR_COLOR - mode. - -GL_ARB_texture_env_combine - Basically the same as GL_EXT_texture_env_combine - -GL_ARB_texture_env_add extension - Texture addition mode. - -GL_ARB_texture_env_dot3 extension - Dot product texture environment. - -GL_ARB_texture_border_clamp - Adds GL_CLAMP_TO_BORDER_ARB texture wrap mode - -GL_SGIX_depth_texture, GL_SGIX_shadow and GL_SGIX_shadow_ambient - Implements a shadow casting algorithm based on depth map textures - -GL_SGIS_generate_mipmap - Automatically generate lower mipmap images whenever the base mipmap - image is changed with glTexImage, glCopyTexImage, etc. - - - -libOSMesa.so ------------- - -libOSMesa.so is a new library which contains the OSMesa interface for -off-screen rendering. Apps which need the OSMesa interface should link -with both -lOSMesa and -lGL. This change was made so that stand-alone -Mesa works the same way as XFree86/DRI's libGL. - - - -Device Driver Changes / Core Mesa Changes ------------------------------------------ - -The ctx->Driver.LogicOp() function has been removed. It used to -be called during state update in order to determine if the driver -could do glLogicOp() operations, and if not, set the SWLogicOpEnabled -flag. Drivers should instead examine the LogicOp state themselves -and choose specialized point, line, and triangle functions appropriately, -or fall back to software rendering. The Xlib driver was the only driver -to use this function. And since the Xlib driver no longer draws -points, lines or triangles using Xlib, the LogicOp function isn't needed. - -The ctx->Driver.Dither() function has been removed. Drivers should -detect dither enable/disable via ctx->Driver.Enable() instead. - -The ctx->Driver.IndexMask() and ctx->Driver.ColorMask() functions -are now just called from glIndexMask and glColorMask like the other -GL state-changing functions. They are no longer called from inside -gl_update_state(). Also, they now return void. The change was made -mostly for sake of uniformity. - -The NEW_DRVSTATE[0123] flags have been removed. They weren't being used -and are obsolete w.r.t. the way state updates are done in DRI drivers. - - -Removed obsolete gl_create_visual() and gl_destroy_visual(). - -Renamed functions (new namespace): - -old new -gl_create_framebuffer _mesa_create_framebuffer -gl_destroy_framebuffer _mesa_destroy_framebuffer -gl_create_context _mesa_create_context -gl_destroy_context _mesa_destroy_context -gl_context_initialize _mesa_context_initialize -gl_copy_context _mesa_copy_context -gl_make_current _mesa_make_current -gl_make_current2 _mesa_make_current2 -gl_get_current_context _mesa_get_current_context -gl_flush_vb _mesa_flush_vb -gl_warning _mesa_warning -gl_compile_error _mesa_compile_error - - -All the drivers have been updated, but not all of them have been -tested since I can't test some platforms (DOS, Windows, Allegro, etc). - - -X/Mesa Driver -------------- - -The source files for the X/Mesa driver in src/X have been renamed. -The xmesa[1234].c files are gone. The new files are xm_api.c, -xm_dd.c, xm_line.c, xm_span.c and xm_tri.c. - - - -Multitexture ------------- - -Eight texture units are now supported by default. - - - -OpenGL SI related changes -------------------------- - -In an effort to make Mesa's internal interfaces more like the OpenGL -SI interfaces, a number of changes have been made: - -1. Importing the SI's glcore.h file which defines a number of -interface structures like __GLimports and __GLexports. - -2. Renamed "struct gl_context" to "struct __GLcontextRec". - -3. Added __glCoreCreateContext() and __glCoreNopDispatch() functions. - -4. The GLcontext member Visual is no longer a pointer. - -5. New file: imports.c to setup default import functions for Mesa. - - - - -16-bit color channels ---------------------- - -There's experimental support for 16-bit color channels (64-bit pixels) -in Mesa 3.5. Only the OSMesa interface can be used for 16-bit rendering. -Type "make linux-osmesa16" in the top-level directory to build the -special libOSMesa16.so library. - -This hasn't been tested very thoroughly yet so please file bug reports -if you have trouble. - -In the future I hope to implement support for 32-bit, floating point -color channels. - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-4.0 b/mesalib/docs/RELNOTES-4.0 deleted file mode 100644 index 2f729db15..000000000 --- a/mesalib/docs/RELNOTES-4.0 +++ /dev/null @@ -1,162 +0,0 @@ - - Mesa 4.0 release notes - - October 18, 2001 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 3.3) designate new developmental releases. -Even numbered versions (such as 3.4) designate stable releases. - -Mesa version 4.0 signifies two things: - - 1. A stabilization of the 3.5 development release - 2. Implementation of the OpenGL 1.3 specification - - -Note that the Mesa major version number is incremented with the OpenGL -minor version number: - - Mesa 1.x == OpenGL 1.0 - Mesa 2.x == OpenGL 1.1 - Mesa 3.x == OpenGL 1.2 - Mesa 4.x == OpenGL 1.3 - - - -New Features ------------- - -Mesa 3.5 already had all the new features of OpenGL 1.3, implemented as -extensions. These extensions were simply promoted to standard features: - - 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 - -In Mesa 4.0 the functions defined by these extensions are now available -without the "ARB" suffix. For example, glLoadTransposeMatrixf() is now -a standard API function. The new functions in OpenGL 1.3 and Mesa 4.0 are: - - glActiveTexture - glClientActiveTexture - glCompressedTexImage1D - glCompressedTexImage2D - glCompressedTexImage3D - glCompressedTexSubImage1D - glCompressedTexSubImage2D - glCompressedTexSubImage3D - glGetCompressedTexImage - glLoadTransposeMatrixd - glLoadTransposeMatrixf - glMultiTexCoord1d - glMultiTexCoord1dv - glMultiTexCoord1f - glMultiTexCoord1fv - glMultiTexCoord1i - glMultiTexCoord1iv - glMultiTexCoord1s - glMultiTexCoord1sv - glMultiTexCoord2d - glMultiTexCoord2dv - glMultiTexCoord2f - glMultiTexCoord2fv - glMultiTexCoord2i - glMultiTexCoord2iv - glMultiTexCoord2s - glMultiTexCoord2sv - glMultiTexCoord3d - glMultiTexCoord3dv - glMultiTexCoord3f - glMultiTexCoord3fv - glMultiTexCoord3i - glMultiTexCoord3iv - glMultiTexCoord3s - glMultiTexCoord3sv - glMultiTexCoord4d - glMultiTexCoord4dv - glMultiTexCoord4f - glMultiTexCoord4fv - glMultiTexCoord4i - glMultiTexCoord4iv - glMultiTexCoord4s - glMultiTexCoord4sv - glMultTransposeMatrixd - glMultTransposeMatrixf - glSampleCoverage - glSamplePass - - -GLX 1.4 is the companion to OpenGL 1.3. The only new features in GLX 1.4 -are support for multisampling and the GLX_ARB_get_proc_address extension. -glXGetProcAddress() is the only new function in GLX 1.4. - - - -Multisample and Texture Compression ------------------------------------ - -The OpenGL 1.3 specification allows the multisample and texture compression -features to essentially be no-ops. For example, if you query for multisample -support you'll find none, but the API functions work. - -Similarly, texture compression is not implemented by any of the software -drivers but you can specify a generic compressed texture format (like -GL_COMPRESSED_RGBA) to glTexImage2D and it'll be accepted. - - - -Device Drivers --------------- - -Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the -device driver. If the driver enables all the ARB extensions which are part -of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise, -it'll return "1.2". - -A number of Mesa's software drivers haven't been actively maintained for -some time. We rely on volunteers to maintain many of the drivers. -Here's the current status of all included drivers: - - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.3 -OSMesa (off-screen) implements OpenGL 1.3 -FX (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.3 -GGI needs updating -DOS/DJGPP needs updating -BeOS needs updating -Allegro needs updating -D3D needs updating -DOS needs updating - -Special thanks go to Karl Schultz for updating the Windows driver. - -The XFree86/DRI drivers have not yet been updated to use Mesa 4.0 as of -September 2001, but that should happen eventually. - - - -Other Changes -------------- - -See the VERSIONS file for more details about bug fixes, etc. in Mesa 4.0. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-4.0.1 b/mesalib/docs/RELNOTES-4.0.1 deleted file mode 100644 index e84df6bf8..000000000 --- a/mesalib/docs/RELNOTES-4.0.1 +++ /dev/null @@ -1,21 +0,0 @@ - - Mesa 4.0.1 release notes - - December 17, 2001 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 3.3) designate new developmental releases. -Even numbered versions (such as 3.4) designate stable releases. - -Mesa 4.0.1 only contains bug fixes since version 4.0. - -See the docs/VERSIONS file for the list of bug fixes. - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-4.0.2 b/mesalib/docs/RELNOTES-4.0.2 deleted file mode 100644 index b476956ba..000000000 --- a/mesalib/docs/RELNOTES-4.0.2 +++ /dev/null @@ -1,49 +0,0 @@ - - Mesa 4.0.2 release notes - - March 25, 2002 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 3.3) designate new developmental releases. -Even numbered versions (such as 3.4) designate stable releases. - -Mesa 4.0.2 only contains bug fixes and a new DOS driver since version 4.0.1. - -See the docs/VERSIONS file for the list of bug fixes. - - -Device Drivers --------------- - -Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the -device driver. If the driver enables all the ARB extensions which are part -of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise, -it'll return "1.2". - -A number of Mesa's software drivers haven't been actively maintained for -some time. We rely on volunteers to maintain many of the drivers. -Here's the current status of all included drivers: - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.3 -OSMesa (off-screen) implements OpenGL 1.3 -FX (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.3 -DOS/DJGPP implements OpenGL 1.3 (new in Mesa 4.0.2) -GGI needs updating -BeOS needs updating -Allegro needs updating -D3D needs updating - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-4.0.3 b/mesalib/docs/RELNOTES-4.0.3 deleted file mode 100644 index 0b3e34bef..000000000 --- a/mesalib/docs/RELNOTES-4.0.3 +++ /dev/null @@ -1,51 +0,0 @@ - - Mesa 4.0.3 release notes - - June 25, 2002 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 3.3) designate new developmental releases. -Even numbered versions (such as 3.4) designate stable releases. - -Mesa 4.0.3 basically just contains bug fixes version 4.0.2. - -See the docs/VERSIONS file for the list of bug fixes. - -The GGI driver has been updated, thanks to Filip Spacek. - - -Device Drivers --------------- - -Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the -device driver. If the driver enables all the ARB extensions which are part -of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise, -it'll return "1.2". - -A number of Mesa's software drivers haven't been actively maintained for -some time. We rely on volunteers to maintain many of the drivers. -Here's the current status of all included drivers: - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.3 -OSMesa (off-screen) implements OpenGL 1.3 -FX (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.3 -DOS/DJGPP implements OpenGL 1.3 (new in Mesa 4.0.2) -GGI implements OpenGL 1.3 -BeOS needs updating -Allegro needs updating -D3D needs updating - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-4.1 b/mesalib/docs/RELNOTES-4.1 deleted file mode 100644 index 24e9299eb..000000000 --- a/mesalib/docs/RELNOTES-4.1 +++ /dev/null @@ -1,307 +0,0 @@ - - Mesa 4.1 release notes - - October 29, 2002 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Even numbered versions (such as 4.0) designate stable releases. -Odd numbered versions (such as 4.1) designate new developmental releases. - - -New Features in Mesa 4.1 ------------------------- - -New extensions. Docs at http://oss.sgi.com/projects/ogl-sample/registry/ - -GL_NV_vertex_program - - NVIDIA's vertex programming extension - -GL_NV_vertex_program1_1 - - A few features built on top of GL_NV_vertex_program - -GL_ARB_window_pos - - This is the ARB-approved version of GL_MESA_window_pos - -GL_ARB_depth_texture - - This is the ARB-approved version of GL_SGIX_depth_texture. - It allows depth (Z buffer) data to be stored in textures. - This is used by GL_ARB_shadow - -GL_ARB_shadow - - Shadow mapping with depth textures. - This is the ARB-approved version of GL_SGIX_shadow. - -GL_ARB_shadow_ambient - - Allows one to specify the luminance of shadowed pixels. - This is the ARB-approved version of GL_SGIX_shadow_ambient. - -GL_EXT_shadow_funcs - - Extends the set of GL_ARB_shadow texture comparision functions to - include all eight of standard OpenGL dept-test functions. - -GL_ARB_point_parameters - - This is basically the same as GL_EXT_point_parameters. - -GL_ARB_texture_env_crossbar - - Allows any texture combine stage to reference any texture source unit. - -GL_NV_point_sprite - - For rendering points as textured quads. Useful for particle effects. - -GL_NV_texture_rectangle (new in 4.0.4 actually) - - Allows one to use textures with sizes that are not powers of two. - Note that mipmapping and several texture wrap modes are not allowed. - -GL_EXT_multi_draw_arrays - - Allows arrays of vertex arrays to be rendered with one call. - -GL_EXT_stencil_two_side - - Separate stencil modes for front and back-facing polygons. - -GLX_SGIX_fbconfig & GLX_SGIX_pbuffer - - Off-screen rendering support. - -GL_ATI_texture_mirror_once - - Adds two new texture wrap modes: GL_MIRROR_CLAMP_ATI and - GL_MIRROR_CLAMP_TO_EDGE_ATI. - - - -Device Driver Status --------------------- - -A number of Mesa's software drivers haven't been actively maintained for -some time. We rely on volunteers to maintain many of these drivers. -Here's the current status of all included drivers: - - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.3 -OSMesa (off-screen) implements OpenGL 1.3 -FX (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.3 -DOS/DJGPP implements OpenGL 1.3 -GGI implements OpenGL 1.3 -BeOS needs updating (underway) -Allegro needs updating -D3D needs updating -DOS needs updating - - - -New features in GLUT --------------------- - -1. Frames per second printing - - GLUT now looks for an environment variable called "GLUT_FPS". If it's - set, GLUT will print out a frames/second statistic to stderr when - glutSwapBuffers() is called. By default, frames/second is computed - and displayed once every 5 seconds. You can specify a different - interval (in milliseconds) when you set the env var. For example - 'export GLUT_FPS=1000' or 'setenv GLUT_FPS 1000' will set the interval - to one second. - - NOTE: the demo or application must call the glutInit() function for - this to work. Otherwise, the env var will be ignored. - - Finally, this feature may not be reliable in multi-window programs. - - -2. glutGetProcAddress() function - - The new function: - - void *glutGetProcAddress(const char *procName) - - is a wrapper for glXGetProcAddressARB() and wglGetProcAddress(). It - lets you dynamically get the address of an OpenGL function at runtime. - The GLUT_API_VERSION has been bumped to 5, but I haven't bumped the - GLUT version number from 3.7 since that's probably Mark Kilgard's role. - - This function should probably also be able to return the address of - GLUT functions themselves, but it doesn't do that yet. - - - -XXX Things To Do Yet XXXX -------------------------- - -isosurf with vertex program exhibits some missing triangles (probably -when recycling the vertex buffer for long prims). - - - -Porting Info ------------- - -If you're porting a DRI or other driver from Mesa 4.0.x to Mesa 4.1 here -are some things to change: - -1. ctx->Texture._ReallyEnabled is obsolete. - - Since there are now 5 texture targets (1D, 2D, 3D, cube and rect) that - left room for only 6 units (6*5 < 32) in this field. - This field is being replaced by ctx->Texture._EnabledUnits which has one - bit per texture unit. If the bit k of _EnabledUnits is set, that means - ctx->Texture.Unit[k]._ReallyEnabled is non-zero. You'll have to look at - ctx->Texture.Unit[k]._ReallyEnabled to learn if the 1D, 2D, 3D, cube or - rect texture is enabled for unit k. - - This also means that the constants TEXTURE1_*, TEXTURE2_*, etc are - obsolete. - - The tokens TEXTURE0_* have been replaced as well (since there's no - significance to the "0" part: - - old token new token - TEXTURE0_1D TEXTURE_1D_BIT - TEXTURE0_2D TEXTURE_2D_BIT - TEXTURE0_3D TEXTURE_3D_BIT - TEXTURE0_CUBE TEXTURE_CUBE_BIT - <none> TEXTURE_RECT_BIT - - These tokens are only used for the ctx->Texture.Unit[i].Enabled and - ctx->Texture.Unit[i]._ReallyEnabled fields. Exactly 0 or 1 bits will - be set in _ReallyEnabled at any time! - - Q: "What's the purpose of Unit[i].Enabled vs Unit[i]._ReallyEnabled?" - A: The user can enable GL_TEXTURE_1D, GL_TEXTURE_2D, etc for any - texure unit all at once (an unusual thing to do). - OpenGL defines priorities that basically say GL_TEXTURE_2D has - higher priority than GL_TEXTURE_1D, etc. Also, just because a - texture target is enabled by the user doesn't mean we'll actually - use that texture! If a texture object is incomplete (missing mip- - map levels, etc) it's as if texturing is disabled for that target. - The _ReallyEnabled field will have a bit set ONLY if the texture - target is enabled and complete. This spares the driver writer from - examining a _lot_ of GL state to determine which texture target is - to be used. - - -2. Tnl tokens changes - - During the implementation of GL_NV_vertex_program some of the vertex - buffer code was changed. Specifically, the VERT_* bits defined in - tnl/t_context.h have been renamed to better match the conventions of - GL_NV_vertex_program. The old names are still present but obsolete. - Drivers should use the newer names. - - For example: VERT_RGBA is now VERT_BIT_COLOR0 and - VERT_SPEC_RGB is now VERT_BIT_COLOR1. - - - -3. Read/Draw Buffer changes - - The business of setting the current read/draw buffers in Mesa 4.0.x - was complicated. It's much simpler now in Mesa 4.1. - - Here are the changes: - - - Renamed ctx->Color.DrawDestMask to ctx->Color._DrawDestMask - - Removed ctx->Color.DriverDrawBuffer - - Removed ctx->Pixel.DriverReadBuffer - - Removed ctx->Color.MultiDrawBuffer - - Removed ctx->Driver.SetDrawBuffer() - - Removed swrast->Driver.SetReadBuffer(). - - Added ctx->Color._DrawDestMask - a bitmask of FRONT/BACK_LEFT/RIGHT_BIT - values to indicate the current draw buffers. - - Added ctx->Pixel._ReadSrcMask to indicate the source for pixel reading. - The value is _one_ of the FRONT/BACK_LEFT/RIGHT_BIT values. - - Added ctx->Driver.DrawBuffer() and ctx->Driver.ReadBuffer(). - These functions exactly correspond to glDrawBuffer and glReadBuffer calls. - Many drivers will set ctx->Driver.DrawBuffer = _swrast_DrawBuffer and - leave ctx->Draw.ReadBuffer NULL. - DRI drivers should implement their own function for ctx->Driver.DrawBuffer - and use it to set the current hardware drawing buffer. You'll probably - also want to check for GL_FRONT_AND_BACK mode and fall back to software. - Call _swrast_DrawBuffer() too, to update the swrast state. - - Added swrast->Driver.SetBuffer(). - This function should be implemented by all device drivers that use swrast. - Mesa will call it to specify the buffer to use for span reading AND - writing and point/line/triangle rendering. - There should be no confusion between current read or draw buffer anymore. - - Added swrast->CurrentBuffer to indicate which color buffer to read/draw. - Will be FRONT_LEFT_BIT, BACK_LEFT_BIT, FRONT_RIGHT_BIT or BACK_RIGHT_BIT. - This value is usually passed to swrast->Driver.SetBuffer(). - - -4. _mesa_create_context() changes. This function now takes a pointer to - a __GLimports object. The __GLimports structure contains function - pointers to system functions like fprintf(), malloc(), etc. - The _mesa_init_default_imports() function can be used to initialize - a __GLimports object. Most device drivers (like the DRI drivers) - should use this. - - -5. In tnl's struct vertex_buffer, the field "ProjectedClipCoords" - has been replaced by "NdcPtr" to better match the OpenGL spec's - terminology. - - -6. Since GL_EXT_stencil_two_side has been implemented, many of the - ctx->Stencil fields are now 2-element arrays. For example, - "GLenum Ref" is now "GLenum Ref[2]" The [0] elements are the front-face - values and the [1] elements are the back-face values. - ctx->Stencil.ActiveFace is 0 or 1 to indicate the current face for - the glStencilOp/Func/Mask() functions. - ctx->Stencil.TestTwoSide controls whether or not 1 or 2-sided stenciling - is enabled. - - -7. Removed ctx->Polygon._OffsetAny. Removed ctx->Polygon.OffsetMRD. - - -8. GLfloat / GLchan changes: - - - Changed ctx->Driver.ClearColor() to take GLfloat[4] instead of GLchan[4]. - ctx->Color.ClearColor is now GLfloat[4] too. - - Changed ctx->Driver.AlphaRef() to take GLfloat instead of GLchan. - - ctx->Color.AlphaRef is now GLfloat. - - texObj->BorderColor is now GLfloat[4]. texObj->_BorderChan is GLchan[4]. - - This is part of an effort to remove all GLchan types from core Mesa so - that someday we can support 8, 16 and 32-bit color channels dynamically - at runtime, instead of at compile-time. - - -9. GLboolean ctx->Tranform.ClipEnabled[MAX_CLIP_PLANES] has been replaced - by GLuint ctx->Transform.ClipPlanesEnabled. The later is a bitfield. - - -10. There's a new matrix_stack type in mtypes.h used for the Modelview, - Projection, Color and Texcoord matrix stacks. - - -11. The ctx->Current.* fields have changed a lot. Now, there's a - ctx->Current.Attrib[] array for all vertex attributes which matches - the NV vertex program conventions. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-5.0 b/mesalib/docs/RELNOTES-5.0 deleted file mode 100644 index 1b22996d8..000000000 --- a/mesalib/docs/RELNOTES-5.0 +++ /dev/null @@ -1,84 +0,0 @@ - - Mesa 5.0 release notes - - November 13, 2002 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Even-numbered versions (such as 5.0) designate stable releases. -Odd-numbered versions (such as 4.1) designate new developmental releases. - -Mesa 5.0 is basically just a stabilization of Mesa 4.1. To see a list of -bug fixes, etc. see the VERSIONS file. - - - -New Features in Mesa 5.0 ------------------------- - -Mesa 5.0 supports OpenGL 1.4. Note Mesa's versioning convention: - - OpenGL Version Mesa Version - ------------------------------ - 1.0 1.x - 1.1 2.x - 1.2 3.x - 1.3 4.x - 1.4 5.x - -OpenGL 1.4 (and Mesa 5.0) incorporates the following OpenGL extensions as -standard features: - - GL_ARB_depth_texture - GL_ARB_shadow - GL_ARB_texture_env_crossbar - GL_ARB_texture_mirror_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_point_parameters - GL_EXT_secondary_color - GL_EXT_stencil_wrap - GL_SGIS_generate_mipmap - - - -Device Driver Status --------------------- - -A number of Mesa's software drivers haven't been actively maintained for -some time. We rely on volunteers to maintain many of these drivers. -Here's the current status of all included drivers: - - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.4 -OSMesa (off-screen) implements OpenGL 1.4 -FX (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.4 -DOS/DJGPP implements OpenGL 1.3 -GGI implements OpenGL 1.3 -DOS implements OpenGL 1.4 -BeOS needs updating (underway) -Allegro needs updating -D3D needs updating - -Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the -driver call the _mesa_enable_1_4_extensions() function. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-5.0.1 b/mesalib/docs/RELNOTES-5.0.1 deleted file mode 100644 index f37e9c4a7..000000000 --- a/mesalib/docs/RELNOTES-5.0.1 +++ /dev/null @@ -1,45 +0,0 @@ - - Mesa 5.0.1 release notes - - March 30, 2003 - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Even-numbered versions (such as 5.0.x) designate stable releases. -Odd-numbered versions (such as 4.1.x) designate new developmental releases. - -Mesa 5.0.1 just fixes bugs found since the 5.0 release. See the VERSIONS -file for details. - - -Device Driver Status --------------------- - -A number of Mesa's software drivers haven't been actively maintained for -some time. We rely on volunteers to maintain many of these drivers. -Here's the current status of all included drivers: - - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.4 -OSMesa (off-screen) implements OpenGL 1.4 -FX (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.4 -DJGPP implements OpenGL 1.4 -GGI implements OpenGL 1.3 -BeOS implements OpenGL 1.4 -Allegro needs updating -D3D needs updating - -Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the -driver call the _mesa_enable_1_4_extensions() function. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-5.0.2 b/mesalib/docs/RELNOTES-5.0.2 deleted file mode 100644 index d0e05b2c7..000000000 --- a/mesalib/docs/RELNOTES-5.0.2 +++ /dev/null @@ -1,45 +0,0 @@ - - Mesa 5.0.2 release notes - - September 5, 2003 - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Even-numbered versions (such as 5.0.x) designate stable releases. -Odd-numbered versions (such as 4.1.x) designate new developmental releases. - -Mesa 5.0.2 just fixes bugs found since the 5.0.1 release. See the VERSIONS -file for details. - - -Device Driver Status --------------------- - -A number of Mesa's software drivers haven't been actively maintained for -some time. We rely on volunteers to maintain many of these drivers. -Here's the current status of all included drivers: - - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.4 -OSMesa (off-screen) implements OpenGL 1.4 -FX (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.4 -DJGPP implements OpenGL 1.4 -GGI implements OpenGL 1.3 -BeOS implements OpenGL 1.4 -Allegro needs updating -D3D needs updating - -Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the -driver call the _mesa_enable_1_4_extensions() function. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-5.1 b/mesalib/docs/RELNOTES-5.1 deleted file mode 100644 index aed6e102b..000000000 --- a/mesalib/docs/RELNOTES-5.1 +++ /dev/null @@ -1,279 +0,0 @@ - - Mesa 5.1 release notes - - December 17, 2003 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Even-numbered versions (such as 5.0) designate stable releases. -Odd-numbered versions (such as 5.1) designate new developmental releases. - - -Bug fixes ---------- -See the VERSIONS file for a list of bugs fixed in this release. - - - -New Features in Mesa 5.1 ------------------------- - -GL_ARB_vertex_program / GL_ARB_fragment_program - Michal Krol and Karl Rasche implemented these extensions. Thanks! - Be aware that there may be some rough edges and lurking bugs. - -GL_ATI_texture_env_combine3 extension - This adds a few new texture combine modes. - Contributed by Ian Romanick. - -GL_SGI_texture_color_table - Adds a color table lookup to the RGBA texture path. There's a separate - color table for each texture unit. - Contributed by Eric Plante. - -GL_NV_fragment_program - NVIDIA's fragment-level programming feature. - Possible lurking bugs: - - the DDX and DDY commands aren't fully tested - - there may be bugs in the parser - - the TEX and TXP instructions both do perspective correction - - the pack/unpack instructions may not be correct - -GL_EXT_depth_bounds_test - This extension adds a scissor-like test for the Z axis. It's used to - optimize stencil-volume shadow algorithms. - -GL_NV_light_max_exponent - Lifts the 128 limit for max light exponent. - -GL_EXT_texture_rectangle - Identical to GL_NV_texture_rectangle - -GL_ARB_occlusion_query - Useful for visibility-based culling. - -GL_ARB_texture_non_power_of_two - Removes the restriction that texture dimensions must be powers of two. - -GL_ARB_vertex_buffer_object - Allows server-side vertex arrays, optimized host/card data transfers, etc. - -GL_ARB_point_sprite - ARB-approved version of GL_NV_point_sprite. Basically allows textures - to be applied to points. - -GL_IBM_multimode_draw_arrays - Allows multiple vertex arrays to be drawn with one call, including arrays - of different types of primitives. - -GL_SUN_multi_draw_arrays - An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4. - -Faster glDrawPixels / glCopyPixels in X11 driver - If your X screen is 32bpp, glDrawPixels to the front color buffer will - be accelerated (via XPutImage()) if the image format is GL_BGRA and the - type is GL_UNSIGNED_BYTE. No raster operations, such as depth test, - blend, fog, etc. can be enabled. - - If your X screen is 16bpp, glDrawPixels to the front color buffer will - be accelerated (via XPutImage()) if the image format is GL_RGB and the - type is GL_UNSIGNED_SHORT_5_6_5. No raster operations, such as depth - test, blend, fog, etc. can be enabled. - - glCopyPixels() calls for the front color buffer will be accelerated - (via XCopyArea()) if no raster operations, such as depth test, blend, - fog, pixel zoom, etc. are enabled. - - The speed-up over typical software rendering is a factor of 10 for - glDrawPixels and 100 for glCopyPixels. - - -With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object, -GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports -all the new features of OpenGL 1.5. Mesa 6.0 (the next stable release) -will advertise GL_VERSION = "1.5". - - - -Vertex/Fragment program debugger --------------------------------- - -GL_MESA_program_debug is an experimental extension to support -interactive debugging of vertex and fragment programs. See the -docs/MESA_program_debug.spec file for details. - -The bulk of the vertex/fragment program debugger is implemented -outside of Mesa. The GL_MESA_program_debug extension just has minimal -hooks for stopping running programs and inspecting programs. - -The progs/tests/debugger.c (only in CVS) program is an example of how -the extension can be used. Presently, the debugger code and demo code -is in the same file. Eventually the debugger code should be moved -into a reusable module. - -As it is now, the demo lets you set breakpoings in vertex/fragment -programs, single step, and print intermediate register values. It's -basically just a proof of concept. - - - -Directory tree reorganization ------------------------------ - -The directory structure for Mesa has been overhauled to improve its layout. -All source code for Mesa, GLU, GLUT, etc is now under the src/ directory -in appropriate subdirectories. - -The Mesa source code and drivers has been reorganized under src/mesa/. - -All demonstration programs and tests are now in subdirectories under progs/. - - - -Build System Changes --------------------- - -The GNU automake/autoconf support has been removed. As it was, it seldom -worked on anything but Linux. The Mesa developers aren't big fans of -automake/autoconf/libtool and didn't have the time to maintain it. -If someone wants to contribute new automake/autoconf support (and is -willing to maintain it), it may be re-incorporated into Mesa, subject -to some requirements. - -The "old style" makefile system has been updated: - 1. Make-config has been trimmed down to fewer, modern configurations. - 2. Most of the bin/mklib.* scripts have been rolled into a new "mklib" - script that works on all sorts of systems. There are probably some - bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5. - Improvements/contributes are greatly appreciated. - 3. The Makefile.X11 files have been cleaned up in various ways - - - -Source File Changes -------------------- - -The mmath.[ch] files are obsolete. Their contents have been moved -into the imports.[ch] and macros.[ch] files. - -The files related to vertex and fragment programming have changed. -Old files: - vpexec.[ch] - vpparse.[ch] - vpstate.[ch] -New files: - program.[ch] - generic ARB/NV program code - arbprogram.[ch] - ARB program API functions - arbfragparse.[ch] - ARB fragment program parsing - arbvertparse.[ch] - ARB vertex program parsing - arbparse.[ch] - ARB vertex/fragment parsing - arbparse_syn.h - vertex/fragment program syntax - nvprogram.[ch] - NV program API functions - nvvertprog.h - NV vertex program definitions - nvfragprog.h - NV fragment program definitions - nvvertparse.[ch] - NV vertex program parser - nvfragparse.[ch] - NV fragment program parser - nvvertexec.[ch] - NV vertex program execution - swrast/s_nvfragprog.[ch] - NV fragment program execution - -The files related to per-vertex handling have changed. -Old files: - tnl/t_eval_api.c - old per-vertex code - tnl/t_imm_alloc.c - old per-vertex code - tnl/t_imm_api.c - old per-vertex code - tnl/t_imm_debug.c - old per-vertex code - tnl/t_imm_dlist.c - old per-vertex code - tnl/t_imm_elt.c - old per-vertex code - tnl/t_imm_eval.c - old per-vertex code - tnl/t_imm_exec.c - old per-vertex code - tnl/t_imm_fixup.c - old per-vertex code - tnl/t_vtx_sse.c - old per-vertex code - tnl/t_vtx_x86.c - old per-vertex code -New files: - tnl/t_save_api.c - new per-vertex code - tnl/t_save_loopback.c - new per-vertex code - tnl/t_save_playback.c - new per-vertex code - tnl/t_vtx_eval.c - old per-vertex code - -Other new files: - bufferobj.[ch] - GL_ARB_vertex_buffer_object functions - version.h - defines the Mesa version info - -Other removed files: - swrast/s_histogram.[ch] - moved into src/histogram.c - - - -Other Changes -------------- - -The ctx->Driver.CreateTexture function has been removed - it wasn't used. - -New device driver hook functions: - NewTextureObject - used to allocate struct gl_texture_objects - NewTextureImage - used to allocate struct gl_texture_images - -New ctx->Texture._EnabledCoordUnits field: - With the addition of GL_NV_fragment_program we may need to interpolate - various sets of texture coordinates even when the corresponding texture - unit is not enabled. That is, glEnable(GL_TEXTURE_xD) may never get - called but we still may have to interpolate texture coordinates across - triangles so that the fragment program will get them. - This new field indicates which sets of texture coordinates are needed. - If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the - same bit MUST be set in ctx->Texture._EnabledCoordUnits. - -The ctx->_TriangleCaps field is deprecated. - Instead of testing the DD_* bits in _TriangleCaps, you should instead - directly test the relevant state variables, or use one of the helper - functions like NEED_SECONDARY_COLOR() at the bottom of context.h - While testing _TriangleCaps bits was fast, it was kludgey, and setting - the bits in the first place could be error prone. - -New vertex processing code. - The code behind glBegin, glEnd, glVertex, glNormal, etc. has been - totally rewritten. It's a cleaner implementation now and should use - less memory. (Keith) - - - -To Do ------ -Add screen-awareness to fakeglx.c - - - - -Device Driver Status --------------------- - -A number of Mesa's software drivers haven't been actively maintained for -some time. We rely on volunteers to maintain many of these drivers. -Here's the current status of all included drivers: - - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.4 -OSMesa (off-screen) implements OpenGL 1.4 -FX (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.4 -DJGPP implements OpenGL 1.4 -GGI implements OpenGL 1.3 -BeOS implements OpenGL 1.4 -Allegro needs updating -D3D needs updating - -Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the -driver call the _mesa_enable_1_4_extensions() function. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.0 b/mesalib/docs/RELNOTES-6.0 deleted file mode 100644 index 1a3c2fb1a..000000000 --- a/mesalib/docs/RELNOTES-6.0 +++ /dev/null @@ -1,86 +0,0 @@ - - Mesa 6.0 release notes - - January 16, 2004 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 5.1) designate new developmental releases. -Even numbered versions (such as 6.0) designate stable releases. - -Mesa version 6.0 signifies two things: - - 1. A stabilization of the 5.1 development release - 2. Implementation of the OpenGL 1.5 specification. When you query - glGetString(GL_VERSION) "1.5" will be returned (as long as the - driver supports all the required features). - - -Note that the Mesa major version number is incremented with the OpenGL -minor version number: - - Mesa 1.x == OpenGL 1.0 - Mesa 2.x == OpenGL 1.1 - Mesa 3.x == OpenGL 1.2 - Mesa 4.x == OpenGL 1.3 - Mesa 5.x == OpenGL 1.4 - Mesa 6.x == OpenGL 1.5 - - - -New Features ------------- - -Mesa 5.1 already had all the new features of OpenGL 1.5, implemented as -extensions. These extensions were simply promoted to standard features: - - GL_ARB_occlusion_query extension - GL_ARB_texture_non_power_of_two extension - GL_ARB_vertex_buffer_object extension - GL_EXT_shadow_funcs - - - -Device Drivers --------------- - -Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on -the device driver. For example, if the driver enables all the ARB -extensions which are part of OpenGL 1.3 then glGetString(GL_VERSION) -will return "1.3". Otherwise, it'll return "1.2". - -A number of Mesa's software drivers haven't been actively maintained for -some time. We rely on volunteers to maintain many of the drivers. -Here's the current status of all included drivers: - - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.5 -OSMesa (off-screen) implements OpenGL 1.5 -FX (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.5 -DJGPP implements OpenGL 1.5 -GGI implements OpenGL 1.3 -BeOS implements OpenGL 1.5 -Allegro needs updating -D3D needs updating - - - - -Other Changes -------------- - -See the VERSIONS file for more details about bug fixes, etc. in Mesa 6.0. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.0.1 b/mesalib/docs/RELNOTES-6.0.1 deleted file mode 100644 index 1444b9fc8..000000000 --- a/mesalib/docs/RELNOTES-6.0.1 +++ /dev/null @@ -1,49 +0,0 @@ - - Mesa 6.0.1 release notes - - April 2, 2003 - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Even-numbered versions (such as 6.0.x) designate stable releases. -Odd-numbered versions (such as 6.1.x) designate new developmental releases. - -Mesa 6.0.1 just fixes bugs found since the 6.0 release. See the VERSIONS -file for details. - - - -Device Drivers --------------- - -Mesa advertises itself as supporting OpenGL 1.2, 1.3, 1.4 or 1.5 -depending on the device driver's capabilities. For example, if the -driver enables all the ARB extensions which are part of OpenGL 1.5 -then glGetString(GL_VERSION) will return "1.5". Otherwise, it'll -return "1.4" or the next lower version that implements all required -functionality. - -A number of Mesa's software drivers haven't been actively maintained for -some time. We rely on volunteers to maintain many of the drivers. -Here's the current status of all included drivers: - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.5 -OSMesa (off-screen) implements OpenGL 1.5 -FX (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.5 -DJGPP implements OpenGL 1.5 -GGI implements OpenGL 1.3 -BeOS implements OpenGL 1.5 -Allegro needs updating -D3D needs updating - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.1 b/mesalib/docs/RELNOTES-6.1 deleted file mode 100644 index 8de64d1f1..000000000 --- a/mesalib/docs/RELNOTES-6.1 +++ /dev/null @@ -1,111 +0,0 @@ - - Mesa 6.1 release notes - - August 18, 2004 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 6.1) designate new developmental releases. -Even numbered versions (such as 6.0) designate stable releases. - - -New Features ------------- - -Half-precision floating point (GLhalf) pixel formats are supported -in Mesa, but the feature isn't exposed yet since the ARB extension -hasn't been finalized yet. - - -Texture image handling ----------------------- - -The code which implements image conversion, pixel transfer ops, etc -for glTexImage commands has been rewritten. - -Now the gl_texture_format struct has a new StoreImage function -pointer. Each texture format must implement this function. The -function is totally responsible for converting the user's texture -image into the specific format. A few helper functions makes this -relatively simple. - -Overall, the code is much simpler, cleaner and easier to work with -now. Adding new texture formats is straight-forward and there's no -longer any distinction between "hardware" and "software" formats. - -Finally, the code for compressed texture images has been reorganized -as well. - -Removed files: - texutil.c - texutil.h - texutil_tmp.h - -New files: - texcompress_s3tc.c - texcompress_fxt1.c - - - -Driver / context changes ------------------------- - -The _mesa_create_context() and _mesa_initialize_context() function -parameters have changed. They now take a pointer to a struct -dd_function_table. Drivers can initialize this table by calling -_mesa_init_driver_functions(). Drivers should then plug in the special -functions they implement. In particular, the ctx->Driver.NewTextureObject -pointer _must_ be set so that the default texture objects created in -_mesa_create/initialize_context() are correctly built. - -The _mesa_init_driver_functions() function allows a lot of redundant code -to be removed from the device drivers (such as initializing -ctx->Driver.Accum to point to _swrast_Accum). Adding new functions to -the dd_function_table can be done with less hassle since the pointer can -be initialized in _mesa_init_driver_functions() rather than in _all_ the -drivers. - - -Device Drivers --------------- - -Mesa advertises itself as supporting OpenGL 1.2, 1.3, 1.4 or 1.5 -depending on the device driver's capabilities. For example, if the -driver enables all the ARB extensions which are part of OpenGL 1.5 -then glGetString(GL_VERSION) will return "1.5". Otherwise, it'll -return "1.4" or the next lower version that implements all required -functionality. - -A number of Mesa's software drivers haven't been actively maintained for -some time. We rely on volunteers to maintain many of the drivers. -Here's the current status of all included drivers: - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.5 -OSMesa (off-screen) implements OpenGL 1.5 -Glide (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.5 -DJGPP implements OpenGL 1.5 -GGI implements OpenGL 1.3 -BeOS implements OpenGL 1.5 -Allegro needs updating -D3D needs updating - - - -Other Changes -------------- - -See the VERSIONS file for more details about bug fixes, etc. in Mesa 6.1. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.2 b/mesalib/docs/RELNOTES-6.2 deleted file mode 100644 index 06cfba0c7..000000000 --- a/mesalib/docs/RELNOTES-6.2 +++ /dev/null @@ -1,51 +0,0 @@ - - Mesa 6.2 release notes - - October 2, 2004 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 6.1) designate new developmental releases. -Even numbered versions (such as 6.2) designate stable releases. - - -This release primarily just fixes bugs found in the Mesa 6.1 release. -See the VERSIONS file for details. - - -ToDo: PBO for polygon stipple, convolution filter, etc. - - - -Known Issues ------------- - -The GL_EXT_pixel_buffer_object extension isn't fully implemented for -functions like glPolygonStipple, glConvolutionFilter, glColorTable, -etc. The important functions like glRead/DrawPixels, glTex[Sub]Image, -and glBitmap work with PBOs. - - - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.5 -OSMesa (off-screen) implements OpenGL 1.5 -Glide (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.5 -DJGPP implements OpenGL 1.5 -GGI implements OpenGL 1.3 -BeOS implements OpenGL 1.5 -Allegro needs updating -D3D needs updating - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.2.1 b/mesalib/docs/RELNOTES-6.2.1 deleted file mode 100644 index c7baa5d42..000000000 --- a/mesalib/docs/RELNOTES-6.2.1 +++ /dev/null @@ -1,49 +0,0 @@ - - Mesa 6.2.1 release notes - - December 9, 2004 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 6.1) designate new developmental releases. -Even numbered versions (such as 6.2.x) designate stable releases. - - -This release primarily just fixes bugs found in the Mesa 6.2 release. -See the VERSIONS file for details. - - - -Known Issues ------------- - -The GL_EXT_pixel_buffer_object extension isn't fully implemented for -functions like glPolygonStipple, glConvolutionFilter, glColorTable, -etc. The important functions like glRead/DrawPixels, glTex[Sub]Image, -and glBitmap work with PBOs. This has been fixed for Mesa 6.3. - - - - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.5 -OSMesa (off-screen) implements OpenGL 1.5 -Glide (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.5 -DJGPP implements OpenGL 1.5 -GGI implements OpenGL 1.3 -BeOS implements OpenGL 1.5 -Allegro needs updating -D3D needs updating - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.3 b/mesalib/docs/RELNOTES-6.3 deleted file mode 100644 index 6b4dfaaf9..000000000 --- a/mesalib/docs/RELNOTES-6.3 +++ /dev/null @@ -1,114 +0,0 @@ - - Mesa 6.3 release notes - - July 20, 2005 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 6.3) designate new developmental releases. -Even numbered versions (such as 6.2) designate stable releases. - - - -New Features ------------- - -GL_ARB_draw_buffers - allows a fragment program to write to a number of - separate color buffers, instead of just one. - -GL_OES_read_format - allows one to query the fastest glReadPixels format - and datatype. - -GL_ARB_pixel_buffer_object - buffer objects for pixel read/write functions. - -GL_EXT_framebuffer_object - allows render-to-texture and provides a - window-system indepedent Pbuffer facility. - The Mesa CVS tree contains a couple tests of this extension. - -DirectFB driver, contributed by Claudio Ciccani. See docs/README.directfb -for details. - - - -Vertex/Fragment Program PRINT Instruction ------------------------------------------ - -The GL_NV_vertex_program and GL_NV_fragment_program languages have been -extended with a PRINT instruction. - - - -glDeleteTextures(), glDeletePrograms() and glDeleteBuffers() Changed --------------------------------------------------------------------- - -To match the behaviour of other OpenGL implementations, glDeleteTextures, -glDeletePrograms and glDeleteBuffers have been modified so that: - - * The named texture/program/buffer ID is immediately freed for re-use. - - * The actual texture object, program or buffers isn't really deleted until - it is no longer bound in any rendering context (the reference count - is zero). - -Previously, the texture/program/buffer ID wasn't freed until the object -was really deleted. - -Note that textures, programs and buffers can be shared by several rendering -contexts so they can't be deleted until they're unbound in _all_ contexts. - - - -GL_EXT_framebuffer_object changes ---------------------------------- - -Implementing this extension involved changing a lot of code (for the better). - -The gl_framebuffer object now a collection of gl_renderbuffer objects. -Renderbuffers may store colors, stencil indices, or depth values. The -gl_framebuffer and gl_renderbuffer types are object-oriented in design. - -All the old RGB, color index, stencil and depth-related span functions for -reading/writing pixels from/to buffers has changed. Now, all pixels are -read/written through a set of common renderbuffer functions (methods). - -Most device drivers have been updated for these changes, but some haven't. - - - -To Do (someday) items ---------------------- - Switch to freeglut - Increase MAX_DRAWBUFFERS - driver hooks for BeginQuery/EndQuery - - - -Miscellaneous -------------- - -The main/get.c file is now generated with a Python script (get_gen.py). - - - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.5 -OSMesa (off-screen) implements OpenGL 1.5 -Glide (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.5 -DJGPP implements OpenGL 1.5 -GGI implements OpenGL 1.3 -BeOS implements OpenGL 1.5 -Allegro needs updating -D3D needs updating - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.3.1 b/mesalib/docs/RELNOTES-6.3.1 deleted file mode 100644 index eacc952ae..000000000 --- a/mesalib/docs/RELNOTES-6.3.1 +++ /dev/null @@ -1,48 +0,0 @@ - - Mesa 6.3.1 release notes - - July XX, 2005 - - PLEASE READ!!!! - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 6.3) designate new developmental releases. -Even numbered versions (such as 6.2) designate stable releases. - - - -DRI drivers ------------ - -This release includes the DRI drivers and GLX code for hardware rendering. - - - -Bug fixes ---------- - -Bugs fixed in 6.3.1 are listed in the VERSIONS file. - - - -Driver Status ----------------------- --------------------- -XMesa (Xlib) implements OpenGL 1.5 -OSMesa (off-screen) implements OpenGL 1.5 -Glide (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.5 -DJGPP implements OpenGL 1.5 -GGI implements OpenGL 1.3 -BeOS implements OpenGL 1.5 -Allegro needs updating -D3D needs updating - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.3.2 b/mesalib/docs/RELNOTES-6.3.2 deleted file mode 100644 index e5243ef78..000000000 --- a/mesalib/docs/RELNOTES-6.3.2 +++ /dev/null @@ -1,36 +0,0 @@ - - Mesa 6.3.2 Release Notes - - August 19, 2005 - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 6.3) designate new developmental releases. -Even numbered versions (such as 6.2) designate stable releases. - - -6.3.2 is primarily a bug-fix release. See the VERSIONS file for details. - - - -Driver Status ----------------------- ---------------------- -DRI drivers varies with the driver -XMesa (Xlib) implements OpenGL 1.5 -OSMesa (off-screen) implements OpenGL 1.5 -Glide (3dfx Voodoo1/2) implements OpenGL 1.3 -SVGA implements OpenGL 1.3 -Wind River UGL implements OpenGL 1.3 -Windows/Win32 implements OpenGL 1.5 -DJGPP implements OpenGL 1.5 -GGI implements OpenGL 1.3 -BeOS implements OpenGL 1.5 -Allegro needs updating -D3D needs updating - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.4 b/mesalib/docs/RELNOTES-6.4 deleted file mode 100644 index 1a945a103..000000000 --- a/mesalib/docs/RELNOTES-6.4 +++ /dev/null @@ -1,49 +0,0 @@ - - Mesa 6.4 Release Notes - - October 24, 2005 - - - -Introduction ------------- - -Mesa uses an even/odd version number scheme like the Linux kernel. -Odd numbered versions (such as 6.3) designate new developmental releases. -Even numbered versions (such as 6.4) designate stable releases. - - -6.4 is a bug-fix release. See the VERSIONS file for details. - - - -GLUT tarball ------------- - -Starting with 6.4, the GLUT library sources are distributed in a separate -tarball. This was done at the request of Linux distro vendors who prefer -to use freeglut. - - - - -Driver Status ----------------------- ---------------------- -DRI drivers varies with the driver -XMesa (Xlib) implements OpenGL 1.5 -OSMesa (off-screen) implements OpenGL 1.5 -Windows/Win32 implements OpenGL 1.5 -Glide (3dfx Voodoo1/2) requires updates -SVGA requires updates -DJGPP requires updates -GGI requires updates -BeOS requires updates -Allegro requires updates -D3D requires updates - -The drivers which require updates mostly need to be updated to work -with the new gl_renderbuffer / gl_framebuffer infrastructure introduced -in Mesa 6.3. - - ----------------------------------------------------------------------- diff --git a/mesalib/docs/WL_bind_wayland_display.spec b/mesalib/docs/WL_bind_wayland_display.spec deleted file mode 100644 index 02bd6ea21..000000000 --- a/mesalib/docs/WL_bind_wayland_display.spec +++ /dev/null @@ -1,175 +0,0 @@ -Name - - WL_bind_wayland_display - -Name Strings - - EGL_WL_bind_wayland_display - -Contact - - Kristian Høgsberg <krh@bitplanet.net> - Benjamin Franzke <benjaminfranzke@googlemail.com> - -Status - - Proposal - -Version - - Version 1, March 1, 2011 - -Number - - EGL Extension #not assigned - -Dependencies - - Requires EGL 1.4 or later. This extension is written against the - wording of the EGL 1.4 specification. - - EGL_KHR_base_image is required. - -Overview - - This extension provides entry points for binding and unbinding the - wl_display of a Wayland compositor to an EGLDisplay. Binding a - wl_display means that the EGL implementation should provide one or - more interfaces in the Wayland protocol to allow clients to create - wl_buffer objects. On the server side, this extension also - provides a new target for eglCreateImageKHR, to create an EGLImage - from a wl_buffer - - Adding an implementation specific wayland interface, allows the - EGL implementation to define specific wayland requests and events, - needed for buffer sharing in an EGL wayland platform. - -IP Status - - Open-source; freely implementable. - -New Procedures and Functions - - EGLBoolean eglBindWaylandDisplayWL(EGLDisplay dpy, - struct wl_display *display); - - EGLBoolean eglUnbindWaylandDisplayWL(EGLDisplay dpy, - struct wl_display *display); - - EGLBoolean eglQueryWaylandBufferWL(EGLDisplay dpy, - struct wl_buffer *buffer, - EGLint attribute, EGLint *value); - -New Tokens - - Accepted as <target> in eglCreateImageKHR - - EGL_WAYLAND_BUFFER_WL 0x31D5 - - Accepted in the <attrib_list> parameter of eglCreateImageKHR: - - EGL_WAYLAND_PLANE_WL 0x31D6 - - Possible values for EGL_TEXTURE_FORMAT: - - EGL_TEXTURE_Y_U_V_WL 0x31D7 - EGL_TEXTURE_Y_UV_WL 0x31D8 - EGL_TEXTURE_Y_XUXV_WL 0x31D9 - - -Additions to the EGL 1.4 Specification: - - To bind a server side wl_display to an EGLDisplay, call - - EGLBoolean eglBindWaylandDisplayWL(EGLDisplay dpy, - struct wl_display *display); - - To unbind a server side wl_display from an EGLDisplay, call - - EGLBoolean eglUnbindWaylandDisplayWL(EGLDisplay dpy, - struct wl_display *display); - - eglBindWaylandDisplayWL returns EGL_FALSE when there is already a - wl_display bound to EGLDisplay otherwise EGL_TRUE. - - eglUnbindWaylandDisplayWL returns EGL_FALSE when there is no - wl_display bound to the EGLDisplay currently otherwise EGL_TRUE. - - A wl_buffer can have several planes, typically in case of planar - YUV formats. Depending on the exact YUV format in use, the - compositor will have to create one or more EGLImages for the - various planes. The eglQueryWaylandBufferWL function should be - used to first query the wl_buffer texture format using - EGL_TEXTURE_FORMAT as the attribute. If the wl_buffer object is - not an EGL wl_buffer (wl_shm and other wayland extensions can - create wl_buffer objects of different types), this query will - return EGL_FALSE. In that case the wl_buffer can not be used with - EGL and the compositor should have another way to get the buffer - contents. - - If eglQueryWaylandBufferWL succeeds, the returned value will be - one of EGL_TEXTURE_RGB, EGL_TEXTURE_RGBA, EGL_TEXTURE_Y_U_V_WL, - EGL_TEXTURE_Y_UV_WL, EGL_TEXTURE_Y_XUXV_WL. The value returned - describes how many EGLImages must be used, which components will - be sampled from each EGLImage and how they map to rgba components - in the shader. The naming conventions separates planes by _ and - within each plane, the order or R, G, B, A, Y, U, and V indicates - how those components map to the rgba value returned by the - sampler. X indicates that the corresponding component in the rgba - value isn't used. - - RGB and RGBA buffer types: - - EGL_TEXTURE_RGB - One plane, samples RGB from the texture to rgb in the - shader. Alpha channel is not valid. - - EGL_TEXTURE_RGBA - One plane, samples RGBA from the texture to rgba in the - shader. - - YUV buffer types: - - EGL_TEXTURE_Y_U_V_WL - Three planes, samples Y from the first plane to r in - the shader, U from the second plane to r, and V from - the third plane to r. - - EGL_TEXTURE_Y_UV_WL - Two planes, samples Y from the first plane to r in - the shader, U and V from the second plane to rg. - - EGL_TEXTURE_Y_XUXV_WL - Two planes, samples Y from the first plane to r in - the shader, U and V from the second plane to g and a. - - After querying the wl_buffer layout, create EGLImages for the - planes by calling eglCreateImageKHR with wl_buffer as - EGLClientBuffer, EGL_WAYLAND_BUFFER_WL as the target, NULL - context. If no attributes are given, an EGLImage will be created - for the first plane. For multi-planar buffers, specify the plane - to create the EGLImage for by using the EGL_WAYLAND_PLANE_WL - attribute. The value of the attribute is the index of the plane, - as defined by the buffer format. Writing to an EGLImage created - from a wl_buffer in any way (such as glTexImage2D, binding the - EGLImage as a renderbuffer etc) will result in undefined behavior. - - Further, eglQueryWaylandBufferWL accepts attributes EGL_WIDTH and - EGL_HEIGHT to query the width and height of the wl_buffer. - -Issues - -Revision History - - Version 1, March 1, 2011 - Initial draft (Benjamin Franzke) - Version 2, July 5, 2012 - Add EGL_WAYLAND_PLANE_WL attribute to allow creating an EGLImage - for different planes of planar buffer. (Kristian Høgsberg) - Version 3, July 10, 2012 - Add eglQueryWaylandBufferWL and the various buffer - formats. (Kristian Høgsberg) - Version 4, July 19, 2012 - Use EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGB, and EGL_TEXTURE_RGBA, - and just define the new YUV texture formats. Add support for - EGL_WIDTH and EGL_HEIGHT in the query attributes (Kristian Høgsberg) diff --git a/mesalib/docs/devinfo.html b/mesalib/docs/devinfo.html index c89bfc02e..f5eb4d468 100644 --- a/mesalib/docs/devinfo.html +++ b/mesalib/docs/devinfo.html @@ -197,16 +197,18 @@ branch is relevant. <dl> <dt>Makefile.am</dt> + <dt>SConstruct</dt> + <dt>Android.common.mk</dt> <dd>PACKAGE_VERSION</dd> <dt>configure.ac</dt> <dd>AC_INIT</dd> </dl> <p> -Create a docs/relnotes-x.y.z.html file. -The bin/shortlog_mesa.sh script can be used to create a HTML-formatted list -of changes to include in the file. -Link the new docs/relnotes-x.y.z.html file into the main <a href="relnotes.html">relnotes.html</a> file. +Create a docs/relnotes/x.y.z.html file. +The bin/bugzilla_mesa.sh and bin/shortlog_mesa.sh scripts can be used to +create the HTML-formatted lists of bugfixes and changes to include in the file. +Link the new docs/relnotes/x.y.z.html file into the main <a href="relnotes.html">relnotes.html</a> file. </p> <p> @@ -231,7 +233,7 @@ Make the distribution files. From inside the Mesa directory: <p> After the tarballs are created, the md5 checksums for the files will be computed. -Add them to the docs/relnotes-x.y.html file. +Add them to the docs/relnotes/x.y.html file. </p> <p> diff --git a/mesalib/docs/enums.txt b/mesalib/docs/enums.txt deleted file mode 100644 index b37768e20..000000000 --- a/mesalib/docs/enums.txt +++ /dev/null @@ -1,57 +0,0 @@ - -See the OpenGL ARB enum registry at http://www.opengl.org/registry/api/enum.spec - -Blocks allocated to Mesa: - 0x8750-0x875F - 0x8BB0-0x8BBF - - -GL_MESA_packed_depth_stencil - GL_DEPTH_STENCIL_MESA 0x8750 - GL_UNSIGNED_INT_24_8_MESA 0x8751 - GL_UNSIGNED_INT_8_24_REV_MESA 0x8752 - GL_UNSIGNED_SHORT_15_1_MESA 0x8753 - GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754 - -GL_MESA_trace.spec: - GL_TRACE_ALL_BITS_MESA 0xFFFF - GL_TRACE_OPERATIONS_BIT_MESA 0x0001 - GL_TRACE_PRIMITIVES_BIT_MESA 0x0002 - GL_TRACE_ARRAYS_BIT_MESA 0x0004 - GL_TRACE_TEXTURES_BIT_MESA 0x0008 - GL_TRACE_PIXELS_BIT_MESA 0x0010 - GL_TRACE_ERRORS_BIT_MESA 0x0020 - GL_TRACE_MASK_MESA 0x8755 - GL_TRACE_NAME_MESA 0x8756 - -MESA_ycbcr_texture.spec: - GL_YCBCR_MESA 0x8757 - GL_UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */ - GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */ - -GL_MESA_pack_invert.spec - GL_PACK_INVERT_MESA 0x8758 - -GL_MESA_shader_debug.spec: (obsolete) - GL_DEBUG_OBJECT_MESA 0x8759 - GL_DEBUG_PRINT_MESA 0x875A - GL_DEBUG_ASSERT_MESA 0x875B - -GL_MESA_program_debug.spec: (obsolete) - GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x???? - GL_VERTEX_PROGRAM_CALLBACK_MESA 0x???? - GL_FRAGMENT_PROGRAM_POSITION_MESA 0x???? - GL_VERTEX_PROGRAM_POSITION_MESA 0x???? - GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x???? - GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x???? - GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x???? - GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x???? - -GL_MESAX_texture_stack: - GL_TEXTURE_1D_STACK_MESAX 0x8759 - GL_TEXTURE_2D_STACK_MESAX 0x875A - GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B - GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C - GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D - GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E - diff --git a/mesalib/docs/envvars.html b/mesalib/docs/envvars.html index 5d855c630..389da62e6 100644 --- a/mesalib/docs/envvars.html +++ b/mesalib/docs/envvars.html @@ -32,6 +32,8 @@ sometimes be useful for debugging end-user issues. <li>LIBGL_ALWAYS_INDIRECT - forces an indirect rendering context/connection. <li>LIBGL_ALWAYS_SOFTWARE - if set, always use software rendering <li>LIBGL_NO_DRAWARRAYS - if set do not use DrawArrays GLX protocol (for debugging) +<li>LIBGL_SHOW_FPS - print framerate to stdout based on the number of glXSwapBuffers + calls per second. </ul> @@ -144,6 +146,9 @@ Mesa EGL supports different sets of environment variables. See the <h2>Gallium environment variables</h2> <ul> +<li>GALLIUM_HUD - draws various information on the screen, like framerate, + cpu load, driver statistics, performance counters, etc. + Set GALLIUM_HUD=help and run e.g. glxgears for more info. <li>GALLIUM_LOG_FILE - specifies a file for logging all errors, warnings, etc. rather than stderr. <li>GALLIUM_PRINT_OPTIONS - if non-zero, print all the Gallium environment diff --git a/mesalib/docs/extensions.html b/mesalib/docs/extensions.html index 5d790fb61..40f59d3b0 100644 --- a/mesalib/docs/extensions.html +++ b/mesalib/docs/extensions.html @@ -23,19 +23,27 @@ The specifications follow. <ul> -<li><a href="MESA_agp_offset.spec">MESA_agp_offset.spec</a> -<li><a href="MESA_copy_sub_buffer.spec">MESA_copy_sub_buffer.spec</a> -<li><a href="MESA_packed_depth_stencil.spec">MESA_packed_depth_stencil.spec</a> -<li><a href="MESA_pack_invert.spec">MESA_pack_invert.spec</a> -<li><a href="MESA_pixmap_colormap.spec">MESA_pixmap_colormap.spec</a> -<li><a href="MESA_release_buffers.spec">MESA_release_buffers.spec</a> -<li><a href="MESA_resize_buffers.spec">MESA_resize_buffers.spec</a> -<li><a href="MESA_set_3dfx_mode.spec">MESA_set_3dfx_mode.spec</a> -<li><a href="MESA_sprite_point.spec">MESA_sprite_point.spec</a> (obsolete) -<li><a href="MESA_texture_signed_rgba.spec">MESA_texture_signed_rgba.spec</a> -<li><a href="MESA_trace.spec">MESA_trace.spec</a> (obsolete) -<li><a href="MESA_window_pos.spec">MESA_window_pos.spec</a> -<li><a href="MESA_ycbcr_texture.spec">MESA_ycbcr_texture.spec</a> +<li><a href="specs/MESA_agp_offset.spec">MESA_agp_offset.spec</a> +<li><a href="specs/MESA_copy_sub_buffer.spec">MESA_copy_sub_buffer.spec</a> +<li><a href="specs/MESA_drm_image.spec">MESA_drm_image.spec</a> +<li><a href="specs/MESA_multithread_makecurrent.spec">MESA_multithread_makecurrent.spec</a> +<li><a href="specs/OLD/MESA_packed_depth_stencil.spec">MESA_packed_depth_stencil.spec</a> (obsolete) +<li><a href="specs/MESA_pack_invert.spec">MESA_pack_invert.spec</a> +<li><a href="specs/MESA_pixmap_colormap.spec">MESA_pixmap_colormap.spec</a> +<li><a href="specs/OLD/MESA_program_debug.spec">MESA_program_debug.spec</a> (obsolete) +<li><a href="specs/MESA_release_buffers.spec">MESA_release_buffers.spec</a> +<li><a href="specs/MESA_resize_buffers.spec">MESA_resize_buffers.spec</a> +<li><a href="specs/MESA_set_3dfx_mode.spec">MESA_set_3dfx_mode.spec</a> +<li><a href="specs/MESA_shader_debug.spec">MESA_shader_debug.spec</a> +<li><a href="specs/OLD/MESA_sprite_point.spec">MESA_sprite_point.spec</a> (obsolete) +<li><a href="specs/MESA_swap_control.spec">MESA_swap_control.spec</a> +<li><a href="specs/MESA_swap_frame_usage.spec">MESA_swap_frame_usage.spec</a> +<li><a href="specs/MESA_texture_array.spec">MESA_texture_array.spec</a> +<li><a href="specs/MESA_texture_signed_rgba.spec">MESA_texture_signed_rgba.spec</a> +<li><a href="specs/OLD/MESA_trace.spec">MESA_trace.spec</a> (obsolete) +<li><a href="specs/MESA_window_pos.spec">MESA_window_pos.spec</a> +<li><a href="specs/MESA_ycbcr_texture.spec">MESA_ycbcr_texture.spec</a> +<li><a href="specs/WL_bind_wayland_display.spec">WL_bind_wayland_display.spec</a> </ul> </div> diff --git a/mesalib/docs/index.html b/mesalib/docs/index.html index e2ef92aee..be095820c 100644 --- a/mesalib/docs/index.html +++ b/mesalib/docs/index.html @@ -16,9 +16,21 @@ <h1>News</h1> +<h2>May 21, 2013</h2> +<p> +<a href="relnotes/9.1.3.html">Mesa 9.1.3</a> is released. +This is a bug fix release. +</p> + +<h2>April 30, 2013</h2> +<p> +<a href="relnotes/9.1.2.html">Mesa 9.1.2</a> is released. +This is a bug fix release. +</p> + <h2>March 19, 2013</h2> <p> -<a href="relnotes-9.1.1.html">Mesa 9.1.1</a> is released. +<a href="relnotes/9.1.1.html">Mesa 9.1.1</a> is released. This is a bug fix release. </p> @@ -34,7 +46,7 @@ You can download it from <a href="ftp://ftp.freedesktop.org/pub/mesa/demos/8.1.0 <h2>February 22, 2013</h2> <p> -<a href="relnotes-9.1.html">Mesa 9.1</a> is released. +<a href="relnotes/9.1.html">Mesa 9.1</a> is released. This is a new development release. See the release notes for more information about the release. </p> @@ -43,7 +55,7 @@ See the release notes for more information about the release. <h2>February 21, 2013</h2> <p> -<a href="relnotes-9.0.3.html">Mesa 9.0.3</a> is released. +<a href="relnotes/9.0.3.html">Mesa 9.0.3</a> is released. This is a bug fix release. </p> @@ -51,7 +63,7 @@ This is a bug fix release. <h2>January 22, 2013</h2> <p> -<a href="relnotes-9.0.2.html">Mesa 9.0.2</a> is released. +<a href="relnotes/9.0.2.html">Mesa 9.0.2</a> is released. This is a bug fix release. </p> @@ -59,7 +71,7 @@ This is a bug fix release. <h2>November 16, 2012</h2> <p> -<a href="relnotes-9.0.1.html">Mesa 9.0.1</a> is released. +<a href="relnotes/9.0.1.html">Mesa 9.0.1</a> is released. This is a bug fix release. </p> @@ -67,7 +79,7 @@ This is a bug fix release. <h2>October 24, 2012</h2> <p> -<a href="relnotes-8.0.5.html">Mesa 8.0.5</a> is released. +<a href="relnotes/8.0.5.html">Mesa 8.0.5</a> is released. This is a bug fix release. </p> @@ -75,7 +87,7 @@ This is a bug fix release. <h2>October 8, 2012</h2> <p> -<a href="relnotes-9.0.html">Mesa 9.0</a> is released. +<a href="relnotes/9.0.html">Mesa 9.0</a> is released. This is the first version of Mesa to support OpenGL 3.1 and GLSL 1.40 (with the i965 driver). See the release notes for more information about the release. @@ -85,7 +97,7 @@ See the release notes for more information about the release. <h2>July 10, 2012</h2> <p> -<a href="relnotes-8.0.4.html">Mesa 8.0.4</a> is released. +<a href="relnotes/8.0.4.html">Mesa 8.0.4</a> is released. This is a bug fix release. </p> @@ -93,7 +105,7 @@ This is a bug fix release. <h2>May 18, 2012</h2> <p> -<a href="relnotes-8.0.3.html">Mesa 8.0.3</a> is released. +<a href="relnotes/8.0.3.html">Mesa 8.0.3</a> is released. This is a bug fix release. </p> @@ -101,7 +113,7 @@ This is a bug fix release. <h2>March 21, 2012</h2> <p> -<a href="relnotes-8.0.2.html">Mesa 8.0.2</a> is released. +<a href="relnotes/8.0.2.html">Mesa 8.0.2</a> is released. This is a bug fix release. </p> @@ -109,14 +121,14 @@ This is a bug fix release. <h2>February 16, 2012</h2> <p> -<a href="relnotes-8.0.1.html">Mesa 8.0.1</a> is released. This is a bug fix +<a href="relnotes/8.0.1.html">Mesa 8.0.1</a> is released. This is a bug fix release. See the release notes for more information about the release. </p> <h2>February 9, 2012</h2> <p> -<a href="relnotes-8.0.html">Mesa 8.0</a> is released. +<a href="relnotes/8.0.html">Mesa 8.0</a> is released. This is the first version of Mesa to support OpenGL 3.0 and GLSL 1.30 (with the i965 driver). See the release notes for more information about the release. @@ -126,7 +138,7 @@ See the release notes for more information about the release. <h2>November 27, 2011</h2> <p> -<a href="relnotes-7.11.2.html">Mesa 7.11.2</a> is released. This is a bug fix +<a href="relnotes/7.11.2.html">Mesa 7.11.2</a> is released. This is a bug fix release. This release was made primarily to fix build problems with 7.11.1 on Mandriva and to fix problems related to glCopyTexImage to luminance-alpha textures. The later was believed to have been fixed in 7.11.1 but was not. @@ -135,36 +147,36 @@ textures. The later was believed to have been fixed in 7.11.1 but was not. <h2>November 17, 2011</h2> <p> -<a href="relnotes-7.11.1.html">Mesa 7.11.1</a> is released. This is a bug +<a href="relnotes/7.11.1.html">Mesa 7.11.1</a> is released. This is a bug fix release. </p> <h2>July 31, 2011</h2> <p> -<a href="relnotes-7.11.html">Mesa 7.11</a> (final) is released. This is a new +<a href="relnotes/7.11.html">Mesa 7.11</a> (final) is released. This is a new development release. </p> <h2>June 13, 2011</h2> <p> -<a href="relnotes-7.10.3.html">Mesa 7.10.3</a> is released. This is a bug +<a href="relnotes/7.10.3.html">Mesa 7.10.3</a> is released. This is a bug fix release. </p> <h2>April 6, 2011</h2> <p> -<a href="relnotes-7.10.2.html">Mesa 7.10.2</a> is released. This is a bug +<a href="relnotes/7.10.2.html">Mesa 7.10.2</a> is released. This is a bug fix release. </p> <h2>March 2, 2011</h2> <p> -<a href="relnotes-7.9.2.html">Mesa 7.9.2</a> and -<a href="relnotes-7.10.1.html">Mesa 7.10.1</a> are released. These are +<a href="relnotes/7.9.2.html">Mesa 7.9.2</a> and +<a href="relnotes/7.10.1.html">Mesa 7.10.1</a> are released. These are stable releases containing bug fixes since the 7.9.1 and 7.10 releases. </p> @@ -172,7 +184,7 @@ stable releases containing bug fixes since the 7.9.1 and 7.10 releases. <h2>October 4, 2010</h2> <p> -<a href="relnotes-7.9.html">Mesa 7.9</a> (final) is released. This is a new +<a href="relnotes/7.9.html">Mesa 7.9</a> (final) is released. This is a new development release. </p> @@ -180,7 +192,7 @@ development release. <h2>September 27, 2010</h2> <p> -<a href="relnotes-7.9.html">Mesa 7.9.0-rc1</a> is released. This is a +<a href="relnotes/7.9.html">Mesa 7.9.0-rc1</a> is released. This is a release candidate for the 7.9 development release. </p> @@ -188,7 +200,7 @@ release candidate for the 7.9 development release. <h2>June 16, 2010</h2> <p> -<a href="relnotes-7.8.2.html">Mesa 7.8.2</a> is released. This is a bug-fix +<a href="relnotes/7.8.2.html">Mesa 7.8.2</a> is released. This is a bug-fix release collecting fixes since the 7.8.1 release. </p> @@ -196,18 +208,18 @@ release collecting fixes since the 7.8.1 release. <h2>April 5, 2010</h2> <p> -<a href="relnotes-7.8.1.html">Mesa 7.8.1</a> is released. This is a bug-fix +<a href="relnotes/7.8.1.html">Mesa 7.8.1</a> is released. This is a bug-fix release for a few critical issues in the 7.8 release. </p> <h2>March 28, 2010</h2> <p> -<a href="relnotes-7.7.1.html">Mesa 7.7.1</a> is released. This is a bug-fix +<a href="relnotes/7.7.1.html">Mesa 7.7.1</a> is released. This is a bug-fix release fixing issues found in the 7.7 release. </p> <p> -Also, <a href="relnotes-7.8.html">Mesa 7.8</a> is released. This is a new +Also, <a href="relnotes/7.8.html">Mesa 7.8</a> is released. This is a new development release. </p> @@ -215,37 +227,37 @@ development release. <h2>December 21, 2009</h2> <p> -<a href="relnotes-7.6.1.html">Mesa 7.6.1</a> is released. This is a bug-fix +<a href="relnotes/7.6.1.html">Mesa 7.6.1</a> is released. This is a bug-fix release fixing issues found in the 7.6 release. </p> <p> -Also, <a href="relnotes-7.7.html">Mesa 7.7</a> is released. This is a new +Also, <a href="relnotes/7.7.html">Mesa 7.7</a> is released. This is a new development release. </p> <h2>September 28, 2009</h2> <p> -<a href="relnotes-7.6.html">Mesa 7.6</a> is released. This is a new feature +<a href="relnotes/7.6.html">Mesa 7.6</a> is released. This is a new feature release. Those especially concerned about stability may want to wait for the follow-on 7.6.1 bug-fix release. </p> <p> -<a href="relnotes-7.5.2.html">Mesa 7.5.2</a> is also released. +<a href="relnotes/7.5.2.html">Mesa 7.5.2</a> is also released. This is a stable release fixing bugs since the 7.5.1 release. </p> <h2>September 3, 2009</h2> <p> -<a href="relnotes-7.5.1.html">Mesa 7.5.1</a> is released. +<a href="relnotes/7.5.1.html">Mesa 7.5.1</a> is released. This is a bug-fix release which fixes bugs found in version 7.5. </p> <h2>July 17, 2009</h2> <p> -<a href="relnotes-7.5.html">Mesa 7.5</a> is released. +<a href="relnotes/7.5.html">Mesa 7.5</a> is released. This is a new features release. People especially concerned about stability may want to wait for the follow-on 7.5.1 bug-fix release. </p> @@ -253,7 +265,7 @@ stability may want to wait for the follow-on 7.5.1 bug-fix release. <h2>June 23, 2009</h2> <p> -<a href="relnotes-7.4.4.html">Mesa 7.4.4</a> is released. +<a href="relnotes/7.4.4.html">Mesa 7.4.4</a> is released. This is a stable release that fixes a regression in the i915/i965 drivers that slipped into the 7.4.3 release. </p> @@ -261,35 +273,35 @@ that slipped into the 7.4.3 release. <h2>June 19, 2009</h2> <p> -<a href="relnotes-7.4.3.html">Mesa 7.4.3</a> is released. +<a href="relnotes/7.4.3.html">Mesa 7.4.3</a> is released. This is a stable release fixing bugs since the 7.4.2 release. </p> <h2>May 15, 2009</h2> <p> -<a href="relnotes-7.4.2.html">Mesa 7.4.2</a> is released. +<a href="relnotes/7.4.2.html">Mesa 7.4.2</a> is released. This is a stable release fixing bugs since the 7.4.1 release. </p> <h2>April 18, 2009</h2> <p> -<a href="relnotes-7.4.1.html">Mesa 7.4.1</a> is released. +<a href="relnotes/7.4.1.html">Mesa 7.4.1</a> is released. This is a stable release fixing bugs since the 7.4 release. </p> <h2>March 27, 2009</h2> <p> -<a href="relnotes-7.4.html">Mesa 7.4</a> is released. +<a href="relnotes/7.4.html">Mesa 7.4</a> is released. This is a stable release fixing bugs since the 7.3 release. </p> <h2>January 22, 2009</h2> <p> -<a href="relnotes-7.3.html">Mesa 7.3</a> is released. +<a href="relnotes/7.3.html">Mesa 7.3</a> is released. This is a new development release. Mesa 7.4 will follow and will have bug fixes relative to 7.3. </p> @@ -297,14 +309,14 @@ Mesa 7.4 will follow and will have bug fixes relative to 7.3. <h2>September 20, 2008</h2> <p> -<a href="relnotes-7.2.html">Mesa 7.2</a> is released. +<a href="relnotes/7.2.html">Mesa 7.2</a> is released. This is a stable, bug-fix release. </p> <h2>August 26, 2008</h2> <p> -<a href="relnotes-7.1.html">Mesa 7.1</a> is released. +<a href="relnotes/7.1.html">Mesa 7.1</a> is released. This is a new development release. It should be relatively stable, but those especially concerned about stability should wait for the 7.2 release or use Mesa 7.0.4 (the @@ -314,14 +326,14 @@ previous stable release). <h2>August 16, 2008</h2> <p> -<a href="relnotes-7.0.4.html">Mesa 7.0.4</a> is released. +<a href="relnotes/7.0.4.html">Mesa 7.0.4</a> is released. This is a bug-fix release. </p> <h2>April 4, 2008</h2> <p> -<a href="relnotes-7.0.3.html">Mesa 7.0.3</a> is released. +<a href="relnotes/7.0.3.html">Mesa 7.0.3</a> is released. This is a bug-fix release. </p> @@ -350,28 +362,28 @@ but other drivers will be coming... <h2>November 10, 2007</h2> <p> -<a href="relnotes-7.0.2.html">Mesa 7.0.2</a> is released. +<a href="relnotes/7.0.2.html">Mesa 7.0.2</a> is released. This is a bug-fix release. </p> <h2>August 3, 2007</h2> <p> -<a href="relnotes-7.0.1.html">Mesa 7.0.1</a> is released. +<a href="relnotes/7.0.1.html">Mesa 7.0.1</a> is released. This is a bug-fix release. </p> <h2>June 22, 2007</h2> <p> -<a href="relnotes-7.0.html">Mesa 7.0</a> is released. +<a href="relnotes/7.0.html">Mesa 7.0</a> is released. This is a stable release featuring OpenGL 2.1 support. </p> <h2>April 27, 2007</h2> <p> -<a href="relnotes-6.5.3.html">Mesa 6.5.3</a> is released. +<a href="relnotes/6.5.3.html">Mesa 6.5.3</a> is released. This is a development release which will lead up to the Mesa 7.0 release (which will advertise OpenGL 2.1 API support). </p> @@ -402,33 +414,33 @@ See the <a href="repository.html">repository page</a> for more information. <h2>December 2, 2006</h2> <p> -<a href="relnotes-6.5.2.html">Mesa 6.5.2</a> has been released. +<a href="relnotes/6.5.2.html">Mesa 6.5.2</a> has been released. This is a new development release. </p> <h2>September 15, 2006</h2> <p> -<a href="relnotes-6.5.1.html">Mesa 6.5.1</a> has been released. +<a href="relnotes/6.5.1.html">Mesa 6.5.1</a> has been released. This is a new development release. </p> <h2>March 31, 2006</h2> <p> -<a href="relnotes-6.5.html">Mesa 6.5</a> has been released. +<a href="relnotes/6.5.html">Mesa 6.5</a> has been released. This is a new development release. </p> <h2>February 2, 2006</h2> <p> -<a href="relnotes-6.4.2.html">Mesa 6.4.2</a> has been released. +<a href="relnotes/6.4.2.html">Mesa 6.4.2</a> has been released. This is stable, bug-fix release. </p> <h2>November 29, 2005</h2> <p> -<a href="relnotes-6.4.1.html">Mesa 6.4.1</a> has been released. +<a href="relnotes/6.4.1.html">Mesa 6.4.1</a> has been released. This is stable, bug-fix release. </p> @@ -436,7 +448,7 @@ This is stable, bug-fix release. <h2>October 24, 2005</h2> <p> -<a href="relnotes-6.4.html">Mesa 6.4</a> has been released. +<a href="relnotes/6.4.html">Mesa 6.4</a> has been released. This is stable, bug-fix release. </p> @@ -755,8 +767,8 @@ OpenGL 1.5 features. - demo of per-pixel lighting with a fragment program (demos/fplight.c) - new version (18) of glext.h header - new spriteblast.c demo of GL_ARB_point_sprite - - faster glDrawPixels in X11 driver in some cases (see RELNOTES-5.1) - - faster glCopyPixels in X11 driver in some cases (see RELNOTES-5.1) + - faster glDrawPixels in X11 driver in some cases (see relnotes/5.1) + - faster glCopyPixels in X11 driver in some cases (see relnotes/5.1) Bug fixes: - really enable OpenGL 1.4 features in DOS driver. - fixed issues in glDrawPixels and glCopyPixels for very wide images diff --git a/mesalib/docs/license.html b/mesalib/docs/license.html index 35f85853d..80bb60400 100644 --- a/mesalib/docs/license.html +++ b/mesalib/docs/license.html @@ -75,9 +75,10 @@ in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. </pre> diff --git a/mesalib/docs/llvmpipe.html b/mesalib/docs/llvmpipe.html index be0308321..80f8a0176 100644 --- a/mesalib/docs/llvmpipe.html +++ b/mesalib/docs/llvmpipe.html @@ -130,38 +130,38 @@ need to ask, don't even try it. <h1>Profiling</h1> -To profile llvmpipe you should pass the options - +<p> +To profile llvmpipe you should build as +</p> <pre> scons build=profile <same-as-before> </pre> +<p> This will ensure that frame pointers are used both in C and JIT functions, and that no tail call optimizations are done by gcc. +</p> -To better profile JIT code you'll need to build LLVM with oprofile integration. - -<pre> - ./configure \ - --prefix=$install_dir \ - --enable-optimized \ - --disable-profiling \ - --enable-targets=host-only \ - --with-oprofile - - make -C "$build_dir" - make -C "$build_dir" install - - find "$install_dir/lib" -iname '*.a' -print0 | xargs -0 strip --strip-debug -</pre> +<h2>Linux perf integration</h2> -The you should define +<p> +On Linux, it is possible to have symbol resolution of JIT code with <a href="http://perf.wiki.kernel.org/">Linux perf</a>: +</p> <pre> - export LLVM=/path/to/llvm-2.6-profile + perf record -g /my/application + perf report </pre> -and rebuild. +<p> +When run inside Linux perf, llvmpipe will create a /tmp/perf-XXXXX.map file with +symbol address table. It also dumps assembly code to /tmp/perf-XXXXX.map.asm, +which can be used by the bin/perf-annotate-jit script to produce disassembly of +the generated code annotated with the samples. +</p> + +<p>You can obtain a call graph via +<a href="http://code.google.com/p/jrfonseca/wiki/Gprof2Dot#linux_perf">Gprof2Dot</a>.</p> <h1>Unit testing</h1> diff --git a/mesalib/docs/relnotes-6.4.1.html b/mesalib/docs/relnotes-6.4.1.html deleted file mode 100644 index d050f7935..000000000 --- a/mesalib/docs/relnotes-6.4.1.html +++ /dev/null @@ -1,75 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html lang="en"> -<head> - <meta http-equiv="content-type" content="text/html; charset=utf-8"> - <title>Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 6.4.1 / November 29, 2006

    - -

    -Mesa 6.4.1 is a stable, bug-fix release. -

    - - -

    MD5 checksums

    -
    -698ceb574cf882b0226761f5913c0da9  MesaLib-6.4.1.tar.gz
    -ea148c828ec6f645526451db1b8556f1  MesaLib-6.4.1.tar.bz2
    -42e93279468975ed2bf3111b8721e5d9  MesaLib-6.4.1.zip
    -e3b0d50807fd2bdcd1a95aaddd786f13  MesaDemos-6.4.1.tar.gz
    -99df1fdcb98d391666b476ca6f1dda8a  MesaDemos-6.4.1.tar.bz2
    -b999d2c6d92fb4b7740a3dbd889348e3  MesaDemos-6.4.1.zip
    -eadfe01fe5ddfb1eb8227dd567b31635  MesaGLUT-6.4.1.tar.gz
    -bd003bb4f981a4f91dee4c38644d4f3f  MesaGLUT-6.4.1.tar.bz2
    -71c401c037088bf688a88afdaeb3420f  MesaGLUT-6.4.1.zip
    -
    - - -

    Bug fixes

    -
      -
    • redefining a vertex program string didn't take effect in TNL module -
    • fixed occasional segfault upon vertex/fragment parsing error -
    • vertex program LIT instruction didn't handle 0^0=1 correctly -
    • fragment program fog option didn't work with glDrawPixels, glBitmap -
    • USE_MGL_NAMESPACE didn't work for x86-64 -
    • OSMesa demos were missing from previous release tarballs -
    • fixed problem with float->ushort conversion in glClear (bug 4992) -
    • popping of GL_EYE_PLANE texgen state was broken (bug 4996) -
    • popping of GL_SPOT_DIRECTION light state was broken (bug 5005) -
    • fixed occasional triangle color interpolation problem on VMS -
    • work around invalid free() call (bug 5131) -
    • fixed BSD X server compilation problem by including stdint.h -
    - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa (Xlib)		implements OpenGL 1.5
    -OSMesa (off-screen)	implements OpenGL 1.5
    -Windows/Win32		implements OpenGL 1.5
    -Glide (3dfx Voodoo1/2)  requires updates	
    -SVGA			requires updates
    -DJGPP			requires updates
    -GGI			requires updates
    -BeOS			requires updates
    -Allegro			requires updates
    -D3D			requires updates
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-6.4.2.html b/mesalib/docs/relnotes-6.4.2.html deleted file mode 100644 index e894e73e2..000000000 --- a/mesalib/docs/relnotes-6.4.2.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 6.4.2 / February 2, 2006

    - -

    -Mesa 6.4.2 is a stable, bug-fix release. -

    - - -

    MD5 checksums

    -
    -cb0d745d520fa7c2bb9178058b763544  MesaLib-6.4.2.tar.gz
    -7674d2c603b5834259e4e5a820cefd5b  MesaLib-6.4.2.tar.bz2
    -d224e1325b33ff71a0f3893fc6b4d594  MesaLib-6.4.2.zip
    -d4b345d4588fc750cd3d34f3ac26673e  MesaDemos-6.4.2.tar.gz
    -9cae1ab874af533ce356bd7dfe2e0bb0  MesaDemos-6.4.2.tar.bz2
    -2da6e1d1245e441d27813595c6ba50de  MesaDemos-6.4.2.zip
    -84427d18c3453f0ea52388eeba7169b5  MesaGLUT-6.4.2.tar.gz
    -b157ba8ad1ea63260cf5339132e7aac6  MesaGLUT-6.4.2.tar.bz2
    -fe1523744fc05edc3811dfc6a1bf4181  MesaGLUT-6.4.2.zip
    -
    - - -

    New features

    -
      -
    • added OSMesaColorClamp() function/feature -
    • added wglGetExtensionStringARB() function -
    - -

    Changes

    -
      -
    • GLUT tarball -
      -Starting with 6.4, the GLUT library sources are distributed in a separate -tarball. This was done at the request of Linux distro vendors who prefer -to use freeglut. -
    - -

    Bug fixes

    -
      -
    • fixed some problems when building on Windows -
    • GLw header files weren't installed by installmesa script (bug 5396) -
    • GL/glfbdev.h file was missing from tarballs -
    • fixed TNL initialization bug which could lead to crash (bug 5791) -
    - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa (Xlib)		implements OpenGL 1.5
    -OSMesa (off-screen)	implements OpenGL 1.5
    -Windows/Win32		implements OpenGL 1.5
    -Glide (3dfx Voodoo1/2)  requires updates	
    -SVGA			requires updates
    -DJGPP			requires updates
    -GGI			requires updates
    -BeOS			requires updates
    -Allegro			requires updates
    -D3D			requires updates
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-6.4.html b/mesalib/docs/relnotes-6.4.html deleted file mode 100644 index 9dfa74668..000000000 --- a/mesalib/docs/relnotes-6.4.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 6.4 / October 24, 2005

    - -

    -Mesa 6.4 is a stable, bug-fix release. -

    - - -

    MD5 checksums

    -
    -1cce0c1eb4fd15e9dfe837a1ce0c9812  MesaLib-6.4.tar.gz
    -85a84e47a3f718f752f306b9e0954ef6  MesaLib-6.4.tar.bz2
    -b976fea4f3ee06354c53f91b6e3f2ffc  MesaLib-6.4.zip
    -d8734f2c69bcf7ef9f5ae454a85743ba  MesaDemos-6.4.tar.gz
    -1a8c4d4fc699233f5fdb902b8753099e  MesaDemos-6.4.tar.bz2
    -607ab7c7a7de0cc5febbdde2bfa03098  MesaDemos-6.4.zip
    -3260156f66174322a092be0767962d34  MesaGLUT-6.4.tar.gz
    -0465d053f83775f44a12dec4050dfd78  MesaGLUT-6.4.tar.bz2
    -02abfcdcdf72ba938ae00f6e3b70fbe0  MesaGLUT-6.4.zip
    -
    - - -

    New

    -
      -
    • Added a fast XOR line drawing function in Xlib driver -
    • Added support for GL_ARB_texture_mirrored_repeat to savage driver (supported only on Savage4 hardware). -
    - -

    Changes

    -
      -
    • Mesa now packaged in three parts: Library, Demos and GLUT -
    - -

    Bug fixes

    -
      -
    • GLX_X_RENDERABLE token wasn't accepted by glXChooseFBConfig -
    • Some files were present multiple times in the 6.3.2 tarballs -
    • r200_vtxtmp_x86.S file was missing from 6.3.2 tarball (bug 4207) -
    • glxgears_fbconfig demo didn't work (bug 4237) -
    • fixed bug when bilinear sampling 2d textures with borders -
    • glXCreatePbuffer() could segfault instead of returning 0 (bug 4235) -
    • fixed undefined frexp and rand in X.org libGLcore.a (bug 4242) -
    • fixed a few problems with proxy color tables (bug 4270) -
    • fixed precision problem in Z clearing (bug 4395) -
    • glBitmap, glDraw/CopyPixels mistakenly generated selection hits -
    • fixed potential segfault caused by reading pixels outside - of renderbuffer bounds -
    • glGetTexLevelParameter didn't accept GL_TEXTURE_DEPTH_SIZE_ARB -
    • fixed memory corruption bug involving software alpha buffers -
    • glReadPixels clipped by window bounds was sometimes broken -
    • glDraw/CopyPixels of stencil data ignored the stencil write mask -
    • glReadPixels from a texture bound to a framebuffer object didn't work -
    • glIsRender/FramebufferEXT weren't totally correct -
    • fixed a number of point size attenuation/fade bugs -
    • fixed glFogCoord bug 4729 -
    • GLX encoding for transpose matrix functions was broken -
    • fixed broken fragment program KIL and SWZ instructions -
    • fragment programs that wrote result.depth.z didn't work -
    - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa (Xlib)		implements OpenGL 1.5
    -OSMesa (off-screen)	implements OpenGL 1.5
    -Windows/Win32		implements OpenGL 1.5
    -Glide (3dfx Voodoo1/2)  requires updates	
    -SVGA			requires updates
    -DJGPP			requires updates
    -GGI			requires updates
    -BeOS			requires updates
    -Allegro			requires updates
    -D3D			requires updates
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-6.5.1.html b/mesalib/docs/relnotes-6.5.1.html deleted file mode 100644 index e600c1757..000000000 --- a/mesalib/docs/relnotes-6.5.1.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 6.5.1 Release Notes / September 15, 2006

    - -

    -Mesa 6.5.1 is a 6.5 follow-on development release mostly consisting of -bug fixes. -

    - - -

    MD5 checksums

    -
    -d9a555297319bb932a3192952d53d073  MesaLib-6.5.1.tar.gz
    -c46f2c6646a270911b791dd8e1c2d977  MesaLib-6.5.1.tar.bz2
    -939eaaff33322bfeafac784402b45f4f  MesaLib-6.5.1.zip
    -9e4bbe83c007bfbaa67449a81cc3d36a  MesaDemos-6.5.1.tar.gz
    -0f2794baf7a9d98b22caea9f78c6942d  MesaDemos-6.5.1.tar.bz2
    -14c77eab9cc7a265c331abf239927c1c  MesaDemos-6.5.1.zip
    -c5f87c23aaf4eaf1bda0d007ea98366c  MesaGLUT-6.5.1.tar.gz
    -2525642fe7f454e3e1a1aad01359b406  MesaGLUT-6.5.1.tar.bz2
    -e33b165c22551e23b58ede8767378543  MesaGLUT-6.5.1.zip
    -
    - - -

    New Features

    -
      -
    • Intel i965 "broadwater" DRI driver - -
    • GL_APPLE_vertex_array_object - allows encapsulation of a set of vertex - arrays in an object. - -
    • GL_EXT_texture_sRGB - non-linearly mapped texture formats - -
    • GL_EXT_gpu_program_parameters - addes a few new functions for setting - multiple vertex/fragment program parameters with one call. -
    • "engine" demo -
    • updated fbdev driver and GLUT for fbdev (Sean D'Epagnier) -
    • many updates to the DRI drivers -
    - -

    Changes

    -
      -
    • The glVertexAttribARB functions no longer alias the conventional - vertex attributes. -
    • glxinfo program prints more info with -l option -
    • GL_FRAGMENT_PROGRAM_NV and GL_FRAGMENT_PROGRAM_ARB are now - compatible, in terms of glBindProgramARB() -
    • The GL_ARB_vertex_program attribute vertex.weight is now - accepted by the parser, even though the GL_ARB_vertex_blend and - GL_EXT_vertex_weighting extensions aren't supported. - Allows Warcraft to run. -
    - -

    Bug fixes

    -
      -
    • fixed broken texture border handling for depth textures (bug 6498) -
    • removed the test for duplicated framebuffer attachments, per - version 117 of the GL_EXT_framebuffer_object specification -
    • fixed a few render-to-texture bugs, including render to depth texture -
    • clipping of lines against user-defined clip planes was broken (6512) -
    • assembly language dispatch for SPARC was broken (bug 6484) -
    • assorted compilation fixes on various Unix platforms (Dan Schikore) -
    • glPopAttrib could restore an invalid value for GL_DRAW_BUFFER -
    • assorted minor fixes for 16 and 32 bit/channel modes -
    • fixed assorted bugs in texture compression paths -
    • fixed indirect rendering vertex array crashes (bug 6863) -
    • glDrawPixels GL_INDEX_OFFSET didn't always work -
    • fixed convolution memory leak (bug 7077) -
    • rectangular depth textures didn't work -
    • invalid mode to glBegin didn't generate an error (bug 7142) -
    • 'normalized' parameter to glVertexAttribPointerARB didn't work -
    • disable bogus GLX_SGI_video_sync extension in xlib driver -
    • fixed R128 driver locking bug (Martijn van Oosterhout) -
    • using evaluators with vertex programs caused crashes (bug 7564) -
    • fragment.position wasn't set correctly for point/line primitives -
    • fixed parser bug for scalar sources for GL_NV_fragment_program -
    • max fragment program length was incorrectly 128, now 1024 -
    • writes to result.depth in fragment programs weren't clamped to [0,1] -
    • fixed potential dangling pointer bug in glBindProgram() -
    • fixed some memory leaks (and potential crashes) in Xlib driver -
    • fixed a number of build issues on HP-UX (Christopher Bell) -
    • accum buffer didn't work with OSMesa interface -
    - - -

    Internal code changes

    - -

    -A number of Mesa program-related structs were renamed. -For example struct vertex_program is now struct gl_vertex_program. -All the effected drivers have been updated. -

    - -

    Ian Romanick updated the GL API dispatch code in a number of ways. -First, many old/unused extensions were removed. -Second, the static entrypoints for some extensions were removed. -This means GL function pointers will have to be used more often -(e.g. use glXGetProcAddressARB()). -

    - - -

    To Do (someday) items

    -
      -
    • Switch to freeglut -
    • Increase MAX_DRAWBUFFERS -
    • Fix linux-glide target/driver. -
    • Fix lambda calculation for frag progs. -
    - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 1.5
    -OSMesa (off-screen)	implements OpenGL 1.5
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			implements OpenGL 1.3
    -Wind River UGL		implements OpenGL 1.3
    -Windows/Win32		implements OpenGL 1.5
    -DJGPP			implements OpenGL 1.5
    -GGI			implements OpenGL 1.3
    -BeOS			implements OpenGL 1.5
    -Allegro			needs updating
    -D3D			needs updating
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-6.5.2.html b/mesalib/docs/relnotes-6.5.2.html deleted file mode 100644 index f73dce18b..000000000 --- a/mesalib/docs/relnotes-6.5.2.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 6.5.2 Release Notes / December 2, 2006

    - -

    -Mesa 6.5.2 is a 6.5 follow-on development release with a few new features -but mostly consisting of bug fixes. -

    - - -

    MD5 checksums

    -
    -11a033b078e090b3caaeb467234fe299  MesaLib-6.5.2.tar.gz
    -e4d894181f1859651658b3704633e10d  MesaLib-6.5.2.tar.bz2
    -63bf1d444fa738cca52ce1043e284021  MesaLib-6.5.2.zip
    -2b8f1375d16bda5f5a2304174cd5bcf7  MesaDemos-6.5.2.tar.gz
    -e870efe98d3a50be01ab211b9b2e25d9  MesaDemos-6.5.2.tar.bz2
    -d92cc6f5fee5ca75af0be04f9f4908f0  MesaDemos-6.5.2.zip
    -8d4d77e3a7132f4217bbc7c1ab157030  MesaGLUT-6.5.2.tar.gz
    -e84edbb11c69c8e408dfadd2ed08e95b  MesaGLUT-6.5.2.tar.bz2
    -c6d7134843ed5faf11f6686ecb5d2a2e  MesaGLUT-6.5.2.zip
    -
    - - -

    New features

    -
      -
    • New DRI memory manager system. Currently used by the i915tex driver. -Other DRI drivers will be updated to use the new memory manager in coming -months. -
      -To use the new driver you'll need the most recent DRM library and drivers -(version 2.2 or later) and a recent xf86-video-intel driver module from X.org. -
      -New features resulting from this work include: -
        -
      • EXT_framebuffer_objects, render to texture -
      • ARB_pixel_buffer_objects -
      • Accelerated CopyTexSubimage, DrawPixels, ReadPixels, CopyPixels -
      • Accelerated texture uploads from pixel buffer objects -
      • Potentially texturing directly from the pixel buffer object (zero -copy texturing). -
      -
    • New Intel i965 DRI driver -
    • New minstall script to replace normal install program -
    • Faster fragment program execution in software -
    • Added (or fixed) support for - GLX_SGI_make_current_read to the following drivers: -
        -
      • radeon
      • -
      • savage
      • -
      • mga
      • -
      • tdfx
      • -
      -
    • Added support for ARB_occlusion_query to the tdfx driver (Ian -Romanick).
    • -
    - -

    Bug fixes

    -
      -
    • fixed invalid memory read while rendering textured points (bug 8320) -
    • fixed problems with freebsd-dri configuration (bug 8344) -
    • Mesa's fake glxGetCurrentContext() wasn't thread-aware -
    • OPTION NV_position_invariant didn't work in NV vertex programs -
    • glDrawPixels into a user-created framebuffer object could crash Xlib driver -
    • Line clipping was broken in some circumstances -
    • fragment.fogcoord register didn't always contain the correct value -
    • RGBA logicops didn't work reliably in some DRI drivers -
    • Fixed broken RGBA LogicOps in Intel DRI drivers -
    • Fixed some fragment program bugs in Intel i915 DRI driver -
    • Fixed glGetVertexAttribfvARB bug 8883 -
    • Implemented glGetUniform[fi]vARB() functions -
    • Fixed glDrawPixels(GL_COLOR_INDEX, GL_BITMAP) segfault (bug 9044) -
    • Fixed some gluBuild2DMipmaps() bugs (Greg McGarragh) -
    • Fixed broken "mgl" name mangling -
    • Indirect rending was broken for glMap* functions (bug 8899) -
    - - -

    Internal code changes

    - -
      -
    • The device driver functions ResizeBuffers and GetBufferSize have been -decprecated. -
    • OpenGL 2.0 and 2.1 support is nearly done. We need to do quite a bit -more testing of the shading language functions. -
    - - -

    To Do (someday) items

    -
      -
    • Switch to freeglut -
    • Increase MAX_DRAWBUFFERS -
    • Fix linux-glide target/driver. -
    • Improved lambda and derivative calculation for frag progs. -
    - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 1.5
    -OSMesa (off-screen)	implements OpenGL 1.5
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			implements OpenGL 1.3
    -Wind River UGL		implements OpenGL 1.3
    -Windows/Win32		implements OpenGL 1.5
    -DJGPP			implements OpenGL 1.5
    -GGI			implements OpenGL 1.3
    -BeOS			implements OpenGL 1.5
    -Allegro			needs updating
    -D3D			needs updating
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-6.5.3.html b/mesalib/docs/relnotes-6.5.3.html deleted file mode 100644 index 0e6526c04..000000000 --- a/mesalib/docs/relnotes-6.5.3.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 6.5.3 Release Notes / April 27, 2007

    - -

    -Mesa 6.5.3 is a development release with many changes and new features. -Mesa 7.0 is expected to follow shortly. -

    - - -

    MD5 checksums

    -
    -39f33ea64e34e2d5b20640b008b57649  MesaLib-6.5.3.tar.gz
    -46359457147c469745f24b5074a186f0  MesaLib-6.5.3.tar.bz2
    -a8946fa861634ce15971396f47992c41  MesaLib-6.5.3.zip
    -08e26948d57eaca74d02a530b2d8106e  MesaDemos-6.5.3.tar.gz
    -8af91773ab2653fe537499676b05f2e8  MesaDemos-6.5.3.tar.bz2
    -783f81b171bf89b0929abc894efd25a6  MesaDemos-6.5.3.zip
    -9467d415388fe1ad82991fb20704b812  MesaGLUT-6.5.3.tar.gz
    -360843e46b7ebb6909290b023f9b26fa  MesaGLUT-6.5.3.tar.bz2
    -7686065e5c15a30de08a1610860b6840  MesaGLUT-6.5.3.zip
    -
    - - -

    Shared library numbering

    -

    -Mesa 6.5.3 supports the OpenGL 2.0/2.1 API. However, the (unix) -shared library version is still 1.5 (i.e. libGL.so.1.5.xxxxxx). -Bumping the shared library version to 2.x would cause linking problems -with existing OpenGL applications. Since OpenGL 2.x is backward -compatible with OpenGL 1.x the shared library version number doesn't -have to be incremented (which would indicate an incompatible ABI). -

    -

    -Other OpenGL vendors name their OpenGL 2.x libraries libGL.so.1.0.xxxxx -for the same reason. -

    - - - -

    New features

    -
      -
    • OpenGL 2.0 and 2.1 API support. -
    • Entirely new Shading Language code generator. See the -Shading Language page for more information. -
    • Much faster software execution of vertex, fragment shaders. -
    • New vertex buffer object (vbo) infrastructure -
    • Updated glext.h file (version 39) -
    • Updated glxext.h file (version 19) -
    • GL_MAX_DRAWBUFFERS is now 4 (software rendering) so - "multiple render targets" are really supported. -
    - -

    Bug fixes

    -
      -
    • Fog was errantly applied when a fragment shader was enabled (bug 9346) -
    • glPush/PopClientAttrib didn't handle VBO bindings correctly (bug 9445) -
    • With 32-bit Z buffer, the fragment Z of lines and points was sometimes wrong. -
    • GL_POST_CONVOLUTION_ALPHA_BIAS/SCALE was broken. -
    • 1D convolution state could effect 2D image transfers -
    • Overlapping glCopyPixels with negative Y zoom didn't work (bug 10521) -
    • Fixed a number of framebuffer/renderbuffer reference counting bugs -
    • Fixed a few bugs in software-emulated alpha planes -
    • Assorted minor bug fixes in glCopy/DrawPixels, glPixelZoom, etc. -
    • Assorted DRI driver bug fixes. -
    • Fixed a number of bugs that prevented "depth-peeling" rendering from working. -
    - - -

    Internal code changes

    -
      -
    • Old array_cache module replaced by new vbo module. All geometry -rendering is now cast in the form of vertex buffer objects. -
    • Massive changes to the Shading Language compiler and related state. -
    • Vertex/fragment shaders are compiled into GPU instructions and -programs very similar to GL_ARB_vertex/fragment_program. -
    • Vertex and fragment programs are executed with the same code now. -
    • The SSE-optimized vertex program path has been removed since it didn't -support more than 12 temp registers, didn't support branching/looping, etc. -
    - - -

    To Do (someday) items

    -
      -
    • Switch to freeglut -
    • Fix linux-glide target/driver. -
    • Improved lambda and derivative calculation for frag progs. -
    - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-6.5.html b/mesalib/docs/relnotes-6.5.html deleted file mode 100644 index b6430a2f4..000000000 --- a/mesalib/docs/relnotes-6.5.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 6.5 Release Notes / March 31, 2006

    - -

    -Mesa 6.5 is a new development release. -

    - - -

    MD5 checksums

    -
    -657be3b92f6dabc78a67ed9cb8d67813  MesaLib-6.5.tar.gz
    -61beda590bfc5b4a12e979d5f2d70d7a  MesaLib-6.5.tar.bz2
    -19d48b872d579d4f91466060804a59ac  MesaLib-6.5.zip
    -694ad3a7007010c7418a9c72d1cba5b7  MesaDemos-6.5.tar.gz
    -ab95b590dcd640726a2d89e62068c66e  MesaDemos-6.5.tar.bz2
    -b792c303fefd87294488e2b7eab976e5  MesaDemos-6.5.zip
    -ac1d585483617db0c91e5c15cb5ec3a3  MesaGLUT-6.5.tar.gz
    -59f0bf2b2ffb67fe23ee479f9b044f31  MesaGLUT-6.5.tar.bz2
    -005decb2136718e22222ac1c4805cd15  MesaGLUT-6.5.zip
    -
    - - - -

    New Features

    -
      -
    • OpenGL Shading language support -
      - This includes the GL_ARB_shader_objects, GL_ARB_shading_language_100, - GL_ARB_vertex_shader and GL_ARB_fragment_shader extensions. Most of - the work was done by Michal Krol. - There's probably a fair number of bugs since this is a pretty large, - complicated body of code. -
      - The OpenGL 2.0 interface to these features will be implemented in a - future version of Mesa, - -
    • GL_EXT_timer_query -
      - Used to measure the time of OpenGL operations at high precision. - Only supported in the software/Xlib driver at this time. - -
    • GL_EXT_packed_depth_stencil -
      - Defines a new GL_DEPTH_STENCIL_EXT pixel format. - -
    • GL_EXT_framebuffer_blit -
      - A simplified glCopyPixels-like feature for copying pixel rectangles. - -
    • GL_ARB_half_float_pixel -
      - Adds a new half-precision floating point format for image transfers, - such as for glDrawPixels, glReadPixels, glTexImage, etc. -
    - -

    Changes

    -
      -
    • removed GL_HP_occlusion_test (use GL_ARB_occlusion_query instead) -
    • removed GL_SGIX/SGIS_pixel_texture extensions -
    -

    Bug fixes

    -
      -
    • fixed glxcontextmodes.c datatype problem (bug 5835) -
    • fixed aix-gcc build/install bugs (bug 5874) -
    • fixed some bugs in texture env program generation -
    • glXCopyContext() didn't handle texture object bindings properly -
    • glXCopyContext() didn't copy all lighting state -
    • fixed FreeBSD config (Pedro Giffuni) -
    • fixed some minor framebuffer object bugs -
    • replaced dprintf() with _glu_printf() in GLU (bug 6244) -
    • fixed a number of thread safety bugs/regressions -
    • fixed a number of GLU tesselator bugs (John Shell, bug 6339) -
    • paletted texturing was broken w/ floating point palettes (K. Schultz) -
    • lots of assorted framebuffer object bug fixes -
    - - -

    Known Issues

    -
      -
    • Rendering to depth textures will not work. Rendering to GL_DEPTH_STENCIL -textures should work. -
    - - -

    Driver Interface Changes

    -
      -
    • Stencil: The Driver.StencilOp/Func/Mask() functions have been replaced by -the two-sided versions: Driver.Stencil*Separate(). -
    • Render-to-texture: The functions for rendering to textures have changed. -
    - - -

    To Do (someday) items

    -
      -
    • Switch to freeglut -
    • Increase MAX_DRAWBUFFERS -
    • Fix linux-glide target/driver. -
    • Fix lambda calculation for frag progs. -
    - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 1.5
    -OSMesa (off-screen)	implements OpenGL 1.5
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			implements OpenGL 1.3
    -Wind River UGL		implements OpenGL 1.3
    -Windows/Win32		implements OpenGL 1.5
    -DJGPP			implements OpenGL 1.5
    -GGI			implements OpenGL 1.3
    -BeOS			implements OpenGL 1.5
    -Allegro			needs updating
    -D3D			needs updating
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.0.1.html b/mesalib/docs/relnotes-7.0.1.html deleted file mode 100644 index c8a2ad090..000000000 --- a/mesalib/docs/relnotes-7.0.1.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - Mesa Release Notes - - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.0.1 Release Notes / August 3, 2007

    - -

    -Mesa 7.0.1 is a stable release with bug fixes since version 7.0. -

    - - -

    MD5 checksums

    -
    -db55141a44b902fcc61d9265b7862c06  MesaLib-7.0.1.tar.gz
    -c056abd763e899114bf745c9eedbf9ad  MesaLib-7.0.1.tar.bz2
    -ecc2637547fae2b38271ae362d013afa  MesaLib-7.0.1.zip
    -b85a4a5be4e829f4a1165e4514b13183  MesaDemos-7.0.1.tar.gz
    -3b66b3268df12ca8a6c4e0c4c457912c  MesaDemos-7.0.1.tar.bz2
    -b1c18006f16e44e80fea66774c59b391  MesaDemos-7.0.1.zip
    -b87a69986839ae43ce12fc8e3dc1ebb4  MesaGLUT-7.0.1.tar.gz
    -25f30d0c1651997b4412366ba0572f7f  MesaGLUT-7.0.1.tar.bz2
    -676ee6682a6ce78a5540554fd975c03e  MesaGLUT-7.0.1.zip
    -
    - - -

    New features

    -
      -
    • Added a bluegene-osmesa build config -
    - -

    Bug fixes

    -
      -
    • Fixed some MingW build issues -
    • Added a few missing OpenGL 2.0 API entrypoints: -
        -
      • glVertexAttrib4bv -
      • glVertexAttrib4iv -
      • glVertexAttrib4ubv -
      • glVertexAttrib4uiv -
      • glVertexAttrib4usv -
      -
    • Fixed glDrawPixels(GL_STENCIL_INDEX) pixel transfer bug 11457 -
    • GLSL bug fix: added vec2(vec4) constructor -
    • GLSL bug fix: .strq and .rgba writemasks didn't always work -
    • Stencil pixel map didn't always work for glDrawPixels (bug 11475) -
    • Fixed polygon stipple bug in i915 driver -
    • Binding a zero-sized texture didn't disable texturing (bug 11309) -
    • Queries of GL_INFO_LOG_LENGTH, GL_SHADER_SOURCE_LENGTH didn't include -the terminating zero (bug 11588) -
    • glXChooseFBConfig() in Xlib driver didn't handle GLX_STEREO flag properly -
    • Fixed a GLSL function call bug (#11731) -
    • glPointParameteriv(GL_DISTANCE_ATTENUATION_EXT) didn't work (bug 11754) -
    • glGetAttribLocation() always returned 1 (bug 11774) -
    • Fixed a few memory-related bugs in GLU library -
    - - -

    Changes

    -
      -
    • The libOSMesa library version has been reverted to 6.5.3 (soname=6) -in order to avoid application linking issues. Otherwise, applications -previously linked with libOSMesa.so.6 would no longer link with libOSMesa.so.7 -
    • Dropped obsolete, unmaintained Windows project files for VC6 and VC7. -
    - - -

    To Do (someday) items

    -
      -
    • Switch to freeglut -
    • Fix linux-glide target/driver. -
    • Improved lambda and derivative calculation for frag progs. -
    - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.0.2.html b/mesalib/docs/relnotes-7.0.2.html deleted file mode 100644 index 9238d2b38..000000000 --- a/mesalib/docs/relnotes-7.0.2.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - Mesa Release Notes - - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.0.2 Release Notes / November 10, 2007

    - -

    -Mesa 7.0.2 is a stable release with bug fixes since version 7.0. -

    - - -

    MD5 checksums

    -
    -c9cf607f36e7e50172f5f9c7d552c34e  MesaLib-7.0.2.tar.gz
    -93e6ed7924ff069a4f883b4fce5349dc  MesaLib-7.0.2.tar.bz2
    -10c324c3613f90f059cb8429f700f300  MesaLib-7.0.2.zip
    -aa8b1244a5de1d23e5814bf9b67f1435  MesaDemos-7.0.2.tar.gz
    -11a10410bae7be85cf25bc7119966468  MesaDemos-7.0.2.tar.bz2
    -1dd0b5fd6d69430a2fd76a6adbfd8fff  MesaDemos-7.0.2.zip
    -a7dbf25c025955858bd2d89a6eb6db4c  MesaGLUT-7.0.2.tar.gz
    -3a33f8efc8c58a592a854cfc7a643286  MesaGLUT-7.0.2.tar.bz2
    -eba4ef2aa8c362ead81b54357f1903a3  MesaGLUT-7.0.2.zip
    -
    - - -

    New features

    -
      -
    • Updated Windows VC7 project files -
    • Added DESTDIR variable for 'make install' -
    • Added pkg-config files for gl, glu, glut and glw libraries -
    • Added bluegene-xlc-osmesa and catamount-osmesa-pgi configs -
    • Support for Intel G33/Q33/Q35 graphics chipsets -
    - -

    Bug fixes

    -
      -
    • Fixed a vertex buffer wrapping issue (bug 9962) -
    • Added mutex protection around texture object reference counters -
    • Added checking/support for additional chips in the i915/i945 family -(see 11978) -
    • Fixed a blending/banding issue (bug 11931) -
    • Fixed a GLU matrix inversion bug (#6748) -
    • Fixed problem with large glDrawArrays calls and indirect rendering (bug 12141) -
    • Fixed an assortment of i965 driver bugs -
    • Fixed x86-64 vertex transformation bug (12216) -
    • Fixed X server crash caused by multiple indirect rendering clients -
    • Parsing of state.texgen in ARB vertex/fragment programs didn't work (bug 12313) -
    • Fixed a glCopyPixels/glPixelZoom bug (12417) -
    • Fixed a bug when using glMaterial in display lists (bug 10604) -
    • Fixed a few GLUT/Fortran issues (Bill Mitchell) -
    • Fixed Blender crash bug (12164) -
    • Fixed some issues preventing cross-compiling -
    • Fixed up broken GL_ATI_separate_stencil extension -
    • glDrawArrays(count=0) led to a crash -
    • Fix SSE code gen memory leak, possible crash -
    • Fixed MMX 565 rgb conversion problem (bug 12614) -
    • Added -fno-strict-aliasing and -fPIC flags for gcc -
    • Fixed Blender crash in Unichrome driver (bug 13142) -
    - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.0.3.html b/mesalib/docs/relnotes-7.0.3.html deleted file mode 100644 index 4fcb94dcc..000000000 --- a/mesalib/docs/relnotes-7.0.3.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - Mesa Release Notes - - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.0.3 Release Notes / April 4, 2008

    - -

    -Mesa 7.0.3 is a stable release with bug fixes since version 7.0.2. -

    - - -

    MD5 checksums

    -
    -3fd1cb76531b2515ef7db92d9a93dbf8  MesaLib-7.0.3.tar.gz
    -e6e6379d7793af40a6bc3ce1bace572e  MesaLib-7.0.3.tar.bz2
    -97882bac195229ee0b78cab82e0e3be1  MesaLib-7.0.3.zip
    -8abf6bbcb1661e7dd4ce73b3fbb85898  MesaDemos-7.0.3.tar.gz
    -47fd6863621d3c9c7dbb870ab7f0c303  MesaDemos-7.0.3.tar.bz2
    -99e442e14da1928f76a7297bb421a3af  MesaDemos-7.0.3.zip
    -2b50fe9fadc4709b57c52adef09fce3c  MesaGLUT-7.0.3.tar.gz
    -0ff23c4e91b238abae63a5fc9fa003e7  MesaGLUT-7.0.3.tar.bz2
    -70e83554a4462dad28e0d6e20f79aada  MesaGLUT-7.0.3.zip
    -
    - - -

    Bug fixes

    -
      -
    • Added missing glw.pc.in file to release tarball -
    • Fix GLUT/Fortran issues -
    • GLSL gl_FrontLightModelProduct.sceneColor variable wasn't defined -
    • Fix crash upon GLSL variable array indexes (not yet supported) -
    • Two-sided stencil test didn't work in software rendering -
    • Fix two-sided lighting bugs/crashes (bug 13368) -
    • GLSL gl_FrontFacing didn't work properly -
    • glGetActiveUniform returned incorrect sizes (bug 13751) -
    • Fix several bugs relating to uniforms and attributes in GLSL API (Bruce Merry, bug 13753) -
    • glTexImage3D(GL_PROXY_TEXTURE_3D) mis-set teximage depth field -
    • Fixed GLX indirect vertex array rendering bug (14197) -
    • Fixed crash when deleting framebuffer objects (bugs 13507, 14293) -
    • User-defined clip planes enabled for R300 (bug 9871) -
    • Fixed glBindTexture() crash upon bad target (bug 14514) -
    • Fixed potential crash in glDrawPixels(GL_DEPTH_COMPONENT) (bug 13915) -
    • Bad strings given to glProgramStringARB() didn't generate GL_INVALID_OPERATION -
    • Fixed minor point rasterization regression (bug 11016) -
    • state.texenv.color state var didn't work in GL_ARB_fragment_program (bug 14931) -
    • glBitmap from a PBO didn't always work -
    • glGetTexImage into a PBO didn't always work -
    • Comments at the end of ARB vertex/fragment programs crashed the parser -
    - -

    Changes

    -
      -
    • Updated glext.h to version 40 -
    - - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.0.4.html b/mesalib/docs/relnotes-7.0.4.html deleted file mode 100644 index 66b85c409..000000000 --- a/mesalib/docs/relnotes-7.0.4.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - Mesa Release Notes - - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.0.4 Release Notes / August 16, 2008

    - -

    -Mesa 7.0.4 is a stable release with bug fixes since version 7.0.3. -

    - - -

    MD5 checksums

    -
    -909afa3a01ae31478d363837681415ac  MesaLib-7.0.4.tar.gz
    -8d7bacbe0234742a5d08c8088c4619e9  MesaLib-7.0.4.tar.bz2
    -5e44261ef85b049a868e1785d9adc276  MesaLib-7.0.4.zip
    -53dcd77d37a819feaf50b5fcdd0a6e0f  MesaDemos-7.0.4.tar.gz
    -c1215b31c5f7b85f81eed3bfba07d556  MesaDemos-7.0.4.tar.bz2
    -b1825a7361f116b28d82d328077630b4  MesaDemos-7.0.4.zip
    -d7677d015f52602d1bf8b837fb717848  MesaGLUT-7.0.4.tar.gz
    -f5f8b46f7e763d9f7b7d1d115c1c44ee  MesaGLUT-7.0.4.tar.bz2
    -a786775271a02c62a3370b13b26bf48d  MesaGLUT-7.0.4.zip
    -
    - - -

    Bug fixes

    -
      -
    • define #extension GL_ARB_texture_rectangle in shading language -
    • fixed WIN32 compile problem in libGLU -
    • Fixed a per-vertex glMaterial bug which could cause bad lighting -
    • Fixed potential crash in AA/smoothed triangle rendering when using a fragment shader -
    • Fixed glDrawElement + VBO segfault (bug 16156) -
    • Fixed GLSL linker bug causing generic vertex attributes to get aliased -
    • Fixed stack overflow when using glPixelZoom on Windows -
    • Fixed broken all(bvec2) GLSL function, added misc missing bvec constructors -
    • ARB program "state.clip[n].plane" didn't parse correctly -
    • Fixed broken glGetUniformiv() (bug 13774) -
    - -

    Changes

    -
      -
    • Including the latest glext.h and glxext.h header files from Khronos -
    • Added support for DragonFly OS -
    • Added a build config for FreeBSD static libs (Anatolij Shkodin) -
    • Enabled GL_EXT_multi_draw_arrays extension in R200/R300 drivers -
    • Enabled GL_ARB_point_sprite extension in I965 driver -
    • Enabled GL_EXT_texture_sRGB extension in I965 driver -
    • Added support for GL shading language in I965 driver -
    - - - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.0.html b/mesalib/docs/relnotes-7.0.html deleted file mode 100644 index 3240bb298..000000000 --- a/mesalib/docs/relnotes-7.0.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - Mesa Release Notes - - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.0 Release Notes / June 22, 2007

    - -

    -Mesa 7.0 is a stable release, featuring OpenGL 2.1 API support. -A number of bugs have been fixed since the 6.5.3 release. -

    - - -

    MD5 checksums

    -
    -35a1698986f7ac8dc435624ee9256cda  MesaLib-7.0.tar.gz
    -50c371455fa7532c04aa0a970f9bc51f  MesaLib-7.0.tar.bz2
    -bcedb6f43c97c1bc49e5cc7f12835722  MesaLib-7.0.zip
    -9bad332c7b74f59be96556135212ca9e  MesaDemos-7.0.tar.gz
    -fada2bc1f29da513e015fda1e3abd0c0  MesaDemos-7.0.tar.bz2
    -84e3bbe470d983ae32f1f0c779faf99e  MesaDemos-7.0.zip
    -76c7bb54f9850c689eba844f6daed332  MesaGLUT-7.0.tar.gz
    -4af28296e02772ef1de00e4e79bf3d12  MesaGLUT-7.0.tar.bz2
    -9043cb0b54cc03d1874728d74b12188c  MesaGLUT-7.0.zip
    -
    - - -

    New features

    -
      -
    • OpenGL 2.0 and 2.1 API support. -
    - -

    Bug fixes

    -
      -
    • Fixed a few fog-related bugs. -
    • Fixed broken GLSL mix() function. -
    • Fixed broken GLSL exp() functions. -
    • Fixed GLSL mod4(vec4, vec4) bug. -
    • Implemented GLSL asin(), acos(), atan() functions. -
    • Fixed an R300 driver bug that caused Xorg composite manager to crash -
    • Fixed R300 vertex program/matrix bug (10848) -
    • GLSL dFdx() and dFdy() work for fragment program inputs now (texcoords) -
    • Specifying an invalid texture unit as a sampler could lead to a crash -
    • The GLX protocol request for glXDestroyPBuffer() was incorrect (bug 10983) -
    • ARB vp state.light[n].half value was incorrect (bug 10987) -
    • Fixed a positional light source bug (bug 11009) -
    • Fixed point size attenuation problem (bug 11042) -
    • glPopAttrib didn't restore texture object's LOD bias (bug 11049) -
    • Fixed a TLS / TEXTREL problem (bug 7459) -
    - - -

    Internal code changes

    -
      -
    • Some texture code consolidation and simplifiction (Ian Romanick) -
    • R300 driver clean-ups. -
    - - -

    To Do (someday) items

    -
      -
    • Switch to freeglut -
    • Fix linux-glide target/driver. -
    • Improved lambda and derivative calculation for frag progs. -
    - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.1.html b/mesalib/docs/relnotes-7.1.html deleted file mode 100644 index 07f5ac900..000000000 --- a/mesalib/docs/relnotes-7.1.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.1 Release Notes / August 26, 2008

    - -

    -Mesa 7.1 is a new development release. -There have been many internal code changes since Mesa 7.0.x. -It should be relatively stable, but those who are especially concerned about -stability should wait for Mesa 7.2 or use Mesa 7.0.4 (the previous stable -release). -

    -

    -Note that this version of Mesa does not use the GEM memory manager. -The master branch of git uses GEM. -

    -

    -DRM version 2.3.1 should be used with Mesa 7.1 -

    - - -

    MD5 checksums

    -
    -971c2fe6e6949dc5ba200a6f97a6dc81  MesaLib-7.1.tar.gz
    -6bff7f532d16f90f944a400c8bd7074d  MesaLib-7.1.tar.bz2
    -d48224bf9d54c3da6776adb4869ba024  MesaLib-7.1.zip
    -3de268420efca43e9a19ab506cdfc993  MesaDemos-7.1.tar.gz
    -abfc9775e1462363af8ec160d1feb01f  MesaDemos-7.1.tar.bz2
    -f7b3623387c4036e9895cd9ac0dfad99  MesaDemos-7.1.zip
    -fdf348f78cd09304b6ff801ef8acc8eb  MesaGLUT-7.1.tar.gz
    -f6d88a4eeb02e98c7e92f1c895d3c76b  MesaGLUT-7.1.tar.bz2
    -4dc102a5ca51e1c41dde87d3f8c7b22a  MesaGLUT-7.1.zip
    -
    - - -

    New features

    -
      -
    • autoconf-based configuration (and clean-up of Makefiles) -
    • Assorted DRI driver enhancements -
    • Reduced dependencies between X server and Mesa -
    • GL_EXT_texture_from_pixmap extension for Xlib driver -
    • Support for the GL shading language with i965 driver (implemented by Intel) -
    • ATI R500 series support (Radeon X1300–X1950) in r300 DRI driver -
    - - -

    Bug fixes

    -
      -
    • Numerous GLSL fixes -
    • Fixed some error code/detection bugs in the GLSL-related API functions -
    • Lots of DRI driver fixes. -
    - - -

    To Do (someday) items

    -
      -
    • Remove the MEMCPY() and _mesa_memcpy() wrappers and just use memcpy(). -Probably do the same for malloc, calloc, etc. -The wrappers were useful in the past for memory debugging but now we -have valgrind. Not worried about SunOS 4 support anymore either... -
    • Switch to freeglut -
    • Fix linux-glide target/driver. -
    • Improved lambda and derivative calculation for frag progs. -
    - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.10.1.html b/mesalib/docs/relnotes-7.10.1.html deleted file mode 100644 index 675bab225..000000000 --- a/mesalib/docs/relnotes-7.10.1.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.10.1 Release Notes / March 2, 2011

    - -

    -Mesa 7.10.1 is a bug fix release which fixes bugs found since the 7.10 release. -

    -

    -Mesa 7.10.1 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -4b4cee19f3bf16eb78bd4cc278ccf812  MesaLib-7.10.1.tar.gz
    -efe8da4d80c2a5d32a800770b8ce5dfa  MesaLib-7.10.1.tar.bz2
    -0fd2b1a025934de3f8cecf9fb9b57f4c  MesaLib-7.10.1.zip
    -42beb0f5188d544476c19496f725fa67  MesaGLUT-7.10.1.tar.gz
    -637bb8a20fdad89f7382b4ea83f896e3  MesaGLUT-7.10.1.tar.bz2
    -bdbf3ffb2606d6aa8afabb6c6243b91b  MesaGLUT-7.10.1.zip
    -
    - - -

    New features

    -

    None.

    - -

    Bug fixes

    -

    This list is likely incomplete.

    -
      -
    • Fix an off-by-one bug in a vsplit assertion.
    • -
    • Fix incorrect handling of layout qualifier -with in, out, attribute, and varying.
    • - -
    • Fix an i965 shader bug where the negative absolute value was generated instead of the absolute value of a negation.
    • - -
    • Fix numerous issues handling precision qualifiers in GLSL ES.
    • - -
    • Fixed a few GLX protocol encoder bugs (Julien Cristau)
    • - -
    • Assorted Gallium llvmpipe driver bug fixes
    • - -
    • Assorted Mesa/Gallium state tracker bug fixes
    • - -
    • Bug 26795 - gl_FragCoord off by one in Gallium drivers.
    • - -
    • Bug 29164 - [GLSL 1.20] invariant variable shouldn't be used before declaration
    • - -
    • Bug 29823 - GetUniform[if]v busted
    • - -
    • Bug 29927 - [glsl2] fail to compile shader with constructor for array of struct type
    • - -
    • Bug 30156 - [i965] After updating to Mesa 7.9, Civilization IV starts to show garbage
    • - -
    • Bug 31923 - [GLSL 1.20] allowing inconsistent centroid declaration between two vertex shaders
    • - -
    • Bug 31925 - [GLSL 1.20] "#pragma STDGL invariant(all)" fail
    • - -
    • Bug 32214 - [gles2]no link error happens when missing vertex shader or frag shader
    • - -
    • Bug 32375 - [gl gles2] Not able to get the attribute by function glGetVertexAttribfv
    • - -
    • Bug 32541 - Segmentation Fault while running an HDR (high dynamic range) rendering demo
    • - -
    • Bug 32569 - [gles2] glGetShaderPrecisionFormat not implemented yet
    • - -
    • Bug 32695 - [glsl] SIGSEGV glcpp/glcpp-parse.y:833
    • - -
    • Bug 32831 - [glsl] division by zero crashes GLSL compiler
    • - -
    • Bug 32910 - Keywords 'in' and 'out' not handled properly for GLSL 1.20 shaders
    • - -
    • Bug 33219 -[GLSL bisected] implicit sized array triggers segfault in ir_to_mesa_visitor::copy_propagate
    • - -
    • Bug 33306 - GLSL integer division by zero crashes GLSL compiler
    • - -
    • Bug 33308 -[glsl] ast_to_hir.cpp:3016: virtual ir_rvalue* ast_jump_statement::hir(exec_list*, _mesa_glsl_parse_state*): Assertion `ret != __null' failed.
    • - -
    • Bug 33316 - uniform array will be allocate one line more and initialize it when it was freed will abort
    • - -
    • Bug 33386 - Dubious assembler in read_rgba_span_x86.S
    • - -
    • Bug 33388 - Dubious assembler in xform4.S
    • - -
    • Bug 33433 - Error in x86-64 API dispatch code.
    • - -
    • Bug 33507 - [glsl] GLSL preprocessor modulus by zero crash
    • - -
    • Bug 33508 - [glsl] GLSL compiler modulus by zero crash
    • - -
    • Bug 33916 - Compiler accepts reserved operators % and %=
    • - -
    • Bug 34030 - [bisected] Starcraft 2: some effects are corrupted or too big
    • - -
    • Bug 34047 - Assert in _tnl_import_array() when using GLfixed vertex datatypes with GLESv2
    • - -
    • Bug 34114 - Sun Studio build fails due to standard library functions not being in global namespace
    • - -
    • Bug 34179 - Nouveau 3D driver: nv50_pc_emit.c:863 assertion error kills Compiz
    • - -
    • Bug 34198 - [GLSL] implicit sized array with index 0 used gets assertion
    • - -
    • Ubuntu bug 691653 - compiz crashes when using alt-tab (the radeon driver kills it)
    • - -
    • Meego bug 13005 - Graphics GLSL issue lead to camera preview fail on Pinetrail
    • - - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-7.10..mesa-7.10.1
    -
    - -

    Alberto Milone (1):

    -
      -
    • r600c: add evergreen ARL support.
    • -
    - -

    Brian Paul (21):

    -
      -
    • draw: Fix an off-by-one bug in a vsplit assertion.
    • -
    • docs: add links to 7.9.1 and 7.10 release notes
    • -
    • docs: added news item for 7.9.1 and 7.10 release
    • -
    • gallivm: work around LLVM 2.6 bug when calling C functions
    • -
    • gallivm: fix copy&paste error from previous commit
    • -
    • mesa: fix a few format table mistakes, assertions
    • -
    • mesa: fix num_draw_buffers==0 in fixed-function fragment program generation
    • -
    • mesa: don't assert in GetIntegerIndexed, etc
    • -
    • mesa: check for dummy renderbuffer in _mesa_FramebufferRenderbufferEXT()
    • -
    • llvmpipe: make sure binning is active when we begin/end a query
    • -
    • st/mesa: fix incorrect fragcoord.x translation
    • -
    • softpipe: fix off-by-one error in setup_fragcoord_coeff()
    • -
    • cso: fix loop bound in cso_set_vertex_samplers()
    • -
    • st/mesa: fix incorrect glCopyPixels position on fallback path
    • -
    • st/mesa: set renderbuffer _BaseFormat in a few places
    • -
    • st/mesa: fix the default case in st_format_datatype()
    • -
    • st/mesa: need to translate clear color according to surface's base format
    • -
    • docs: update 7.9.2 release notes with Brian's cherry-picks
    • -
    • docs: add link to 7.10.1 release notes
    • -
    • mesa: implement glGetShaderPrecisionFormat()
    • -
    • docs: updated environment variable list
    • -
    - -

    Bryce Harrington (1):

    -
      -
    • r300g: Null pointer check for buffer deref in gallium winsys
    • -
    - -

    Chad Versace (20):

    -
      -
    • glsl: At link-time, check that globals have matching centroid qualifiers
    • -
    • glcpp: Fix segfault when validating macro redefinitions
    • -
    • glsl: Fix parser rule for type_specifier
    • -
    • glsl: Change default value of ast_type_specifier::precision
    • -
    • glsl: Add semantic checks for precision qualifiers
    • -
    • glsl: Add support for default precision statements
    • -
    • glsl: Remove redundant semantic check in parser
    • -
    • glsl: Fix semantic checks on precision qualifiers
    • -
    • glsl: Fix segfault due to missing printf argument
    • -
    • glsl: Mark 'in' variables at global scope as read-only
    • -
    • mesa: Refactor handling of extension strings
    • -
    • mesa: Add/remove extensions in extension string
    • -
    • mesa: Change dependencies of some OES extension strings
    • -
    • mesa: Change OES_point_sprite to depend on ARB_point_sprite
    • -
    • mesa: Change OES_standard_derivatives to be stand-alone extension
    • -
    • i915: Disable extension OES_standard_derivatives
    • -
    • glcpp: Raise error when modulus is zero
    • -
    • glsl: Set operators '%' and '%=' to be reserved when GLSL < 1.30
    • -
    • glsl: Reinstate constant-folding for division by zero
    • -
    • tnl: Add support for datatype GL_FIXED in vertex arrays
    • -
    - -

    Chia-I Wu (1):

    -
      -
    • mesa: Add glDepthRangef and glClearDepthf to APIspec.xml.
    • -
    - -

    Christoph Bumiller (1):

    -
      -
    • nv50,nvc0: do not forget to apply sign mode to saved TGSI inputs
    • -
    - -

    Cyril Brulebois (1):

    -
      -
    • Point to bugs.freedesktop.org rather than bugzilla.freedesktop.org
    • -
    - -

    Dave Airlie (3):

    -
      -
    • radeon/r200: fix fbo-clearmipmap + gen-teximage
    • -
    • radeon: calculate complete texture state inside TFP function
    • -
    • radeon: avoid segfault on 3D textures.
    • -
    - -

    Dimitry Andric (4):

    -
      -
    • mesa: s/movzx/movzbl/
    • -
    • mesa: s/movzxw/movzwl/ in read_rgba_span_x86.S
    • -
    • glapi: adding @ char before type specifier in glapi_x86.S
    • -
    • glapi: add @GOTPCREL relocation type
    • -
    - -

    Eric Anholt (16):

    -
      -
    • glsl: Fix the lowering of variable array indexing to not lose write_masks.
    • -
    • i965/fs: When producing ir_unop_abs of an operand, strip negate.
    • -
    • i965/vs: When MOVing to produce ABS, strip negate of the operand.
    • -
    • i965/fs: Do flat shading when appropriate.
    • -
    • i965: Avoid double-negation of immediate values in the VS.
    • -
    • intel: Make renderbuffer tiling choice match texture tiling choice.
    • -
    • i965: Fix dead pointers to fp->Parameters->ParameterValues[] after realloc.
    • -
    • docs: Add a relnote for the Civ IV on i965.
    • -
    • glapi: Add entrypoints and enums for GL_ARB_ES2_compatibility.
    • -
    • mesa: Add extension enable bit for GL_ARB_ES2_compatibility.
    • -
    • mesa: Add actual support for glReleaseShaderCompiler from ES2.
    • -
    • mesa: Add support for glDepthRangef and glClearDepthf.
    • -
    • mesa: Add getters for ARB_ES2_compatibility MAX_*_VECTORS.
    • -
    • mesa: Add getter for GL_SHADER_COMPILER with ARB_ES2_compatibility.
    • -
    • i965: Fix a bug in i965 compute-to-MRF.
    • -
    • i965/fs: Add a helper function for detecting math opcodes.
    • -
    - -

    Fredrik Höglund (1):

    -
      -
    • st/mesa: fix a regression from cae2bb76
    • -
    - -

    Ian Romanick (42):

    -
      -
    • docs: Add 7.10 md5sums
    • -
    • glsl: Support the 'invariant(all)' pragma
    • -
    • glcpp: Generate an error for division by zero
    • -
    • glsl: Add version_string containing properly formatted GLSL version
    • -
    • glsl & glcpp: Refresh autogenerated lexer and parser files.
    • -
    • glsl: Disallow 'in' and 'out' on globals in GLSL 1.20
    • -
    • glsl: Track variable usage, use that to enforce semantics
    • -
    • glsl: Allow 'in' and 'out' when 'layout' is also available
    • -
    • docs: Initial bits of 7.10.1 release notes
    • -
    • mesa: bump version to 7.10.1-devel
    • -
    • doc: Update 7.10.1 release notes
    • -
    • glsl: Emit errors or warnings when 'layout' is used with 'attribute' or 'varying'
    • -
    • docs: Update 7.10.1 release notes
    • -
    • glsl: Refresh autogenerated lexer and parser files.
    • -
    • glsl: Don't assert when the value returned by a function has no rvalue
    • -
    • linker: Set sizes for non-global arrays as well
    • -
    • linker: Propagate max_array_access while linking functions
    • -
    • docs: Update 7.10.1 release notes
    • -
    • mesa: glGetUniform only returns a single element of an array
    • -
    • linker: Generate link errors when ES shaders are missing stages
    • -
    • mesa: Fix error checks in GetVertexAttrib functions
    • -
    • Use C-style system headers in C++ code to avoid issues with std:: namespace
    • -
    • docs: Update 7.10.1 release notes
    • -
    • glapi: Regenerate for GL_ARB_ES2_compatibility.
    • -
    • mesa: Connect glGetShaderPrecisionFormat into the dispatch table
    • -
    • i965: Set correct values for range/precision of fragment shader types
    • -
    • i915: Set correct values for range/precision of fragment shader types
    • -
    • intel: Fix typeos from 3d028024 and 790ff232
    • -
    • glsl: Ensure that all GLSL versions are supported in the stand-alone compiler
    • -
    • glsl: Reject shader versions not supported by the implementation
    • -
    • mesa: Initial size for secondary color array is 3
    • -
    • glsl: Finish out the reduce/reduce error fixes
    • -
    • glsl: Regenerate compiler and glcpp files from cherry picks
    • -
    • linker: Fix off-by-one error implicit array sizing
    • -
    • docs: update 7.10.1 release notes with Ian's recent cherry picks
    • -
    • i915: Only mark a register as available if all components are written
    • -
    • i915: Calculate partial result to temp register first
    • -
    • i915: Force lowering of all types of indirect array accesses in the FS
    • -
    • docs: Update 7.10.1 with (hopefully) the last of the cherry picks
    • -
    • docs: Clean up bug fixes list
    • -
    • intel: Remove driver date and related bits from renderer string
    • -
    • mesa: set version string to 7.10.1 (final)
    • -
    - -

    Jian Zhao (1):

    -
      -
    • mesa: fix an error in uniform arrays in row calculating.
    • -
    - -

    Julien Cristau (3):

    -
      -
    • glx: fix request lengths
    • -
    • glx: fix GLXChangeDrawableAttributesSGIX request
    • -
    • glx: fix length of GLXGetFBConfigsSGIX
    • -
    - -

    Keith Packard (1):

    -
      -
    • glsl: Eliminate reduce/reduce conflicts in glsl grammar
    • -
    - -

    Kenneth Graunke (20):

    -
      -
    • glsl: Expose a public glsl_type::void_type const pointer.
    • -
    • glsl: Don't bother unsetting a destructor that was never set.
    • -
    • glsl, i965: Remove unnecessary talloc includes.
    • -
    • glcpp: Remove use of talloc reference counting.
    • -
    • ralloc: Add a fake implementation of ralloc based on talloc.
    • -
    • Convert everything from the talloc API to the ralloc API.
    • -
    • ralloc: a new MIT-licensed recursive memory allocator.
    • -
    • Remove talloc from the make and automake build systems.
    • -
    • Remove talloc from the SCons build system.
    • -
    • Remove the talloc sources from the Mesa repository.
    • -
    • glsl: Fix use of uninitialized values in _mesa_glsl_parse_state ctor.
    • -
    • i965/fs: Apply source modifier workarounds to POW as well.
    • -
    • i965: Fix shaders that write to gl_PointSize on Sandybridge.
    • -
    • i965/fs: Avoid register coalescing away gen6 MATH workarounds.
    • -
    • i965/fs: Correctly set up gl_FragCoord.w on Sandybridge.
    • -
    • i965: Increase Sandybridge point size clamp.
    • -
    • i965/fs: Refactor control flow stack handling.
    • -
    • i965: Increase Sandybridge point size clamp in the clip state.
    • -
    • glsl: Use reralloc instead of plain realloc.
    • -
    • Revert "i965/fs: Correctly set up gl_FragCoord.w on Sandybridge."
    • -
    - -

    Marek Olšák (4):

    -
      -
    • docs: fix messed up names with special characters in relnotes-7.10
    • -
    • docs: fix messed up names with special characters in relnotes-7.9.1
    • -
    • mesa: fix texture3D mipmap generation for UNSIGNED_BYTE_3_3_2
    • -
    • st/dri: Track drawable context bindings
    • -
    - -

    Paulo Zanoni (1):

    -
      -
    • dri_util: fail driCreateNewScreen if InitScreen is NULL
    • -
    - -

    Sam Hocevar (2):

    -
      -
    • docs: add glsl info
    • -
    • docs: fix glsl_compiler name
    • -
    - -

    Tom Fogal (1):

    -
      -
    • Regenerate gl_mangle.h.
    • -
    - -

    Tom Stellard (2):

    -
      -
    • r300/compiler: Disable register rename pass on r500
    • -
    • r300/compiler: Don't erase sources when converting RGB->Alpha
    • -
    - -

    Vinson Lee (3):

    -
      -
    • ralloc: Add missing va_end following va_copy.
    • -
    • mesa: Move declaration before code in extensions.c.
    • -
    • mesa: Move loop variable declarations outside for loop in extensions.c.
    • -
    - -

    nobled (1):

    -
      -
    • glx: Put null check before use
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.10.2.html b/mesalib/docs/relnotes-7.10.2.html deleted file mode 100644 index 753eb6ceb..000000000 --- a/mesalib/docs/relnotes-7.10.2.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.10.2 Release Notes / April 6, 2011

    - -

    -Mesa 7.10.2 is a bug fix release which fixes bugs found since the 7.10 release. -

    -

    -Mesa 7.10.2 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -2f9f444265534a2cfd9a99d1a8291089  MesaLib-7.10.2.tar.gz
    -f5de82852f1243f42cc004039e10b771  MesaLib-7.10.2.tar.bz2
    -47836e37bab6fcafe3ac90c9544ba0e9  MesaLib-7.10.2.zip
    -175120325828f313621cc5bc6c504803  MesaGLUT-7.10.2.tar.gz
    -8c71d273f5f8d6c5eda4ffc39e0fe03e  MesaGLUT-7.10.2.tar.bz2
    -03036c8efe7b791a90fa0f2c41b43f43  MesaGLUT-7.10.2.zip
    -
    - - -

    New features

    -

    None.

    - -

    Bug fixes

    -

    This list is likely incomplete.

    -
      - -
    • Bug 29172 - Arrandale - Pill Popper Pops Pills
    • - -
    • Bug 31159 - shadow problem in 0ad game
    • - -
    • Bug 32688 - [RADEON:KMS:R300G] some games have a wireframe or outline visible
    • - -
    • Bug 32949 - [glsl wine] Need for Speed renders incorrectly with GLSL enabled
    • - -
    • Bug 34203 - [GLSL] fail to call long chains across shaders
    • - -
    • Bug 34376 - [GLSL] allowing assignment to unsized array -
        -
      • The commit message incorrectly - lists bug - 34367.
      • -
      -
    • - -
    • Bug 34370 - [GLSL] "i<5 && i<4" in for loop fails
    • - -
    • Bug 34374 - [GLSL] fail to redeclare an array using initializer
    • - -
    • Bug 35073 - [GM45] Alpha test is broken when rendering to FBO with no color attachment
    • - -
    • Bug 35483 - util_blit_pixels_writemask: crash in line 322 of src/gallium/auxiliary/util/u_blit.c
    • - - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-7.10.1..mesa-7.10.2
    -
    - -

    Note: Reverted commits and the reverts are not included in this list.

    - -

    Alex Deucher (2):

    -
      -
    • r600c: add new ontario pci ids
    • -
    • r600g: add some additional ontario pci ids
    • -
    - -

    Benjamin Franzke (1):

    -
      -
    • st/dri: Fix surfaceless gl using contexts with previous bound surfaces
    • -
    - -

    Brian Paul (9):

    -
      -
    • docs: pull 7.9.2 release notes into 7.10 branch
    • -
    • docs: update news.html with 7.10.1 and 7.9.2 releases
    • -
    • docs: fill in 7.10.1 release data
    • -
    • docs: add, fix release notes links
    • -
    • docs: update info about Mesa packaging/contents
    • -
    • docs: update prerequisites, remove old demo info
    • -
    • mesa: Guard against null pointer deref in fbo validation
    • -
    • st/mesa: Apply LOD bias from correct texture unit
    • -
    • glsl: silence warning in printf() with a cast
    • -
    - -

    Chad Versace (1):

    -
      -
    • i965: Fix tex_swizzle when depth mode is GL_RED
    • -
    - -

    Dave Airlie (1):

    -
      -
    • r600: don't close fd on failed load
    • -
    - -

    Eric Anholt (2):

    -
      -
    • i965: Apply a workaround for the Ironlake "vertex flashing".
    • -
    • i965: Fix alpha testing when there is no color buffer in the FBO.
    • -
    - -

    Fabian Bieler (1):

    -
      -
    • st/mesa: Apply LOD from texture object
    • -
    - -

    Henri Verbeet (1):

    -
      -
    • st/mesa: Validate state before doing blits.
    • -
    - -

    Ian Romanick (13):

    -
      -
    • docs: Add 7.10.1 md5sums
    • -
    • glsl: Refactor AST-to-HIR code handling variable initializers
    • -
    • glsl: Refactor AST-to-HIR code handling variable redeclarations
    • -
    • glsl: Process redeclarations before initializers
    • -
    • glsl: Function signatures cannot have NULL return type
    • -
    • glsl: Add several function / call related validations
    • -
    • linker: Add imported functions to the linked IR
    • -
    • glsl: Use insert_before for lists instead of open coding it
    • -
    • glsl: Only allow unsized array assignment in an initializer
    • -
    • glcpp: Refresh autogenerated lexer files
    • -
    • docs: Initial bits of 7.10.2 release notes
    • -
    • mesa: set version string to 7.10.2
    • -
    • mesa: Remove nonexistant files from _FILES lists
    • -
    - -

    Jerome Glisse (1):

    -
      -
    • r600g: move user fence into base radeon structure
    • -
    - -

    José Fonseca (2):

    -
      -
    • mesa: Fix typo glGet*v(GL_TEXTURE_COORD_ARRAY_*).
    • -
    • mesa: More glGet* fixes.
    • -
    - -

    Kenneth Graunke (4):

    -
      -
    • glcpp: Rework lexer to use a SKIP state rather than REJECT.
    • -
    • glcpp: Remove trailing contexts from #if rules.
    • -
    • i965/fs: Fix linear gl_Color interpolation on pre-gen6 hardware.
    • -
    • glsl: Accept precision qualifiers on sampler types, but only in ES.
    • -
    - -

    Marek Olšák (15):

    -
      -
    • st/mesa: fix crash when DrawBuffer->_ColorDrawBuffers[0] is NULL
    • -
    • st/mesa: fail to alloc a renderbuffer if st_choose_renderbuffer_format fails
    • -
    • r300/compiler: fix the saturate modifier when applied to TEX instructions
    • -
    • r300/compiler: fix translating the src negate bits in pair_translate
    • -
    • r300/compiler: Abs doesn't cancel Negate (in the conversion to native swizzles)
    • -
    • r300/compiler: TEX instructions don't support negation on source arguments
    • -
    • r300/compiler: do not set TEX_IGNORE_UNCOVERED on r500
    • -
    • r300/compiler: saturate Z before the shadow comparison
    • -
    • r300/compiler: fix equal and notequal shadow compare functions
    • -
    • r300/compiler: remove unused variables
    • -
    • st/mesa: fix crash when using both user and vbo buffers with the same stride
    • -
    • r300g: fix alpha-test with no colorbuffer
    • -
    • r300g: tell the GLSL compiler to lower the continue opcode
    • -
    • r300/compiler: propagate SaturateMode down to the result of shadow comparison
    • -
    • r300/compiler: apply the texture swizzle to shadow pass and fail values too
    • -
    - -

    Michel Dänzer (1):

    -
      -
    • Use proper source row stride when getting depth/stencil texels.
    • -
    - -

    Tom Stellard (4):

    -
      -
    • r300/compiler: Use a 4-bit writemask in pair instructions
    • -
    • prog_optimize: Fix reallocating registers for shaders with loops
    • -
    • r300/compiler: Fix vertex shader MAD instructions with constant swizzles
    • -
    • r300/compiler: Don't try to convert RGB to Alpha in full instructions
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.10.3.html b/mesalib/docs/relnotes-7.10.3.html deleted file mode 100644 index db655179a..000000000 --- a/mesalib/docs/relnotes-7.10.3.html +++ /dev/null @@ -1,308 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.10.3 Release Notes / June 13, 2011

    - -

    -Mesa 7.10.3 is a bug fix release which fixes bugs found since the 7.10.2 release. -

    -

    -Mesa 7.10.3 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -d77b02034c11d6c2a55c07f82367d780  MesaLib-7.10.3.tar.gz
    -8c38fe8266be8e1ed1d84076ba5a703b  MesaLib-7.10.3.tar.bz2
    -614d063ecd170940d9ae7b355d365d59  MesaLib-7.10.3.zip
    -8768fd562ede7ed763d92b2d22232d7a  MesaGLUT-7.10.3.tar.gz
    -1496415b89da9549f0f3b34d9622e2e2  MesaGLUT-7.10.3.tar.bz2
    -1f29d0e7398fd3bf9f36f5db02941198  MesaGLUT-7.10.3.zip
    -
    - - -

    New features

    -

    None.

    - - -

    Bug fixes

    -

    This list is likely incomplete.

    -
      - -
    • Bug 29162 - mesa/darwin is severly broken
    • - -
    • Bug 31590 - Black space between colors on mole hill example
    • - -
    • Bug 32395 - [glsl] Incorrect code generation for shadow2DProj() with bias
    • - -
    • Bug 32564 - [llvmpipe] prog: Unknown command line argument '-disable-mmx'. Try: 'prog -help' with llvm-2.9svn
    • - -
    • Bug 32835 - [glsl] recursive #define results in infinite stack recursion
    • - -
    • Bug 33303 - [glsl] ir_constant_expression.cpp:72: virtual ir_constant* ir_expression::constant_expression_value(): Assertion `op[0]->type->base_type == op[1]->type->base_type' failed.
    • - -
    • Bug 33314 - [glsl] ir_constant_expression.cpp:122: virtual ir_constant* ir_expression::constant_expression_value(): Assertion `op[0]->type->base_type == GLSL_TYPE_BOOL' failed.
    • - -
    • Bug 33512 - [SNB] case ogles2conform/GL/gl_FragCoord/gl_FragCoord_xy_frag.test and gl_FragCoord_w_frag.test fail
    • - -
    • Bug 34280 - r200 mesa-7.10 font distortion
    • - -
    • Bug 34321 - The ARB_fragment_program subset of ARB_draw_buffers not implemented
    • - -
    • Bug 35603 - GLSL compiler freezes compiling shaders
    • - -
    • Bug 36173 - struct renderbuffer's 'format' field never set when using FBO
    • - -
    • Bug 36238 - Mesa release files don't contain scons control files
    • - -
    • Bug 36410 - [SNB] Rendering errors in 3DMMES subtest taiji
    • - -
    • Bug 36527 - [wine] Wolfenstein: Failed to translate rgb instruction.
    • - -
    • Bug 36651 - mesa requires bison and flex to build but configure does not check for them
    • - -
    • Bug 36738 - Openarena crash with r300g, swrastg + llvm > 2.8
    • - -
    • Bug 37648 - Logic error in mesa/main/teximage.c:texsubimage
    • - -
    • Bug 37739 - Color clear of FBO without color buffer crashes
    • - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-7.10.2..mesa-7.10.3
    -
    - -

    Alan Hourihane (1):

    -
      -
    • Check for out of memory when creating fence
    • -
    - -

    Alex Buell (1):

    -
      -
    • configure: bump LIBDRM_REQUIRED to 2.4.24
    • -
    - -

    Alex Deucher (2):

    -
      -
    • r600c: add new pci ids
    • -
    • r600g: add new pci ids
    • -
    - -

    Brian Paul (19):

    -
      -
    • docs: add link to 7.10.2 release notes
    • -
    • scons: remove dangling reference to state_trackers/python/SConscript
    • -
    • Makefile: add missing Scons files
    • -
    • llvmpipe: document issue with LLVM 2.8 and earlier with AVX
    • -
    • docs: replace llvmpipe/README with docs/llvmpipe.html
    • -
    • glsl: add static qualifier to silence warning
    • -
    • glsl: add cast to silence signed/unsigned comparison warning
    • -
    • mesa: s/height/depth/ in texsubimage()
    • -
    • mesa: fix void pointer arithmetic warnings
    • -
    • mesa: add some missing GLAPIENTRY keywords
    • -
    • mesa: check that flex/bison are installed
    • -
    • st/mesa: fix incorrect texture level/face/slice accesses
    • -
    • draw: fix edge flag handling in clipper (for unfilled tris/quads/polygons)
    • -
    • vbo: check array indexes to prevent negative indexing
    • -
    • vbo: remove node->count > 0 test in vbo_save_playback_vertex_list()
    • -
    • st/mesa: fix software accum buffer format bug
    • -
    • mesa: add include/c99/inttypes.h include/c99/stdbool.h include/c99/stdint.h files to tarballs
    • -
    • docs: 7.10.3 release notes skeleton file, links
    • -
    • mesa: bump version to 7.10.3
    • -
    - -

    Carl Worth (2):

    -
      -
    • glcpp: Simplify calling convention of parser's active_list functions
    • -
    • glcpp: Fix attempts to expand recursive macros infinitely (bug #32835).
    • -
    - -

    Dave Airlie (1):

    -
      -
    • st/mesa: fix compressed mipmap generation.
    • -
    - -

    Eric Anholt (19):

    -
      -
    • i965: Fix the VS thread limits for GT1, and clarify the WM limits on both.
    • -
    • glsl: Avoid cascading errors when looking for a scalar boolean and failing.
    • -
    • glsl: Semantically check the RHS of `&&' even when short-circuiting.
    • -
    • glsl: Semantically check the RHS of `||' even when short-circuiting.
    • -
    • glsl: When we've emitted a semantic error for ==, return a bool constant.
    • -
    • glsl: Perform type checking on "^^" operands.
    • -
    • intel: Use _mesa_base_tex_format for FBO texture attachments.
    • -
    • swrast: Don't assert against glReadPixels of GL_RED and GL_RG.
    • -
    • mesa: Add a gl_renderbuffer.RowStride field like textures have.
    • -
    • mesa: Add a function to set up the default renderbuffer accessors.
    • -
    • intel: Use Mesa core's renderbuffer accessors for depth.
    • -
    • mesa: Use _mesa_get_format_bytes to refactor out the RB get_pointer_*
    • -
    • mesa: Use _mesa_get_format_bytes to refactor out the RB get_row_*
    • -
    • mesa: Add renderbuffer accessors for R8/RG88/R16/RG1616.
    • -
    • swrast: Don't try to adjust_colors for <8bpc when handling R16, RG1616.
    • -
    • intel: Use mesa core's R8, RG88, R16, RG1616 RB accessors.
    • -
    • Revert "intel: Add spans code for the ARB_texture_rg support."
    • -
    • mesa: Add support for the ARB_fragment_program part of ARB_draw_buffers.
    • -
    • mesa: Add support for OPTION ATI_draw_buffers to ARB_fp.
    • -
    - -

    Hans de Goede (1):

    -
      -
    • texstore: fix regression stricter check for memcpy path for unorm88 and unorm1616
    • -
    - -

    Henri Verbeet (3):

    -
      -
    • mesa: Also update the color draw buffer if it's explicitly set to GL_NONE.
    • -
    • glx: Destroy dri2Hash on DRI2 display destruction.
    • -
    • glx: Only remove the glx_display from the list after it's destroyed.
    • -
    - -

    Ian Romanick (9):

    -
      -
    • docs: Add 7.10.2 md5sums
    • -
    • glsl: Fix off-by-one error setting max_array_access for non-constant indexing
    • -
    • ir_to_mesa: Handle shadow compare w/projection and LOD bias correctly
    • -
    • intel: Fix ROUND_DOWN_TO macro
    • -
    • glsl: Regenerate compiler and glcpp files from cherry picks
    • -
    • i965: Remove hint_gs_always and resulting dead code
    • -
    • mesa: Don't try to clear a NULL renderbuffer
    • -
    • mesa: Ignore blits to/from missing buffers
    • -
    • docs: Add list of bugs fixed in 7.10.3 release
    • -
    - -

    Jeremy Huddleston (18):

    -
      -
    • apple: Update GL specs
    • -
    • apple: Rename glcontextmodes.[ch] to glxconfig.[ch]
    • -
    • apple: Rename __GLcontextModes to struct glx_config
    • -
    • apple: Rename GLXcontext
    • -
    • apple: Re-add driContext and do_destroy
    • -
    • apple: Rename _gl_context_modes_find_visual to glx_config_find_visual
    • -
    • apple: Rename GLXcontext
    • -
    • apple: Change from XExtDisplayInfo to struct glx_display
    • -
    • apple: ifdef out come glapi-foo on darwin
    • -
    • glx: Dead code removal
    • -
    • apple: Build darwin using applegl rather than indirect
    • -
    • apple: Fix build failures in applegl_glx.c
    • -
    • darwin: Define GALLIUM_DRIVERS_DIRS in darwin config
    • -
    • apple: Package applegl source into MesaLib tarball
    • -
    • darwin: Set VG_LIB_{NAME,GLOB} to fix make install
    • -
    • darwin: Don't link against libGL when building libOSMesa
    • -
    • darwin: Fix VG_LIB_GLOB to also match the unversioned symlink
    • -
    • osmesa: Fix missing symbols when GLX_INDIRECT_RENDERING is defined.
    • -
    - -

    José Fonseca (13):

    -
      -
    • llvmpipe: Update readme.
    • -
    • mesa: GL_PROVOKING_VERTEX_EXT is a GLenum, not GLboolean.
    • -
    • mesa: Fix GetVertexAttrib* inside display lists.
    • -
    • draw: Fix draw_variant_output::format's type.
    • -
    • gallivm: Tell LLVM to not assume a 16-byte aligned stack on x86.
    • -
    • gallivm: Fix for dynamically linked LLVM 2.8 library.
    • -
    • st/wgl: Adjust the pbuffer invisible window size.
    • -
    • st/wgl: Fix debug output format specifiers of stw_framebuffer_get_size().
    • -
    • st/wgl: Prevent spurious framebuffer sizes when the window is minimized.
    • -
    • st/wgl: Cope with zero width/height windows.
    • -
    • st/wgl: Allow to create pbuffers bigger than the desktop.
    • -
    • st/wgl: Remove buggy assertion.
    • -
    • wgl: Don't hold on to user supplied HDC.
    • -
    - -

    Kenneth Graunke (10):

    -
      -
    • i965/fs: Switch W and 1/W in Sandybridge interpolation setup.
    • -
    • i965: Refactor Sandybridge implied move handling.
    • -
    • i965: Resolve implied moves in brw_dp_READ_4_vs_relative.
    • -
    • intel: Add IS_GT2 macro for recognizing Sandybridge GT2 systems.
    • -
    • i965: Allocate the whole URB to the VS and fix calculations for Gen6.
    • -
    • intel: Support glCopyTexImage() from ARGB8888 to XRGB8888.
    • -
    • glsl: Fix memory error when creating the supported version string.
    • -
    • glsl: Regenerate autogenerated file builtin_function.cpp.
    • -
    • i965: Rename various gen6 #defines to match the documentation.
    • -
    • i965: Never enable the GS on Gen6.
    • -
    - -

    Kostas Georgiou (1):

    -
      -
    • r600c/g: Add pci id for FirePro 2270
    • -
    - -

    Marek Olšák (18):

    -
      -
    • tgsi/ureg: bump the limit of immediates
    • -
    • st/mesa: fix changing internal format via RenderbufferStorage
    • -
    • st/mesa: GenerateMipmap should not be killed by conditional rendering
    • -
    • swrast: BlitFramebuffer should not be killed by conditional rendering
    • -
    • st/mesa: BlitFramebuffer should not be killed by conditional rendering
    • -
    • st/mesa: CopyTex(Sub)Image should not be killed by conditional rendering
    • -
    • st/mesa: conditional rendering should not kill texture decompression via blit
    • -
    • mesa: forbid UseProgram to be called inside Begin/End
    • -
    • mesa: UseShaderProgramEXT and Uniform* shouldn't be allowed inside Begin/End
    • -
    • mesa: queries of non-existent FBO attachments should return INVALID_OPERATION
    • -
    • r300g: fix draw_vbo splitting on r3xx-r4xx
    • -
    • r300g: fix texturing with non-3D textures and wrap R mode set to sample border
    • -
    • r300g: fix occlusion queries when depth test is disabled or zbuffer is missing
    • -
    • r300g: clear can be killed by render condition
    • -
    • st/mesa: remove asserts in st_texture_image_copy
    • -
    • mesa: fix up assertion in _mesa_source_buffer_exists
    • -
    • mesa: invalidate framebuffer if internal format of renderbuffer is changed
    • -
    • mesa: return after invalidating renderbuffer
    • -
    - -

    Matt Turner (1):

    -
      -
    • r300/compiler: align memory allocations to 8-bytes
    • -
    - -

    Tom Stellard (3):

    -
      -
    • r300/compiler: Fix incorrect presubtract conversion
    • -
    • r300/compiler: Fix dataflow analysis bug with ELSE blocks
    • -
    • r300/compiler: Limit instructions to 3 source selects
    • -
    - -

    Vinson Lee (1):

    -
      -
    • gallivm: Disable MMX-disabling code on llvm-2.9.
    • -
    - -

    Zou Nan hai (1):

    -
      -
    • i965: Align interleaved URB write length to 2
    • -
    - -

    pepp (1):

    -
      -
    • st/mesa: assign renderbuffer's format field when allocating storage
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.10.html b/mesalib/docs/relnotes-7.10.html deleted file mode 100644 index 6bf8f30e5..000000000 --- a/mesalib/docs/relnotes-7.10.html +++ /dev/null @@ -1,2798 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.10 Release Notes / January 7, 2011

    - -

    -Mesa 7.10 is a new development release. -People who are concerned with stability and reliability should stick -with a previous release or wait for Mesa 7.10.1. -

    -

    -Mesa 7.10 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -0a70c15c135561824bdcae92bf232e43  MesaLib-7.10.tar.gz
    -33fb94eccc02cbb4d8d1365615e38e46  MesaLib-7.10.tar.bz2
    -5cafdc0eda0f9bf370b95c98df3338fa  MesaLib-7.10.zip
    -bc644be551ed585fc4f66c16b64a91c9  MesaGLUT-7.10.tar.gz
    -5c2677a155672352d62b177e4f0f92e8  MesaGLUT-7.10.tar.bz2
    -2ce5001f74496d1ba719ef74d910a5cf  MesaGLUT-7.10.zip
    -
    - - -

    New features

    -
      -
    • GL_ARB_explicit_attrib_location extension (Intel and software drivers). -
    • GL_ARB_texture_rg (Intel, software drivers, gallium drivers). -
    • GL_EXT_separate_shader_objects extension (Intel and software drivers). -
    • GL_NV_primitive_restart extension (Gallium softpipe, llvmpipe). -
    • New fragment shader back-end for i965-class hardware. -
    • Support for Sandybridge chipset in i965 DRI driver. -
    - - -

    Bug fixes

    -

    This list is likely incomplete.

    -
      -
    • Bug 28800 - [r300c, r300g] Texture corruption with World of Warcraft
    • - -
    • Bug 29420 - Amnesia / HPL2 RendererFeatTest - not rendering correctly
    • - -
    • Bug 29946 - [swrast] piglit valgrind glsl-array-bounds-04 fails
    • - -
    • Bug 30261 - [GLSL 1.20] allowing inconsistent invariant declaration between two vertex shaders
    • - -
    • Bug 30632 - [softpipe] state_tracker/st_manager.c:489: st_context_notify_invalid_framebuffer: Assertion `stfb && stfb->iface == stfbi' failed.
    • - -
    • Bug 30694 - wincopy will crash on Gallium drivers when going to front buffer
    • - -
    • Bug 30771 - [r600g] vert-tex glsl demo
    • - -
    • Bug 30787 - Invalid asm shader does not generate draw-time error when used with GLSL shader
    • - -
    • Bug 30974 - [llvmpipe] SIGABRT src/gallium/drivers/llvmpipe/lp_state_fs.c:779
    • - -
    • Bug 30993 - getFramebufferAttachmentParameteriv wrongly generates error
    • - -
    • Bug 31101 - [glsl2] abort() in ir_validate::visit_enter(ir_assignment *ir)
    • - -
    • Bug 31193 - [regression] aa43176e break water reflections
    • - -
    • Bug 31194 - The mesa meta save/restore code doesn't ref the current GLSL program
    • - -
    • Bug 31371 - glslparsertest: ir.cpp:358: ir_constant::ir_constant(const glsl_type*, const ir_constant_data*): Assertion `(type->base_type >= 0) && (type->base_type <= 3)' failed.
    • - -
    • Bug 31439 - Crash in glBufferSubData() with size == 0
    • - -
    • Bug 31495 - [i965 gles2c bisected] OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed
    • - -
    • Bug 31514 - isBuffer returns true for unbound buffers
    • - -
    • Bug 31560 - [tdfx] tdfx_tex.c:702: error: ‘const struct gl_color_table’ has no member named ‘Format’
    • - -
    • Bug 31617 - Radeon/Compiz: 'failed to attach dri2 front buffer', error case not handled
    • - -
    • Bug 31648 - [GLSL] array-struct-array gets assertion: `(size >= 1) && (size <= 4)' failed.
    • - -
    • Bug 31650 - [GLSL] varying gl_TexCoord fails to be re-declared to different size in the second shader
    • - -
    • Bug 31673 - GL_FRAGMENT_PRECISION_HIGH preprocessor macro undefined in GLSL ES
    • - -
    • Bug 31690 - i915 shader compiler fails to flatten if in Aquarium webgl demo.
    • - -
    • Bug 31832 - [i915] Bad renderbuffer format: 21
    • - -
    • Bug 31841 - [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !
    • - -
    • Bug 31894 - Writing to gl_PointSize with GLES2 corrupts other varyings
    • - -
    • Bug 31909 - [i965] brw_fs.cpp:1461: void fs_visitor::emit_bool_to_cond_code(ir_rvalue*): Assertion `expr->operands[i]->type->is_scalar()' failed.
    • - -
    • Bug 31934 - [gallium] Mapping empty buffer object causes SIGSEGV
    • - -
    • Bug 31983 - [i915 gles2] "if (expression with builtin/varying variables) discard" breaks linkage
    • - -
    • Bug 31985 - [GLSL 1.20] initialized uniform array considered as "unsized"
    • - -
    • Bug 31987 - [gles2] if input a wrong pname(GL_NONE) to glGetBoolean, it will not case GL_INVALID_ENUM
    • - -
    • Bug 32035 - [GLSL bisected] comparing unsized array gets segfault
    • - -
    • Bug 32070 - llvmpipe renders stencil demo incorrectly
    • - -
    • Bug 32273 - assertion fails when starting vdrift 2010 release with shaders enabled
    • - -
    • Bug 32287 - [bisected GLSL] float-int failure
    • - -
    • Bug 32311 - [965 bisected] Array look-ups broken on GM45
    • - -
    • Bug 32520 - [gles2] glBlendFunc(GL_ZERO, GL_DST_COLOR) will result in GL_INVALID_ENUM
    • - -
    • Bug 32825 - egl_glx driver completely broken in 7.9 branch [fix in master]
    • - - - -
    - - -

    Changes

    -

    Adam Jackson (2):

    -
      -
    • i965: Update renderer strings for sandybridge
    • -
    • drivers/x11: unifdef XFree86Server
    • -
    - -

    Alex Deucher (30):

    -
      -
    • r600c: fix mipmap stride on evergreen
    • -
    • r600c: add reloc for CB_COLOR0_ATTRIB
    • -
    • r600c: pull over 6xx/7xx vertex fixes for evergreen
    • -
    • r600c: fix segfault in evergreen stencil code
    • -
    • r100: revalidate after radeon_update_renderbuffers
    • -
    • r600c: add missing radeon_prepare_render() call on evergreen
    • -
    • r600c: properly align mipmaps to group size
    • -
    • egl_dri2: Add radeon chip ids
    • -
    • r600c/evergreen: texture align is group_bytes just like 6xx/7xx
    • -
    • r600g: fix buffer alignment
    • -
    • r600g: All EVENT_WRITE packets need the EVENT_INDEX field
    • -
    • r600g: translate ARR instruction for evergreen
    • -
    • r600g: use meaningful defines for chiprev
    • -
    • r600g: use full range of VS resources for vertex samplers
    • -
    • r600g: fix additional EVENT_WRITE packet
    • -
    • r600g: fix some winsys functions to deal properly with evergreen
    • -
    • r600c: add Ontario Fusion APU support
    • -
    • r600g: add support for ontario APUs
    • -
    • r600c: fix VC flush on cedar and palm
    • -
    • gallium/egl: fix r300 vs r600 loading
    • -
    • r600c: fix some opcodes on evergreen
    • -
    • r600c: bump texture limits to hw limits
    • -
    • r600g: bump texture/cb limits appropriately for evergreen
    • -
    • radeon: bump mip tree levels to 15
    • -
    • r600g: fix rendering with a vertex attrib having a zero stride
    • -
    • r600g: remove useless switch statements
    • -
    • r600g: add support for NI (northern islands) asics
    • -
    • r600c: add support for NI asics
    • -
    • r600g: support up to 64 shader constants
    • -
    • r600c: fix up SQ setup in blit code for Ontario/NI
    • -
    - -

    Andre Maasikas (3):

    -
      -
    • r600c: fix buffer height setting in dri2 case
    • -
    • r600g: break alu clause earlier
    • -
    • r600g: fix evergreen interpolation setup
    • -
    - -

    Andrew Randrianasulu (2):

    -
      -
    • dri/nv04: Don't expose ARB_texture_env_combine/dot3.
    • -
    • dri/nv04: Enable eng3dm for A8/L8 textures.
    • -
    - -

    Aras Pranckevicius (2):

    -
      -
    • glsl: fix crash in loop analysis when some controls can't be determined
    • -
    • glsl: fix matrix type check in ir_algebraic
    • -
    - -

    Bas Nieuwenhuizen (3):

    -
      -
    • r600g: set ENABLE_KILL in the shader state in the new design
    • -
    • r600g: set ENABLE_KILL on evergreen too
    • -
    • r600g: use dirty list to track dirty blocks
    • -
    - -

    Ben Skeggs (3):

    -
      -
    • nv50: DST
    • -
    • nv50: DPH
    • -
    • nv50: silence some unknown get_param warnings
    • -
    - -

    Benjamin Franzke (2):

    -
      -
    • st/egl image: multiply drm buf-stride with blocksize
    • -
    • r600g: implement texture_get_handle (needed for eglExportDRMImageMESA)
    • -
    - -

    Brian Paul (296):

    -
      -
    • glx: add const qualifiers to __indirect_glMultiDrawArraysEXT()
    • -
    • glsl2: fix signed/unsigned comparison warning
    • -
    • llvmpipe: cast to silence warning
    • -
    • llvmpipe: s/boolean/unsigned/ in bitfield to silence warning
    • -
    • nv50: use unsigned int for bitfields to silence warnings
    • -
    • tgsi: fix incorrect usage_mask for shadow tex instructions
    • -
    • gallivm: expand AoS sampling to cover all filtering modes
    • -
    • gallivm: fix incorrect vector shuffle datatype
    • -
    • gallivm: move i32_vec_type inside the #ifdef
    • -
    • mesa: include mfeatures.h in formats.c
    • -
    • gallivm: fix wrong return value in bitwise functions
    • -
    • tgsi/sse: fix aos_to_soa() loop to handle num_inputs==0
    • -
    • gallivm: added missing case for PIPE_TEXTURE_RECT
    • -
    • gallium: better docs for pipe_rasterizer_state::sprite_coord_enable
    • -
    • gallium: rework handling of sprite_coord_enable state
    • -
    • gallium/docs: added new pipeline.txt diagram
    • -
    • mesa: don't call valid_texture_object() in non-debug builds
    • -
    • glsl2: silence compiler warnings in printf() calls
    • -
    • docs: remove old broken link
    • -
    • docs: mark as obsolete, remove dead links
    • -
    • llvmpipe: fix query bug when no there's no scene
    • -
    • gallivm: remove debug code
    • -
    • llvmpipe: maintain fragment shader state for draw module
    • -
    • llvmpipe: indentation fix
    • -
    • llvmpipe: reformatting, remove trailing whitespace, etc
    • -
    • llvmpipe: clean-up, comments in setup_point_coefficient()
    • -
    • llvmpipe: rename sprite field, add sprite_coord_origin
    • -
    • llvmpipe: implement sprite coord origin modes
    • -
    • draw: fix test for using the wide-point stage
    • -
    • llvmpipe: check bitshift against PIPE_MAX_SHADER_OUTPUTS
    • -
    • draw: check bitshift against PIPE_MAX_SHADER_OUTPUS
    • -
    • Merge branch 'sprite-coord'
    • -
    • draw: new draw_fs.[ch] files
    • -
    • glsl2: fix typo in error msg
    • -
    • gallivm: fix lp_build_sample_compare()
    • -
    • softpipe: add missing calls to set draw vertex samplers/views
    • -
    • mesa: don't advertise bogus GL_ARB_shading_language_120 extension
    • -
    • configs: remove egl-swrast target from linux-dri config
    • -
    • llvmpipe: fix sprite texcoord setup for non-projective texturing
    • -
    • mesa: fix assertions to handle srgb formats
    • -
    • st/mesa: add missing MESA_FORMAT_S8 case in st_mesa_format_to_pipe_format()
    • -
    • st/mesa: use the wrapped renderbuffer in CopyPixels()
    • -
    • llvmpipe: make min/max lod and lod bias dynamic state
    • -
    • llvmpipe: make texture border_color dynamic state
    • -
    • softpipe: fix repeat() function for NPOT textures
    • -
    • gallivm: fix repeat() function for NPOT textures
    • -
    • swrast: update comments for REMAINDER() macro
    • -
    • softpipe: rename sp_state_fs.c -> sp_state_shader.c
    • -
    • softpipe: make shader-related functions static
    • -
    • softpipe: make blend/stencil/depth functions static
    • -
    • softpipe: make sampler state functions static
    • -
    • softpipe: make vertex state functions static
    • -
    • softpipe: make rasterizer state functions static
    • -
    • softpipe: make stream out state functions static
    • -
    • softpipe: make clip state functions static
    • -
    • softpipe: minor asst. clean-ups
    • -
    • softpipe: allocate tile data on demand
    • -
    • llvmpipe: fix swizzling of texture border color
    • -
    • softpipe: fix swizzling of texture border color
    • -
    • draw: pass sampler state down to llvm jit state
    • -
    • gallivm: check for level=0 case in lp_build_minify()
    • -
    • gallivm: added some comments
    • -
    • draw: check for null sampler pointers
    • -
    • swrast: fix choose_depth_texture_level() to respect mipmap filtering state
    • -
    • st/mesa: replace assertion w/ conditional in framebuffer invalidation
    • -
    • glsl2: fix signed/unsigned comparison warning
    • -
    • st/xlib: add some comments
    • -
    • ir_to_mesa: assorted clean-ups, const qualifiers, new comments
    • -
    • mesa: remove assertion w/ undeclared variable texelBytes
    • -
    • gallivm: remove newlines
    • -
    • draw/llvmpipe: replace DRAW_MAX_TEXTURE_LEVELS with PIPE_MAX_TEXTURE_LEVELS
    • -
    • mesa: reformatting, comments, code movement
    • -
    • x11: fix breakage from gl_config::visualType removal
    • -
    • gallivm: work-around trilinear mipmap filtering regression with LLVM 2.8
    • -
    • mesa: remove post-convolution width/height vars
    • -
    • gallivm: add compile-time option to emit inst addrs and/or line numbers
    • -
    • llvmpipe: code to dump bytecode to file (disabled)
    • -
    • gallivm: added lp_build_print_vec4()
    • -
    • gallivm: added lp_build_load_volatile()
    • -
    • glsl: add ir_unop_round_even case to silence unhandled enum warning
    • -
    • st/mesa: fix regressions in glDrawPixels(GL_STENCIL_INDEX)
    • -
    • st/mesa: reformatting in st_cb_drawpixels.c
    • -
    • st/mesa: use GLuint to avoid problem w/ uint not defined on mingw32
    • -
    • st/mesa: update function name, comments
    • -
    • gallivm: use util_snprintf()
    • -
    • llvmpipe: remove lp_setup_coef*.c files from Makefile
    • -
    • mesa: fix mesa version string construction
    • -
    • gallivm: fix incorrect type for zero vector in emit_kilp()
    • -
    • llvmpipe/draw: always enable LLVMAddInstructionCombiningPass()
    • -
    • draw: use float version of LLVM Mul/Add instructions
    • -
    • draw: fix typo in comment
    • -
    • mesa: add GL_RG case to _mesa_source_buffer_exists()
    • -
    • mesa: add missing cases for packing red/green images
    • -
    • st/mesa: added cases for GL_COMPRESSED_RED/RG in st_choose_format()
    • -
    • docs: update texture red/green support in GL3.txt
    • -
    • docs: add GL_ARB_texture_rg to release notes
    • -
    • mesa: driver hook for primitive restart
    • -
    • mesa: set/get primitive restart state
    • -
    • mesa: API spec for primitive restart
    • -
    • mesa: regenerated files with primitive restart
    • -
    • mesa: plug in primitive restart function
    • -
    • vbo: support for primitive restart
    • -
    • gallium: new CAP, state for primitive restart
    • -
    • st/mesa: support for primitive restart
    • -
    • draw: implement primitive splitting for primitive restart
    • -
    • softpipe: enable primitive restart
    • -
    • llvmpipe: enable primitive restart
    • -
    • docs: added GL_NV_primitive_restart extension
    • -
    • Merge branch 'primitive-restart-cleanup'
    • -
    • winsys/xlib: formatting fixes
    • -
    • winsys/xlib: use Bool type for shm field
    • -
    • winsys/xlib: fix up allocation/dealloction of XImage
    • -
    • winsys/xlib: rename xm->xlib
    • -
    • galahad: silence warnings
    • -
    • mesa: move declaration before code
    • -
    • docs: updated GL3 status for primitive restart
    • -
    • mesa: 80-column wrapping
    • -
    • mesa: simplify fbo format checking code
    • -
    • mesa: split up the image.c file
    • -
    • mesa: add pixel packing for unscaled integer types
    • -
    • mesa: _mesa_ClearColorIuiEXT() and _mesa_ClearColorIiEXT()
    • -
    • mesa: _mesa_is_format_integer() function
    • -
    • mesa: minor reformatting, clean-ups
    • -
    • mesa: added _mesa_is_fragment_shader_active() helper
    • -
    • mesa: new glDrawPixels error check for integer formats
    • -
    • softpipe: added some texture sample debug code (disabled)
    • -
    • mesa: added new gl_extensions::EXT_gpu_shader4 field
    • -
    • mesa: added new gl_framebuffer::_IntegerColor field
    • -
    • mesa: added glGet query for GL_RGBA_INTEGER_MODE_EXT
    • -
    • mesa: compute _IntegerColor field in _mesa_test_framebuffer_completeness()
    • -
    • mesa: added cases for GL_EXT_texture_integer formats
    • -
    • mesa: added cases for GL_EXT_texture_integer
    • -
    • st/mesa: add format selection for signed/unsigned integer formats
    • -
    • mesa: simplify target_can_be_compressed() function
    • -
    • glapi: GL_EXT_texture_integer API
    • -
    • glapi: include/build EXT_texture_integer.xml
    • -
    • mesa: regenerated API files for GL_EXT_texture_integer
    • -
    • mesa: plug in GL_EXT_texture_integer functions
    • -
    • mesa: display list support for GL_EXT_texture_integer
    • -
    • st/mesa: be smarter choosing texture format for glDrawPixels()
    • -
    • softpipe: remove >32bpp color restriction
    • -
    • mesa: silence enum comparison warning
    • -
    • mesa: fix uninitialized var warning
    • -
    • xlib: silence unused var warning
    • -
    • util: use pointer_to_func() to silence warning
    • -
    • rtasm: use pointer_to_func() to silence warning
    • -
    • translate: use function typedefs, casts to silence warnings
    • -
    • translate: remove unused prototypes
    • -
    • mesa: additional glReadPixels error checks for GL_EXT_texture_integer
    • -
    • mesa: additional switch cases for GL_EXT_texture_integer
    • -
    • mesa: additional teximage error checks for GL_EXT_texture_integer
    • -
    • mesa: do integer FB / shader validation check in _mesa_valid_to_render()
    • -
    • mesa: call _mesa_valid_to_render() in glDrawPixels, glCopyPixels, glBitmap
    • -
    • mesa: remove the unused _mesa_is_fragment_shader_active() function
    • -
    • mesa: fix bug in _mesa_is_format_integer()
    • -
    • mesa: rename function to _mesa_is_format_integer_color()
    • -
    • mesa: remove 'normalized' parameter from _mesa_VertexAttribIPointer()
    • -
    • vbo: re-indent file
    • -
    • glapi: xml spec file for GL_EXT_gpu_shader4
    • -
    • glapi: include EXT_gpu_shader4.xml
    • -
    • glapi: regenerated API files
    • -
    • mesa: plug in stubs for glBindFragDataLocation(), glGetFragDataLocation()
    • -
    • mesa: add glGetUniformuiv(), plug in uint glUniform funcs
    • -
    • mesa: plug in more GL_EXT_gpu_shader4 functions
    • -
    • mesa: add new GLvertexformat entries for integer-valued attributes
    • -
    • mesa: implement integer-valued vertex attribute functions
    • -
    • mesa: add gl_client_array::Integer field and related vertex array state code
    • -
    • mesa: consolidate glVertex/Color/etcPointer() code
    • -
    • mesa: state/queries for GL_MIN/MAX_PROGRAM_TEXEL_OFFSET_EXT
    • -
    • mesa: glArrayElement support for integer-valued arrays
    • -
    • mesa: clean-up array element code
    • -
    • mesa: add extension table entry for GL_EXT_gpu_shader4
    • -
    • mesa: remove obsolete comment
    • -
    • mesa: fix incorrect type in _mesa_texstore_rgba_int16()
    • -
    • mesa: fix integer cases in _mesa_is_legal_format_and_type()
    • -
    • mesa: add const qualifier to _mesa_is_legal_format_and_type()
    • -
    • mesa: additional integer formats in _mesa_bytes_per_pixel()
    • -
    • mesa: pixel transfer ops do not apply to integer-valued textures
    • -
    • mesa: remove dead code
    • -
    • osmesa: fix renderbuffer memleak in OSMesaMakeCurrent()
    • -
    • mesa: use GLubyte for edge flag arrays
    • -
    • mesa: move the gl_config struct declaration
    • -
    • dri/util: add a bunch of comments
    • -
    • mesa: remove always-false conditional in check_compatible()
    • -
    • mesa: fix aux/accum comment and error message mixups
    • -
    • llvmpipe: assign context's frag shader pointer before using it
    • -
    • llvmpipe: add a cast
    • -
    • mesa: silence new warnings in texobj.c
    • -
    • egl/gdi: fix typo: xsurf->gsurf
    • -
    • mesa: code to unpack RGBA as uints
    • -
    • gallivm: implement scatter stores into temp register file
    • -
    • gallivm: add some LLVM var labels
    • -
    • gallivm: added debug code to dump temp registers
    • -
    • gallivm: add pixel offsets in scatter stores
    • -
    • gallivm: added lp_elem_type()
    • -
    • gallivm: implement execution mask for scatter stores
    • -
    • tgsi: remove unused function
    • -
    • llvmpipe: added some debug assertions, but disabled
    • -
    • gallivm: alloca() was called too often for temporary arrays
    • -
    • gallivm: add const qualifiers, fix comment string
    • -
    • softpipe: disable vertex texturing with draw/llvm
    • -
    • mesa: consolidate pixel packing/unpacking code
    • -
    • mesa: rename vars in pixel pack/unpack code
    • -
    • mesa: implement uint texstore code
    • -
    • mesa: remove stray GL_FLOAT case in _mesa_is_legal_format_and_type()
    • -
    • mesa: make fixed-pt and byte-valued arrays a runtime feature
    • -
    • softpipe: can't no-op depth test stage when occlusion query is enabled
    • -
    • mesa: no-op glBufferSubData() on size==0
    • -
    • mesa: #include mfeatures.h in enums.h
    • -
    • mesa: improve error message
    • -
    • mesa: add missing formats in _mesa_format_to_type_and_comps()
    • -
    • mesa: handle more pixel types in mipmap generation code
    • -
    • mesa: make glIsBuffer() return false for never bound buffers
    • -
    • mesa: fix glDeleteBuffers() regression
    • -
    • tdfx: s/Format/_BaseFormat/
    • -
    • mesa: consolidate assertions in teximage code
    • -
    • radeon: set gl_texture_image::TexFormat field in radeonSetTexBuffer2()
    • -
    • r600: set gl_texture_image::TexFormat field in r600SetTexBuffer2()
    • -
    • r200: set gl_texture_image::TexFormat field in r200SetTexBuffer2()
    • -
    • r300: set gl_texture_image::TexFormat field in r300SetTexBuffer2()
    • -
    • evergreen: set gl_texture_image::TexFormat field in evergreenSetTexBuffer()
    • -
    • st/mesa: fix glDrawPixels(depth/stencil) bugs
    • -
    • glsl: fix assorted MSVC warnings
    • -
    • mesa: add more work-arounds for acoshf(), asinhf(), atahf()
    • -
    • glsl: remove opt_constant_expression.cpp from SConscript
    • -
    • mesa: fix error messages and minor reindenting
    • -
    • mesa: whitespace cleanups
    • -
    • mesa: 80-column wrapping
    • -
    • mesa: reorder texture_error_check() params
    • -
    • mesa: minor clean-ups in context code
    • -
    • mesa: upgrade to glext.h version 66
    • -
    • mesa: pass gl_format to _mesa_init_teximage_fields()
    • -
    • mesa: fix error msg typo
    • -
    • glapi: rename GL3.xml to GL3x.xml as it covers all GL 3.x versions
    • -
    • mesa: hook up GL 3.x entrypoints
    • -
    • docs: update some GL 3.0 status
    • -
    • mesa: fix get_texture_dimensions() for texture array targets
    • -
    • swrast: init alpha value to 1.0 in opt_sample_rgb_2d()
    • -
    • glsl: fix off by one in register index assertion
    • -
    • glsl: use gl_register_file in a few places
    • -
    • mesa: rename, make _mesa_register_file_name() non-static
    • -
    • mesa: _mesa_valid_register_index() to validate register indexes
    • -
    • mesa: replace #defines with new gl_shader_type enum
    • -
    • mesa: use gl_shader_type enum
    • -
    • glsl: better handling of linker failures
    • -
    • glsl: start restoring some geometry shader code
    • -
    • mesa: add assertion and update comment in _mesa_format_image_size()
    • -
    • mesa: added _mesa_format_image_size64()
    • -
    • x11: remove test_proxy_teximage() function
    • -
    • st/mesa: fix mapping of zero-sized buffer objects
    • -
    • gallivm/llvmpipe: squash merge of the llvm-context branch
    • -
    • mesa: raise max texture sizes to 16K
    • -
    • softpipe: increase max texture size to 16K
    • -
    • mesa: replace large/MAX_WIDTH stack allocations with heap allocations
    • -
    • mesa: replace large/MAX_WIDTH stack allocations with heap allocations
    • -
    • swrast: avoid large stack allocations in blend code
    • -
    • swrast: avoid large stack allocations in tex combine code
    • -
    • st/mesa: avoid large stack allocations in readpixels code
    • -
    • mesa: replace more MAX_WIDTH stack allocations with heap allocations
    • -
    • gallivm/llvmpipe: remove lp_build_context::builder
    • -
    • gallivm: fix null builder pointers
    • -
    • mesa: fix GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME query
    • -
    • mesa: return GL_FRAMEBUFFER_DEFAULT as FBO attachment type
    • -
    • llvmpipe: fix broken stencil writemask
    • -
    • mesa: consolidate some compiler -D flags
    • -
    • swrast: allow GL_RG format in glDrawPixels()
    • -
    • swrast: fix indentation
    • -
    • swrast: accept GL_RG in glReadPixels()
    • -
    • swrast: restructure some glReadPixels() code
    • -
    • mesa: make glGet*(GL_NONE) generate GL_INVALID_ENUM
    • -
    • mesa: remove unneeded cast
    • -
    • mesa: update comments, remove dead code
    • -
    • st/mesa: new comment about updating state vars
    • -
    • mesa: add error margin to clip mask debug/check code
    • -
    • gallium/util: minor formatting fixes
    • -
    • mesa/llvm: use llvm-config --cppflags
    • -
    • st/mesa: fix mipmap generation bug
    • -
    • mesa: test for cube map completeness in glGenerateMipmap()
    • -
    • mesa: set gl_texture_object::_Complete=FALSE in incomplete()
    • -
    • mesa: consolidate glTexImage1/2/3D() code
    • -
    • mesa: simplify proxy texture code in texture_error_check()
    • -
    • mesa: consolidate the glTexSubImage1/2/3D() functions
    • -
    • mesa: consolidate glCopyTexImage1/2D() code
    • -
    • mesa: consolidate glCopyTexSubImage1/2/3D() functions
    • -
    • mesa: consolidate glCompressedTexImage1/2/3D() functions
    • -
    • mesa: make _mesa_test_proxy_teximage() easier to read
    • -
    • configure: use llvm-config --cppflags instead of --cflags
    • -
    • mesa: revamp error checking for compressed texture images
    • -
    • mesa: simplify target checking for TexImage functions
    • -
    • draw/llvm: don't flush in vs_llvm_delete()
    • -
    • tnl: Initialize gl_program_machine memory in run_vp.
    • -
    • tnl: a better way to initialize the gl_program_machine memory
    • -
    • mesa, st/mesa: disable GL_ARB_geometry_shader4
    • -
    • mesa/meta: fix broken assertion, rename stack depth var
    • -
    • glsl: new glsl_strtod() wrapper to fix decimal point interpretation
    • -
    • st/mesa: fix renderbuffer pointer check in st_Clear()
    • -
    - -

    Brian Rogers (1):

    -
      -
    • mesa: Add missing else in do_row_3D
    • -
    - -

    Chad Versace (25):

    -
      -
    • intel_extensions: Add ability to set GLSL version via environment
    • -
    • glsl: Add glsl_type::uvecN_type for N=2,3
    • -
    • glsl: Add lexer rules for uint and uvecN (N=2..4)
    • -
    • glsl: Changes in generated file glsl_lexer.cpp
    • -
    • glsl: Add lexer rules for << and >> in GLSL 1.30
    • -
    • glsl: Change generated file glsl_lexer.cpp
    • -
    • glsl: Implement ast-to-hir for binary shifts in GLSL 1.30
    • -
    • glsl: Implement constant expr evaluation for bitwise-not
    • -
    • glsl: Implement constant expr evaluation for bit-shift ops
    • -
    • glsl: Implement constant expr evaluation for bitwise logic ops
    • -
    • glsl: Fix ir validation for bit logic ops
    • -
    • glsl: Define shift_result_type() in ast_to_hir.cpp
    • -
    • glsl: Implement ast-to-hir for bit-shift-assignment
    • -
    • glsl: Define bit_logic_result_type() in ast_to_hir.cpp
    • -
    • glsl: Implement ast-to-hir for bit-logic ops
    • -
    • glsl: Fix lexer rule for ^=
    • -
    • glsl: Commit generated file glsl_lexer.cpp
    • -
    • glsl: Fix ast-to-hir for ARB_fragment_coord_conventions
    • -
    • mesa: Fix C++ includes in sampler.cpp
    • -
    • glsl: Fix ir_expression::constant_expression_value()
    • -
    • glsl: Fix erroneous cast in ast_jump_statement::hir()
    • -
    • glsl: Fix Doxygen tag file in recently renamed files
    • -
    • glsl: Improve usage message for glsl_compiler
    • -
    • glsl: Fix linker bug in cross_validate_globals()
    • -
    • glsl: In ast_to_hir, check sampler array indexing
    • -
    - -

    Chia-I Wu (149):

    -
      -
    • glapi: Fix build errors for ES.
    • -
    • glapi: Fix ES build errors again.
    • -
    • mesa: Update ES APIspec.xml.
    • -
    • st/xlib: Notify the context when the front/back buffers are swapped.
    • -
    • targets/egl: Use C++ compiler to link GL/ES state trackers.
    • -
    • libgl-xlib: Remove unused st_api_create_OpenGL.
    • -
    • st/egl: Split modeset code support to modeset.c.
    • -
    • st/egl: Rename kms backend to drm.
    • -
    • st/egl: s/kms/drm/ on the drm backend.
    • -
    • egl: Enable drm platform by default.
    • -
    • egl: Check extensions.
    • -
    • st/egl: Skip single-buffered configs in EGL.
    • -
    • mapi: Fix compiler warnings.
    • -
    • st/egl: Drop context argument from egl_g3d_get_egl_image.
    • -
    • targets/egl: Fix linking with libdrm.
    • -
    • st/vega: Fix version check in context creation.
    • -
    • egl: Use attribute names as the _EGLConfig member names.
    • -
    • egl: Access config attributes directly.
    • -
    • st/egl: Access _EGLConfig directly.
    • -
    • st/egl: Do not finish a fence that is NULL.
    • -
    • mesa: Remove unused vtxfmt_tmp.h.
    • -
    • egl_dri2: Drop the use of _egl[SG]etConfigKey.
    • -
    • egl_glx: Drop the use of [SG]ET_CONFIG_ATTRIB.
    • -
    • egl_glx: Fix borken driver.
    • -
    • egl: Move attributes in _EGLImage to _EGLImageAttribs.
    • -
    • egl: Parse image attributes with _eglParseImageAttribList.
    • -
    • egl: Move fallback routines to eglfallbacks.c.
    • -
    • egl: Drop dpy argument from the link functions.
    • -
    • egl: Minor changes to the _EGLConfig interface.
    • -
    • egl: Minor changes to the _EGLScreen interface.
    • -
    • egl: Fix _eglModeLookup.
    • -
    • st/egl: Fix native_mode refresh mode.
    • -
    • egl: Add reference count for resources.
    • -
    • egl: Use reference counting to replace IsLinked or IsBound.
    • -
    • egl: Fix a false negative check in _eglCheckMakeCurrent.
    • -
    • st/egl: Use resource reference count for egl_g3d_sync.
    • -
    • egl_dri2: Fix a typo that make glFlush be called at wrong time.
    • -
    • glapi: Do not use glapidispatch.h.
    • -
    • glapi: Move glapidispatch.h to core mesa.
    • -
    • glapi: Do not use glapioffsets.h.
    • -
    • glapi: Merge glapioffsets.h into glapidispath.h.
    • -
    • vbo: Use CALL_* macros.
    • -
    • mesa: Remove unnecessary glapitable.h includes.
    • -
    • autoconf: Better client API selection.
    • -
    • docs: Update egl and openvg docs.
    • -
    • autoconf: Update configuration info.
    • -
    • Merge branch 'glapi-reorg'
    • -
    • targets: Add missing quotes to Makefile.xorg.
    • -
    • autoconf: st/vega requires --enable-openvg.
    • -
    • st/mesa: Unreference the sampler view in st_bind_surface.
    • -
    • autoconf: Tidy configure output for EGL.
    • -
    • targets/egl: Fix a warning with --disable-opengl build.
    • -
    • egl: Rework _eglGetSearchPath.
    • -
    • mesa: Select FEATURE_remap_table when multiple APIs are enabled.
    • -
    • mesa: Allow contexts of different APIs to coexist.
    • -
    • egl: Set up the pthread key even TLS is used.
    • -
    • st/egl: Add native_surface::present callback.
    • -
    • st/egl: Use native_surface::present callback.
    • -
    • d3d1x: Use native_surface::present.
    • -
    • st/egl: Remove flush_frontbuffer and swap_buffers.
    • -
    • st/egl: Add support for swap interval and swap behavior.
    • -
    • st/egl: Add support for EGL_MATCH_NATIVE_PIXMAP.
    • -
    • st/egl: Add extern "C" wrapper to native.h.
    • -
    • st/egl: Add native_display_buffer interface.
    • -
    • st/egl: Use native_display_buffer for EGL_MESA_drm_image.
    • -
    • autoconf: Add --enable-gallium-egl.
    • -
    • docs: Update egl docs.
    • -
    • st/dri: Add support for surfaceless current contexts.
    • -
    • egl_dri2: Fix __DRI_DRI2 version 1 support.
    • -
    • st/vega: Do not wait NULL fences.
    • -
    • gallium: Add st_api::name.
    • -
    • gallium: Add st_context_iface::share to st_api.
    • -
    • st/wgl: Use st_context_iface::share for DrvShareLists.
    • -
    • st/glx: Replace MESA_VERSION_STRING by xmesa_get_name.
    • -
    • mesa: Clean up core.h.
    • -
    • scons: Define IN_DRI_DRIVER.
    • -
    • tgsi: Add STENCIL to text parser.
    • -
    • st/vega: vegaLookupSingle should validate the state.
    • -
    • st/vega: Set wrap_r for mask and blend samplers.
    • -
    • st/vega: Fix vgReadPixels with a subrectangle.
    • -
    • egl_dri2: Fix one context, multiple surfaces.
    • -
    • auxiliary: util_blit_pixels_tex should restore the viewport.
    • -
    • st/vega: Fix a crash with empty paths.
    • -
    • st/vega: Masks and surfaces should share orientation.
    • -
    • st/vega: No flipping in vg_prepare_blend_surface.
    • -
    • st/vega: Fix a typo in EXTENDED_BLENDER_OVER_FUNC.
    • -
    • llvmpipe: Fix build errors on x86.
    • -
    • st/vega: Overhaul renderer with renderer states.
    • -
    • st/vega: Add DRAWTEX renderer state.
    • -
    • st/vega: Add SCISSOR renderer state.
    • -
    • st/vega: Add CLEAR renderer state for vgClear.
    • -
    • st/vega: Add FILTER renderer state for image filtering.
    • -
    • st/vega: Use the renderer for vgMask.
    • -
    • st/vega: Add POLYGON_STENCIL and POLYGON_FILL renderer state.
    • -
    • st/vega: Delay fb state update to vg_validate_state.
    • -
    • st/vega: Use st_framebuffer for fb width/height.
    • -
    • st/vega: Move g3d states to renderer.
    • -
    • st/vega: Make shader_bind call into the renderer.
    • -
    • st/vega: vg_manager should care about only the color buffer.
    • -
    • st/vega: Clean up vg_context fields and functions.
    • -
    • st/vega: Clean up renderer fields and functions.
    • -
    • st/vega: vg_copy_texture and vg_copy_surface should share code.
    • -
    • st/vega: Get rid of renderer_copy_texture.
    • -
    • st/vega: Update to latest headers.
    • -
    • st/vega: Fix image sampler views for alpha-only formats.
    • -
    • st/vega: Make path_render and path_stroke take a matrix.
    • -
    • st/vega: Make image_draw take a matrix.
    • -
    • st/vega: Add primitive text support.
    • -
    • st/vega: Revive mask layer support.
    • -
    • st/vega: More flexible shader selection.
    • -
    • st/vega: Add color transformation support.
    • -
    • st/vega: Bump version to 1.1.
    • -
    • st/vega: Fix paint coordinates transformations.
    • -
    • st/vega: Fix negated logic in image_draw.
    • -
    • st/vega: Fix degenerate paints.
    • -
    • st/vega: Simplify radial gradient.
    • -
    • st/vega: Remove st_inlines.h.
    • -
    • st/vega: Delay blend texture creation until needed.
    • -
    • st/vega: Create drawing surface mask as needed.
    • -
    • st/vega: Initialize pipe states with renderer.
    • -
    • st/vega: Avoid unnecessary constant bufer upload.
    • -
    • st/vega: Destroy the pipe context with vg_context.
    • -
    • st/vega: polygon_array requires a deep free.
    • -
    • st/egl: Set pipe_resource::array_size to 1.
    • -
    • st/vega: Set pipe_resource::array_size to 1.
    • -
    • st/vega: Move vertex transformation to shader.
    • -
    • st/vega: Add a missing break.
    • -
    • st/vega: Add some comments to pipeline shaders.
    • -
    • st/vega: Refactor blend shaders.
    • -
    • st/vega: Move masking after blending.
    • -
    • st/vega: Add support for per-channel alpha.
    • -
    • st/vega: Blending should use premultiplied alpha.
    • -
    • st/vega: Fix VG_BLEND_MULTIPLY.
    • -
    • st/vega: Add blend shaders for all blend modes.
    • -
    • st/vega: Fix pipe blend state for various blend modes.
    • -
    • egl: _eglFilterArray should not allocate.
    • -
    • mapi: Rewrite mapi_abi.py to get rid of preprocessor magic.
    • -
    • vbo: Drop second ATTR macro.
    • -
    • vbo: Fix GLES2 glVertexAttrib.
    • -
    • mesa: Do not advertise GL_OES_texture_3D.
    • -
    • mesa: Fix GL_FIXED arrays.
    • -
    • mesa: Fix glTexCoordPointer with type GL_FIXED.
    • -
    • st/egl: Plug pbuffer leaks.
    • -
    • st/egl: Fix eglCopyBuffers.
    • -
    • st/egl: Assorted fixes for dri2_display_get_configs.
    • -
    • docs/egl: Update egl.html.
    • -
    • st/egl: Fix eglChooseConfig when configs is NULL.
    • -
    • docs: Add an example for EGL_DRIVERS_PATH.
    • -
    • autoconf: Fix --with-driver=xlib --enable-openvg.
    • -
    - -

    Chris Wilson (2):

    -
      -
    • i915g: Fix closure of full batch buffers
    • -
    • intel: Check for unsupported texture when finishing using as a render target
    • -
    - -

    Christoph Bumiller (80):

    -
      -
    • nv50: import new compiler
    • -
    • nouveau: update nouveau_class.h
    • -
    • nv50: introduce the big formats table
    • -
    • nv50: don't produce MOV immediate to output reg in store opt
    • -
    • nv50: change back accidentally swapped UNORM,SNORM vertex type
    • -
    • nv50: add/fix some license headers
    • -
    • nv50: simple reload elimination and local CSE
    • -
    • nv50: fix constant_operand opt mul by 2 case
    • -
    • nv50: permit usage of undefined TGSI TEMPs
    • -
    • nv50: add missing 2nd source for POW multiplication
    • -
    • nv50: add signed RGTC1 to format table, allow 2_10_10_10 for vbufs
    • -
    • nv50: fix for empty BBs
    • -
    • nv50: insert MOVs also for PHI sources from dominating block
    • -
    • nv50: explicitly set src type for SET ops
    • -
    • nv50: fixes for nested IFs
    • -
    • nv50: don't eliminate loads to dedicated values
    • -
    • nv50: fix constbuf validation
    • -
    • nv50: build proper phi functions in the first place
    • -
    • nv50: fix reg count
    • -
    • nv50: begin implementing loops
    • -
    • nv50: more constant folding
    • -
    • nv50: loops part 2
    • -
    • nv50: flatten simple IF/ELSE/ENDIF constructs
    • -
    • nv50: fix thinko in store to output reg possible check
    • -
    • nv50: generate JOINs for outermost IF clauses
    • -
    • nv50: more TGSI opcodes (SIN, SCS, ARL, RET, KILP)
    • -
    • nv50: fix PSIZ and PRIMID mapping
    • -
    • nv50: check dst compatibility in CSE
    • -
    • nv50: initialize edgeflag input index
    • -
    • nv50: emit predicate for interp
    • -
    • Merge remote branch 'origin/master' into nv50-compiler
    • -
    • nv50: DP2, fix ARL
    • -
    • nv50: yet another case we need a nop.exit
    • -
    • nv50: fix check for sprite/point coord enable
    • -
    • nv50: handle TEXTURE_SWIZZLE and GEOMETRY_SHADER4 caps
    • -
    • nv50: set the FragDepth output index
    • -
    • nv50: turn off verbose debug output by default
    • -
    • nv50: attempt at making more complicated loops work
    • -
    • nv50: SSG
    • -
    • nv50: make FrontFacing -1 or +1
    • -
    • nv50: re-add proper TEXBIAS sequence
    • -
    • nv50: make use of TGSI immediate type
    • -
    • nv50: must join SELECT inputs before MOV inputs
    • -
    • nv50: fix XPD, was negated
    • -
    • nv50: fix find_dom_frontier
    • -
    • nv50: fix build-predicate function
    • -
    • Merge remote branch 'origin/master' into nv50-compiler
    • -
    • nv50: load address register before using it, not after
    • -
    • nv50: save tgsi instructions
    • -
    • nv50: prepare for having multiple functions
    • -
    • nv50: don't parse again in tgsi_2_nc
    • -
    • nv50: use actual loads/stores if TEMPs are accessed indirectly
    • -
    • nv50: create value references with the right type
    • -
    • nv50: duplicate interps in load_proj_tex_coords
    • -
    • nv50: address regs are 16 bit
    • -
    • nv50: fix can_load check for 3rd source
    • -
    • nv50: reduce bb_reachable_by runtime from pot to linear
    • -
    • nv50: minor compiler fixes and cleanups
    • -
    • nv50: cannot move from local mem to output reg directly
    • -
    • nv50: newlines in shader bincode printing
    • -
    • nv50: match TEMP limit with nv50 ir builder
    • -
    • nv50: handle TGSI EXP and LOG again
    • -
    • nv50: check for immediates when turning MUL ADD into MAD
    • -
    • nv50: interp cannot write flags reg
    • -
    • nv50: MOV TEMP[0], -CONST[0] must be float32 negation
    • -
    • nv50: fix indirect CONST access with large or negative offsets
    • -
    • nv50: fix TXP depth comparison value
    • -
    • nv50: consider address register in reload elimination
    • -
    • nv50: improve and fix modifier folding optimization
    • -
    • nv50: put low limit on REG_ALLOC_TEMP and FP_RESULT_COUNT
    • -
    • Merge remote branch 'origin/nv50-compiler'
    • -
    • nv50: don't segfault on shaders with 0 instructions
    • -
    • nv50: get shader fixups/relocations into working state
    • -
    • nv50: add relocs for stack and local mem buffers
    • -
    • nv50: emit constbuf relocs before uploading constants
    • -
    • nv50: fix typo in fifo packet length limit
    • -
    • nv50: use formats table in nv50_surface.c
    • -
    • nv50: use CLEAR_BUFFERS for surface fills
    • -
    • nv50: fix/handle a few more PIPE_CAPs
    • -
    • nv50: fix GP state bind and validate
    • -
    - -

    Corbin Simpson (8):

    -
      -
    • r600g: Use align() instead of handrolled code.
    • -
    • r600g: Trivially deobfuscate r600_hw_states.
    • -
    • r600g: Deobfuscate and comment a few more functions in r600_hw_states.
    • -
    • r600g: Clean up some indentation and |= vs. | usage.
    • -
    • r600g: Fix false and true.
    • -
    • r600g: "tmp" is such a bad name for a texture.
    • -
    • r600g: Clean up PS setup.
    • -
    • r600g: Cleanup viewport floats.
    • -
    - -

    Daniel Lichtenberger (1):

    -
      -
    • radeon: fix potential segfault in renderbuffer update
    • -
    - -

    Daniel Vetter (21):

    -
      -
    • r200: revalidate after radeon_update_renderbuffers
    • -
    • i915g: rip out ->sw_tiled
    • -
    • i915g: s/hw_tiled/tiling
    • -
    • i915g: add pineview pci ids
    • -
    • i915g: kill RGBA/X formats
    • -
    • i915g: kill buf->map_gtt
    • -
    • i915g: kill idws->pool
    • -
    • i915g: drop alignment parameter from iws->buffer_create
    • -
    • i915g: add winsys function to create tiled buffers
    • -
    • i915g: switch to tiled allocations, kill set_fence
    • -
    • i915g: prepare winsys/batchbuffer for execbuf2
    • -
    • i915g: return tiling in iws->buffer_from_handle
    • -
    • i915g: implement unfenced color&depth buffer using tiling bits
    • -
    • i915g: implement unfenced relocs for textures using tiling bits
    • -
    • i915g: postpone mipmap/face offset calculation
    • -
    • i915g: don't pot-align stride for tiled buffers
    • -
    • i915g: enable X-tiling for textures
    • -
    • i915g: switch rendering to mipmapped textures to (x,y) offsets
    • -
    • i915g: enable x-tiling for render targets
    • -
    • i915g: assert(depth_surface->offset == 0)
    • -
    • i915g: track TODO items
    • -
    - -

    Dave Airlie (182):

    -
      -
    • r300g: fix buffer reuse issue caused by previous commit
    • -
    • r600g: pull r600_draw struct out into header
    • -
    • r600g: use index min/max + index buffer offset.
    • -
    • r600g: add vgt dma src defines
    • -
    • r600g: fixup texture state on evergreen.
    • -
    • r600g: fix texture bos and avoid doing depth blit on evergreen
    • -
    • r600g: hide radeon_ctx inside winsys.
    • -
    • r600g: attempt to abstract kernel bos from pipe driver.
    • -
    • r600g: move constant buffer creation behind winsys abstraction.
    • -
    • r600g: use malloc bufmgr for constant buffers
    • -
    • r600g: add support for kernel bo
    • -
    • r600g: add winsys bo caching.
    • -
    • r600g: add upload manager support.
    • -
    • r600g: fixup map flushing.
    • -
    • r600g: use calloc for ctx bo allocations
    • -
    • r600g: oops got the use_mem_constant the wrong way around.
    • -
    • r600g; add uses waterfall to asm cf for r6xx.
    • -
    • r600g: only emit uses waterfall on r6xx hw.
    • -
    • util/r300g: split the r300 index buffer modifier functions out to util
    • -
    • r600g: modify index buffers for sizes the hw can't deal with.
    • -
    • r600g: send correct surface base update for multi-cbufs
    • -
    • r600g: fix fbo-drawbuffers-maxtargets
    • -
    • r600g: clean up valgrind issues on maxtargets test.
    • -
    • r600g: drop debugging that snuck in
    • -
    • r600g: fix tiling support for ddx supplied buffers
    • -
    • r600g: add z16 to color setup
    • -
    • r600g: add color/texture support for more depth formats.
    • -
    • r600g: fix r700 cube map sizing.
    • -
    • r600g: fixup r700 CB_SHADER_CONTROL register.
    • -
    • r600g: add missing BC_INST wrapper for evergreen
    • -
    • r600g: only flush for the correct colorbuffer, not all of them.
    • -
    • r600g: deal with overflow of VTX/TEX CF clauses.
    • -
    • r600g: set back to correct codepaths.
    • -
    • r600g: fixup evergreen miptree setup.
    • -
    • r600g: fix eg texture borders.
    • -
    • r600g: fix typo in struct member name
    • -
    • r600g: cleanup some of the DB blit code
    • -
    • r600g: make stencil readback work
    • -
    • r600g: disable dirty handling on texture from depth code.
    • -
    • r600g: use floats instead of hex for blit vbo
    • -
    • r600g: fix depth readback on rv610 and other quirky variants.
    • -
    • r600g: fix typo in evergreen register list
    • -
    • u_blitter: add a custom blitter call passing a dsa cso
    • -
    • r600g: use blitter to do db->cb flushing.
    • -
    • r600g: fix warnings since last commit.
    • -
    • egl: fix build since 17eace581d25a626a7d75d9d1205d012cbb14a6e
    • -
    • r300g: fix point sprite coord.
    • -
    • r600g: add vert support for 16/16 and 16/16/16 floats.
    • -
    • r600g: add some more vertex format support.
    • -
    • r600g: some more vertex formats
    • -
    • r600g: fix draw-elements and draw-elements-base-vertex
    • -
    • r600g: drop index_offset parameter to index buffer translate.
    • -
    • r600g: fixup tex wrapping.
    • -
    • r600g: fixup VP->FP output->input routing.
    • -
    • r600g: fix typo in r700 alu emit
    • -
    • r600g: fixup sprite coord enable.
    • -
    • r600g: fix polygon mode
    • -
    • mesa/mipmap: fix warning since 1acadebd6270d3604b026842b8a21360968618a0
    • -
    • r600g: add eg poly mode code.
    • -
    • r600g: make index bias fix for evergreen
    • -
    • r600g: add eg db count control register.
    • -
    • r300g: fix glsl-fs-pointcoord
    • -
    • r600g: add evergreen texture resource properly.
    • -
    • r600g: fix db flush breaking config state
    • -
    • r600g: on evergreen the centroid isn't set in this register.
    • -
    • r600g: add back evergreen name.
    • -
    • r600g: add evergreen texture border support to new path
    • -
    • r600g: move radeon.h members around to add back map flushing.
    • -
    • r600g: add initial vertex translate support.
    • -
    • r600g: remove old assert from new codepath
    • -
    • Revert "r600g: add initial vertex translate support."
    • -
    • r600g: port r300g fix for X* formats in texformat code
    • -
    • r600g: add L8A8 unorm.
    • -
    • r600g: clean up some code from move to new paths.
    • -
    • r600g: return string for chip family
    • -
    • r600g: use Elements macro instead of manual sizeofs
    • -
    • r600g: fix evergreen depth flushing.
    • -
    • r600g: add winsys support for CTL constants.
    • -
    • r600g: drop depth quirk on evergreen
    • -
    • r600g: add reloc for evergreen color attrib
    • -
    • r600g: realign evergreen code with r600 code.
    • -
    • r600g: add assembler support for other vtx fetch fields.
    • -
    • r600g: fixup vertex format picking.
    • -
    • r600g: sync vertex/texture cache on resources on evergreen
    • -
    • r600g: add cb flushing for extra buffers + depth buffer on r600/evergreen
    • -
    • r600g: fix evergreen draw-buffers
    • -
    • r600g: flush SH cache on constant change on evergreen
    • -
    • r600g: only set the Z export if shader exports it.
    • -
    • r600g: setup basic loop consts on r600 + evergreen.
    • -
    • mesa/st: initial attempt at RG support for gallium drivers
    • -
    • r600g: break out of search for reloc bo after finding it.
    • -
    • r600g: the code to check whether a new vertex shader is needed was wrong
    • -
    • r600g: fix wwarning in bo_map function
    • -
    • r600g: TODO domain management
    • -
    • r600g: add bo fenced list.
    • -
    • pb: don't keep checking buffers after first busy
    • -
    • r600g: add bo busy backoff.
    • -
    • r600g: drop mman allocator
    • -
    • r600g: drop use_mem_constant.
    • -
    • r600g: avoid unneeded bo wait
    • -
    • pb: fix numDelayed accounting
    • -
    • r600g: add evergreen stencil support.
    • -
    • r600g: use format from the sampler view not from the texture.
    • -
    • r600g: fix Z export enable bits.
    • -
    • r600g: add some RG texture format support.
    • -
    • r600g: drop width/height per level storage.
    • -
    • r600g: fix input/output Z export mixup for evergreen.
    • -
    • r600g: evergreen has no request size bit in texture word4
    • -
    • r600g: enable vertex samplers.
    • -
    • r600g: add TXL opcode support.
    • -
    • r600g: don't run with scissors.
    • -
    • r600g: fix typo in vertex sampling on r600
    • -
    • gallium/tgsi: add support for stencil writes.
    • -
    • gallium/format: add support for X24S8 and S8X24 formats.
    • -
    • gallium/format: add X32_S8X24_USCALED format.
    • -
    • gallium/util: add S8 tile sampling support.
    • -
    • mesa: add support for FRAG_RESULT_STENCIL.
    • -
    • mesa: improve texstore for 8/24 formats and add texstore for S8.
    • -
    • softpipe: add support for shader stencil export capability
    • -
    • st/mesa: add option to choose a texture format that we won't render to.
    • -
    • st/mesa: use shader stencil export to accelerate shader drawpixels.
    • -
    • r600g: add support for S8, X24S8 and S8X24 sampler formats.
    • -
    • r600g: add shader stencil export support.
    • -
    • glsl: add support for shader stencil export
    • -
    • st/mesa: enable stencil shader export extension if supported
    • -
    • r600g: fix depth0 setting
    • -
    • r600g: fix scissor/cliprect confusion
    • -
    • r600g: store samplers/views across blit when we need to modify them
    • -
    • r600g: reduce size of context structure.
    • -
    • r600g: the vs/ps const arrays weren't actually being used.
    • -
    • r600g: add copy into tiled texture
    • -
    • r600g: split out miptree setup like r300g
    • -
    • r600g: use common texture object create function
    • -
    • r600g: rename pitch in texture to pitch_in_bytes
    • -
    • r600g: remove bpt and start using pitch_in_bytes/pixels.
    • -
    • r600g: fix transfer stride.
    • -
    • r600g: drop all use of unsigned long
    • -
    • r600g: use blitter for hw copy region
    • -
    • r600g: evergreen add stencil export bit
    • -
    • r600g: add missing eg reg definition
    • -
    • r600g: fix stencil export for evergreen harder
    • -
    • r600g: drop unused context members
    • -
    • r600g: only pick centroid coordinate when asked.
    • -
    • r600g: fixup pos/face ena/address properly
    • -
    • r600g: fixup typo in macro name
    • -
    • r600g: select linear interpolate if tgsi input requests it
    • -
    • r300g: clean up warning due to unknown cap.
    • -
    • tgsi: add scanner support for centroid inputs
    • -
    • r600g: evergreen interpolation support.
    • -
    • r600g: add evergreen ARL support.
    • -
    • r600g: switch to a common formats.h file since they are in different regs
    • -
    • r600g: add defines for tiling
    • -
    • r600g: get tiling info from kernel
    • -
    • r600g: set tiling bits in hw state
    • -
    • r600g: do proper tracking of views/samplers.
    • -
    • r600g: fix typo in tiling setup cb code.
    • -
    • r600g: depth needs to bound to ds
    • -
    • r600g: attempt to cleanup depth blit
    • -
    • r600g: fix transfer function for tiling.
    • -
    • r600g: retrieve tiling info from kernel for shared buffers.
    • -
    • r600g: all non-0 mipmap levels need to be w/h aligned to POT.
    • -
    • r600g: move to per-miplevel array mode.
    • -
    • r600g: start adding hooks for aligning width/height for tiles.
    • -
    • r600g: add r600 surface to store the aligned height.
    • -
    • r600g: introduce a per-driver resource flag for transfers.
    • -
    • r600g: add texture tiling alignment support.
    • -
    • r600g: add texture tiling enable under a debug option.
    • -
    • r600g: initial translate state support
    • -
    • r600g: start splitting out common code from eg/r600.
    • -
    • r600g: not fatal if we can't get tiling info from kernel
    • -
    • r600g: merge more of the common r600/evergreen state handling
    • -
    • r600g: drop more common state handling code
    • -
    • r600g: fix magic 0x1 ->flat shade ena
    • -
    • r600g: add assembler support for all the kcache fields.
    • -
    • gallium/noop: report GL 2.1
    • -
    • r600g: pick correct color swap for A8 fbos.
    • -
    • r300g/r600g: bump cache manager timeouts to 1s
    • -
    • r600g: it looks like r600 can handle dword offsets in the indices.
    • -
    • r300g: try and use all of vertex constant space
    • -
    • r300g: fixup rs690 tiling stride alignment calculations.
    • -
    • r600g: fix evergreen segfaults.
    • -
    • r600g: hack around property unknown issues.
    • -
    - -

    Eric Anholt (300):

    -
      -
    • glsl: Add definition of gl_TextureMatrix inverse/transpose builtins.
    • -
    • i965: Share the KIL_NV implementation between glsl and non-glsl.
    • -
    • i965: Also enable CC statistics when doing OQs.
    • -
    • i965: Track the windowizer's dispatch for kill pixel, promoted, and OQ
    • -
    • glsl: Rework assignments with write_masks to have LHS chan count match RHS.
    • -
    • glsl: Fix copy'n'wasted ir_noop_swizzle conditions.
    • -
    • ir_to_mesa: Only compare vector_elements present for any_nequal/all_equal
    • -
    • i965: Fix the vector/expression splitting for the write_mask change.
    • -
    • i965: When splitting vector variable assignment, ignore unset channels.
    • -
    • i965: Update expression splitting for the vector-result change to compares.
    • -
    • i965: Warning fix for vector result any_nequal/all_equal change.
    • -
    • mesa: Remove the non-required ARB_imaging extension.
    • -
    • mesa: Remove EXT_histogram.
    • -
    • mesa: Remove SGI_color_table.
    • -
    • mesa: Remove SGI_color_matrix.
    • -
    • mesa: Remove EXT_convolution.
    • -
    • intel: Remove disabled stencil drawpixels acceleration.
    • -
    • intel: Remove unnecessary minimum pitch alignment to 32 bytes.
    • -
    • intel: Replace my intel_texture_bitmap code with _mesa_meta_Bitmap.
    • -
    • radeon: Remove copied minimum pitch alignment code.
    • -
    • unichrome: Mostly revert my convolution removal changes.
    • -
    • intel: Remove dead intelIsTextureResident().
    • -
    • i915: Remove a dead if (0) block.
    • -
    • intel: Dead comment removal.
    • -
    • intel: Corresponding FinishRenderTexture debug to BeginRenderTexture.
    • -
    • i965: Add support for rendering to SARGB8 FBOs.
    • -
    • intel: Fix segfault on INTEL_DEBUG=fbo with unsupported framebuffers.
    • -
    • intel: Add fallback debug to glGenerateMipmap.
    • -
    • intel: More reverting of the sw fallback for depth texture border color.
    • -
    • intel: Improve some of the miptree debugging.
    • -
    • mesa: Fix type typo in glGenerateMipmap handling of GL_UNSIGNED_INT data.
    • -
    • glsl: Fix broadcast_index of lower_variable_index_to_cond_assign.
    • -
    • glsl: Add validation that a swizzle only references valid channels.
    • -
    • i965: Fix up writemasked assignments in the new FS.
    • -
    • i965: Remove swizzling of assignment to vector-splitting single-channel LHS.
    • -
    • i965: Handle all_equal/any_nequal in the new FS.
    • -
    • i965: Fix vector splitting RHS channel selection with sparse writemasks.
    • -
    • i965: Add support for dFdx()/dFdy() to the FS backend.
    • -
    • i965: Add support for attribute interpolation on Sandybridge.
    • -
    • i965: Set up inputs to the fragment shader according to FP InputsRead.
    • -
    • i965: Add support for POW in gen6 FS.
    • -
    • i965: Fix negation in the new FS backend.
    • -
    • i965: Actually track the "if" depth in loop in the new FS backend.
    • -
    • i965: Apply the same set of lowering passes to new FS as to Mesa IR.
    • -
    • i965: Fix valgrind complaint about base_ir for new FS debugging.
    • -
    • i965: Fix up the FS backend for the variable array indexing pass.
    • -
    • i965: Set the variable type when dereferencing an array.
    • -
    • i965: Add support for dereferencing structs to the new FS backend.
    • -
    • i965: Add support for struct, array, and matrix uniforms to FS backend.
    • -
    • i965: Fix all non-snb regression in the snb attribute interpolation commit.
    • -
    • i965: Fix up part of my Sandybridge attributes support patch.
    • -
    • i965: Add support for gl_FrontFacing to the new FS backend.
    • -
    • i965: Subtract instead of adding when computing y delta in new FS backend.
    • -
    • mesa: Pull ir_to_mesa's sampler number fetcher out to shared code.
    • -
    • i965: Set up sampler numbers in the FS backend.
    • -
    • i965: Add support for non-color render target write data to new FS backend.
    • -
    • i965: Add support for MRT to the new FS backend.
    • -
    • i965: Add support for ir_loop counters to the new FS backend.
    • -
    • i965: Add support for ARB_fragment_coord_conventions to the new FS backend.
    • -
    • glsl: Also update implicit sizes of varyings at link time.
    • -
    • i965: Do interpolation for varying matrices and arrays in the FS backend.
    • -
    • i965: Don't try to emit interpolation for unused varying slots.
    • -
    • i965: Fix array indexing of arrays of matrices.
    • -
    • i965: Clean up obsolete FINISHME comment.
    • -
    • mesa: Move the list of builtin uniform info from ir_to_mesa to shared code.
    • -
    • i965: Add support for builtin uniforms to the new FS backend.
    • -
    • i965: Fix use of undefined mem_ctx in vector splitting.
    • -
    • i956: Make new FS discard do its work in a temp, not the null reg!
    • -
    • i965: Clean up the virtual GRF handling.
    • -
    • ra: First cut at a graph-coloring register allocator for mesa.
    • -
    • i965: First cut at register allocation using graph coloring.
    • -
    • i965: Add live interval analysis and hook it up to the register allocator.
    • -
    • i965: Remove my "safety counter" code from loops.
    • -
    • i965: Fix whole-structure/array assignment in new FS.
    • -
    • mesa: Don't reference a W component in setting up a vec3 uniform component.
    • -
    • i965: Fix new FS handling of builtin uniforms with packed scalars in structs.
    • -
    • glsl: Add a lowering pass for texture projection.
    • -
    • i965: Use the lowering pass for texture projection.
    • -
    • i965: Split the gen4 and gen5 sampler handling apart.
    • -
    • i965: Add gen6 attribute interpolation to new FS backend.
    • -
    • i965: Fix the gen6 jump size for BREAK/CONT in new FS.
    • -
    • i965: Also increment attribute location when skipping unused slots.
    • -
    • i965: Pre-gen6, map VS outputs (not FS inputs) to URB setup in the new FS.
    • -
    • i965: Add real support for pre-gen5 texture sampling to the new FS.
    • -
    • i965: Fix up copy'n'pasteo from moving coordinate setup around for gen4.
    • -
    • i965: Restore the forcing of aligned pairs for delta_xy on chips with PLN.
    • -
    • i965: When producing a single channel swizzle, don't make a temporary.
    • -
    • i965: Add a sanity check for register allocation sizes.
    • -
    • i965: Fix off-by-ones in handling the last members of register classes.
    • -
    • i965: Don't try to emit code if we failed register allocation.
    • -
    • i965: Add support for EXT_texture_swizzle to the new FS backend.
    • -
    • i965: Set up swizzling of shadow compare results for GL_DEPTH_TEXTURE_MODE.
    • -
    • i965: Fix glean/texSwizzle regression in previous commit.
    • -
    • i965: Be more conservative on live interval calculation.
    • -
    • i965: Add trivial dead code elimination in the new FS backend.
    • -
    • i965: Add initial folding of constants into operand immediate slots.
    • -
    • i965: In disasm, gen6 fb writes don't put msg reg # in destreg_conditionalmod.
    • -
    • i965: Add support for gen6 FB writes to the new FS.
    • -
    • i965: Enable the constant propagation code.
    • -
    • i965: Also do constant propagation for the second operand of CMP.
    • -
    • i965: Add back gen6 headerless FB writes to the new FS backend.
    • -
    • i965: Gen6 no longer has the IFF instruction; always use IF.
    • -
    • i965: Fix up IF/ELSE/ENDIF for gen6.
    • -
    • i965: Fix botch in the header_present case in the new FS.
    • -
    • i965: Add some clarification of the WECtrl field.
    • -
    • i965: Don't do 1/w multiplication in new FS for gen6
    • -
    • i965: Gen6's sampler messages are the same as Ironlake.
    • -
    • i965: Refactor gl_FrontFacing setup out of general variable setup.
    • -
    • i965: Add support for gl_FrontFacing on gen6.
    • -
    • i965: Don't assume that WPOS is always provided on gen6 in the new FS.
    • -
    • i965: Fix gen6 pointsize handling to match pre-gen6.
    • -
    • i965: Disable emitting if () statements on gen6 until we really fix them.
    • -
    • i965: Normalize cubemap coordinates like is done in the Mesa IR path.
    • -
    • mesa: Simplify a bit of _mesa_add_state_reference using memcmp.
    • -
    • i965: Drop the check for duplicate _mesa_add_state_reference.
    • -
    • i965: Drop the check for YUV constants in the param list.
    • -
    • i965: Handle swizzles in the addition of YUV texture constants.
    • -
    • i965: Fix gen6 WM push constants updates.
    • -
    • i965: Fix new FS gen6 interpolation for sparsely-populated arrays.
    • -
    • i965: Enable attribute swizzling (repositioning) in the gen6 SF.
    • -
    • i965: Add register coalescing to the new FS backend.
    • -
    • i965: Split FS_OPCODE_DISCARD into two steps.
    • -
    • i965: Reduce register interference checks for changed FS_OPCODE_DISCARD.
    • -
    • i965: Move FS backend structures to a header.
    • -
    • i965: Give the math opcodes information on base mrf/mrf len.
    • -
    • i965: Give the FB write and texture opcodes the info on base MRF, like math.
    • -
    • i965: Compute to MRF in the new FS backend.
    • -
    • i965: Don't consider gen6 math instructions to write to MRFs.
    • -
    • i965: Add a couple of checks for gen6 math instruction limits.
    • -
    • i965: Don't compute-to-MRF in gen6 math instructions.
    • -
    • i965: Expand uniform args to gen6 math to full registers to get hstride == 1.
    • -
    • i965: Don't compute-to-MRF in gen6 VS math.
    • -
    • i965: Fix gen6 pixel_[xy] setup to avoid mixing int and float src operands.
    • -
    • i965: Always use the new FS backend on gen6.
    • -
    • i965: Fix missing "break;" in i2b/f2b, and missing AND of CMP result.
    • -
    • intel: Allow CopyTexSubImage to InternalFormat 3/4 textures, like RGB/RGBA.
    • -
    • i965: Don't rebase the index buffer to min 0 if any arrays are in VBOs.
    • -
    • i965: Add support for rescaling GL_TEXTURE_RECTANGLE coords to new FS.
    • -
    • i965: Set class_sizes[] for the aligned reg pair class.
    • -
    • i965: Update the live interval when coalescing regs.
    • -
    • i965: Add a pass to the FS to split virtual GRFs to float channels.
    • -
    • i965: Add a function for handling the move of boolean values to flag regs.
    • -
    • i965: Add peepholing of conditional mod generation from expressions.
    • -
    • i965: Enable the new FS backend on pre-gen6 as well.
    • -
    • i965: Fix texturing on pre-gen5.
    • -
    • i965: Set the type of the null register to fix gen6 FS comparisons.
    • -
    • i965: Disable the debug printf I added for FS disasm.
    • -
    • i965: Fix a weirdness in NOT handling.
    • -
    • i965: Fix assertion failure on gen6 BufferSubData to busy BO.
    • -
    • i965: Assert out on gen6 VS constant buffer reads that hang the GPU for now.
    • -
    • i965: Fix scissor-offscreen on gen6 like we did pre-gen6.
    • -
    • i965: Avoid blits in BufferCopySubdata on gen6.
    • -
    • i965: Tell the shader compiler when we expect depth writes for gen6.
    • -
    • i965: Remove the gen6 emit_mi_flushes I sprinkled around the driver.
    • -
    • i965: Disable thread dispatch when the FS doesn't do any work.
    • -
    • i965: Add EU emit support for gen6's new IF instruction with comparison.
    • -
    • i965: Set the source operand types for gen6 if/else/endif to integer.
    • -
    • i965: Use the new style of IF statement with embedded comparison on gen6.
    • -
    • i965: Split register allocation out of the ever-growing brw_fs.cpp.
    • -
    • i965: Fix gl_FrontFacing emit on pre-gen6.
    • -
    • i965: Add support for register spilling.
    • -
    • i965: Don't emit register spill offsets directly into g0.
    • -
    • i965: Correct scratch space allocation.
    • -
    • i965: Be more aggressive in tracking live/dead intervals within loops.
    • -
    • i965: Move the FS disasm/annotation printout to codegen time.
    • -
    • i965: Add support for pull constants to the new FS backend.
    • -
    • i965: Add EU code for dword scattered reads (constant buffer array indexing).
    • -
    • i965: Clarify an XXX comment in FB writes with real info.
    • -
    • i965: Use SENDC on the first render target write on gen6.
    • -
    • i965: Clear some undefined fields of g0 when using them for gen6 FB writes.
    • -
    • i965: Add disasm for the flag register.
    • -
    • i965: Add support for discard instructions on gen6.
    • -
    • i965: Handle new ir_unop_round_even in channel expression splitting.
    • -
    • i965: Fix typo in comment about state flags.
    • -
    • i965: Set up the constant buffer on gen6 when it's needed.
    • -
    • i965: Add support for constant buffer loads on gen6.
    • -
    • i965: Drop the eot argument to read messages, which can never be set.
    • -
    • i965: Fix VS URB entry sizing.
    • -
    • i965: Disable register spilling on gen6 until it's fixed.
    • -
    • i965: Make FS uniforms be the actual type of the uniform at upload time.
    • -
    • i965: Add user clip planes support to gen6.
    • -
    • i965: Update gen6 SF state when point state (sprite or attenuation) changes.
    • -
    • i965: Upload required gen6 VS push constants even when using pull constants.
    • -
    • i965: Update the gen6 stencil ref state when stencil state changes.
    • -
    • mesa: Make metaops use program refcounts instead of names.
    • -
    • mesa: Don't compute an unused texture completeness debug string.
    • -
    • intel: For batch, use GTT mapping instead of writing to a malloc and copying.
    • -
    • intel: Annotate debug printout checks with unlikely().
    • -
    • intel: Remove the magic unaligned memcpy code.
    • -
    • i965: Remove dead intel_structs.h file.
    • -
    • intel: Avoid taking logbase2 of several things that we max.
    • -
    • intel: Remove duplicated teximage miptree to object miptree promotion.
    • -
    • intel: Remove leftover dri1 locking fields in the context.
    • -
    • mesa: Fix delayed state flagging for EXT_sso-related program changes.
    • -
    • intel: Fix the client-side swapbuffers throttling.
    • -
    • Revert "intel: Fix the client-side swapbuffers throttling."
    • -
    • i965: Allow OPCODE_SWZ to put immediates in the first arg.
    • -
    • i965: Add support for math on constants in gen6 brw_wm_glsl.c path.
    • -
    • i965: Work around strangeness in swizzling/masking of gen6 math.
    • -
    • i965: re-enable gen6 IF statements in the fragment shader.
    • -
    • glsl: Free the loop state context when we free the loop state.
    • -
    • i965: Fix gl_FragCoord inversion when drawing to an FBO.
    • -
    • i965: Shut up spurious gcc warning about GLSL_TYPE enums.
    • -
    • mesa: Don't spam the console in a debug build unless some spam is requested.
    • -
    • i965: Add state dumping for sampler state.
    • -
    • i965: Add dumping of the sampler default color.
    • -
    • i965: Fail on loops on gen6 for now until we write the EU emit code for it.
    • -
    • i965: Eliminate dead code more aggressively.
    • -
    • mesa: Include C++ files in the makedepend of DRI drivers.
    • -
    • i965: Fix compute_to_mrf to not move a MRF write up into another live range.
    • -
    • i965: Just use memset() to clear most members in FS constructors.
    • -
    • i965: Remove extra n at the end of every instruction in INTEL_DEBUG=wm.
    • -
    • i965: Fold constants into the second arg of BRW_SEL as well.
    • -
    • glsl: Add a helper function for determining if an rvalue could be a saturate.
    • -
    • i965: Recognize saturates and turn them into a saturated mov.
    • -
    • ir_to_mesa: Detect and emit MOV_SATs for saturate constructs.
    • -
    • i965: Improve compute-to-mrf.
    • -
    • i965: Remove duplicate MRF writes in the FS backend.
    • -
    • i965: Move gen4 blend constant color to the gen4 blending file.
    • -
    • i965: Don't upload polygon stipple unless required.
    • -
    • i965: Don't upload line stipple pattern unless we're stippling.
    • -
    • i965: Don't upload line smooth params unless we're line smoothing.
    • -
    • i965: Use the new embedded compare in SEL on gen6 for VS MIN and MAX opcodes.
    • -
    • i965: Fix type of gl_FragData[] dereference for FB write.
    • -
    • glsl: Make the symbol table's add_function just use the function's name.
    • -
    • glsl: Make the symbol table's add_variable just use the variable's name.
    • -
    • glsl: Add a helper constructor for expressions that works out result type.
    • -
    • glsl: Fix structure and array comparisions.
    • -
    • glsl: Quiet unreachable no-return-from-function warning.
    • -
    • i965: Dump the WHILE jump distance on gen6.
    • -
    • i965: Add support for gen6 DO/WHILE ISA emit.
    • -
    • i965: Add support for gen6 BREAK ISA emit.
    • -
    • i965: Add support for gen6 CONTINUE instruction emit.
    • -
    • i965: Enable IF statements in the VS.
    • -
    • i965: Add support for loops in the VS.
    • -
    • glsl: Mark the array access for whole-array comparisons.
    • -
    • glsl: Fix flipped return of has_value() for array constants.
    • -
    • mesa: Add getters for the rest of the supported draw buffers.
    • -
    • mesa: Add getters for ARB_copy_buffer's attachment points.
    • -
    • intel: Add an env var override to execute for a different GPU revision.
    • -
    • i965: Update gen6 WM state on compiled program change, not just FP change.
    • -
    • i965: Update gen6 SF state on fragment program change too.
    • -
    • i965: Fix compile warning about missing opcodes.
    • -
    • i965: Move payload reg setup to compile, not lookup time.
    • -
    • i965: Provide delta_xy reg to gen6 non-GLSL path PINTERP.
    • -
    • i965: Fix up 16-wide gen6 FB writes after various refactoring.
    • -
    • i965: Don't smash a group of coordinates doing gen6 16-wide sampler headers.
    • -
    • i965: Fix gen6 interpolation setup for 16-wide.
    • -
    • i965: Fix up gen6 samplers for their usage by brw_wm_emit.c
    • -
    • i965: Make the sampler's implied move on gen6 be a raw move.
    • -
    • i965: Align gen6 push constant size to dispatch width.
    • -
    • i965: Add support for the instruction compression bits on gen6.
    • -
    • i965: Nuke brw_wm_glsl.c.
    • -
    • i965: Remove INTEL_DEBUG=glsl_force now that there's no brw_wm_glsl.c
    • -
    • i965: Fix comment about gen6_wm_constants.
    • -
    • i965: Handle saturates on gen6 math instructions.
    • -
    • i965: Always hand the absolute value to RSQ.
    • -
    • i965: Add disabled debug code for dumping out the WM constant payload.
    • -
    • i965: Work around gen6 ignoring source modifiers on math instructions.
    • -
    • i965: Fix flipped value of the not-embedded-in-if on gen6.
    • -
    • i965: Don't try to store gen6 (float) blend constant color in bytes.
    • -
    • i965: Set up the color masking for the first drawbuffer on gen6.
    • -
    • i965: Set up the per-render-target blend state on gen6.
    • -
    • i965: Set the render target index in gen6 fixed-function/ARB_fp path.
    • -
    • i965: Use the new pixel mask location for gen6 ARB_fp KIL instructions.
    • -
    • i965: Drop KIL_NV from the ff/ARB_fp path since it was only used for GLSL.
    • -
    • i965: Drop push-mode reladdr constant loading and always use constant_map.
    • -
    • i965: Fix VS constants regression pre-gen6.
    • -
    • i965: Clean up VS constant buffer location setup.
    • -
    • i965: Set up the correct texture border color state struct for Ironlake.
    • -
    • i965: Set render_cache_read_write surface state bit on gen6 constant surfs.
    • -
    • i965: remove unused variable since brw_wm_glsl.c removal.
    • -
    • intel: Use plain R8 and RG8 for COMPRESSED_RED and COMPRESSED_RG.
    • -
    • intel: Set the swizzling for depth textures using the GL_RED depth mode.
    • -
    • glsl: Correct the marking of InputsRead/OutputsWritten on in/out matrices.
    • -
    • i965: Correct the dp_read message descriptor setup on g4x.
    • -
    • intel: Include stdbool so we can stop using GLboolean when we want to.
    • -
    • i965: Fix ARL to work on gen6.
    • -
    • i956: Fix the old FP path fragment position setup on gen6.
    • -
    • i965: Fix gl_FragCoord.z setup on gen6.
    • -
    • i965: Add support for using the BLT ring on gen6.
    • -
    • intel: Update renderbuffers before looking up CopyTexImage's read buffer.
    • -
    • intel: Drop commented intel_flush from copy_teximage.
    • -
    • intel: Try to sanely check that formats match for CopyTexImage.
    • -
    • intel: Support glCopyTexImage() from XRGB8888 to ARGB8888.
    • -
    • i965: Avoid using float type for raw moves, to work around SNB issue.
    • -
    • i965: Set the alternative floating point mode on gen6 VS and WM.
    • -
    • i965: Add support for gen6 constant-index constant loading.
    • -
    • i965: Add support for gen6 reladdr VS constant loading.
    • -
    • i965: Improve the hacks for ARB_fp scalar^scalar POW on gen6.
    • -
    • i965: Factor out the ir comparision to BRW_CONDITIONAL_* code.
    • -
    • i965: Fix regression in FS comparisons on original gen4 due to gen6 changes.
    • -
    • i965: Do lowering of array indexing of a vector in the FS.
    • -
    • intel: Only do frame throttling at glFlush time when using frontbuffer.
    • -
    • intel: Handle forced swrast clears before other clear bits.
    • -
    • intel: Use tri clears when we don't know how to blit clear the format.
    • -
    • intel: Add spans code for the ARB_texture_rg support.
    • -
    • intel: Add a couple of helper functions to reduce rb code duplication.
    • -
    • intel: Fix segfaults from trying to use _ColorDrawBuffers in FBO validation.
    • -
    • intel: When validating an FBO's combined depth/stencil, use the given FBO.
    • -
    - -

    Fabian Bieler (2):

    -
      -
    • r600g: set address of pop instructions to next instruction
    • -
    • glsl: fix lowering conditional returns in subroutines
    • -
    - -

    Francisco Jerez (51):

    -
      -
    • dri/nv04: Fix PGRAPH_ERRORs when running OA.
    • -
    • dri/nv04: Mipmapping fixes.
    • -
    • dri/nv04: Align SIFM transfer dimensions.
    • -
    • dri/nv04: Fix up color mask.
    • -
    • dri/nv04: Fix maximum texture size.
    • -
    • dri/nv04: Fix provoking vertex.
    • -
    • dri/nouveau: Update nouveau_class.h.
    • -
    • dri/nouveau: Add some more extensions.
    • -
    • dri/nouveau: Fix glRenderbufferStorage with DEPTH_COMPONENT as internal format.
    • -
    • dri/nouveau: Don't request a fake front unnecessarily.
    • -
    • dri/nouveau: Don't reemit the BO state in nouveau_state_emit().
    • -
    • dri/nouveau: Cleanup references to the old FBOs on glMakeCurrent().
    • -
    • meta: Don't bind the created texture object in init_temp_texture().
    • -
    • dri/nv10: Fix the CLAMP texture wrap mode.
    • -
    • dri/nv04: Use nvgl_wrap_mode().
    • -
    • dri/nouveau: Remove unnecessary assertion.
    • -
    • dri/nouveau: Cleanup more references to old FBOs and VBOs.
    • -
    • dri/nv10-nv20: Fix texturing in some cases after a base level change.
    • -
    • dri/nouveau: Fix software mipmap generation on 1x1 textures.
    • -
    • dri/nouveau: Have a smaller amount of larger scratch buffers.
    • -
    • dri/nouveau: Remove unnecessary flush.
    • -
    • dri/nv10: Use fast Z clears.
    • -
    • dri/nouveau: Minor cleanup.
    • -
    • dri/nv10: Fake fast Z clears for pre-nv17 cards.
    • -
    • dri/nouveau: Initialize tile_flags when allocating a render target.
    • -
    • nouveau: Get larger push buffers.
    • -
    • dri/nouveau: Force a "slow" Z clear if we're getting a new depth buffer.
    • -
    • dri/nv20: Clear with the 3D engine.
    • -
    • dri/nouveau: Don't assert(0) on compressed internal formats.
    • -
    • dri/nv25: Bind a hierarchical depth buffer.
    • -
    • dri/nouveau: Call _mesa_update_state() after framebuffer invalidation.
    • -
    • dri/nouveau: Honor the access flags in nouveau_bufferobj_map_range.
    • -
    • dri/nouveau: Tell the vbo module we want real hardware BOs.
    • -
    • dri/nouveau: Split out the scratch helpers to a separate file.
    • -
    • dri/nouveau: Avoid recursion in nouveau_bo_context_reset().
    • -
    • dri/nouveau: Use a macro to iterate over the bound vertex attributes.
    • -
    • dri/nouveau: Split out array handling to its own file.
    • -
    • dri/nouveau: Optimize VBO binding re-emission.
    • -
    • dri/nouveau: Keep small DYNAMIC_DRAW vertex buffers in system ram.
    • -
    • dri/nouveau: Pipeline glTexSubImage texture transfers.
    • -
    • dri/nouveau: Fix type promotion issue on 32bit platforms.
    • -
    • dri/nouveau: Validate the framebuffer state on read buffer changes.
    • -
    • dri/nouveau: Re-emit the BO state when coming back from a software fallback.
    • -
    • meta: Don't leak alpha function/reference value changes.
    • -
    • meta: Fix incorrect rendering of the bitmap alpha component.
    • -
    • vbo: Avoid unnecessary copy to/from current in vertex format upgrade.
    • -
    • meta: Don't try to disable cube maps if the driver doesn't expose the extension.
    • -
    • meta: Handle bitmaps with alpha test enabled.
    • -
    • dri/nouveau: Split hardware/software TNL instantiation more cleanly.
    • -
    • dri/nouveau: Fix typo.
    • -
    • dri/nouveau: Kill a bunch of ternary operators.
    • -
    - -

    Fredrik Höglund (2):

    -
      -
    • r600g: Fix texture sampling with swizzled coords
    • -
    • r600g: fix pow(0, 0) evaluating to NaN
    • -
    - -

    Guillermo S. Romero (1):

    -
      -
    • r300g: Do not use buf param before checking for NULL.
    • -
    - -

    Henri Verbeet (19):

    -
      -
    • r600g: Flush upload buffers before draws instead of before flushes.
    • -
    • r600g: Check for other references before checking for existing mappings in radeon_bo_pb_map_internal().
    • -
    • r600g: Remove a redundant flush in r600_texture_transfer_map().
    • -
    • r600g: Buffer object maps imply a wait.
    • -
    • r600g: Respect PB_USAGE_UNSYNCHRONIZED in radeon_bo_pb_map_internal().
    • -
    • Revert "r600g: Flush upload buffers before draws instead of before flushes."
    • -
    • r600g: fix exports_ps to export a number not a mask.
    • -
    • r600g: Mention AMD in the renderer string.
    • -
    • r600g: Cleanup the fenced_bo list in r600_context_fini().
    • -
    • r600g: Evergreen has two extra frac_bits for the sampler LOD state.
    • -
    • r600: Evergreen has two extra frac_bits for the sampler LOD state.
    • -
    • r600g: Add PIPE_FORMAT_L8A8_UNORM for Evergreen as well.
    • -
    • r600g: Swizzle vertex data only once.
    • -
    • r600g: Synchronize supported color formats between Evergreen and r600/r700.
    • -
    • r600g: Fix the PIPE_FORMAT_L8A8_UNORM color swaps.
    • -
    • r600g: Fix the PIPE_FORMAT_A8_UNORM color swap for Evergreen as well.
    • -
    • r600g: Cleanup block bo references in r600_context_fini().
    • -
    • r600g: Cleanup fetch shader resources in r600_pipe_shader_destroy().
    • -
    • st/mesa: Handle wrapped depth buffers in st_copy_texsubimage().
    • -
    - -

    Hui Qi Tay (10):

    -
      -
    • llvmpipe: minor changes in llvm coefficient calcs
    • -
    • draw: cliptest and viewport done in a single loop in vertex shader
    • -
    • draw: added viewport and cliptest flags
    • -
    • draw: sanitize llvm variant key
    • -
    • draw: corrections for w coordinate
    • -
    • draw: corrections to allow for different cliptest cases
    • -
    • llvmpipe: Moved draw pipeline twoside function to llvm setup code
    • -
    • llvmpipe: added llvm offset setup code
    • -
    • llvmpipe: clean up polygon offset function in lp setup code
    • -
    • llvmpipe: fix such that offset/twoside function only does in-place modification
    • -
    - -

    Ian Romanick (102):

    -
      -
    • glsl2: Refactor testing for whether a deref is of a matrix or array
    • -
    • glsl2: Add flags to enable variable index lowering
    • -
    • glsl: Add doxygen comments
    • -
    • EGL DRI2: Silence piles of 'unused variable' warnings
    • -
    • EGL DRI2: Silence 'missing initializer' warnings
    • -
    • egl_glx: Silence piles of 'unused variable' warnings
    • -
    • egl: Fix several 'comparison between signed and unsigned integer' warnings
    • -
    • dri: Ensure that DRI driver cpp files are in tarballs
    • -
    • mesa: Force GL_ARB_copy_buffer to always be enabled
    • -
    • mesa: Force GL_SGIS_generate_mipmap to always be enabled
    • -
    • Remove GL_MESA_packed_depth_stencil
    • -
    • Remove GL_EXT_cull_vertex
    • -
    • Regenerate files changed by previous commit
    • -
    • Remove unnescessary initializations of UpdateTexturePalette
    • -
    • ARB_texture_rg: Add GLX protocol support
    • -
    • ARB_texture_rg: Correct some errors in RED / RG internal format handling
    • -
    • ARB_texture_rg: Add GL_TEXTURE_{RED,GREEN}_SIZE query support
    • -
    • ARB_texture_rg: Add GL_RED as a valid GL_DEPTH_TEXTURE_MODE
    • -
    • ARB_texture_rg: Handle RED and RG the same as RGB for tex env
    • -
    • ARB_texture_rg: Add R8, R16, RG88, and RG1616 internal formats
    • -
    • ARB_texture_rg: Allow RED and RG textures as FBO color buffer attachments
    • -
    • mesa: Enable GL_ARB_texture_rg in software paths
    • -
    • i965: Enable GL_ARB_texture_rg
    • -
    • mesa: Add ARB_texture_compression_rgtc as an alias for EXT_texture_compression_rgtc
    • -
    • ARB_texture_rg: Add GL_COMPRESSED_{RED,RG} cases in _mesa_is_color_format
    • -
    • mesa: Fix misplaced #endif
    • -
    • mesa: Trivial correction to comment
    • -
    • rgtc: Detect RGTC formats as color formats and as compressed formats
    • -
    • docs: Add list of bugs fixed in 7.9
    • -
    • docs: Import 7.9 release notes from 7.9 branch.
    • -
    • docs: Import 7.8.x release notes from 7.8 branch.
    • -
    • docs: download.html does not need to be updated for each release
    • -
    • docs: Update mailing lines from sf.net to freedesktop.org
    • -
    • docs: Import news updates from 7.9 branch
    • -
    • docs: added news item for 7.9 release
    • -
    • glsl: Fail linking if assign_attribute_locations fails
    • -
    • glsl: Refactor 'layout' grammar to match GLSL 1.60 spec grammar
    • -
    • glsl: Slight refactor of error / warning checking for ARB_fcc layout
    • -
    • glsl: Clear type_qualifier using memset
    • -
    • glsl: Wrap ast_type_qualifier contents in a struct in a union
    • -
    • glsl: Regenerate files modified by previous commits
    • -
    • glcpp: Add the define for ARB_explicit_attrib_location when present
    • -
    • glcpp: Regenerate files changes by previous commit
    • -
    • glsl: Add parser support for GL_ARB_explicit_attrib_location layouts
    • -
    • glsl: Regenerate files changes by previous commit
    • -
    • glsl: Track explicit location in AST to IR translation
    • -
    • glsl: Add linker support for explicit attribute locations
    • -
    • main: Enable GL_ARB_explicit_attrib_location for swrast
    • -
    • intel: Enable GL_ARB_explicit_attrib_location
    • -
    • glsl: Remove const decoration from inlined function parameters
    • -
    • docs: skeleton for 7.10 release notes
    • -
    • docs: Update status of GL 3.x related extensions
    • -
    • mesa: Validate assembly shaders when GLSL shaders are used
    • -
    • glsl: Fix incorrect assertion
    • -
    • linker: Reject shaders that have unresolved function calls
    • -
    • mesa: Silence unused variable warning
    • -
    • mesa: Refactor validation of shader targets
    • -
    • mesa: Clean up two 'comparison between signed and unsigned' warnings
    • -
    • mesa: Clean up various 'unused parameter' warnings in shaderapi
    • -
    • glsl: Slightly change the semantic of _LinkedShaders
    • -
    • linker: Trivial indention fix
    • -
    • i965: Fix indentation after commit 3322fbaf
    • -
    • linker: Improve handling of unread/unwritten shader inputs/outputs
    • -
    • glapi: Add GL_EXT_separate_shader_objects
    • -
    • glapi: Commit files changed by previous commit
    • -
    • mesa: Add infrastructure to track GL_EXT_separate_shader_objects
    • -
    • mesa: Skeletal support for GL_EXT_separate_shader_objects
    • -
    • mesa: Add display list support for GL_EXT_separate_shader_objects functions
    • -
    • mesa: Track an ActiveProgram distinct from CurrentProgram
    • -
    • Track separate programs for each stage
    • -
    • swrast: Enable GL_EXT_separate_shader_objects in software paths
    • -
    • intel: Enable GL_EXT_separate_shader_objects in Intel drivers
    • -
    • docs: add GL_EXT_separate_shader_objects to release notes
    • -
    • glsl: Fix incorrect gl_type of sampler2DArray and sampler1DArrayShadow
    • -
    • ir_to_mesa: Refactor code for emitting DP instructions
    • -
    • mesa: Allow query of MAX_SAMPLES with EXT_framebuffer_multisample
    • -
    • glsl: Refactor is_vec_{zero,one} to be methods of ir_constant
    • -
    • glsl: Simplify generation of swizzle for vector constructors
    • -
    • glsl: Make is_zero and is_one virtual methods of ir_rvalue
    • -
    • ir_to_mesa: Generate smarter code for some conditional moves
    • -
    • glsl: Add ir_unop_sin_reduced and ir_unop_cos_reduced
    • -
    • glsl: Eliminate assumptions about size of ir_expression::operands
    • -
    • glsl: Add ir_rvalue::is_negative_one predicate
    • -
    • glsl: Add unary ir_expression constructor
    • -
    • glsl: Add ir_quadop_vector expression
    • -
    • glsl: Fix matrix constructors with vector parameters
    • -
    • i915: Disallow alpha, red, RG, and sRGB as render targets
    • -
    • glsl: Use M_LOG2E constant instead of calling log2
    • -
    • glsl: Lower ir_binop_pow to a sequence of EXP2 and LOG2
    • -
    • i915: Request that POW instructions be lowered
    • -
    • i915: Correctly generate unconditional KIL instructions
    • -
    • glsl: Ensure that equality comparisons don't return a NULL IR tree
    • -
    • i965: Correctly emit constants for aggregate types (array, matrix, struct)
    • -
    • glsl: Inherrit type of declared variable from initializer
    • -
    • linker: Ensure that unsized arrays have a size after linking
    • -
    • linker: Fix regressions caused by previous commit
    • -
    • glsl: Inherrit type of declared variable from initializer after processing assignment
    • -
    • linker: Allow built-in arrays to have different sizes between shader stages
    • -
    • ir_to_mesa: Don't generate swizzles for record derefs of non-scalar/vectors
    • -
    • Refresh autogenerated file builtin_function.cpp.
    • -
    • glsl: Allow less restrictive uses of sampler array indexing in GLSL <= 1.20
    • -
    • docs: Import 7.9.1 release notes from 7.9 branch
    • -
    - -

    Jakob Bornecrantz (27):

    -
      -
    • rbug: Cast opcode to corrent int size
    • -
    • rbug: Add function to get opcode name string
    • -
    • scons: Link against talloc in the Gallium DRI drivers
    • -
    • i915g: Link with wrapper sw winsys with scons
    • -
    • tgsi: Actually care what check_soa_dependencies says
    • -
    • tgsi: Fix missing test before check
    • -
    • llvmpipe: Move makefile include to before targets
    • -
    • wrapper: Fix spelling
    • -
    • wrapper: Add a way to dewrap a pipe screen without destroying it
    • -
    • egl: Remove unnecessary headers
    • -
    • target-helpers: Remove per target software wrapper check
    • -
    • graw: Tidy graw xlib scons file a bit
    • -
    • scons: Remove old pipebuffer SConscript
    • -
    • scons: Detabify
    • -
    • scons: Check for pkg-config before trying to use it
    • -
    • scons: Check for libdrm_[intel|radeon] as well
    • -
    • scons: Move dependancy checks to the main gallium scons file
    • -
    • scons: Unify state tracker SConscripts
    • -
    • galahad: Correct the name of the scons library
    • -
    • graw: Use inline sw helper instead of roll your own loader
    • -
    • libgl-xlib: Use sw helper instead of roll your own
    • -
    • libgl-xlib: Use inline debug helper instead of non-inline version
    • -
    • graw: Use inline debug helper instead of non-inline version
    • -
    • gallium: Remove redundant sw and debug target helpers
    • -
    • i915g: Improve debug printing for textures
    • -
    • i915g: Make sure that new vbo gets updated
    • -
    • st/mesa: Unbind all constant buffers
    • -
    - -

    Jerome Glisse (75):

    -
      -
    • r600g: alternative command stream building from context
    • -
    • r600g: move chip class to radeon common structure
    • -
    • r600g: use pipe context for flushing inside map
    • -
    • r600g: add back reference check when mapping buffer
    • -
    • r600g: directly allocate bo for user buffer
    • -
    • r600g: fix multi buffer rendering
    • -
    • r600g: occlusion query for new design
    • -
    • r600g: flush color buffer after draw command
    • -
    • r600g: disable shader rebuild optimization & account cb flush packet
    • -
    • r600g: fix multiple occlusion query on same id
    • -
    • r600g: initial evergreen support in new path
    • -
    • r600g: fix typo in evergreen define (resource are in x range)
    • -
    • r600g: move use_mem_constants flags for new designs structure alignment
    • -
    • r600g: evergreen fix for new design
    • -
    • r600g: fix compilation after change to evergreend.h
    • -
    • r600g: fixup some evergreen register definitions
    • -
    • r600g: fix evergreen new path
    • -
    • r600g: fix reg definition
    • -
    • r600g: fix evergreen new path
    • -
    • r600g: bring over fix from old path to new path
    • -
    • r600g: fix vertex resource & polygon offset
    • -
    • r600g: disable early cull optimization when occlusion query running
    • -
    • r600g: move around variables to share depth uncompression code
    • -
    • r600g: use depth decompression in new path
    • -
    • r600g: fix index buffer drawing
    • -
    • r600g: build packet header once
    • -
    • r600g: fix pointsprite & resource unbinding
    • -
    • r600g: fix routing btw vertex & pixel shader
    • -
    • r600g: fix occlusion query after change to block structure
    • -
    • r600g: use ptr for blit depth uncompress function
    • -
    • r600g: fix remaining piglit issue in new design
    • -
    • r600g: switch to new design
    • -
    • r600g: suspend/resume occlusion query around clear/copy
    • -
    • r600g: avoid rebuilding the vertex shader if no change to input format
    • -
    • r600g: use a hash table instead of group
    • -
    • r600g: delete old path
    • -
    • r600g: cleanup
    • -
    • r600g: more cleanup
    • -
    • r600g: use constant buffer instead of register for constant
    • -
    • r600g: fix constant & literal src splitting, also fix mplayer gl2 shader
    • -
    • evergreeng: avoid overlapping border color btw VS & PS
    • -
    • r600g: indentation fixes
    • -
    • r600g: rename radeon_ws_bo to r600_bo
    • -
    • r600g: allow r600_bo to be a sub allocation of a big bo
    • -
    • r600g: use r600_bo for relocation argument, simplify code
    • -
    • r600g: rename radeon_ws_bo to r600_bo
    • -
    • r600g: remove dead label & fix indentation
    • -
    • r600g: store reloc information in bo structure
    • -
    • r600g: improve bo flushing
    • -
    • r600g: simplify block relocation
    • -
    • r600g: userspace fence to avoid kernel call for testing bo busy status
    • -
    • r600g: avoid segfault due to unintialized list pointer
    • -
    • r600g: fix dirty state handling
    • -
    • r600g: allow driver to work without submitting cmd to GPU
    • -
    • gallium/noop: no operation gallium driver
    • -
    • r600g: code cleanup (indent, trailing space, empty line ...)
    • -
    • r600g: fix occlusion query on evergreen (avoid lockup)
    • -
    • r600g: add fetch shader capabilities
    • -
    • r600g: dump raw shader output for debugging
    • -
    • r600g: update polygon offset only when rasterizer or zbuffer change
    • -
    • r600g: indentation fix
    • -
    • r600g: more indentation fix + warning silencing + dead code removal
    • -
    • r600g: build fetch shader from vertex elements
    • -
    • r600g: avoid useless shader rebuild at draw call
    • -
    • r600g: remove useless flush map
    • -
    • r600g: remove dead code
    • -
    • r600g: fix userspace fence against lastest kernel
    • -
    • r600g: avoid using pb* helper we are loosing previous cpu cycle with it
    • -
    • r600g: specialized upload manager
    • -
    • r600g: indentation cleanup
    • -
    • r600g: fix bo size when creating bo from handle
    • -
    • r600g: fix segfault when translating vertex buffer
    • -
    • r600g: need to reference upload buffer as the might still live accross flush
    • -
    • r600g: properly unset vertex buffer
    • -
    • r600g: avoid segfault
    • -
    - -

    Joakim Sindholt (3):

    -
      -
    • util/u_blitter: fix leak
    • -
    • radeong: fix leaks
    • -
    • r300g: silence guard band cap errors
    • -
    - -

    Johann Rudloff (3):

    -
      -
    • radeon: Implement EGL_MESA_no_surface_extension
    • -
    • radeon: Implement __DRI_IMAGE and EGL_MESA_image_drm
    • -
    • radeon: Implement GL_OES_EGL_image
    • -
    - -

    John Doe (3):

    -
      -
    • r600g: misc cleanup
    • -
    • r600g: don't double count dirty block
    • -
    • r600g: keep a mapping around for each bo
    • -
    - -

    Jon TURNEY (1):

    -
      -
    • Ensure -L$(TOP)/$(LIB_DIR) appears in link line before any -L in $LDFLAGS
    • -
    - -

    José Fonseca (128):

    -
      -
    • gallivm: Fix address register swizzle.
    • -
    • gallivm: Start collecting bitwise arithmetic helpers in a new module.
    • -
    • gallivm: Clamp indirect register indices to file_max.
    • -
    • util: linearized sRGB values don't fit into 8bits
    • -
    • llvmpipe: Default to no threading on single processor systems.
    • -
    • tgsi: Don't ignore indirect registers in tgsi_check_soa_dependencies
    • -
    • llvmpipe: Describe how to profile llvmpipe.
    • -
    • llvmpipe: When failing free fs shader too.
    • -
    • util: Flush stdout on util_format.
    • -
    • gallivm: Add unorm support to lp_build_lerp()
    • -
    • llvmpipe: Special case complementary and identify blend factors in SoA.
    • -
    • llvmpipe: Make rgb/alpha bland func/factors match, when there is no alpha.
    • -
    • draw: Prevent clipped vertices overflow.
    • -
    • draw: Fullfil the new min_lod/max_lod/lod_bias/border_color dynamic state
    • -
    • gallivm: Fetch the lod from the dynamic state when min_lod == max_lod.
    • -
    • gallivm: Remove dead experimental code.
    • -
    • llvmpipe: Decouple sampler view and sampler state updates.
    • -
    • scons: New build= option, with support for checked builds.
    • -
    • scons: New build= option, with support for checked builds.
    • -
    • trace: Fix set_index_buffer and draw_vbo tracing.
    • -
    • python/retrace: Handle set_index_buffer and draw_vbo.
    • -
    • gallivm: Use SSE4.1's ROUNDSS/ROUNDSD for scalar rounding.
    • -
    • gallivm: More comprehensive border usage logic.
    • -
    • retrace: Handle clear_render_target and clear_depth_stencil.
    • -
    • llvmpipe: Dump a few missing shader key flags.
    • -
    • llvmpipe: Fix perspective interpolation for point sprites.
    • -
    • llvmpipe: Fix sprite coord perspective interpolation of Q.
    • -
    • gallivm: Take the type signedness in consideration in round/ceil/floor.
    • -
    • gallivm: Use a faster (and less accurate) log2 in lod computation.
    • -
    • gallivm: Fast implementation of iround(log2(x))
    • -
    • gallivm: Combined ifloor & fract helper.
    • -
    • gallivm: Only apply min/max_lod when necessary.
    • -
    • gallivm: Compute lod as integer whenever possible.
    • -
    • util: Cleanup util_pack_z_stencil and friends.
    • -
    • llvmpipe: Cleanup depth-stencil clears.
    • -
    • gallivm: Vectorize the rho computation.
    • -
    • gallivm: Do not do mipfiltering when magnifying.
    • -
    • gallivm: Simplify lp_build_mipmap_level_sizes' interface.
    • -
    • gallivm: Don't compute the second mipmap level when frac(lod) == 0
    • -
    • gallivm: Use lp_build_ifloor_fract for lod computation.
    • -
    • gallivm: Clamp mipmap level and zero mip weight simultaneously.
    • -
    • gallivm: Fix copy'n'paste typo in previous commit.
    • -
    • gallivm: Implement brilinear filtering.
    • -
    • gallivm: Use the wrappers for SSE pack intrinsics.
    • -
    • gallivm: Avoid control flow for two-sided stencil test.
    • -
    • gallivm: Warn when doing inefficient integer comparisons.
    • -
    • gallivm: Move into the as much of the second level code as possible.
    • -
    • llvmpipe: First minify the texture size, then broadcast.
    • -
    • gallivm: Help for combined extraction and broadcasting.
    • -
    • gallivm: Do size computations simultanously for all dimensions (AoS).
    • -
    • llvmpipe: Prevent z > 1.0
    • -
    • llvmpipe: Fix MSVC build. Enable the new SSE2 code on non SSE3 systems.
    • -
    • gallivm: Handle code have ret correctly.
    • -
    • util: Defined M_SQRT2 when not available.
    • -
    • gallivm: Less code duplication in log computation.
    • -
    • gallivm: Special bri-linear computation path for unmodified rho.
    • -
    • gallivm: Don't generate Phis for execution mask.
    • -
    • gallivm: Use varilables instead of Phis for cubemap selection.
    • -
    • gallivm: Remove support for Phi generation.
    • -
    • gallivm: Factor out the SI->FP texture size conversion for SoA path too
    • -
    • gallivm: Simplify if/then/else implementation.
    • -
    • gallivm: Cleanup the rest of the flow module.
    • -
    • gallivm: Fix a long standing bug with nested if-then-else emission.
    • -
    • gallivm: Allow to disable bri-linear filtering with GALLIVM_DEBUG=no_brilinear runtime option
    • -
    • gallivm: Use variables instead of Phis in loops.
    • -
    • gallivm: Pass texture coords derivates as scalars.
    • -
    • llvmpipe: Remove outdated comment about stencil testing.
    • -
    • gallivm: Eliminate unsigned integer arithmetic from texture coordinates.
    • -
    • gallium: Define C99 restrict keyword where absent.
    • -
    • tgsi: Export some names for some tgsi enums.
    • -
    • gallivm: More detailed analysis of tgsi shaders.
    • -
    • llvmpipe: Use lp_tgsi_info.
    • -
    • llvmpipe: Do not dispose the execution engine.
    • -
    • llvmpipe: Fix MSVC build.
    • -
    • llmvpipe: improve mm_mullo_epi32
    • -
    • gallivm: Name anonymous union.
    • -
    • llvmpipe: Unbreak Z32_FLOAT.
    • -
    • gallivm: More accurate float -> 24bit & 32bit unorm conversion.
    • -
    • llvmpipe: Generalize the x8z24 fast path to all depth formats.
    • -
    • llvmpipe: Fix depth-stencil regression.
    • -
    • llvmpipe: Ensure z_shift and z_width is initialized.
    • -
    • gallivm: Fix SoA cubemap derivative computation.
    • -
    • llvmpipe: Fix bad refactoring.
    • -
    • llvmpipe: Initialize bld ctx via lp_build_context_init instead of ad-hoc and broken code.
    • -
    • gallivm: Comment lp_build_insert_new_block().
    • -
    • gallivm: Add a note about SSE4.1's nearest mode rounding.
    • -
    • llvmpipe: Don't test rounding of x.5 numbers.
    • -
    • gallium: Avoid using __doc__ in python scripts.
    • -
    • gallivm: always enable LLVMAddInstructionCombiningPass()
    • -
    • gallivm: Remove the EMMS opcodes.
    • -
    • mesa: Fix windows build (uint -> GLuint).
    • -
    • scons: Revamp how to specify targets to build.
    • -
    • scons: Fix MinGW cross-compilation.
    • -
    • scons: Some pipe drivers are not portable for MSVC
    • -
    • scons: Restore x11 tool behavior for backwards compatability.
    • -
    • scons: Disable python state tracker when swig is not present.
    • -
    • r600g: List recently added files in SConscript.
    • -
    • scons: Add aliases for several pipe drivers.
    • -
    • scons: i915 can't build on MSVC either.
    • -
    • scons: Propagate installation targets.
    • -
    • xorg/vmwgfx: Add missing source file to SConscript.
    • -
    • st/xorg: Add missing n to error message.
    • -
    • st/xorg: Detect libkms with scons too.
    • -
    • xorg/vmwgfx: Link libkms when available.
    • -
    • r600g: Swap the util_blitter_destroy call order.
    • -
    • gallivm: Allocate TEMP/OUT arrays only once.
    • -
    • libgl-gdi: Allow to pick softpipe/llvmpipe on runtime.
    • -
    • scons: Use inline wrap helpers more consistently.
    • -
    • svga: Use consistent hexadecimal representation on debug output.
    • -
    • scons: Alias for svga
    • -
    • wgl: Stub WGL_ARB_pbuffer support.
    • -
    • wgl: More complete WGL_ARB_pbuffer support.
    • -
    • svga: Silence debug printf.
    • -
    • scons: Move MSVS_VERSION option to common module.
    • -
    • vega: Remove extraneous ;
    • -
    • retrace: Some fixes.
    • -
    • util: C++ safe.
    • -
    • wgl: Fix double free. Remove dead code.
    • -
    • util: Plug leaks in util_destroy_gen_mipmap.
    • -
    • util: __builtin_frame_address() doesn't work on mingw.
    • -
    • util: Don't try to use imagehlp on mingw.
    • -
    • wgl: Unreference the current framebuffer after the make_current call.
    • -
    • WIN32_THREADS -> WIN32
    • -
    • mapi: Hack to avoid vgCreateFont being generated as vgCreateFontA.
    • -
    • wgl: Fix visual's buffer_mask configuration.
    • -
    • mesa: Temporary hack to prevent stack overflow on windows
    • -
    • mesa: Bump the number of bits in the register index.
    • -
    • llvmpipe: Plug fence leaks.
    • -
    - -

    Julien Cristau (1):

    -
      -
    • Makefile: don't include the same files twice in the tarball
    • -
    - -

    Keith Whitwell (89):

    -
      -
    • llvmpipe: brackets around macro arg
    • -
    • llvmpipe: remove duplicate code
    • -
    • llvmpipe: return zero from floor_pot(zero)
    • -
    • gallivm: make lp_build_sample_nop public
    • -
    • llvmpipe: add LP_PERF flag to disable various aspects of rasterization
    • -
    • llvmpipe: add DEBUG_FS to dump variant information
    • -
    • llvmpipe: use llvm for attribute interpolant calculation
    • -
    • graw: add frag-face shader
    • -
    • llvmpipe: fix flatshading in new line code
    • -
    • draw: don't apply flatshading to clipped tris with <3 verts
    • -
    • llvmpipe: handle FACING interpolants in line and point setup
    • -
    • llvmpipe: handle up to 8 planes in triangle binner
    • -
    • llvmpipe: make debug_fs_variant respect variant->nr_samplers
    • -
    • gallivm: don't apply zero lod_bias
    • -
    • llvmpipe: fail gracefully on oom in scene creation
    • -
    • llvmpipe: avoid overflow in triangle culling
    • -
    • gallivm: special case conversion 4x4f to 1x16ub
    • -
    • gallivm: round rather than truncate in new 4x4f->1x16ub conversion path
    • -
    • llvmpipe: clean up setup_tri a little
    • -
    • llvmpipe: add rast_tri_4_16 for small lines and points
    • -
    • llvmpipe: fix off-by-one in tri_16
    • -
    • llvmpipe: defer attribute interpolation until after mask and ztest
    • -
    • llvmpipe: use alloca for fs color outputs
    • -
    • llvmpipe: store zero into all alloca'd values
    • -
    • llvmpipe: dump fragment shader ir and asm when LP_DEBUG=fs
    • -
    • gallivm: specialized x8z24 depthtest path
    • -
    • gallivm: prefer blendvb for integer arguments
    • -
    • gallivm: simpler uint8->float conversions
    • -
    • llvmpipe: try to be sensible about whether to branch after mask updates
    • -
    • llvmpipe: clean up shader pre/postamble, try to catch more early-z
    • -
    • llvmpipe: simplified SSE2 swz/unswz routines
    • -
    • llvmpipe: try to do more of rast_tri_3_16 with intrinsics
    • -
    • llvmpipe: add debug helpers for epi32 etc
    • -
    • llvmpipe: try to keep plane c values small
    • -
    • llvmpipe: fix typo in last commit
    • -
    • gallium: move sse intrinsics debug helpers to u_sse.h
    • -
    • r600g: add missing file to sconscript
    • -
    • gallivm: don't branch on KILLs near end of shader
    • -
    • Revert "llvmpipe: try to keep plane c values small"
    • -
    • llvmpipe: make sure intrinsics code is guarded with PIPE_ARCH_SSE
    • -
    • llvmpipe: don't try to emit non-existent color outputs
    • -
    • r600/drm: fix segfaults in winsys create failure path
    • -
    • r600g: emit hardware linewidth
    • -
    • r600g: handle absolute modifier in shader translator
    • -
    • llvmpipe: reintroduce SET_STATE binner command
    • -
    • llvmpipe: don't pass frontfacing as a float
    • -
    • llvmpipe: slightly shrink the size of a binned triangle
    • -
    • llvmpipe: don't store plane.ei value in binned data
    • -
    • gallium: move some intrinsics helpers to u_sse.h
    • -
    • llvmpipe: do plane calculations with intrinsics
    • -
    • llvmpipe: use aligned loads/stores for plane values
    • -
    • llvmpipe: fix non-sse build after recent changes
    • -
    • llvmpipe: check shader outputs are non-null before using
    • -
    • llvmpipe: validate color outputs against key->nr_cbufs
    • -
    • llvmpipe: clean up fields in draw_llvm_variant_key
    • -
    • llvmpipe: remove setup fallback path
    • -
    • llvmpipe: fail cleanly on malloc failure in lp_setup_alloc_triangle
    • -
    • Merge remote branch 'origin/master' into lp-setup-llvm
    • -
    • llvmpipe: remove unused file
    • -
    • llvmpipe: remove unused arg from jit_setup_tri function
    • -
    • Merge branch 'llvm-cliptest-viewport'
    • -
    • draw: make sure viewport gets updated in draw llvm shader
    • -
    • llvmpipe: turn off draw offset/twoside when we can handle it
    • -
    • llvmpipe: avoid generating tri_16 for tris which extend past tile bounds
    • -
    • llvmpipe: guard against NULL task->query pointer
    • -
    • st/mesa: unbind constant buffer when not in use
    • -
    • r600g: propagate usage flags in texture transfers
    • -
    • r600g: propogate resource usage flags to winsys, use to choose bo domains
    • -
    • r600g: use a buffer in GTT as intermediate on texture up and downloads
    • -
    • r600g: remove unused flink, domain fields from r600_resource
    • -
    • r600g: set hardware pixel centers according to gl_rasterization_rules
    • -
    • evergreeng: protect against null constant buffers
    • -
    • r600g: don't call debug_get_bool_option for tiling more than once
    • -
    • evergreeng: respect linewidth state, use integer widths only
    • -
    • evergreeng: set hardware pixelcenters according to gl_rasterization_rules
    • -
    • r600g: avoid recursion with staged uploads
    • -
    • r600g: attempt to turn on DXTn formats
    • -
    • r600g: translate ARR instruction
    • -
    • r600: fix my pessimism about PIPE_TRANSFER_x flags
    • -
    • ws/r600: match bo_busy shared/fence logic in bo_wait
    • -
    • r600g: guard experimental s3tc code with R600_ENABLE_S3TC
    • -
    • r600g: do not try to use staging resource for depth textures
    • -
    • r600g: enforce minimum stride on render target texture images
    • -
    • llvmpipe: fix up twoside after recent changes
    • -
    • llvmpipe: twoside for specular color also
    • -
    • Merge branch 'lp-offset-twoside'
    • -
    • llvmpipe: raise dirty flag on transfers to bound constbuf
    • -
    • llvmpipe: remove misleading debug string
    • -
    • llvmpipe: shortcircuit some calls to set_scene_state
    • -
    - -

    Kenneth Graunke (94):

    -
      -
    • glsl: Change from has_builtin_signature to has_user_signature.
    • -
    • glsl: Don't print blank (function ...) headers for built-ins.
    • -
    • glsl: Properly handle nested structure types.
    • -
    • glsl/builtins: Fix equal and notEqual builtins.
    • -
    • glsl/builtins: Switch comparison functions to just return an expression.
    • -
    • glsl: Add comments to clarify the types of comparison binops.
    • -
    • glsl: Fix broken handling of ir_binop_equal and ir_binop_nequal.
    • -
    • glsl: "Copyright", not "Constantright"
    • -
    • i965: Fix incorrect batchbuffer size in gen6 clip state command.
    • -
    • i965: Use logical-not when emitting ir_unop_ceil.
    • -
    • glsl: Add front-end support for the "trunc" built-in.
    • -
    • glsl: Refresh autogenerated file builtin_function.cpp.
    • -
    • i965: Use RNDZ for ir_unop_trunc in the new FS.
    • -
    • i965: Correctly emit the RNDZ instruction.
    • -
    • i965: Clean up a warning in the old fragment backend.
    • -
    • glsl: Add a new ir_unop_round_even opcode for GLSL 1.30's roundEven.
    • -
    • glsl: Add front-end support for GLSL 1.30's roundEven built-in.
    • -
    • i965: Add support for ir_unop_round_even via the RNDE instruction.
    • -
    • glsl: Add support for the 1.30 round() built-in.
    • -
    • glsl: Refresh autogenerated file builtin_function.cpp.
    • -
    • glsl: Don't return NULL IR for erroneous bit-shift operators.
    • -
    • i965: Add missing "break" statement.
    • -
    • glsl: Fix copy and paste error in ast_bit_and node creation.
    • -
    • glsl: Regenerate parser files.
    • -
    • i965: Remove unused variable.
    • -
    • glsl: Remove useless ir_shader enumeration value.
    • -
    • mesa: Remove FEATURE_ARB_shading_language_120 macro.
    • -
    • glcpp: Return NEWLINE token for newlines inside multi-line comments.
    • -
    • glcpp: Refresh autogenerated lexer file.
    • -
    • glsl: Add support for GLSL 1.30's modf built-in.
    • -
    • glsl: Refresh autogenerated file builtin_function.cpp.
    • -
    • generate_builtins.py: Output large strings as arrays of characters.
    • -
    • Refresh autogenerated file builtin_function.cpp.
    • -
    • glsl: Fix constant component count in vector constructor emitting.
    • -
    • Fix build on systems where "python" is python 3.
    • -
    • i965: Add bit operation support to the fragment shader backend.
    • -
    • glsl: Remove unused ARRAY_SIZE macro.
    • -
    • glsl/builtins: Rename 'x' to 'y_over_x' in atan(float) implementation.
    • -
    • glsl/builtins: Clean up some ugly autogenerated code in atan.
    • -
    • Refresh autogenerated file builtin_function.cpp.
    • -
    • glsl: Don't print a useless space at the end of an S-Expression list.
    • -
    • ir_reader: Return a specific ir_dereference variant.
    • -
    • ir_reader: Remove useless error check.
    • -
    • ir_reader: Fix some potential NULL pointer dereferences.
    • -
    • ir_dead_functions: Actually free dead functions and signatures.
    • -
    • glsl: Remove unnecessary "unused variable" warning suppression.
    • -
    • glsl: Remove GLSL_TYPE_FUNCTION define.
    • -
    • glsl: Convert glsl_type::base_type from #define'd constants to an enum.
    • -
    • glsl: Rework reserved word/keyword handling in the lexer.
    • -
    • glsl: Add new keywords and reserved words for GLSL 1.30.
    • -
    • glsl: Add support for the 'u' and 'U' unsigned integer suffixes.
    • -
    • glsl: Refresh autogenerated lexer and parser files.
    • -
    • generate_builtins.py: Fix inconsistent use of tabs and spaces warning.
    • -
    • glsl: Implement the asinh, acosh, and atanh built-in functions.
    • -
    • glsl: Refresh autogenerated file builtin_function.cpp.
    • -
    • glsl: Add constant expression handling for asinh, acosh, and atanh.
    • -
    • glsl: Remove unused and out of date Makefile.am.
    • -
    • glsl: Rename various ir_* files to lower_* and opt_*.
    • -
    • glcpp: Define GL_FRAGMENT_PRECISION_HIGH if GLSL version >= 1.30.
    • -
    • Refresh autogenerated glcpp parser.
    • -
    • glsl: Fix constant expression handling for <, >, <=, >= on vectors.
    • -
    • glsl: Unconditionally define GL_FRAGMENT_PRECISION_HIGH in ES2 shaders.
    • -
    • Regenerate glcpp parser.
    • -
    • glsl: Reimplement the "cross" built-in without ir_binop_cross.
    • -
    • Refresh autogenerated file builtin_function.cpp.
    • -
    • glsl: Remove the ir_binop_cross opcode.
    • -
    • glsl: Refactor get_num_operands.
    • -
    • glsl: Simplify a type check by using type->is_integer().
    • -
    • glsl: Combine many instruction lowering passes into one.
    • -
    • mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.
    • -
    • glsl: Don't inline function prototypes.
    • -
    • glsl: Use do_common_optimization in the standalone compiler.
    • -
    • glsl: Add a virtual as_discard() method.
    • -
    • glsl: Refactor out cloning of function prototypes.
    • -
    • glsl: Lazily import built-in function prototypes.
    • -
    • glsl: Remove anti-built-in hacks from the print visitor.
    • -
    • glsl/linker: Free any IR discarded by optimization passes.
    • -
    • glsl: Add an optimization pass to simplify discards.
    • -
    • glsl: Add a lowering pass to move discards out of if-statements.
    • -
    • glsl: Remove "discard" support from lower_jumps.
    • -
    • glsl: Add comments to lower_jumps (from the commit message).
    • -
    • ir_print_visitor: Print out constant structure values.
    • -
    • glsl: Factor out code which emits a new function into the IR stream.
    • -
    • symbol_table: Add support for adding a symbol at top-level/global scope.
    • -
    • glsl: Properly add functions during lazy built-in prototype importing.
    • -
    • glcpp: Don't emit SPACE tokens in conditional_tokens production.
    • -
    • Refresh autogenerated glcpp parser.
    • -
    • glsl: Clean up code by adding a new is_break() function.
    • -
    • glsl: Consider the "else" branch when looking for loop breaks.
    • -
    • Remove OES_compressed_paletted_texture from the ES2 extension list.
    • -
    • glsl/builtins: Compute the correct value for smoothstep(vec, vec, vec).
    • -
    • glsl: Support if-flattening beyond a given maximum nesting depth.
    • -
    • i965: Flatten if-statements beyond depth 16 on pre-gen6.
    • -
    • i965: Internally enable GL_NV_blend_square on ES2.
    • -
    - -

    Kristian Høgsberg (16):

    -
      -
    • glx: Hold on to drawables if we're just switching to another context
    • -
    • intel: Fix GL_ARB_shading_language_120 commit
    • -
    • dri2: Make createImageFromName() take a __DRIscreen instead of __DRIcontext
    • -
    • glx: Invalidate buffers after binding a drawable
    • -
    • dri: Pass the __DRIscreen and the __DRIscreen private back to image lookup
    • -
    • glx: Only remove drawables from the hash when we actually delete them
    • -
    • gles2: Add GL_EXT_texture_format_BGRA8888 support
    • -
    • Get rid of GL/internal/glcore.h
    • -
    • gl: Remove unused GLcontextModes fields
    • -
    • Rename GLvisual and __GLcontextModes to struct gl_config
    • -
    • Drop GLframebuffer typedef and just use struct gl_framebuffer
    • -
    • Drop GLcontext typedef and use struct gl_context instead
    • -
    • Drop the "neutral" tnl module
    • -
    • Only install vtxfmt tables for OpenGL
    • -
    • i965: Don't write mrf assignment for pointsize output
    • -
    • docs: Fix MESA_drm_image typo
    • -
    - -

    Krzysztof Smiechowicz (1):

    -
      -
    • nvfx: Pair os_malloc_aligned() with os_free_aligned().
    • -
    - -

    Luca Barbieri (84):

    -
      -
    • auxiliary: fix unintended fallthrough
    • -
    • glsl: add pass to lower variable array indexing to conditional assignments
    • -
    • auxiliary: fix depth-only and stencil-only clears
    • -
    • gallium: avoid the C++ keyword "template" in sw_winsys.h
    • -
    • softpipe: make z/s test always pass if no zsbuf, instead of crashing
    • -
    • tgsi: add switch/case opcodes to tgsi_opcode_tmp.h
    • -
    • softpipe: fix whitespace
    • -
    • d3d1x: add new Direct3D 10/11 COM state tracker for Gallium
    • -
    • d3d1x: add blob and signature extraction APIs
    • -
    • d3d1x: fix compilation with recent Wine versions installed
    • -
    • d3d1x: add missing file
    • -
    • d3d1x: actually enable and fix blob apis
    • -
    • d3d1x: fix build with compilers other than GCC 4.5
    • -
    • d3d1x: add template parameters to base class ctor calls for GCC 4.4
    • -
    • d3d1x: fix GCC 4.1/4.2 build
    • -
    • d3d1x: ignore errors while building docs
    • -
    • d3d1x: attempt to fix/workaround bug #30322
    • -
    • nvfx: remove gl_PointCoord hack
    • -
    • glx: decouple dri2.c and GLX, fixing Gallium EGL and d3d1x build
    • -
    • winsys: automatically build sw winsys needed by EGL and d3d1x
    • -
    • d3d1x: don't build progs automatically
    • -
    • d3d1x: add missing memory barrier
    • -
    • d3d1x: link with CXXFLAGS
    • -
    • d3d1x: fix cf analysis
    • -
    • d3d1x: fix warning
    • -
    • d3d1x: fix segfault when hashing
    • -
    • d3d1x: destroy native_display on adapter destruction
    • -
    • d3d1x: fix GUID declarations
    • -
    • d3d1x: redesign the HWND resolver interface
    • -
    • d3d1x: fix API name
    • -
    • d3d1x: define GUIDs in the normal way
    • -
    • d3d1x: add Wine dlls (tri, tex working, but no other testing)
    • -
    • d3d1x: properly reference count the backend
    • -
    • d3d1x: fix deadlocks on non-recursive mutex
    • -
    • d3d1x: bind NULL CSOs before destroying default CSOs on context dtor
    • -
    • d3d1x: initialize the mutex
    • -
    • d3d1x: autogenerate shader enums and text from def files
    • -
    • d3d1x: s/tpf/sm4/g
    • -
    • d3d1x: normalize whitespace
    • -
    • d3d1x: remove specstrings
    • -
    • d3d1x: minifix
    • -
    • d3d1x: rename context params
    • -
    • d3d11: rename screen params
    • -
    • d3d1x: rename params in misc and objects
    • -
    • d3d1x: rename parameters in dxgi
    • -
    • d3d11: obliterate IDL parameter names
    • -
    • d3d1x: remove specstrings.h include
    • -
    • d3d1x: flush the pipe context when presenting
    • -
    • d3d1x: remove another include specstrings.h
    • -
    • d3d1x: flush properly
    • -
    • d3d1x: add missing guid.cpp
    • -
    • d3d1x: fix build without system EGL/egl.h
    • -
    • d3d1x: add autogenerated files as prerequisites, so make builds them
    • -
    • d3d1x: obliterate IDL parameter names from d3d10.idl from Wine too
    • -
    • d3d1x: add shader dumping
    • -
    • d3d1x: add untested support for geometry shader translation
    • -
    • d3d1x: don't assert on unsupported resource types
    • -
    • d3d1x: fix CheckMultisampleQualityLevels
    • -
    • d3d1x: draw to the correct buffer
    • -
    • d3d1x: fix linking of dxbc2tgsi
    • -
    • nvfx: allow setting NULL constant buffers
    • -
    • nvfx: add RGB framebuffer format support in addition to BGR
    • -
    • d3d1x: don't crash on drivers not supporting vertex or geometry sampling
    • -
    • d3d1x: assert if X visual is not among enumerated visuals
    • -
    • d3d1x: stop using GLX in demos, just use the default visual
    • -
    • d3d1x: CRLF -> LF in progs
    • -
    • mesa: make makedepend an hard requirement
    • -
    • gallium: add $(PROGS_DEPS) as dependencies for $(PROGS)
    • -
    • d3d1x: fix parallel build
    • -
    • d3d1x: add private gitignore file
    • -
    • d3d1x: fix progs linking if not all EGL platforms are enabled
    • -
    • d3d1x: link progs with CXXFLAGS
    • -
    • d3d11: advertise IDXGIDevice1, not just IDXGIDevice
    • -
    • d3d11: ignore StructureByteStride
    • -
    • d3d1x: link to libdrm for X11 platform too
    • -
    • ureg: support centroid interpolation
    • -
    • d3d1x: support centroid interpolation
    • -
    • d3d1x: properly support specifying MipLevels as 0
    • -
    • d3d1x: put proper calling convention in headers, fixes 64-bit builds
    • -
    • d3d1x: rework DXGI for occlusion testing and default width/height
    • -
    • d3d1x: fix Map
    • -
    • d3d11: fix reference counting so devices get freed
    • -
    • d3d1x: work around crash in widl
    • -
    • glsl: Unroll loops with conditional breaks anywhere (not just the end)
    • -
    - -

    Lucas Stach (1):

    -
      -
    • nvfx: fill PIPE_CAP_PRIMITIVE_RESTART and PIPE_CAP_SHADER_STENCIL_EXPORT
    • -
    - -

    Marek Olšák (100):

    -
      -
    • r300g: prevent creating multiple winsys BOs for the same handle
    • -
    • r300g/swtcl: fix CS overrun
    • -
    • st/mesa: fix assertion failure in GetTexImage for cubemaps
    • -
    • util: make calling remove_from_list multiple times in a row safe
    • -
    • r300g: fixup long-lived BO maps being incorrectly unmapped when flushing
    • -
    • r300g: make accessing map_list and buffer_handles thread-safe
    • -
    • r300g: fix a copy-paste typo for logging
    • -
    • r300g: fix the border color for every format other than PIPE_FORMAT_B8G8R8A8
    • -
    • Build r300g by default
    • -
    • util: fix util_pack_color for B4G4R4A4
    • -
    • r300g: fix macrotiling on R350
    • -
    • r300g: code cleanups
    • -
    • r300/compiler: fix projective mapping of 2D NPOT textures
    • -
    • r300/compiler: do not use copy propagation if SaturateMode is used
    • -
    • r300/compiler: fix shadow sampling with swizzled coords
    • -
    • r300g: add support for 3D NPOT textures without mipmapping
    • -
    • r300g: fix swizzling of texture border color
    • -
    • configure.ac: look for libdrm_radeon before building gallium/r300,r600
    • -
    • configure.ac: do not build xorg-r300g by default
    • -
    • Makefile: ensure Gallium's Makefile.xorg and SConscript.dri are in the tarball
    • -
    • r300g: add support for formats beginning with X, like X8R8G8B8
    • -
    • r300g: fix conditional rendering in non-wait path
    • -
    • r300g: add support for R8G8 colorbuffers
    • -
    • r300g: add support for L8A8 colorbuffers
    • -
    • update release notes for Gallium
    • -
    • r300g: fix microtiling for 16-bits-per-channel formats
    • -
    • r300g: do not print get_param errors in non-debug build
    • -
    • r300g: say no to PIPE_CAP_STREAM_OUTPUT and PIPE_CAP_PRIMITIVE_RESTART
    • -
    • mesa: allow FBO attachments of formats LUMINANCE, LUMINANCE_ALPHA, and INTENSITY
    • -
    • r300g: fix texture border for 16-bits-per-channel formats
    • -
    • st/mesa: support RGBA16 and use it for RGBA12 as well
    • -
    • r300g: add a default channel ordering of texture border for unhandled formats
    • -
    • r300g: mention ATI in the renderer string
    • -
    • r300g: rename has_hyperz -> can_hyperz
    • -
    • r300g: turn magic numbers into names in the hyperz code
    • -
    • gallium: add CAPs for indirect addressing and lower it in st/mesa when needed
    • -
    • tgsi: fill out CAPs for indirect addressing
    • -
    • i915g: fill out CAPs for indirect addressing
    • -
    • i965g: fill out CAPs for indirect addressing
    • -
    • nv50: fill out CAPs for indirect addressing
    • -
    • nvfx: fill out CAPs for indirect addressing
    • -
    • r300g: fill out CAPs for indirect addressing
    • -
    • r600g: fill out CAPs for indirect addressing
    • -
    • svga: fill out CAPs for indirect addressing
    • -
    • r300g: fix texture border color for all texture formats
    • -
    • r300g: clean up redundancy in draw functions
    • -
    • r300g: return shader caps from Draw for SWTCL vertex shaders
    • -
    • r300g: remove the hack with OPCODE_RET
    • -
    • r300g: print FS inputs uninitialized due to hardware limits to stderr
    • -
    • r300g: fix rendering with no vertex elements
    • -
    • st/mesa: enable ARB_explicit_attrib_location and EXT_separate_shader_objects
    • -
    • docs: add GL 4.1 status
    • -
    • gallium: add PIPE_SHADER_CAP_SUBROUTINES
    • -
    • st/mesa: set MaxUniformComponents
    • -
    • u_blitter: use PIPE_TRANSFER_DISCARD to prevent cpu/gpu stall
    • -
    • r300/compiler: fix rc_rewrite_depth_out for it to work with any instruction
    • -
    • r300/compiler: remove duplicate function rc_mask_to_swz
    • -
    • r300/compiler: add a function for swizzling a mask
    • -
    • r300/compiler: move util functions to radeon_compiler_util
    • -
    • u_blitter: interpolate clear color using a GENERIC varying instead of COLOR
    • -
    • st/mesa: fix texture border color for RED and RG base formats
    • -
    • util: rename u_mempool -> u_slab
    • -
    • r300g: fix texture border color once again
    • -
    • r300/compiler: implement and lower OPCODE_CLAMP
    • -
    • ir_to_mesa: Add support for conditional discards.
    • -
    • r300g: fix texture swizzling with compressed textures on r400-r500
    • -
    • r300g: disable ARB_texture_swizzle if S3TC is enabled on r3xx-only
    • -
    • r300g: fix up cubemap texture offset computation
    • -
    • r300/compiler: disable the swizzle lowering pass in vertex shaders
    • -
    • r300g: fix build
    • -
    • r300g: use internal BO handle for add_buffer and write_reloc
    • -
    • r300g: implement simple transfer_inline_write for buffers
    • -
    • mesa, st/mesa: fix gl_FragCoord with FBOs in Gallium
    • -
    • r300g: fix pointer arithmetic with void* in transfer_inline_write
    • -
    • r300g: do not remove unused constants if we are not near the limit
    • -
    • r300g: add capability bit index_bias_supported
    • -
    • r300g: one more r500_index_bias_supported leftover
    • -
    • r300g: do not use the index parameter in set_constant_buffer
    • -
    • r300g: cleanup winsys
    • -
    • r300g: optimize looping over atoms
    • -
    • st/mesa: initialize key in st_vp_varient
    • -
    • u_blitter: use util_is_format_compatible in the assert
    • -
    • r300g: cache packet dwords of 3D_LOAD_VBPNTR in a command buffer if possible
    • -
    • r300g: validate buffers only if any of bound buffers is changed
    • -
    • r300g: also revalidate the SWTCL vertex buffer after its reallocation
    • -
    • r300/compiler: don't terminate regalloc if we surpass max temps limit
    • -
    • r300/compiler: add a function to query program stats (alu, tex, temps..)
    • -
    • r300/compiler: cleanup rc_run_compiler
    • -
    • r300/compiler: do not print pair/tex/presub program stats for vertex shaders
    • -
    • r300/compiler: handle DPH and XPD in rc_compute_sources_for_writemask
    • -
    • r300/compiler: make lowering passes possibly use up to two less temps
    • -
    • r300/compiler: remove at least unused immediates if externals cannot be removed
    • -
    • r300/compiler: fix LIT in VS
    • -
    • r300/compiler: fix swizzle lowering with a presubtract source operand
    • -
    • r300g: fix rendering with a vertex attrib having a zero stride
    • -
    • r300g: finally fix the texture corruption on r3xx-r4xx
    • -
    • r300g/swtcl: re-enable LLVM
    • -
    • r300g: mark vertex arrays as dirty after a buffer_offset change
    • -
    • mesa: fix texel store functions for some float formats
    • -
    • r300/compiler: disable the rename_regs pass for loops
    • -
    - -

    Mario Kleiner (1):

    -
      -
    • mesa/r300classic: Fix dri2Invalidate/radeon_prepare_render for page flipping.
    • -
    - -

    Mathias Fröhlich (3):

    -
      -
    • r300g: Avoid returning values in a static array, fixing a potential race
    • -
    • r600g: Only compare active vertex elements
    • -
    • st/mesa: Set PIPE_TRANSFER_DISCARD for GL_MAP_INVALIDATE_RANGE/BUFFFER_BIT
    • -
    - -

    Michal Krol (10):

    -
      -
    • svga: Fix relative addressing translation for pixel shaders.
    • -
    • svga: Integer constant register file has a separate namespace.
    • -
    • tgsi/exec: Cleanup the remaining arithmetic instructions.
    • -
    • tgsi/exec: Get rid of obsolete condition codes.
    • -
    • tgsi/build: Reduce interface clutter.
    • -
    • graw/gdi: Initial commit.
    • -
    • scons: Hook-up graw-gdi target.
    • -
    • graw/gdi: Fix window dimensions.
    • -
    • os: Open file streams in binary mode.
    • -
    • graw: Export graw_save_surface_to_file().
    • -
    - -

    Nicolas Kaiser (26):

    -
      -
    • swrast: remove duplicated include
    • -
    • egl: remove duplicated include
    • -
    • gallium/rtasm: remove duplicated include
    • -
    • gallium/util: remove duplicated include
    • -
    • gallium/i915: remove duplicated include
    • -
    • gallium/llvmpipe: remove duplicated include
    • -
    • gallium/softpipe: remove duplicated include
    • -
    • gallium/st: remove duplicated includes
    • -
    • gallium/winsys: remove duplicated include
    • -
    • glx: remove duplicated include
    • -
    • dri/common: remove duplicated include
    • -
    • dri/i810: remove duplicated include
    • -
    • dri/i915: remove duplicated include
    • -
    • dri/i965: remove duplicated include
    • -
    • dri/intel: remove duplicated include
    • -
    • dri/mga: remove duplicated include
    • -
    • dri/r128: remove duplicated include
    • -
    • dri/r300: remove duplicated include
    • -
    • dri/r600: remove duplicated include
    • -
    • dri/radeon: remove duplicated includes
    • -
    • dri/savage: remove duplicated include
    • -
    • main: remove duplicated includes
    • -
    • math: remove duplicated includes
    • -
    • st: remove duplicated include
    • -
    • i965g: use Elements macro instead of manual sizeofs
    • -
    • nv50: fix always true conditional in shader optimization
    • -
    - -

    Orion Poplawski (1):

    -
      -
    • osmesa: link against libtalloc
    • -
    - -

    Owen W. Taylor (1):

    -
      -
    • r600g: Fix location for clip plane registers
    • -
    - -

    Peter Clifton (3):

    -
      -
    • intel: Fix emit_linear_blit to use DWORD aligned width blits
    • -
    • intel: Add assert check for blitting alignment.
    • -
    • meta: Mask Stencil.Clear against stencilMax in _mesa_meta_Clear
    • -
    - -

    Robert Hooker (2):

    -
      -
    • intel: Add a new B43 pci id.
    • -
    • egl_dri2: Add missing intel chip ids.
    • -
    - -

    Roland Scheidegger (16):

    -
      -
    • gallivm: fix copy&paste bug
    • -
    • gallivm: don't use URem/UDiv when calculating offsets for blocks
    • -
    • gallivm: optimize yuv decoding
    • -
    • gallivm: fix trunc/itrunc comment
    • -
    • gallivm: faster iround implementation for sse2
    • -
    • gallivm: replace sub/floor/ifloor combo with ifloor_fract
    • -
    • gallivm: optimize some tex wrap mode calculations a bit
    • -
    • gallivm: more linear tex wrap mode calculation simplification
    • -
    • gallivm: avoid unnecessary URem in linear wrap repeat case
    • -
    • gallivm: optimize soa linear clamp to edge wrap mode a bit
    • -
    • gallivm: make use of new iround code in lp_bld_conv.
    • -
    • gallivm: fix different handling of [non]normalized coords in linear soa path
    • -
    • gallivm: only use lp_build_conv 4x4f -> 1x16 ub fastpath with sse2
    • -
    • r200: fix r200 large points
    • -
    • mesa: remove unneeded DD_POINT_SIZE and DD_LINE_WIDTH tricaps
    • -
    • gallium: support for array textures and related changes
    • -
    - -

    Shuang He (1):

    -
      -
    • mesa: allow GLfixed arrays for OpenGL ES 2.0
    • -
    - -

    Stephan Schmid (1):

    -
      -
    • r600g: fix relative addressing when splitting constant accesses
    • -
    - -

    Thomas Hellstrom (21):

    -
      -
    • st/xorg: Don't try to use option values before processing options
    • -
    • xorg/vmwgfx: Make vmwarectrl work also on 64-bit servers
    • -
    • st/xorg: Add a customizer option to get rid of annoying cursor update flicker
    • -
    • xorg/vmwgfx: Don't hide HW cursors when updating them
    • -
    • st/xorg: Don't try to remove invalid fbs
    • -
    • st/xorg: Fix typo
    • -
    • st/xorg, xorg/vmwgfx: Be a bit more frendly towards cross-compiling environments
    • -
    • st/xorg: Fix compilation errors for Xservers compiled without Composite
    • -
    • st/xorg: Don't use deprecated x*alloc / xfree functions
    • -
    • xorg/vmwgfx: Don't use deprecated x*alloc / xfree functions
    • -
    • st/xorg: Fix compilation for Xservers >= 1.10
    • -
    • mesa: Make sure we have the talloc cflags when using the talloc headers
    • -
    • egl: Add an include for size_t
    • -
    • mesa: Add talloc includes for gles
    • -
    • st/egl: Fix build for include files in nonstandard places
    • -
    • svga/drm: Optionally resolve calls to powf during link-time
    • -
    • gallium/targets: Trivial crosscompiling fix
    • -
    • st/xorg: Add a function to flush pending rendering and damage
    • -
    • gallium/targets/xorg-vmwgfx: Xv fixes
    • -
    • xorg/vmwgfx: Flush even if we don't autopaint the color key
    • -
    • xorg/vmwgfx: Don't clip video to viewport
    • -
    - -

    Tilman Sauerbeck (35):

    -
      -
    • r600g: Fixed a bo leak in r600_blit_state_ps_shader().
    • -
    • r600g: Use clamped math for RCP and RSQ.
    • -
    • r600g: Formatting fixes.
    • -
    • r600g: Added DB_SHADER_CONTROL defines.
    • -
    • r600g: Only set PA_SC_EDGERULE on rv770 and greater.
    • -
    • r600g: Enable PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED.
    • -
    • r600g: Fixed the shift in S_02880C_KILL_ENABLE.
    • -
    • glsl2: Empty functions can be inlined.
    • -
    • glsl2: Fixed cloning of ir_call error instructions.
    • -
    • r600g: Added support for TGSI_SEMANTIC_FACE.
    • -
    • gallium/docs: Fixed a typo in the SCS opcode description.
    • -
    • r600g: Honour destination operand's writemask in the SCS implementation.
    • -
    • r600g: Implemented the Z and W component write for the SCS opcode.
    • -
    • python/tests: Fixed tri.py for API and TGSI syntax changes.
    • -
    • r600g: Removed debug code.
    • -
    • gallium/docs: The RET opcode may appear anywhere in a subroutine.
    • -
    • r600g: Destroy the blitter.
    • -
    • r600g: Fixed two texture surface leaks in r600_blit_uncompress_depth().
    • -
    • r600g: Cleaned up index buffer reference handling in the draw module.
    • -
    • r600g: Fixed r600_vertex_element leak.
    • -
    • r600g: Added r600_pipe_shader_destroy().
    • -
    • r600g: Also clear bc data when we're destroying a shader.
    • -
    • r600g: In radeon_bo(), call LIST_INITHEAD early.
    • -
    • r600g: Destroy the blitter.
    • -
    • r600g: Removed unused 'ptr' argument from radeon_bo().
    • -
    • r600g: Made radeon_bo_pb_map_internal() actually call radeon_bo_map().
    • -
    • r600g: Fixed unmap condition in radeon_bo_pb_destroy().
    • -
    • r600g: Made radeon_bo::map_count signed.
    • -
    • r600g: We don't support PIPE_CAP_PRIMITIVE_RESTART.
    • -
    • r600g: Delete custom_dsa_flush on shutdown.
    • -
    • r600g: Fixed two memory leaks in winsys.
    • -
    • r600g: Destroy the winsys in r600_destroy_screen().
    • -
    • st/mesa: Reset the index buffer before destroying the pipe context.
    • -
    • st/mesa: Reset the constant buffers before destroying the pipe context.
    • -
    • r600g: Removed duplicated call to tgsi_split_literal_constant().
    • -
    - -

    Timo Wiren (1):

    -
      -
    • Fix typos in comments and debug output strings.
    • -
    - -

    Tom Fogal (3):

    -
      -
    • Implement x86_64 atomics for compilers w/o intrinsics.
    • -
    • Prefer intrinsics to handrolled atomic ops.
    • -
    • Revert "Prefer intrinsics to handrolled atomic ops."
    • -
    - -

    Tom Stellard (32):

    -
      -
    • r300/compiler: Refactor the pair instruction data structures
    • -
    • r300g: Always try to build libr300compiler.a
    • -
    • r300/compiler: Fix two mistakes in the presubtract optimization pass.
    • -
    • r300/compiler: Add more helper functions for iterating through sources
    • -
    • r300/compiler: Print immediate values after "dead constants" pass
    • -
    • r300/compiler: radeon_remove_constants.c: fix indentation
    • -
    • r300/compiler: Use rc_for_all_reads_src() in "dead constants" pass
    • -
    • r300/compiler: Fix segfault in error path
    • -
    • r300/compiler: Don't use rc_error() unless the error is unrecoverable
    • -
    • r300/compiler: Don't merge instructions that write output regs and ALU result
    • -
    • r300/compiler: Create a helper function for merging presubtract sources
    • -
    • r300/compiler: Fix incorrect assumption
    • -
    • r300/compiler: Clear empty registers after constant folding
    • -
    • r300/compiler: Add a new function for more efficient dataflow analysis
    • -
    • r300g: Add new debug option for logging vertex/fragment program stats
    • -
    • r300/compiler: Use rc_get_readers_normal() for presubtract optimizations
    • -
    • r300/compiler: Don't clobber presubtract sources during optimizations
    • -
    • r300/compiler: Don't track readers into an IF block.
    • -
    • r300/compiler: Make sure presubtract sources use supported swizzles
    • -
    • r300/compiler: Fix register allocator's handling of loops
    • -
    • r300/compiler: Fix instruction scheduling within IF blocks
    • -
    • r300/compiler: Use zero as the register index for unused sources
    • -
    • r300/compiler: Ignore alpha dest register when replicating the result
    • -
    • r300/compiler: Add rc_get_readers()
    • -
    • r300/compiler: Handle BREAK and CONTINUE in rc_get_readers()
    • -
    • r300/compiler: Track readers through branches in rc_get_readers()
    • -
    • r300/compiler: Convert RGB to alpha in the scheduler
    • -
    • r300/compiler: Use presubtract operations as much as possible
    • -
    • r300/compiler: Enable rename_reg pass for r500 cards
    • -
    • r300/compiler: Add a more efficient version of rc_find_free_temporary()
    • -
    • r300/compiler: Don't allow presubtract sources to be remapped twice
    • -
    • r300/compiler: Fix black terrain in Civ4
    • -
    - -

    Victor Tseng (1):

    -
      -
    • egl/i965: include inline_wrapper_sw_helper.h
    • -
    - -

    Viktor Novotný (6):

    -
      -
    • dri/nouveau: Import headers from rules-ng-ng
    • -
    • dri/nouveau: nv04: Use rules-ng-ng headers
    • -
    • dri/nouveau: nv10: Use rules-ng-ng headers
    • -
    • dri/nouveau nv20: Use rules-ng-ng headers
    • -
    • dri/nouveau: Remove nouveau_class.h, finishing switch to rules-ng-ng headers
    • -
    • dri/nouveau: Clean up magic numbers in get_rt_format
    • -
    - -

    Vinson Lee (214):

    -
      -
    • llvmpipe: Remove unnecessary header.
    • -
    • r600g: Remove unnecessary headers.
    • -
    • mesa: Include missing header in program.h.
    • -
    • glsl: Fix 'format not a string literal and no format arguments' warning.
    • -
    • r600g: Silence uninitialized variable warning.
    • -
    • r600g: Silence uninitialized variable warning.
    • -
    • nvfx: Silence uninitialized variable warnings.
    • -
    • r600g: Silence uninitialized variable warning.
    • -
    • r600g: Silence uninitialized variable warning.
    • -
    • r600g: Silence uninitialized variable warning.
    • -
    • r600g: Silence unused variable warning.
    • -
    • nv50: Update files in SConscript to match Makefile.
    • -
    • nv50: Remove unnecessary headers.
    • -
    • nv50: Silence uninitialized variable warning.
    • -
    • nv50: Silence uninitialized variable warning.
    • -
    • nv50: Silence uninitialized variable warning.
    • -
    • gallivm: Remove unnecessary headers.
    • -
    • draw: Remove unnecessary header.
    • -
    • nv50: Silence uninitialized variable warnings.
    • -
    • nv50: Fix 'control reaches end of non-void function' warning.
    • -
    • mesa/st: Silence uninitialized variable warning.
    • -
    • gallivm: Remove unnecessary header.
    • -
    • r600g: Remove unnecessary header.
    • -
    • r600g: Remove unnecessary headers.
    • -
    • r600g: Fix implicit declaration warning.
    • -
    • r600g: Fix memory leak on error path.
    • -
    • r600g: Silence uninitialized variable warning.
    • -
    • r600g: Silence unused variable warnings.
    • -
    • mesa: bump version to 7.10
    • -
    • ir_to_mesa: Remove unused member array_indexed from struct statevar_element.
    • -
    • mesa: Silence "'valid_texture_object' defined but not used" warning.
    • -
    • x86: Silence unused variable warning on Mac OS X.
    • -
    • glsl: Fix 'control reaches end of non-void function' warning.
    • -
    • nvfx: Remove const qualifer from nvfx_vertprog_translate.
    • -
    • nvfx: Silence uninitialized variable warnings.
    • -
    • r600g: Remove unused variable.
    • -
    • nv50: Silence missing initializer warning.
    • -
    • nv50: Remove dead initialization.
    • -
    • nv50: Remove dead initialization.
    • -
    • tgsi: Remove duplicate case value.
    • -
    • glut: Define markWindowHidden for non-Windows only.
    • -
    • glut: Define eventParser for non-Windows only.
    • -
    • r300g: Silence uninitialized variable warning.
    • -
    • intel: Fix implicit declaration of function '_mesa_meta_Bitmap' warning.
    • -
    • mesa: Remove unnecessary headers.
    • -
    • r600g: Remove unnecessary header.
    • -
    • unichrome: Remove unnecessary header.
    • -
    • intel: Remove unnecessary headers.
    • -
    • r600g: Remove unused variable.
    • -
    • r600g: Disable unused variables.
    • -
    • r600g: Remove unused variable.
    • -
    • r600g: Silence 'control reaches end of non-void function' warning.
    • -
    • r600g: Remove unused variable.
    • -
    • r600g: Remove unused variable.
    • -
    • r600g: Disable unused variables.
    • -
    • intel: Remove unnecessary header.
    • -
    • st/dri: Remove unnecessary header.
    • -
    • r600g: Remove unused variable.
    • -
    • r300g: Remove unused variable.
    • -
    • r600g: Don't return a value in function returning void.
    • -
    • r600g: Remove unused variables.
    • -
    • r600g: Include p_compiler.h instead of malloc.h.
    • -
    • r600g: Silence uninitialized variable warnings.
    • -
    • scons: Add MinGW-w64 prefixes for MinGW build.
    • -
    • dri: Add GET_PROGRAM_NAME definition for Mac OS X.
    • -
    • scons: Add program/sampler.cpp to SCons build.
    • -
    • mesa: Fix printf format warning.
    • -
    • mesa: Fix printf format warning.
    • -
    • mesa: Fix printf format warning.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r600g: Update SConscript.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r600g: Update SConscript.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r600g: Update SConscript.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r600g: Fix SCons build.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r300/compiler: Remove declaration before code.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • glsl: Remove unnecessary header.
    • -
    • savage: Remove unnecessary header.
    • -
    • r600g: Remove unused variable.
    • -
    • r600g: Remove unnecessary headers.
    • -
    • r600g: Fix SCons build.
    • -
    • r600g: Remove unnecessary header.
    • -
    • gallivm: Remove unnecessary header.
    • -
    • r600g: Silence uninitialized variable warning.
    • -
    • r600g: Silence uninitialized variable warning.
    • -
    • r600g: Silence uninitialized variable warning.
    • -
    • i915: Silence unused variable warning in non-debug builds.
    • -
    • i915: Silence unused variable warning in non-debug builds.
    • -
    • i965: Silence unused variable warning on non-debug builds.
    • -
    • i965: Silence unused variable warning on non-debug builds.
    • -
    • i965: Initialize member variables.
    • -
    • r300: Silence uninitialized variable warning.
    • -
    • tdfx: Silence unused variable warning on non-debug builds.
    • -
    • gallivm: Remove unnecessary header.
    • -
    • glsl: Initialize variable in ir_derefence_array::constant_expression_value
    • -
    • mesa: Add missing header to shaderobj.h.
    • -
    • llvmpipe: Return non-zero exit code for lp_test_round failures.
    • -
    • r300/compiler: Remove unused variable.
    • -
    • st/xorg: Fix memory leak on error path.
    • -
    • llvmpipe: Initialize state variable in debug_bin function.
    • -
    • llvmpipe: Initialize variable.
    • -
    • draw: Move loop variable declaration outside for loop.
    • -
    • r600g: Ensure r600_src is initialized in tgsi_exp function.
    • -
    • glsl: Add assert for unhandled ir_shader case.
    • -
    • swrast: Print out format on unexpected failure in _swrast_DrawPixels.
    • -
    • llvmpipe: Remove unnecessary header.
    • -
    • draw: Remove unnecessary header.
    • -
    • gallivm: Silence uninitialized variable warnings.
    • -
    • gallivm: Silence uninitialized variable warnings.
    • -
    • gallivm: Silence uninitialized variable warning.
    • -
    • r300g: Silence uninitialized variable warning.
    • -
    • mesa: Remove unnecessary headers.
    • -
    • r600g: Silence uninitialized variable warnings.
    • -
    • st/mesa: Remove unnecessary header.
    • -
    • mesa: Remove unnecessary header.
    • -
    • egl: Remove unnecessary headers.
    • -
    • swrast: Print out format on unexpected failure in _swrast_ReadPixels.
    • -
    • st/mesa: Silence uninitialized variable warning.
    • -
    • savage: Remove unnecessary header.
    • -
    • st/vega: Remove unnecessary headers.
    • -
    • dri/nouveau: Silence uninitialized variable warning.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • i965: Silence uninitialized variable warning.
    • -
    • i965: Silence uninitialized variable warning.
    • -
    • mesa: Clean up header file inclusion in accum.h.
    • -
    • mesa: Clean up header file inclusion in version.h.
    • -
    • mesa: Clean up header file inclusion in api_loopback.h.
    • -
    • mesa: Clean up header file inclusion in api_validate.h.
    • -
    • mesa: Include mfeatures.h in api_loopback for FEATURE_beginend.
    • -
    • mesa: Include mfeatures.h in api_validate.c for FEATURE_* symbols.
    • -
    • mesa: Clean up header file inclusion in arrayobj.h.
    • -
    • mesa: Clean up header file inclusion in atifragshader.h.
    • -
    • mesa: Clean up header file inclusion in attrib.h.
    • -
    • mesa: Clean up header file inclusion in blend.h.
    • -
    • mesa: Clean up header file inclusion in buffers.h.
    • -
    • mesa: Clean up header file inclusion in colortab.h.
    • -
    • mesa: Clean up header file inclusion in convolve.h.
    • -
    • mesa: Clean up header file inclusion in debug.h.
    • -
    • mesa: Clean up header file inclusion in depth.h.
    • -
    • mesa: Clean up header file inclusion in depthstencil.h.
    • -
    • mesa: Clean up header file inclusion in drawpix.h.
    • -
    • mesa: Clean up header file inclusion in drawtex.h.
    • -
    • mesa: Clean up header file inclusion in enable.h.
    • -
    • mesa: Clean up header file inclusion in extensions.h.
    • -
    • graw: Add struct pipe_surface forward declaration.
    • -
    • mesa: Clean up header file inclusion in fbobject.h.
    • -
    • mesa: Clean up header file inclusion in ffvertex_prog.h.
    • -
    • mesa: Clean up header file inclusion in fog.h.
    • -
    • mesa: Clean up header file inclusion in framebuffer.h.
    • -
    • mesa: Clean up header file inclusion in hint.h.
    • -
    • mesa: Clean up header file inclusion in histogram.h.
    • -
    • mesa: Clean up header file inclusion in image.h.
    • -
    • mesa: Add missing header and forward declarations in dd.h.
    • -
    • mesa: Clean up header file inclusion in light.h.
    • -
    • mesa: Clean up header file inclusion in lines.h.
    • -
    • mesa: Clean up header file inclusion in matrix.h.
    • -
    • mesa: Clean up header file inclusion in multisample.h.
    • -
    • mesa: Clean up header file inclusion in nvprogram.h.
    • -
    • winsys/xlib: Add cygwin to SConscript.
    • -
    • mesa: Clean up header file inclusion in pixel.h.
    • -
    • mesa: Clean up header file inclusion in pixelstore.h.
    • -
    • mesa: Fix printf format warnings.
    • -
    • mesa: Clean up header file inclusion in points.h.
    • -
    • i965: Silence uninitialized variable warning.
    • -
    • glsl: Add ir_constant_expression.cpp to SConscript.
    • -
    • mesa: Add definitions for inverse hyperbolic function on MSVC.
    • -
    • glsl: Fix 'control reaches end of non-void function' warning.
    • -
    • glsl: Add lower_vector.cpp to SConscript.
    • -
    • glsl: Fix type of label 'default' in switch statement.
    • -
    • st/mesa: Remove unnecessary headers.
    • -
    • swrast: Remove unnecessary header.
    • -
    • r600: Remove unnecesary header.
    • -
    • intel: Remove unnecessary header.
    • -
    • mesa: Clean up header file inclusion in polygon.h.
    • -
    • mesa: Clean up header file inclusion in rastpos.h.
    • -
    • mesa: Clean up header file inclusion in readpix.h.
    • -
    • mesa: Clean up header file inclusion in renderbuffer.h.
    • -
    • mesa: Clean up header file inclusion in scissor.h.
    • -
    • mesa: Clean up header file inclusion in shaderapi.h.
    • -
    • mesa: Clean up header file inclusion in shared.h.
    • -
    • mesa: Clean up header file inclusion in stencil.h.
    • -
    • r600: Remove unnecessary header.
    • -
    • llvmpipe: Remove unnecessary headers.
    • -
    • mesa: Clean up header file inclusion in syncobj.h.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • r300/compiler: Move declaration before code.
    • -
    • mesa: Clean up header file inclusion in texcompress.h.
    • -
    • st/vega: Silence uninitialized variable warning.
    • -
    • mesa: Clean up header file inclusion in texcompress_s3tc.h.
    • -
    • mesa: Clean up header file inclusion in texenvprogram.h.
    • -
    • mesa: Clean up header file inclusion in texformat.h.
    • -
    • mesa: Clean up header file inclusion in texgetimage.h.
    • -
    • mesa: Clean up header file inclusion in texobj.h.
    • -
    • gallium/noop: Add prototype for noop_init_state_functions.
    • -
    • mesa: Clean up header file inclusion in texrender.h.
    • -
    • mesa: Clean up header file inclusion in transformfeedback.h.
    • -
    • mesa: Clean up header file inclusion in varray.h.
    • -
    • mesa: Clean up header file inclusion in viewport.h.
    • -
    • r200: Silence uninitialized variable warning.
    • -
    • r600g: Fix SCons build.
    • -
    • i965: Silence uninitialized variable warning.
    • -
    - -

    Xavier Chantry (8):

    -
      -
    • nv50: fix size of outputs_written array
    • -
    • nv50: apply layout_mask to tile_flags
    • -
    • nvfx: only expose one rt on nv30
    • -
    • nvfx: fb->nr_cbufs <= 1 on nv30
    • -
    • nvfx: reset nvfx->hw_zeta
    • -
    • nvfx: fixes after array textures merge
    • -
    • init ps->context with util_surfaces_get and do_get
    • -
    • gallium/trace: check bind_vertex_sampler_states and set_vertex_sampler_views
    • -
    - -

    Xiang, Haihao (10):

    -
      -
    • mesa: fix regression from b4bb6680200b5a898583392f4c831c02f41e63f7
    • -
    • i965: add support for polygon mode on Sandybridge.
    • -
    • i965: fix for flat shading on Sandybridge
    • -
    • i965: set minimum/maximum Point Width on Sandybridge
    • -
    • meta: allow nested meta operations
    • -
    • i965: support for two-sided lighting on Sandybridge
    • -
    • i965: fix register region description
    • -
    • i965: use align1 access mode for instructions with execSize=1 in VS
    • -
    • i965: don't spawn GS thread for LINELOOP on Sandybridge
    • -
    • i965: use BLT to clear buffer if possible on Sandybridge
    • -
    - -

    Zack Rusin (8):

    -
      -
    • rbug: fix rbug when contexts are being destroyed
    • -
    • llvmpipe: fix rasterization of vertical lines on pixel boundaries
    • -
    • scons: build the xorg state trackers only when env includes drm
    • -
    • gallivm: implement indirect addressing of the output registers
    • -
    • gallivm: implement indirect addressing over inputs
    • -
    • gallivm: fix storing of the addr register
    • -
    • scons: add alias for identity
    • -
    • gallium/util: add states relevant to geometry shaders
    • -
    - -

    Zhenyu Wang (40):

    -
      -
    • i965: disasm quarter and write enable instruction control on sandybridge
    • -
    • i965: new state dump for sandybridge
    • -
    • i965: enable accumulator update in PS kernel too on sandybridge
    • -
    • i965: Fix color interpolation on sandybridge
    • -
    • i965: force zero in clipper to ignore RTAIndex on sandybridge
    • -
    • i965: fix point size setting in header on sandybridge
    • -
    • i965: ff sync message change for sandybridge
    • -
    • i965: ignore quads for GS kernel on sandybridge
    • -
    • i965: add sandybridge viewport state bo into validation list
    • -
    • i965: VS use SPF mode on sandybridge for now
    • -
    • i965: fix jump count on sandybridge
    • -
    • i965: Fix sampler on sandybridge
    • -
    • i965: fix const register count for sandybridge
    • -
    • i965: Add all device ids for sandybridge
    • -
    • i965: sandybridge pipe control workaround before write cache flush
    • -
    • i965: only allow SIMD8 kernel on sandybridge now
    • -
    • i965: don't do calculation for delta_xy on sandybridge
    • -
    • i965: fix pixel w interpolation on sandybridge
    • -
    • i965: enable polygon offset on sandybridge
    • -
    • i965: fix scissor state on sandybridge
    • -
    • i965: fix point sprite on sandybridge
    • -
    • i965: fix occlusion query on sandybridge
    • -
    • i965: fallback bitmap operation on sandybridge
    • -
    • i965: Always set tiling for depth buffer on sandybridge
    • -
    • i965: fallback lineloop on sandybridge for now
    • -
    • Revert "i965: Always set tiling for depth buffer on sandybridge"
    • -
    • i965: always set tiling for fbo depth buffer on sandybridge
    • -
    • i965: Fix GS hang on Sandybridge
    • -
    • Revert "i965: fallback lineloop on sandybridge for now"
    • -
    • i965: refresh wm push constant also for BRW_NEW_FRAMENT_PROGRAM on gen6
    • -
    • i965: fix dest type of 'endif' on sandybridge
    • -
    • Revert "i965: VS use SPF mode on sandybridge for now"
    • -
    • i965: also using align1 mode for math2 on sandybridge
    • -
    • i965: Fix GS state uploading on Sandybridge
    • -
    • i965: upload WM state for _NEW_POLYGON on sandybridge
    • -
    • i965: Use MI_FLUSH_DW for blt ring flush on sandybridge
    • -
    • i965: explicit tell header present for fb write on sandybridge
    • -
    • i965: Fix occlusion query on sandybridge
    • -
    • i965: Use last vertex convention for quad provoking vertex on sandybridge
    • -
    • i965: Fix provoking vertex select in clip state for sandybridge
    • -
    - -

    Zou Nan hai (1):

    -
      -
    • i965: skip too small size mipmap
    • -
    - -

    delphi (2):

    -
      -
    • draw: added userclip planes and updated variant_key
    • -
    • draw: some changes to allow for runtime changes to userclip planes
    • -
    - -

    nobled (3):

    -
      -
    • r300g: Abort if atom allocations fail
    • -
    • r300g: Abort if draw_create() fails
    • -
    • r300g: Drop unnecessary cast
    • -
    - -

    pontus lidman (1):

    -
      -
    • mesa: check for posix_memalign() errors
    • -
    - -

    richard (2):

    -
      -
    • evergreen : fix z format setting, enable stencil.
    • -
    • 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.
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.11.1.html b/mesalib/docs/relnotes-7.11.1.html deleted file mode 100644 index 2c23acb82..000000000 --- a/mesalib/docs/relnotes-7.11.1.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.11.1 Release Notes / November 17, 2011

    - -

    -Mesa 7.11.1 is a bug fix release which fixes bugs found since the 7.11 release. -

    -

    -Mesa 7.11 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -ac0181a4076770fb657c1169af43aa09  MesaLib-7.11.1.tar.gz
    -a77307102cee844ff6544ffa8fafeac1  MesaLib-7.11.1.tar.bz2
    -dfcb11516c1730f3981b55a65a835623  MesaLib-7.11.1.zip
    -2cb2b9ecb4fb7d1a6be69346ee886952  MesaGLUT-7.11.1.tar.gz
    -3f54e314290d4dacbab089839197080b  MesaGLUT-7.11.1.tar.bz2
    -5d66c7ee8c5cc2f27e1ffb037ad4172c  MesaGLUT-7.11.1.zip
    -
    - -

    New features

    -

    None.

    - -

    Bug fixes

    - -

    This list is likely incomplete.

    - -
      -
    • Bug 3165 - texImage.IsCompressed and texImage.CompressedSize issues
    • - -
    • Bug 23525 - Software rendering on QEMU guests badly broken
    • - -
    • Bug 28125 - DRI2 prevents indirect glx
    • - -
    • Bug 34628 - [ilk] skybox errors in quake4
    • - -
    • Bug 36371 - r200: piglit readPixSanity failure
    • - -
    • Bug 36669 - EmitNoMainReturn set to 1 doesn't make the GLSL compiler lower all the RET opcodes
    • - -
    • Bug 36939 - multitexturing is messed up in quake wars (regression)
    • - -
    • Bug 37907 - [swrast] SIGSEGV swrast/s_depth.c:569
    • - -
    • Bug 38163 - Gnome Shell Display Bug
    • - -
    • Bug 38625 - ast_to_hir.cpp:1761: const glsl_type* process_array_type(YYLTYPE*, const glsl_type*, ast_node*, _mesa_glsl_parse_state*): Assertion `dummy_instructions.is_empty()' failed.
    • - -
    • Bug 38729 - [softpipe] sp_quad_depth_test.c:215:convert_quad_stencil: Assertion `0' failed.
    • - -
    • Bug 38863 - [IVB]GPU hang when running 3D games like openarena
    • - -
    • Bug 39193 - [llvmpipe and r600g] glCheckFramebufferStatusEXT segfaults in Gallium when checking status on a framebuffer bound to a texture that's bound to a pixmap
    • - -
    • Bug 39651 - [glsl] Assertion failure when implicitly converting out parameters
    • - -
    • Bug 39991 - [regression]GL_PALETTE8_RGBA8_OES format of glCompressedTexImage2D will cause err GL_INVALID_ENUM with GLES1.x
    • - -
    • Bug 40022 - [i915] out-of-bounds write src/mesa/drivers/dri/i915/i915_fragprog.c:321
    • - -
    • Bug 40062 - in etqw the strogg radar is black (regression)
    • - -
    • Bug 40324 - [SNB] gpu hang in mesa 7.11
    • - -
    • Bug 40533 - i915: piglit glean/readPixSanity: DRI2SwapBuffers: BadDrawable (invalid Pixmap or Window parameter)
    • - -
    • Bug 41096 - [sandybridge-m-gt2+] GPU lockup render.IPEHR: 0x7a000002
    • - -
    • Bug 41969 - The Mesa meta save/restore code doesn't always save the active program
    • - -
    • Bug 42175 - RV730: Display errors in glxgears & WebGL
    • - -
    • Bug 42268 - [bisected] oglc pbo(negative.invalidOffsetValue) aborts on 7.11 branch
    • - - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-7.11..mesa-7.11.1
    -
    - -

    Adam Jackson (2):

    -
      -
    • drisw: Remove cargo culting that breaks GLX 1.3 ctors
    • -
    • glx: Don't enable INTEL_swap_event unconditionally
    • -
    - -

    Alex Deucher (1):

    -
      -
    • r600g: fix up vs export handling
    • -
    - -

    Ben Widawsky (1):

    -
      -
    • intel: GetBuffer fix
    • -
    - -

    Brian Paul (15):

    -
      -
    • docs: add 7.11 md5 sums
    • -
    • docs: news item for 7.11 release
    • -
    • st/mesa: Convert size assertions to conditionals in st_texture_image_copy.
    • -
    • softpipe: add missing stencil format case in convert_quad_stencil()
    • -
    • mesa: fix texstore addressing bugs for depth/stencil formats
    • -
    • mesa: add missing breaks for GL_TEXTURE_CUBE_MAP_SEAMLESS queries
    • -
    • swrast: don't try to do depth testing if there's no depth buffer
    • -
    • meta: fix/add checks for GL_EXT_framebuffer_sRGB
    • -
    • mesa: fix PACK_COLOR_5551(), PACK_COLOR_1555() macros
    • -
    • meta: fix broken sRGB mipmap generation
    • -
    • mesa: add _NEW_CURRENT_ATTRIB in _mesa_program_state_flags()
    • -
    • mesa: fix error handling for dlist image unpacking
    • -
    • mesa: generate GL_INVALID_OPERATION in glIsEnabledIndex() between Begin/End
    • -
    • mesa: fix incorrect error code in _mesa_FramebufferTexture1D/3DEXT()
    • -
    • mesa: fix format/type check in unpack_image() for bitmaps
    • -
    - -

    Carl Simonson (1):

    -
      -
    • i830: Add missing vtable entry for i830 from the hiz work.
    • -
    - -

    Carl Worth (5):

    -
      -
    • glcpp: Fix two (or more) successive applications of token pasting
    • -
    • glcpp: Test a non-function-like macro using the token paste operator
    • -
    • glcpp: Implement token pasting for non-function-like macros
    • -
    • glcpp: Raise error if defining any macro containing two consecutive underscores
    • -
    • glcpp: Add a test for #elif with an undefined macro.
    • -
    - -

    Chad Versace (5):

    -
      -
    • glsl: Add method glsl_type::can_implicitly_convert_to()
    • -
    • glsl: Fix implicit conversions in non-constructor function calls
    • -
    • glsl: Remove ir_function.cpp:type_compare()
    • -
    • glsl: Fix conversions in array constructors
    • -
    • x86-64: Fix compile error with clang
    • -
    - -

    Chia-I Wu (3):

    -
      -
    • glsl: empty declarations should be valid
    • -
    • intel: rename intel_extensions_es2.c to intel_extensions_es.c
    • -
    • intel: fix GLESv1 support
    • -
    - -

    Chris Wilson (1):

    -
      -
    • i915: out-of-bounds write in calc_live_regs()
    • -
    - -

    Christopher James Halse Rogers (1):

    -
      -
    • glx/dri2: Paper over errors in DRI2Connect when indirect
    • -
    - -

    David Reveman (1):

    -
      -
    • i915g: Fix off-by-one in scissors.
    • -
    - -

    Eric Anholt (16):

    -
      -
    • mesa: Don't skip glGetProgramEnvParam4dvARB if there was already an error.
    • -
    • mesa: Fix glGetUniform() type conversions.
    • -
    • mesa: Add support for Begin/EndConditionalRender in display lists.
    • -
    • mesa: Throw an error instead of asserting for condrender with query == 0.
    • -
    • mesa: Throw an error when starting conditional render on an active query.
    • -
    • mesa: Don't skip glGetProgramLocalParam4dvARB if there was already an error.
    • -
    • glsl: Allow ir_assignment() constructor to not specify condition.
    • -
    • glsl: Clarify error message about whole-array assignment in GLSL 1.10.
    • -
    • glsl: When assigning to a whole array, mark the array as accessed.
    • -
    • glsl: When assiging from a whole array, mark it as used.
    • -
    • i965/fs: Respect ARB_color_buffer_float clamping.
    • -
    • i965: Add missing _NEW_POLYGON flag to polygon stipple upload.
    • -
    • i965: Fix polygon stipple offset state flagging.
    • -
    • intel: Mark MESA_FORMAT_X8_Z24 as always supported.
    • -
    • mesa: Don't error on glFeedbackBuffer(size = 0, buffer = NULL)
    • -
    • glsl: Fix gl_NormalMatrix swizzle setup to match i965's invariants.
    • -
    - -

    Henri Verbeet (6):

    -
      -
    • mesa: Also set the remaining draw buffers to GL_NONE when updating just the first buffer in _mesa_drawbuffers().
    • -
    • r600g: Support the PIPE_FORMAT_R16_FLOAT colorformat.
    • -
    • mesa: Check the texture against all units in unbind_texobj_from_texunits().
    • -
    • mesa: Allow sampling from units >= MAX_TEXTURE_UNITS in shaders.
    • -
    • mesa: Use the Elements macro for the sampler index assert in validate_samplers().
    • -
    • mesa: Fix a couple of TexEnv unit limits.
    • -
    - -

    Ian Romanick (17):

    -
      -
    • mesa: Add utility function to get base format from a GL compressed format
    • -
    • mesa: Return the correct internal fmt when a generic compressed fmt was used
    • -
    • mesa: Make _mesa_get_compressed_formats match the texture compression specs
    • -
    • linker: Make linker_error set LinkStatus to false
    • -
    • linker: Make linker_{error,warning} generally available
    • -
    • mesa: Ensure that gl_shader_program::InfoLog is never NULL
    • -
    • ir_to_mesa: Use Add linker_error instead of fail_link
    • -
    • ir_to_mesa: Emit warnings instead of errors for IR that can't be lowered
    • -
    • i915: Fail without crashing if a Mesa IR program uses too many registers
    • -
    • i915: Only emit program errors when INTEL_DEBUG=wm or INTEL_DEBUG=fallbacks
    • -
    • mesa: Add GL_OES_compressed_paletted_texture formats to _mesa_is_compressed_format
    • -
    • mesa: Add GL_OES_compressed_paletted_texture formats to _mesa_base_tex_format
    • -
    • mesa: Refactor expected texture size check in cpal_get_info
    • -
    • mesa: Add _mesa_cpal_compressed_format_type
    • -
    • mesa: Refactor compressed texture error checks to work with paletted textures
    • -
    • mesa: Remove redundant compressed paletted texture error checks
    • -
    • mesa: Advertise GL_OES_compressed_paletted_texture in OpenGL ES1.x
    • -
    - -

    Jeremy Huddleston (3):

    -
      -
    • apple: Silence some debug spew
    • -
    • apple: Use the correct (OpenGL.framework) glViewport and glScissor during init
    • -
    • apple: Implement applegl_unbind_context
    • -
    - -

    José Fonseca (1):

    -
      -
    • docs: Update llvmpipe docs.
    • -
    - -

    Kenneth Graunke (12):

    -
      -
    • glsl: Avoid massive ralloc_strndup overhead in S-Expression parsing.
    • -
    • mesa: In validate_program(), initialize errMsg for safety.
    • -
    • i965/gen5+: Fix incorrect miptree layout for non-power-of-two cubemaps.
    • -
    • i965: Use proper texture alignment units for cubemaps on Gen5+.
    • -
    • i965: Fix incorrect maximum PS thread count shift on Ivybridge.
    • -
    • i965: Emit depth stalls and flushes before changing depth state on Gen6+.
    • -
    • i965/fs: Allow SIMD16 with control flow on Ivybridge.
    • -
    • i965: Allow SIMD16 color writes on Ivybridge.
    • -
    • i965: Fix inconsistent indentation in brw_eu_emit.c.
    • -
    • intel: Depth format fixes
    • -
    • i965: Apply post-sync non-zero workaround to homebrew workaround.
    • -
    • mesa/get: Move MAX_LIGHTS from GL/ES2 to GL/ES1.
    • -
    - -

    Kristian Høgsberg (1):

    -
      -
    • glx: Don't flush twice if we fallback to dri2CopySubBuffer
    • -
    - -

    Marc Pignat (1):

    -
      -
    • drisw: Fix 24bpp software rendering, take 2
    • -
    - -

    Marcin Baczyński (2):

    -
      -
    • configure: fix gcc version check
    • -
    • configure: allow C{,XX}FLAGS override
    • -
    - -

    Marcin Slusarz (3):

    -
      -
    • nouveau: fix nouveau_fence leak
    • -
    • nouveau: fix crash during fence emission
    • -
    • nouveau: fix fence hang
    • -
    - -

    Marek Olšák (19):

    -
      -
    • vbo: do not call _mesa_max_buffer_index in debug builds
    • -
    • winsys/radeon: fix space checking
    • -
    • r300/compiler: fix a warning that a variable may be uninitialized
    • -
    • r300/compiler: remove an unused-but-set variable and simplify the code
    • -
    • u_vbuf_mgr: cleanup original vs real vertex buffer arrays
    • -
    • u_vbuf_mgr: don't take per-instance attribs into acc. when computing max index
    • -
    • u_vbuf_mgr: fix max_index computation for large src_offset
    • -
    • u_vbuf_mgr: s/u_vbuf_mgr_/u_vbuf_
    • -
    • u_vbuf_mgr: remove unused flag U_VBUF_UPLOAD_FLUSHED
    • -
    • u_vbuf_mgr: rework user buffer uploads
    • -
    • u_vbuf_mgr: fix uploading with a non-zero index bias
    • -
    • configure.ac: fix xlib-based softpipe build
    • -
    • r600g: add index_bias to index buffer bounds
    • -
    • r300g: fix rendering with a non-zero index bias in draw_elements_immediate
    • -
    • Revert "r300g: fix rendering with a non-zero index bias in draw_elements_immediate"
    • -
    • pb_bufmgr_cache: flush cache when create_buffer fails and try again
    • -
    • r300g: don't return NULL in resource_from_handle if the resource is too small
    • -
    • r600g: set correct tiling flags in depth info
    • -
    • r300g: don't call u_trim_pipe_prim in r300_swtcl_draw_vbo
    • -
    - -

    Michel Dänzer (4):

    -
      -
    • st/mesa: Finalize texture on render-to-texture.
    • -
    • glx/dri2: Don't call X server for SwapBuffers when there's no back buffer.
    • -
    • gallium/util: Add macros for converting from little endian to CPU byte order.
    • -
    • r300g: Fix queries on big endian hosts.
    • -
    - -

    Neil Roberts (1):

    -
      -
    • meta: Fix saving the active program
    • -
    - -

    Paul Berry (18):

    -
      -
    • glsl: Lower unconditional return statements.
    • -
    • glsl: Refactor logic for determining whether to lower return statements.
    • -
    • glsl: lower unconditional returns and continues in loops.
    • -
    • glsl: Use foreach_list in lower_jumps.cpp
    • -
    • glsl: In lower_jumps.cpp, lower both branches of a conditional.
    • -
    • glsl: Lower break instructions when necessary at the end of a loop.
    • -
    • glsl: improve the accuracy of the radians() builtin function
    • -
    • glsl: improve the accuracy of the atan(x,y) builtin function.
    • -
    • Revert "glsl: Skip processing the first function's body in do_dead_functions()."
    • -
    • glsl: Emit function signatures at toplevel, even for built-ins.
    • -
    • glsl: Constant-fold built-in functions before outputting IR
    • -
    • glsl: Check array size is const before asserting that no IR was generated.
    • -
    • glsl: Perform implicit type conversions on function call out parameters.
    • -
    • glsl: Fix type error when lowering integer divisions
    • -
    • glsl: Rework oversize array check for gl_TexCoord.
    • -
    • glsl: Remove field array_lvalue from ir_variable.
    • -
    • glsl hierarchical visitor: Do not overwrite base_ir for parameter lists.
    • -
    • glsl: improve the accuracy of the asin() builtin function.
    • -
    - -

    Tobias Droste (1):

    -
      -
    • r300/compiler: simplify code in peephole_add_presub_add
    • -
    - -

    Tom Fogal (1):

    -
      -
    • Only use gcc visibility support with gcc4+.
    • -
    - -

    Tom Stellard (1):

    -
      -
    • r300/compiler: Fix regalloc for values with multiple writers
    • -
    - -

    Vadim Girlin (5):

    -
      -
    • st/mesa: flush bitmap cache on query and conditional render boundaries
    • -
    • r600g: use backend mask for occlusion queries
    • -
    • r600g: take into account force_add_cf in pops
    • -
    • r600g: fix check_and_set_bank_swizzle
    • -
    • r600g: fix replace_gpr_with_pv_ps
    • -
    - -

    Yuanhan Liu (17):

    -
      -
    • i965: fix the constant interp bitmask for flat mode
    • -
    • mesa: fix error handling for glEvalMesh1/2D
    • -
    • mesa: fix error handling for some glGet* functions
    • -
    • mesa: fix error handling for glTexEnv
    • -
    • mesa: fix error handling for glIsEnabled
    • -
    • mesa: fix error handling for glPixelZoom
    • -
    • mesa: fix error handling for glSelectBuffer
    • -
    • mesa: fix error handling for glMapBufferRange
    • -
    • mesa: fix error handling for glMaterial*
    • -
    • intel: fix the wrong code to detect null texture.
    • -
    • mesa: add a function to do the image data copy stuff for save_CompressedTex(Sub)Image
    • -
    • i965: setup address rounding enable bits
    • -
    • mesa: generate error if pbo offset is not aligned with the size of specified type
    • -
    • mesa: fix inverted pbo test error at _mesa_GetnCompressedTexImageARB
    • -
    • mesa: handle the pbo case for save_Bitmap
    • -
    • mesa: handle PBO access error in display list mode
    • -
    • intel: don't call unmap pbo if pbo is not mapped
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.11.2.html b/mesalib/docs/relnotes-7.11.2.html deleted file mode 100644 index 985ce879a..000000000 --- a/mesalib/docs/relnotes-7.11.2.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.11.2 Release Notes / November 27, 2011

    - -

    -Mesa 7.11.2 is a bug fix release which fixes bugs found since the 7.11 release. -

    -

    -Mesa 7.11 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -b9e84efee3931c0acbccd1bb5a860554  MesaLib-7.11.2.tar.gz
    -0837c52698fe3252369c3fdb5195afcc  MesaLib-7.11.2.tar.bz2
    -141273c274d12e0d2bafb497fe937da3  MesaLib-7.11.2.zip
    -39ae9926794794503815ffdc069521eb  MesaGLUT-7.11.2.tar.gz
    -35ca3a0b54cb6f9d2e0e4eae8f6bb95e  MesaGLUT-7.11.2.tar.bz2
    -f8705fcff2510b6c39cd27b575c05dba  MesaGLUT-7.11.2.zip
    -
    - -

    New features

    -

    None.

    - -

    Bug fixes

    - -

    This list is likely incomplete.

    - -
      -
    • Bug 43143 - Mesa 7.11.1 fails to build at main/dlist.c:4532 with error message: "format not a string literal and no format arguments"
    • - -
    • Incorrect handling of CopyTexImage from RGBA window to LA texture.
    • - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-7.11.1..mesa-7.11.2
    -
    - -

    Brian Paul (4):

    -
      -
    • mesa: stop using ctx->Driver.CopyTexImage1D/2D() hooks
    • -
    • mesa: fix format selection for meta CopyTexSubImage()
    • -
    • docs: update news.html and relnotes.html for 7.11.1 release
    • -
    • mesa: use format string in _mesa_error() call to silence warning
    • -
    - -

    Chad Versace (3):

    -
      -
    • intel: Simplify stencil detiling arithmetic
    • -
    • intel: Fix region dimensions for stencil buffers received from DDX
    • -
    • intel: Fix separate stencil in builtin DRI2 backend
    • -
    - -

    Ian Romanick (3):

    -
      -
    • docs: Add 7.11.1 release md5sums
    • -
    • mesa: set version string to 7.11.2-devel
    • -
    • mesa: Bump version to 7.11.2 (final)
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.11.html b/mesalib/docs/relnotes-7.11.html deleted file mode 100644 index 8573908c5..000000000 --- a/mesalib/docs/relnotes-7.11.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.11 Release Notes / July 31, 2011

    - -

    -Mesa 7.11 is a new development release. -People who are concerned with stability and reliability should stick -with a previous release or wait for Mesa 7.11.1. -

    -

    -Mesa 7.11 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -fa2c7068503133fb2453244cda11cb2a  MesaLib-7.11.tar.gz
    -ff03aca82d0560009a076a87c888cf13  MesaLib-7.11.tar.bz2
    -ede1ac0976f6f05df586093fc17d63ed  MesaLib-7.11.zip
    -b4fb81a47c5caedaefad49af7702c23d  MesaGLUT-7.11.tar.gz
    -77a9a0bbd7f8bca882aa5709b88cb071  MesaGLUT-7.11.tar.bz2
    -c19ef0c6eb61188c96ed4ccedd70717c  MesaGLUT-7.11.zip
    -
    - - -

    New features

    -
      -
    • GL_ARB_ES2_compatibility (gallium drivers) -
    • GL_ARB_color_buffer_float (gallium drivers, i965) -
    • GL_ARB_draw_buffers_blend (gallium) -
    • GL_ARB_draw_instanced extension (gallium drivers, swrast) -
    • GL_ARB_instanced_arrays extension (gallium drivers) -
    • GL_ARB_occlusion_query2 (gallium drivers, swrast) -
    • GL_ARB_robustness (all drivers) -
    • GL_ARB_sampler_objects (gallium drivers) -
    • GL_ARB_seamless_cube_map (gallium r600) -
    • GL_ARB_shader_texture_lod (gallium drivers, i965) -
    • GL_ARB_sync (gallium drivers only, intel support was in 7.6) -
    • GL_ARB_texture_compression_rgtc (gallium drivers, swrast, i965) -
    • GL_ARB_texture_float (gallium, i965) -
    • GL_EXT_packed_float (gallium r600) -
    • GL_EXT_texture_compression_latc (gallium drivers, swrast) -
    • GL_EXT_texture_compression_rgtc (gallium drivers, swrast, i965) -
    • GL_EXT_texture_filter_anisotropic (swrast) -
    • GL_EXT_texture_shared_exponent (gallium drivers, swrast) -
    • GL_EXT_texture_sRGB_decode (gallium drivers, swrast, i965) -
    • GL_EXT_texture_snorm (gallium drivers) -
    • GL_AMD_draw_buffers_blend (alias of the ARB variant) -
    • GL_AMD_seamless_cubemap_per_texture (gallium r600) -
    • GL_AMD_shader_stencil_export (alias of the ARB variant) -
    • GL_ATI_draw_buffers (all drivers) -
    • GL_ATI_texture_compression_3dc (gallium drivers, swrast) -
    • GL_ATI_texture_float (gallium, i965) -
    • GL_NV_conditional_render (i965) -
    • GL_NV_texture_barrier (gallium drivers) -
    • Enable 16-wide fragment shader execution in i965 driver. This should improve performance in many applications. -
    • Initial alpha-level support for Intel "Ivybridge" chipsets in the i965 driver. -
    - - -

    Bug fixes

    - -

    This list is likely incomplete. This list only includes bug fixes not -included in the previous release (7.10.3). Many of these are regressions that -did not exist in the 7.10 release series at all.

    - -
      -
    • Bug 25871 - nearest neighbour samples wrong texel (precision/rounding problem)
    • - -
    • Bug 29162 - mesa/darwin is severly broken
    • - -
    • Bug 30080 - [i915] piglit nodepth-test fails
    • - -
    • Bug 30217 - Possible sources of memory leaks reported by valgrind
    • - -
    • Bug 30266 - Regression, segfault in libdrm_intel when calling glBitmap
    • - -
    • Bug 31561 - [i915] intel_regions.c:289: intel_region_release: Assertion `region->map_refcount == 0' failed.
    • - -
    • Bug 31744 - [GLSL] overriding built-in function impacts another shader
    • - -
    • Bug 32308 - [llvmpipe] src/gallium/auxiliary/gallivm/lp_bld_init.c:319:gallivm_register_garbage_collector_callback: Assertion `NumCallbacks < 32' failed.
    • - -
    • Bug 32309 - [softpipe] SIGSEGV sp_state_derived.c:204
    • - -
    • Bug 32459 - [softpipe] glean depthStencil regression
    • - -
    • Bug 32460 - [softpipe] piglit texwrap 1D regression
    • - -
    • Bug 32534 - [arrandale/sandybridge] Mesa swallowing GEM ioctl failures
    • - -
    • Bug 32560 - To fix: 64-bit-portabilty-issue state_tracker/st_program.c:427
    • - -
    • Bug 32634 - [r300g, bisected] Massive corruption in Unigine Sanctuary
    • - -
    • Bug 32768 - VBO rendering using glDrawArrays causes program termination and "cs IB too big" message
    • - -
    • Bug 32804 - [swrast] glean pixelFormats regression
    • - -
    • Bug 32814 - Build error in osmesa.c due to change in _mesa_update_framebuffer_visual() signature
    • - -
    • Bug 32859 - Mesa doesn't compile under NetBSD
    • - -
    • Bug 32912 - [bisected, r300g] Unigine Sanctuary: r300_emit.c:902:r300_emit_vertex_arrays: Assertion `&buf->b.b' failed with RADEON_HYPERZ=1
    • - -
    • Bug 32945 - [RADEON:KMS:R300G] HiZ: Weird behavior with 3 pipes
    • - -
    • Bug 33046 - [bisected]glean/pixelFormats and 3 oglc cases segfault
    • - -
    • Bug 33185 - [RADEON:KMS:R300G] X crashes when kwin effects are turned on
    • - -
    • Bug 33215 - [llvmpipe] piglit fbo-drawbuffers2-blend regression
    • - -
    • Bug 33247 - [swrast] tnl/t_draw.c:471: _tnl_draw_prims: Assertion `prim[i].num_instances > 0' failed
    • - -
    • Bug 33284 - [llvmpipe] piglit fbo-drawbuffers-fragcolor fails
    • - -
    • Bug 33306 - [glsl] GLSL integer division by zero crashes GLSL compiler
    • - -
    • Bug 33353 - [softpipe] piglit fbo-srgb looks incorrect
    • - -
    • Bug 33360 - inclusion of $(TALLOC_LIBS) in src/mesa/drivers/osmesa/Makefile causes a build failure
    • - -
    • Bug 33374 - [bisect] FTBFS on commit 9767d3b5 (glapi: Fix OpenGL ES 1.1 and 2.0 interop)
    • - -
    • Bug 33508 - [glsl] GLSL compiler modulus by zero crash
    • - -
    • Bug 33555 - [softpipe] tgsi/tgsi_sse2.c:1527:emit_tex: Assertion `0' failed.
    • - -
    • Bug 33885 - [glsl] GLSL compiler allows recursion
    • - -
    • Bug 33823 - [glsl] ralloc.c:78: get_header: Assertion `info->canary == 0x5A1106' failed.
    • - -
    • Bug 33934 - 3D blitting is orders of magnitude slower than equivalent 2D blitting.
    • - -
    • Bug 33946 - Crash: Mesa checks for invalid pointer, then uses it anyway.
    • - -
    • Bug 34008 - r600g: piglit failure (regression)
    • - -
    • Bug 34009 - Automatic Mipmap Generation produces very blurry image.
    • -
    • Bug 34042 - Surfaceless eglMakeCurrent() fails if the supplied EGLContext is not a dummy context
    • - -
    • Bug 34049 - r600g: assertion failure (regression)
    • - -
    • Bug 34119 - [glsl] piglit glsl-texcoord-array regression
    • - -
    • Bug 34323 - [i915 GLSL gles2] gl_FragCoord.w not correct
    • - -
    • Bug 34346 - src/glsl relies on $PWD which can be unset
    • - -
    • Bug 34378 - st/mesa: 2a904fd6a0cb80eec6dec2bae07fd8778b04caf3 breaks sauerbraten
    • - -
    • Bug 34419 - Kwin crashes screensaver exits
    • - -
    • Bug 34463 - state_tracker/st_texture.c:370:st_texture_image_copy: Assertion `u_minify(src->width0, srcLevel) == width' failed.
    • - -
    • Bug 34468 - src/glsl/Makefile fix
    • - -
    • Bug 34541 - [ilk, wine] massive render corruption after recent patchset
    • - -
    • Bug 34589 - [pineview bisected]many cases regression
    • - -
    • Bug 34595 - [bisected piketon]oglc half_float_vertex(misc.fillmode.wireframe) regressed
    • - -
    • Bug 34597 - [bisected piketon]oglc blend-constcolor and 7 draw-buffers2 subcases regressed
    • - -
    • Bug 34603 - [bisected piketon]oglc vbo subcase basic.bufferdata regressed
    • - -
    • Bug 34604 - [bisected piketon]piglit fbo/fbo-depth-sample-compare regressed
    • - -
    • Bug 34646 - [bisected piketon]ogles2conform GL2Tests/GL/gl_FragCoord/gl_FragCoord_w_frag.test
    • - -
    • Bug 34656 - i965: Crash when running WebGL Conformance Test in firefox-4 nightly build
    • - -
    • Bug 34691 - [GLSL] matrix array member assignment with a complex subscript fails
    • - -
    • Bug 34906 - [Pineview] Some WebGL conformance tests will crash firefox
    • - -
    • Bug 34968 - Bad fps in Lightsmark benchmark
    • - -
    • Bug 35025 - [Patch] Serious compiler warnings
    • - -
    • Bug 35312 - r600g: Automatic mipmap generation doesn't work properly
    • - -
    • Bug 35373 - [[GM45] OpenGL] GL_EXT_texture_sRGB_decode broken
    • - -
    • Bug 35434 - [RADEON:KMS:R600G] etqw: broken ground textures
    • - -
    • Bug 35441 - [PATCH] Mesa does not find nouveau include files with --enable-shared-dricore
    • - -
    • Bug 35614 - [SNB] random hang on piglit case shaders/glsl-max-varyings
    • - -
    • Bug 35820 - [bisected SNB] System hangs when Gnome with compiz start up
    • - -
    • Bug 35822 - [bisected pineview] many cases related to depth and stencil failed
    • - -
    • Bug 35849 - when sampling textures from both fragment and vertex shaders the vertex texture has the incorrect texture bound
    • - -
    • Bug 35852 - [bisected pineview] oglc case pxconv-read failed
    • - -
    • Bug 35961 - src/gallium/auxiliary/util/u_draw.c:77:util_draw_max_index: Assertion `buffer_size - format_size <= buffer_size' failed.
    • - -
    • Bug 36032 - piglit fdo9833 regression
    • - -
    • Bug 36033 - main/shaderapi.c:1044: validate_samplers: Assertion `(sizeof(targetName)/sizeof(*(targetName))) == NUM_TEXTURE_TARGETS' failed.
    • - -
    • Bug 36086 - [wine] Segfault r300_resource_copy_region with some wine apps and RADEON_HYPERZ
    • - -
    • Bug 36182 - Game Trine from http://www.humblebundle.com/ needs ATI_draw_buffers
    • - -
    • Bug 36268 - [r300g, bisected] minor flickering in Unigine Sanctuary
    • - -
    • Bug 36282 - 34a5d3b9f4740601708c82093e2114356d749e65: glxgears segfaults when compiled with shared glapi
    • - -
    • Bug 36333 - can't build demos if mesa build with --enable-selinux
    • - -
    • Bug 36473 - [bisected] piglit bugs/fdo23670-depth_test failed
    • - -
    • Bug 36572 - [bisected]oglc case texenv segfaults
    • - -
    • Bug 36609 - 45920d2ecb38b14fdda5253fecce996570c22863 breaks sauerbraten on r300g
    • - -
    • Bug 36648 - [bisected SNB]piglit fbo/fbo-alphatest-nocolor failed
    • - -
    • Bug 36649 - [bisected SNB]oglc draw-buffers2 failed with 16-wide
    • - -
    • Bug 36753 - Some textures now rendered as completely black after register allocator rewrite.
    • - -
    • Bug 36821 - [bisected SNB]oglc api-texcoord causes GPU hang
    • - -
    • Bug 36914 - r600g: add rv670 flushing workaround. Causes games and some mesa demos to segfault.
    • - -
    • Bug 36917 - Rendering glitches in ETQW
    • - -
    • Bug 36939 - multitexturing is messed up in quake wars (regression)
    • - -
    • Bug 36987 - Intel GMA 4500 ARB_shader_texture_lod support
    • - -
    • Bug 37028 - Amnesia/HPL2 Demo: Strange graphical bugs on r600g
    • - -
    • Bug 37150 - sRGB textures are too bright in Starcraft 2
    • - -
    • Bug 37154 - main/texstore.c:4187: _mesa_texstore_rgb9_e5: Assertion `baseInternalFormat == 0x1907' failed.
    • - -
    • Bug 37157 - [bisected] KDE KWin crashes on start with delayed BO mapping
    • - -
    • Bug 37168 - Regression: Severe memory leak when running Second Life
    • - -
    • Bug 37366 - [i965 bisected ILK] Fragment shader discard tests occasionally fail
    • - -
    • Bug 37383 - incorrect GLSL optimization
    • - -
    • Bug 37476 - [wine] Devil May Cry 4: TXD tgsi opcode unsupported / translation from TGSI failed / missing vertex shader
    • - -
    • Bug 37743 - [bisected i965]oglc GLSLlinker subcase negative.varying.beyondMaxVaryingFloats aborted
    • - -
    • Bug 37766 - Crash in dri2InvalidateBuffers when resizing Java window with OpenGL pipeline enabled
    • - -
    • Bug 37839 - main/teximage.c:2393: _mesa_choose_texture_format: Assertion `f != MESA_FORMAT_NONE' failed.
    • - -
    • Bug 37934 - Corruption with topogun trace
    • - -
    • Bug 38015 - Some extensions enabled even when not supported by the underlying driver
    • - -
    • Bug 38134 - [bisected i965]piglit fbo/fbo-blit-d24s8 crashed
    • - -
    • Bug 38145 - r600g/evergreen: Incorrect rendering of some effects in doom3
    • - -
    • Bug 38440 - ETQW: Model in team select rendering too bright
    • - -
    • Bug 38566 - [regression] ETQW crashes with 21972c85ea734dbfcf69629c6b0b940efb42d4ba
    • - -
    • Bug 38584 - MESA_GLSL=dump causes SEGV in ir_print_visitor::unique_name
    • - -
    • Bug 38599 - THe value of WGL_PBUFFER_HEIGHT_ARB is returned as width in wglQueryPbufferARB
    • - -
    • Bug 38602 - [bisected] Wrong display after "prefer native texture formats when possible" commit
    • - -
    • Bug 38624 - program/ir_to_mesa.cpp:1440: virtual void ir_to_mesa_visitor::visit(ir_dereference_variable*): Assertion `var->location != -1' failed.
    • - -
    • Bug 38626 - vbo: Don't discount stride breaks piglit on softpipe/r600g
    • - -
    • Bug 38649 - piglit fbo-copyteximage regression
    • - -
    • Bug 38762 - [IVB bisected]3D demos like glxgears abort
    • - -
    • Bug 38771 - [[GM45] DRI] GPU hangs with current Mesa GIT when running certain OpenGL applications
    • - -
    • Bug 38842 - Various valid GLX attributes are rejected by MESA glxChooseFBConfig
    • - -
    • Bug 38971 - [bisected]oglc glsl-autointconv subcase negative.function.ambiguousMatch failed
    • - -
    • Bug 38987 - sampler allowed as non-uniform / non-function parameters
    • - -
    • Bug 39024 - [Pineview webgl] many webgl conformance cases crash the browser
    • - -
    • Bug 39083 - [regression, bisected, r600g] Wrong rendering of Bubbles3D screensaver
    • - -
    • Bug 39119 - setting SQ_LDS_RESOURCE_MGMT register to zero in other applications muddles up font rendering permanently
    • - -
    • Bug 39209 - [bisected] Wrong display after "prefer native texture formats when possible" commit - part2
    • - -
    • Bug 39219 - libgl conflict with xbmc causes lock up on xbmc exit
    • - -
    • Bug 39257 - [bisected SNB]Mesa demos engine causes GPU hang
    • - -
    • Bug 39487 - [i965] brw_wm_surface_state.c:495: brw_update_renderbuffer_surface: Assertion `brw->has_surface_tile_offset || (tile_x == 0 && tile_y == 0)' failed.
    • - -
    • Bug 39515 - FTBFS: libEGL depends on libgbm, but libEGL builds first
    • - -
    • Bug 39572 - Cogs: GPU hang
    • - -
    - - -

    Changes

    -
      -
    • The Windows MSVC project files have been removed. -They haven't been maintained in quite a while. -Building with SCons is an alternative. -
    • Removed GL_SGI_texture_color_table support from swrast driver - the only -driver that implemented it. -
    - -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-7.10..mesa-7.11
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.2.html b/mesalib/docs/relnotes-7.2.html deleted file mode 100644 index 596af3fca..000000000 --- a/mesalib/docs/relnotes-7.2.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.2 Release Notes / 20 September 2008

    - -

    -Mesa 7.2 is a stable release fixing bugs found in 7.1, which was a -new development release. -

    -

    -Mesa 7.2 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -Note that this version of Mesa does not use the GEM memory manager. -The master branch of git uses GEM. -The prototype DRI2 code that was in 7.1 has also been removed. -

    -

    -DRM version 2.3.1 should be used with Mesa 7.2 -

    - - -

    MD5 checksums

    -
    -81a2a4b7cbfce7553f7ad8d924edbe2f  MesaLib-7.2.tar.gz
    -04d379292e023df0b0266825cb0dbde5  MesaLib-7.2.tar.bz2
    -8bc497a37977a55e987a4d1fabc3d882  MesaLib-7.2.zip
    -10c762e39486df395838af1d7b57e69c  MesaDemos-7.2.tar.gz
    -22e03dc4038cd63f32c21eb60994892b  MesaDemos-7.2.tar.bz2
    -1197bc4eb3bf44e291c14d4eb2e19381  MesaDemos-7.2.zip
    -42e3c6c6d156cd9dc545dbef72407354  MesaGLUT-7.2.tar.gz
    -f67daf93e12c4a459703bbf3e4004e31  MesaGLUT-7.2.tar.bz2
    -0390567eb2c2d12fbf82e8523fd77e2b  MesaGLUT-7.2.zip
    -
    - - -

    New features

    -
      -
    • i965 driver: added support for G41 chipset (Intel) -
    - - -

    Bug fixes

    -
      -
    • Fixed display list bug involving primitives split across lists (bug 17564) -
    • Fixed some issues with glBindAttribLocation() -
    • Fixed crash in _tnl_InvalidateState() found with Amira (bug 15834) -
    • Assorted bug fixes for Ming build -
    • Fixed some vertex/pixel buffer object reference counting bugs -
    • Fixed depth/stencil bug in i915/945 driver -
    • Fixed some shader flow control bugs in i965 driver -
    • Fixed a few tdfx driver bugs which prevented driver from working -
    • Fixed multisample enable/disable bug -
    - -

    Changes

    -
      -
    • Updated SGI header files with new license terms. -
    - - - -

    To Do (someday) items

    -
      -
    • Remove the MEMCPY() and _mesa_memcpy() wrappers and just use memcpy(). -Probably do the same for malloc, calloc, etc. -The wrappers were useful in the past for memory debugging but now we -have valgrind. Not worried about SunOS 4 support anymore either... -
    • Switch to freeglut -
    • Fix linux-glide target/driver. -
    • Improved lambda and derivative calculation for frag progs. -
    - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.3.html b/mesalib/docs/relnotes-7.3.html deleted file mode 100644 index 409274f77..000000000 --- a/mesalib/docs/relnotes-7.3.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.3 Release Notes / 22 January 2009

    - -

    -Mesa 7.3 is a new development release. -Users especially concerned with stability should stick with latest -stable release: version 7.2. -

    -

    -Mesa 7.3 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -8ed03191432b22d118d88d6db497f304  MesaLib-7.3.tar.gz
    -781e7811a6ed5c97b2b8defefc8ffbc9  MesaLib-7.3.tar.bz2
    -3ccba9a1734ed6d4b3389e1535d90fbf  MesaLib-7.3.zip
    -d312e974b31043b13b61bac5fbf00b87  MesaDemos-7.3.tar.gz
    -3f0741394069bdf2329565a387396cda  MesaDemos-7.3.tar.bz2
    -4d0887fd4c66a824295cdd619f6d34cb  MesaDemos-7.3.zip
    -2d7661b66022bcb8878728f3d5bd33ab  MesaGLUT-7.3.tar.gz
    -abe8036a724c1a483bdad6b5a55ddc1a  MesaGLUT-7.3.tar.bz2
    -5f247819b47e2a7c62d07a6afe5262fb  MesaGLUT-7.3.zip
    -
    - - -

    New features

    -
      -
    • Support for GLSL 1.20 -
    • Intel DRI drivers now use GEM and DRI2 -
    - - -

    Bug fixes

    -
      -
    • Assorted GLSL bug fixes -
    • Assorted i965 driver fixes -
    • Fix for wglCreateLayerContext() in WGL/Windows driver -
    • Build fixes for OpenBSD and gcc 2.95 -
    • GLSL preprocessor handles #pragma now -
    • Fix incorrect transformation of GL_SPOT_DIRECTION -
    • Fixed several bugs (#18367 and #19625) in glXMakeContextCurrent() -
    • Assorted Windows build fixes -
    - -

    Changes

    -
      -
    • Deprecated the "XMesa" interface (include/GL/xmesa*.h files) -
    • Deprecated the "FXMesa" interface (include/GL/fxmesa.h file) -
    • Deprecated the "Allegro" interface (include/GL/amesa.h file) -
    • Removed include/GL/uglmesa.h header -
    • Removed include/GLView.h header for BeOS -
    - - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.4.1.html b/mesalib/docs/relnotes-7.4.1.html deleted file mode 100644 index 9b584a02b..000000000 --- a/mesalib/docs/relnotes-7.4.1.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.4.1 Release Notes / 18 April 2009

    - -

    -Mesa 7.4.1 is a stable development release fixing bugs since the 7.4 release. -

    -

    -Mesa 7.4.1 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -0c3a72f3295a53a134c04bd7d209ea62  MesaLib-7.4.1.tar.gz
    -423260578b653818ba66c2fcbde6d7ad  MesaLib-7.4.1.tar.bz2
    -84f78b154d4bd5c3ecc42eeff2e56676  MesaLib-7.4.1.zip
    -aa0ad323e59d6d10ff33ac0dde462a60  MesaDemos-7.4.1.tar.gz
    -1e169fb6abc2b45613f1c98a82dfe690  MesaDemos-7.4.1.tar.bz2
    -294e42be2d74176596c994ec23322fcf  MesaDemos-7.4.1.zip
    -92373bfa48e7b68dddf356e86b0e5699  MesaGLUT-7.4.1.tar.gz
    -336f3824b578b072211e0beecf4f04f4  MesaGLUT-7.4.1.tar.bz2
    -20751388d8ef16b42d25d9e3d705d101  MesaGLUT-7.4.1.zip
    -
    - - -

    Bug fixes

    -
      -
    • Fixed a two-sided lighting bug in fixed-function-to-GPU code generation -
    • Fixed some Darwin issues (Jeremy Huddleston) -
    • Indexing the GLSL gl_EyePlane[] or gl_ObjectPlane[] arrays with a variable - was broken, bug 20986 -
    • Fixed incorrect texture unit bias in TXB instruction -
    • glTexParameter settings weren't always propogated to drivers -
    • Assorted vertex/fragment program bug fixes -
    • Fixed point rendering in software rasterizer -
    • Fixed potential deadlock in object hash functions -
    • Fix a couple bugs surrounding front-buffer rendering with DRI2, but this - is not quite complete. -
    • Fixed glPopAttrib() bug when restoring user clip planes -
    - - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.4.2.html b/mesalib/docs/relnotes-7.4.2.html deleted file mode 100644 index 79652605f..000000000 --- a/mesalib/docs/relnotes-7.4.2.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.4.2 Release Notes / May 15, 2009

    - -

    -Mesa 7.4.2 is a stable development release fixing bugs since the 7.4.1 release. -

    -

    -Mesa 7.4.2 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -172f5193154dad731387f97bd44ab68f  MesaLib-7.4.2.tar.gz
    -b10a76e32bde4645cfc34ea0416d7d8b  MesaLib-7.4.2.tar.bz2
    -cc6dfc2efd424cc342b84e6bcd78ce5d  MesaLib-7.4.2.zip
    -182a7e78aa7a480b3650a5c956dbddd1  MesaDemos-7.4.2.tar.gz
    -bf559a0485667a3bfa4513a23501579b  MesaDemos-7.4.2.tar.bz2
    -5379e622b65e8c22022dba34aeb6f4f9  MesaDemos-7.4.2.zip
    -7cc43c1c35bf6a279a16e063dea3b8c5  MesaGLUT-7.4.2.tar.gz
    -e0dfc44d537904a030861e5b3c760c11  MesaGLUT-7.4.2.tar.bz2
    -4a6cf5bbbac190d6ba97448b3098b7f4  MesaGLUT-7.4.2.zip
    -
    - - -

    Bug fixes

    -
      -
    • Fixed segfault when rendering to front buffer with DRI 1. -
    • Fixed swrast texture rectangle bug when wrap mode = GL_CLAMP_TO_BORDER and - filter mode = GL_LINEAR. (bug 21461) -
    • Fixed texture object mem leak during context destruction. -
    • Fixed a state validation bug in glCopyTex[Sub]Image() -
    • Fixed some i965 GLSL bugs. -
    • Fixed an R300 driver texture object bad memory reference. -
    - - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.4.3.html b/mesalib/docs/relnotes-7.4.3.html deleted file mode 100644 index 25e2bd12b..000000000 --- a/mesalib/docs/relnotes-7.4.3.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.4.3 Release Notes / 19 June 2009

    - -

    -Mesa 7.4.3 is a stable development release fixing bugs since the 7.4.2 release. -

    -

    -Mesa 7.4.3 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -34c5a6c47ed51f31c4fa36e269831352  MesaLib-7.4.3.tar.gz
    -70a983ba3deaa8bd63b18bbab283f698  MesaLib-7.4.3.tar.bz2
    -34f21b3205b271d575030aa98a2dda51  MesaLib-7.4.3.zip
    -56752b7adede212e6097afb10d0c0d59  MesaDemos-7.4.3.tar.gz
    -8ffa51c4833b1e298300a005e2d7ca2a  MesaDemos-7.4.3.tar.bz2
    -0037d24d41400d6fb9800ae55b8c863f  MesaDemos-7.4.3.zip
    -20e24f6692c0c90e7e3b220f79c4108d  MesaGLUT-7.4.3.tar.gz
    -03a4beeef74fc5ef0b1d6d04710e5a8a  MesaGLUT-7.4.3.tar.bz2
    -273788230adbdb9d57371309adedcf5f  MesaGLUT-7.4.3.zip
    -
    - - -

    Bug fixes

    -
      -
    • Fixed texture object reference counting bug (bug 21756) -
    • Allow depth/stencil textures to be attached to GL_STENCIL_ATTACHMENT point - (SF bug 2793846) -
    • Added missing glGet case for GL_VERTEX_ARRAY_BINDING_APPLE -
    • Fixed some OSMesa build issues -
    • Fixed a vertex buffer object crash -
    • Fixed broken glTexImage3D() when image type = GL_BITMAP -
    • Fixed some GLSL preprocessor bugs -
    • Fixed framebuffer mem leak in i945/i965 DRI drivers -
    • Fixed texture coordinate repeat bug in swrast (bug 21872) -
    • Fixed incorrect viewport clamping (lower bound is zero, not one) -
    • GLX fix for glean's makeCurrent test case -
    - - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.4.4.html b/mesalib/docs/relnotes-7.4.4.html deleted file mode 100644 index 667805d88..000000000 --- a/mesalib/docs/relnotes-7.4.4.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.4.4 Release Notes / 23 June 2009

    - -

    -Mesa 7.4.4 is a stable development release fixing bugs since the 7.4.3 release. -

    -

    -Mesa 7.4.4 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -0b56fe5a88ab0c3c5b2da5068f63f416  MesaLib-7.4.4.tar.gz
    -b66528d314c574dccbe0ed963cac5e93  MesaLib-7.4.4.tar.bz2
    -2818076f3ba23fa87fdfe4602a637a18  MesaLib-7.4.4.zip
    -3e77b208386c47b18165bce5ae317e2c  MesaDemos-7.4.4.tar.gz
    -628142ec9a54cd28cc027e6ce26cff47  MesaDemos-7.4.4.tar.bz2
    -d08a30d30ab7174859aa709cba6c726d  MesaDemos-7.4.4.zip
    -e6e91ba16e274d40cf3a97ad3218af01  MesaGLUT-7.4.4.tar.gz
    -e14bbb52517e8121b31f1387515365ab  MesaGLUT-7.4.4.tar.bz2
    -f10ed20469753c2b3d68c99854f80fd4  MesaGLUT-7.4.4.zip
    -
    - - -

    Bug fixes

    -
      -
    • Fixed i965/i915 segfault in screen destruction (bug 22408) -
    - - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.4.html b/mesalib/docs/relnotes-7.4.html deleted file mode 100644 index f29cbd942..000000000 --- a/mesalib/docs/relnotes-7.4.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.4 Release Notes / 27 March 2009

    - -

    -Mesa 7.4 is a stable development release fixing bugs since the 7.3 release. -

    -

    -Mesa 7.4 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -ed6bd7437177307e51e16d0c7c381dfa  MesaLib-7.4.tar.gz
    -7ecddb341a2691e0dfdb02f697109834  MesaLib-7.4.tar.bz2
    -433e823f8245f9fd5f397e7b719a8e47  MesaLib-7.4.zip
    -656eee6128016fb237e01aa8dabbc703  MesaDemos-7.4.tar.gz
    -02816f10f30b1dc5e069e0f68c177c98  MesaDemos-7.4.tar.bz2
    -44a70d6db4aa4c64ecc47871b6aceee8  MesaDemos-7.4.zip
    -25f80db4f8645cd3e58e2c9af53ec341  MesaGLUT-7.4.tar.gz
    -04ec01caebde44f5b0d619f00716b368  MesaGLUT-7.4.tar.bz2
    -019dc213baecaa3cb1278847d41b8591  MesaGLUT-7.4.zip
    -
    - - -

    New features

    -
      -
    • Added MESA_GLX_FORCE_DIRECT env var for Xlib/software driver -
    • GLSL version 1.20 is returnd by the GL_SHADING_LANGUAGE_VERSION query -
    - - -

    Bug fixes

    -
      -
    • glGetActiveUniform() returned wrong size for some array types -
    • Fixed some error checking in glUniform() -
    • Fixed a potential glTexImage('proxy target') segfault -
    • Fixed bad reference counting for 1D/2D texture arrays -
    • Fixed VBO + glPush/PopClientAttrib() bug #19835 -
    • Assorted i965 driver bug fixes -
    • Fixed a Windows compilation failure in s_triangle.c -
    • Fixed a GLSL array indexing bug -
    • Fixes for building on Haiku -
    - -

    Changes

    -
      -
    • Updated GL/glxext.h to version 48 -
    • Assorted updates for building on Solaris -
    - - - -

    Driver Status

    - -
    -Driver			Status
    -----------------------	----------------------
    -DRI drivers		varies with the driver
    -XMesa/GLX (on Xlib)	implements OpenGL 2.1
    -OSMesa (off-screen)	implements OpenGL 2.1
    -Windows/Win32		implements OpenGL 2.1
    -Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    -SVGA			unsupported
    -Wind River UGL		unsupported
    -DJGPP			unsupported
    -GGI			unsupported
    -BeOS			unsupported
    -Allegro			unsupported
    -D3D			unsupported
    -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.5.1.html b/mesalib/docs/relnotes-7.5.1.html deleted file mode 100644 index 61ab293f9..000000000 --- a/mesalib/docs/relnotes-7.5.1.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.5.1 Release Notes, 3 September 2009

    - -

    -Mesa 7.5.1 is a bug-fix release fixing issues found since the 7.5 release. -

    -

    -The main new feature of Mesa 7.5.x is the -Gallium3D infrastructure. -

    -

    -Mesa 7.5.1 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -d7269e93bc7484430637d54ced250876  MesaLib-7.5.1.tar.gz
    -877d6a4b24efc2b1d02aa553f262cba8  MesaLib-7.5.1.tar.bz2
    -23f4fb757a05c8396425681234ae20e5  MesaLib-7.5.1.zip
    -5af4bd113652108f5cec5113dad813f2  MesaDemos-7.5.1.tar.gz
    -785402e3b9f0e335538fcc6bf19f6987  MesaDemos-7.5.1.tar.bz2
    -950058cc6d6106e9c7d5876a03789fe9  MesaDemos-7.5.1.zip
    -cb52ce2c93389c2711cbe8d857ec5303  MesaGLUT-7.5.1.tar.gz
    -e3a9892e056d625c5353617a7c5b7e9c  MesaGLUT-7.5.1.tar.bz2
    -da1de364df148c94b4994006191a1e69  MesaGLUT-7.5.1.zip
    -
    - - -

    New features

    -
      -
    • Added configure --with-max-width=W, --with-max-height=H options to specify - max framebuffer, viewport size. -
    - - -

    Bug fixes

    -
      -
    • Added missing GLEW library to MesaDemos tarballs. -
    • Fixed swapbuffers jerkiness in Doom3/etc in Intel drivers. -
    • Fixed front buffer rendering bug in Intel drivers. -
    • Fixed minor GLX memory leaks. -
    • Fixed some texture env / fragment program state bugs. -
    • Fixed some Gallium glBlitFramebuffer() bugs -
    • Empty glBegin/glEnd() pair could cause divide by zero (bug 23489) -
    • Fixed Gallium glBitmap() Z position bug -
    • Setting arrays of sampler uniforms did not work -
    • Selection/Feedback mode didn't handle polygon culling correctly (bug 16866) -
    • Fixed 32/64-bit cross compilation issue in gen_matypes.c -
    • Fixed glXCreateGLXPixmap() for direct rendering. -
    • Fixed Gallium glCopyPixels(GL_STENCIL_INDEX) mispositioned image bug. -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.5.2.html b/mesalib/docs/relnotes-7.5.2.html deleted file mode 100644 index 350ce4383..000000000 --- a/mesalib/docs/relnotes-7.5.2.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.5.2 Release Notes, 28 September 2009

    - -

    -Mesa 7.5.2 is a bug-fix release fixing issues found since the 7.5.1 release. -

    -

    -The main new feature of Mesa 7.5.x is the -Gallium3D infrastructure. -

    -

    -Mesa 7.5.2 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -43a90191dd9f76cd65dcc1ac91f3be70  MesaLib-7.5.2.tar.gz
    -94e47a499f1226803869c2e37a6a8e3a  MesaLib-7.5.2.tar.bz2
    -1ecb822b567ad67a0617361d45206b67  MesaLib-7.5.2.zip
    -2718fdce7e075911d6147beb8f27104b  MesaDemos-7.5.2.tar.gz
    -4e0f5ccd58afe21eddcd94327d926e86  MesaDemos-7.5.2.tar.bz2
    -f621f8c223b278d7c8e49a012d56ca25  MesaDemos-7.5.2.zip
    -83c16c1d6bcfcc3f97aab5d2fe430b4c  MesaGLUT-7.5.2.tar.gz
    -e5d03bedae369ea3705783573bb33813  MesaGLUT-7.5.2.tar.bz2
    -e82ba28e00d653e6f437d32be8ca8481  MesaGLUT-7.5.2.zip
    -
    - - -

    New features

    -
      -
    • Detect B43 chipset in Intel driver -
    - - -

    Bug fixes

    -
      -
    • Assorted bug fixes for i965/i945 drivers -
    • Fixed Gallium glDrawPixels(GL_STENCIL_INDEX) failure. -
    • Fixed GLSL linker/preprocessor version directive issue seen in Wine - (such as bug 23946) -
    • glUseProgram() is now compiled into display lists (bug 23746). -
    • glUniform functions are now compiled into display lists -
    • Auto mipmap generation didn't work reliably with Gallium. -
    • Fixed random number usage in GLX code. -
    • Fixed invalid GL_OUT_OF_MEMORY error sometimes raised by glTexSubImage2D - when using Gallium. -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.5.html b/mesalib/docs/relnotes-7.5.html deleted file mode 100644 index e4318060c..000000000 --- a/mesalib/docs/relnotes-7.5.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.5 Release Notes / 17 July 2009

    - -

    -Mesa 7.5 is a new development release. -People who are concerned with stability and reliability should stick -with the 7.4.x branch or wait for Mesa 7.5.1. -

    -

    -The main new feature of Mesa 7.5 is the -Gallium3D infrastructure. -

    -

    -Mesa 7.5 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    -

    -Note that the Mesa project is no longer using odd/even version numbers -to indicate development/stable releases. -The so-called development releases have been fairly stable. -If you're especially concerned with stability you should probably look for -"point" releases such as 7.5.1 which will be a bug-fix release. -

    - - -

    MD5 checksums

    -
    -553fd956e544727f30fbe249619b6286  MesaLib-7.5.tar.gz
    -459f332551f6ebb86f384d21dd15e1f0  MesaLib-7.5.tar.bz2
    -8c02c0e17a9025250d20424ae32f5163  MesaLib-7.5.zip
    -a188da2886fa5496ea0c2cda602b2eeb  MesaDemos-7.5.tar.gz
    -398ee8801814a00e47f6c2314e3dfddc  MesaDemos-7.5.tar.bz2
    -15a0c8ae013c54335a26335e1a98d609  MesaDemos-7.5.zip
    -81010147def5a644ba14f9bbb7a49a2a  MesaGLUT-7.5.tar.gz
    -baa7a1e850b6e39bae58868fd0684004  MesaGLUT-7.5.tar.bz2
    -265228418e4423fa328f2f5b7970cf08  MesaGLUT-7.5.zip
    -
    - - -

    New features

    -
      -
    • Gallium3D - this is the new architecture for OS-independent and - API-independent 3D drivers. - Gallium3D is intended for GPUs that fully support vertex/fragment shaders. - The Gallium3D drivers currently included are: -
        -
      • softpipe - a software/reference driver -
      • i915 - Intel 915/945 driver -
      • Cell - IBM/Sony/Toshiba Cell processor driver -
      • nouveau (for NVIDIA GPUs) and R300 for (AMD/ATI R300). - PLEASE NOTE: these drivers are incomplete and still under development. - It's probably NOT worthwhile to report any bugs unless you have patches. - -
      -
    • GL_ARB_framebuffer_object extension (software drivers, i965 driver) -
    • Reworked two-sided stencil support. -This allows a driver to support all three variations of two-sided stencil -including GL_ATI_separate_stencil, GL_EXT_stencil_two_side and OpenGL 2.0 -
    • GL_EXT_vertex_array_bgra extension (software drivers, i965 driver) -
    • GL_NV_texture_env_combine4 extension (software drivers, i965/i915 drivers) -
    • GL_EXT_texture_swizzle extension (software drivers, i965 driver) -
    • Updated SPARC assembly optimizations (David S. Miller) -
    • Initial support for separate compilation units in GLSL compiler. -
    • Increased max number of generic GLSL varying variables to 16 (formerly 8). -
    • GLSL linker now detects when too many varying variables are used. -
    • Optimize-out redundant glMaterial and glShadeModel calls in display lists -
    • Fixed gl_TextureMatrix[i][j] array indexing bug in GLSL compiler. -
    - - -

    Bug fixes

    -
      -
    • Lots of i965 driver bug fixes -
    • Fixed some GLSL preprocessor bugs -
    • GLSL: continue inside of a for-loop didn't work -
    - - -

    Changes

    -
      -
    • Remove support for GL_SGIX_shadow, GL_SGIX_shadow_ambient and -GL_SGIX_depth_texture extensions. Superseded by the ARB versions. -
    • Omitted some old Mesa demos from the release tarballs, added some others. -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.6.1.html b/mesalib/docs/relnotes-7.6.1.html deleted file mode 100644 index 086f21f5f..000000000 --- a/mesalib/docs/relnotes-7.6.1.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.6.1 Release Notes, 21 December 2009

    - -

    -Mesa 7.6.1 is a bug-fix release fixing issues since version 7.6. -

    -

    -Mesa 7.6.1 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -e80fabad2e3eb7990adae773d6aeacba  MesaLib-7.6.1.tar.gz
    -7db4617e9e10ad3aca1b64339fd71b7d  MesaLib-7.6.1.tar.bz2
    -dd3275dbf9833480d2e92d0c69b22abd  MesaLib-7.6.1.zip
    -f7fdcfe3c0f363e571c60f02f74368fb  MesaDemos-7.6.1.tar.gz
    -a4226f06732a02556fcf6be290b86dff  MesaDemos-7.6.1.tar.bz2
    -849425f356bd940726cebedfa79de176  MesaDemos-7.6.1.zip
    -d40cc7c5e337a85b674e27a8e494f52f  MesaGLUT-7.6.1.tar.gz
    -ca9aecb91f05b1da9fd7d5eeb19d47d7  MesaGLUT-7.6.1.tar.bz2
    -23fad8398004c977a1d8953079b72ca6  MesaGLUT-7.6.1.zip
    -
    - - -

    New features

    -
      -
    • Upgraded GL/glext.h to version 56, GL/glxext.h to version 25, - GL/wglext.h to version 17 -
    • New 3D driver, r600, for Radeon R6xx, R7xx hardware -
    - - -

    Bug fixes

    -
      -
    • Fixed crash caused by glXCopyContext() and glXDestroyContext(), bug 24217 -
    • glXQueryContext(GLX_RENDER_TYPE) returned wrong values (bug 24211) -
    • GLSL sqrt(0) returned unpredictable results -
    • Fixed default texture binding bug when a bound texture was deleted. -
    • r300: Work around an issue with very large fragment programs on R500. -
    • Fake glXQueryDrawable() didn't return good values (bug 24320) -
    • Fixed AUX buffer breakage (bug 24426). -
    • Fixed locale-dependent float parsing bug in GLSL compiler (bug 24531) -
    • Fixed Gallium Cell driver compilation failure. -
    • Fixed glGetTexLevelParameter(GL_TEXTURE_INTERNAL_FORMAT) query so that - it returns the actual compressed format chosen. -
    • Fixed glBitmap bugs in Intel drivers. -
    • Fixed a number of Microsoft Visual Studio compilation problems. -
    • Fixed clipping / provoking vertex bugs in i965 driver. -
    • Assorted build fixes for AIX. -
    • Endianness fixes for the DRI swrast driver (bug 22767).
    • -
    • Point sprite fixes for i915/945 driver. -
    • Fixed assorted memory leaks (usually on error paths) -
    • Fixed some GLSL compiler bugs (ex: 25579) -
    • Assorted build fixes for BlueGene -
    - -

    Changes

    -
      -
    • Removed old VC6, VC7 project files for Windows -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.6.html b/mesalib/docs/relnotes-7.6.html deleted file mode 100644 index 30e9f7eea..000000000 --- a/mesalib/docs/relnotes-7.6.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.6 Release Notes, 28 September 2009

    - -

    -Mesa 7.6 is a new development release. -People who are concerned with stability and reliability should stick -with a previous release or wait for Mesa 7.6.1. -

    -

    -Mesa 7.6 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -5ffa7d7abf8973f57a1bc4f813e6dade  MesaLib-7.6.tar.gz
    -8c75f90cd0303cfac9e4b6d54f6759ca  MesaLib-7.6.tar.bz2
    -27fcfd69708599c978cb34ba5cd363e1  MesaLib-7.6.zip
    -e7befb3ae604f591806194a4da445628  MesaDemos-7.6.tar.gz
    -0ede7adf217951acd90dbe4551210c07  MesaDemos-7.6.tar.bz2
    -ed9298409cf6613bc0964525ca4afc8a  MesaDemos-7.6.zip
    -666955668e44ff14acf7d15dc78407d3  MesaGLUT-7.6.tar.gz
    -b8b59706f827d18d1b784a0ff98b4dc2  MesaGLUT-7.6.tar.bz2
    -c49c19c2bbef4f3b7f1389974dff25f4  MesaGLUT-7.6.zip
    -
    - - -

    New features

    -
      -
    • OpenVG front-end (state tracker for Gallium). -This was written by Zack Rusin at Tungsten Graphics. -
    • GL_ARB_vertex_array_object and GL_APPLE_vertex_array_object extensions - (supported in Gallium drivers, Intel DRI drivers, and software drivers)
    • -
    • GL_ARB_copy_buffer extension - (supported in Gallium drivers, Intel DRI drivers, and software drivers)
    • -
    • GL_ARB_map_buffer_range extension - (supported in Gallium drivers, Intel DRI drivers, and software drivers)
    • -
    • GL_ARB_seamless_cube_map extension - (supported in software drivers and i965 drivers)
    • -
    • GL_ARB_vertex_array_bgra (ARB synonym for GL_EXT_vertex_array_bgra)
    • -
    • GL_ARB_sync (supported in software drivers and Intel DRI drivers)
    • -
    • GL_EXT_provoking_vertex extension (supported in Gallium, i915, i965, and software drivers) -
    • Rewritten radeon/r200/r300 driver using a buffer manager -
    • radeon/r200/r300 GL_EXT_framebuffer_object support when used with - kernel memory manager -
    • radeon/r200/r300 support for GL_ARB_occlusion_query
    • -
    • r300 driver supports OpenGL 1.5
    • -
    • r300 driver support for GL_EXT_vertex_array_bgra, GL_EXT_texture_sRGB -
    • i915/945 driver support for GL_ARB_point_sprite, GL_EXT_stencil_two_side - and GL_ATI_separate_stencil extensions -
    • Rewritten assembler for GL_ARB_vertex_program / - GL_ARB_fragment_program.
    • -
    • Added configure --with-max-width=W, --with-max-height=H options to specify - max framebuffer, viewport size. -
    • Initial version of Gallium llvmpipe driver. This is a new driver based - on LLVM which makes exensive use of run-time code generation. This is - an "alpha" stage driver. See the src/gallium/drivers/llvmpipe/README - file for more information. -
    - - -

    Bug fixes

    -
      -
    • i965 DRI driver fixes, including support for "unlimited" size constant - buffers (GLSL uniforms) -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.7.1.html b/mesalib/docs/relnotes-7.7.1.html deleted file mode 100644 index 00805ea5f..000000000 --- a/mesalib/docs/relnotes-7.7.1.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.7.1 Release Notes / March 28, 2010

    - -

    -Mesa 7.7.1 is a bug-fix release. -

    -

    -Mesa 7.7.1 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -3ab0638cfa7ce8157337a229cf0db2c4  MesaLib-7.7.1.tar.gz
    -46664d99e03f1e3ac078a7fea02af115  MesaLib-7.7.1.tar.bz2
    -4e73ba8abb59aff79485eb95d7cefff7  MesaLib-7.7.1.zip
    -bf1b108983995f7a712cf3343df1c918  MesaDemos-7.7.1.tar.gz
    -aeb39645d80d656e0adebaa09e5bcd03  MesaDemos-7.7.1.tar.bz2
    -01c49b7454fd292244eaf8bdc6ed8cf0  MesaDemos-7.7.1.zip
    -37ec6386693dcb6dc770d1efd63a7a93  MesaGLUT-7.7.1.tar.gz
    -1e16c85282f843791a21f7bc7b6a1ca8  MesaGLUT-7.7.1.tar.bz2
    -d352c9e36a8e4d1059f4abc017b131e0  MesaGLUT-7.7.1.zip
    -
    - - -

    Bug fixes

    -
      -
    • Assorted fixes to VMware SVGA gallium driver. -
    • Fixed broken blending to multiple color buffers in swrast driver. -
    • Allocate constants more tightly in GL_ARB_vertex/fragment parser. -
    • Fixed mipmap generation bug caused by invalid viewport state. -
    • Gallium SSE codegen for XPD didn't always work. -
    • Fixed Windows build. -
    • Fixed broken glMultiDrawElements(). -
    • Silence bogus GL errors generated in glxinfo. -
    • Fixed several render to texture bugs. -
    • Assorted bug fixes in Mesa/Gallium state tracker including - glCopy/DrawPixels() to FBOs. -
    • Assorted fixes to Gallium drivers. -
    • Fixed broken glPush/PopClientAttrib() for vertex arrays in GLX code. -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.7.html b/mesalib/docs/relnotes-7.7.html deleted file mode 100644 index 7ee9a1bfd..000000000 --- a/mesalib/docs/relnotes-7.7.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.7 Release Notes / 21 December 2009

    - -

    -Mesa 7.7 is a new development release. -People who are concerned with stability and reliability should stick -with a previous release or wait for Mesa 7.7.1. -

    -

    -Mesa 7.7 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -395c9516edf1ad54b0934d8db15557bf  MesaLib-7.7.tar.gz
    -e3fa64a1508bc23dd9de9dd2cea7cfb1  MesaLib-7.7.tar.bz2
    -e54903eb5e49c3969821fa16b32da245  MesaLib-7.7.zip
    -53b5b6f78e55de170d43c98cb6aaab7e  MesaDemos-7.7.tar.gz
    -6fd616b27b9826d0faa23e08e05d9435  MesaDemos-7.7.tar.bz2
    -240fe06159ad73d5e22c27033b66c80a  MesaDemos-7.7.zip
    -9fe11a904b2a9d8cd06cc52bc330b716  MesaGLUT-7.7.tar.gz
    -e8dceed05a59a2d3c2619d7d734587e3  MesaGLUT-7.7.tar.bz2
    -96af041d435349ee23ead4667ec36363  MesaGLUT-7.7.zip
    -
    - - -

    New features

    -
      -
    • VMware "SVGA" Gallium driver. This is a Gallium3D driver which targets the - VMware virtual graphics device. It allows Linux OpenGL guest applications - to utilize the 3D graphics hardware of the host operating system. -
    • GL_ARB_draw_elements_base_vertex (supported in Intel i965 and software drivers)
    • -
    • GL_ARB_depth_clamp (supported in Intel i965 DRI and software drivers)
    • -
    • GL_NV_depth_clamp (supported in Intel i965 DRI and software drivers)
    • -
    • GL_ARB_provoking_vertex (same as GL_EXT_provoking_vertex)
    • -
    • Wavefront .obj file loader/viewer demo (progs/demos/objviewer) -
    - - -

    Bug fixes

    -
      -
    • Many assorted i965 driver fixes. -
    • Many r300-gallium driver fixes; this driver is now considered unstable-quality instead of experimental-quality. -
    - - -

    Changes

    -
      -
    • New Mesa texture/surface format infrastructure -
    • Removed some unused Mesa device driver hooks -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.8.1.html b/mesalib/docs/relnotes-7.8.1.html deleted file mode 100644 index f7b4dfb8e..000000000 --- a/mesalib/docs/relnotes-7.8.1.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.8.1 Release Notes / April 5, 2010

    - -

    -Mesa 7.8.1 fixes a couple critical bugs in the recent Mesa 7.8 release. Even -though this is a bug fix release, given its proximity to the 7.8 release, a -new development release, it should also be considered new development release. -People who are concerned with stability and reliability should stick -with a previous release, such as 7.7.1, or wait for Mesa 7.8.2. -

    -

    -Mesa 7.8.1 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -62e8e47cbd63741b4bbe634dcdc8a56a  MesaLib-7.8.1.tar.gz
    -25ec15f8e41fde6d206118cc786dbac4  MesaLib-7.8.1.tar.bz2
    -22b1153010ffdf513836ea9931159e80  MesaLib-7.8.1.zip
    -c9c0a830923d3820807a08c09d521b3e  MesaDemos-7.8.1.tar.gz
    -9ef47f911869657c6bf2f43ebce86b61  MesaDemos-7.8.1.tar.bz2
    -93720605eb3f784f9bcc289a4dd2ff52  MesaDemos-7.8.1.zip
    -ed1d0b1e960afe6a3768eab747cbdbd3  MesaGLUT-7.8.1.tar.gz
    -6bae516a44c6d26ff3152c960ab648e7  MesaGLUT-7.8.1.tar.bz2
    -ba306f603ea73c30ee0e7efa14dc5581  MesaGLUT-7.8.1.zip
    -
    - - -

    New features

    -

    None.

    - - -

    Bug fixes

    -
      -
    • Fix incorrect enums for GLX_INTEL_swap_event by updating glxext.h to - version 27 from OpenGL.org.
    • -
    • Fix compilation errors on non-GLX_DIRECT_RENDERING builds.
    • -
    • Various fixes for building Mesa on OS X.
    • -
    • Pass GLX drawable ID to dri2InvalidateBuffers. Fixes bug #27190.
    • -
    - - -

    Changes

    -

    None.

    - -
    - - diff --git a/mesalib/docs/relnotes-7.8.2.html b/mesalib/docs/relnotes-7.8.2.html deleted file mode 100644 index 6d076a3ac..000000000 --- a/mesalib/docs/relnotes-7.8.2.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.8.2 Release Notes / June 17, 2010

    - -

    -Mesa 7.8.2 is a bug fix release which fixes bugs found since the 7.8.1 release. -

    -

    -Mesa 7.8.2 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -c89b63d253605ed40e8ac370d25a833c  MesaLib-7.8.2.tar.gz
    -6be2d343a0089bfd395ce02aaf8adb57  MesaLib-7.8.2.tar.bz2
    -a04ad3b06ac5ff3969a003fa7bbf7d5b  MesaLib-7.8.2.zip
    -7c213f92efeb471f0331670d5079d4c0  MesaDemos-7.8.2.tar.gz
    -757d9e2e06f48b1a52848be9b0307ced  MesaDemos-7.8.2.tar.bz2
    -8d0e5cfe68b8ebf90265d350ae2c48b1  MesaDemos-7.8.2.zip
    -b74482e3f44f35ed395c4aada4fd8240  MesaGLUT-7.8.2.tar.gz
    -a471807b65e49c325808ba4551be93ed  MesaGLUT-7.8.2.tar.bz2
    -9f190268c42be582ef66e47365ee61e3  MesaGLUT-7.8.2.zip
    -
    - - -

    New features

    -

    None.

    - - -

    Changes

    -
      -
    • Upgraded glext.h to version 61, and upgraded glxext.h -
    - - -

    Bug fixes

    -
      -
    • Fixed Gallium glDrawPixels(GL_DEPTH_COMPONENT). -
    • Fixed Gallium Cell driver to buildable, runable state -
    • Fixed bad error checking for glFramebufferRenderbuffer(attachment=GL_DEPTH_STENCIL_ATTACHMENT). -
    • Fixed incorrect Z coordinate handling in "meta" glDraw/CopyPixels. - Bug - #23670.
    • - -
    • Assorted i965 driver fixes. - Including but not limited to: -
        -
      • Fix scissoring when width or height is - 0. Bug - #27643. -
      • Fix bit allocation for number of color regions for - ARB_draw_buffers.
      • -
      • Set the correct provoking vertex for clipped first-mode - trifans. Bug - #24470.
      • -
      • Use R16G16B16A16_FLOAT for 3-component half-float.
      • -
      • Fix assertion for surface tile offset usage on Ironlake.
      • -
      • Fix cube map layouts on Ironlake.
      • -
      • When an RB gets a new region, clear the old from the state - cache. Bug - #24119.
      • -
      • Reject shaders with uninlined function calls instead of hanging.
      • -
      -
    • - -
    • Assorted i915 driver fixes. Including but not limited to: -
        -
      • Fixed texture LOD clamping in i915 driver. - Bug - #24846.
      • -
      • Fix off-by-one for drawing rectangle. - Bug - #27408.
      • -
      -
    • - -
    • Fixed hangs in etracer on 830 and 845 - chipsets. Bug - #26557.
    • -
    • Fixed tiling of small textures on all Intel drivers.
    • -
    • Fixed crash in Savage driver when using _mesa_CopyTexImage2D. - Bug - #27652.
    • - -
    • Assorted GLX fixes. Including but not limited to: -
        -
      • Fixed __glXInitializeVisualConfigFromTags's handling of - unrecognized fbconfig tags.
      • -
      • Fixed regression with GLX_USE_GL. -
      • Fixed config chooser logic for 'mask' matching.
      • -
      • Report swap events correctly in direct rendered case (DRI2)
      • -
      • Fixed build with dri2proto which doesn't define - X_DRI2SwapInterval.
      • -
      • Get GLX_SCREEN first in __glXQueryContextInfo. - Bug - #14245.
      • -
      -
    • - -
    • Assorted GLSL fixes. Including but not limited to: -
        -
      • Change variable declared assertion into conditional in GLSL - compiler. Bug - #27921.
      • -
      • Fix instruction indexing - bugs. Bug - #27566.
      • -
      • Updated uniform location / offset encoding to be more like - other implementations.
      • -
      • Don't overwrite a driver's shader infolog with generic failure - message.
      • -
      -
    • - -
    • Fixed OSMesa build for 16 and 32-bit color channel depth. -
    • Fixed OSMesa build with hidden symbol visibility. libOSMesa no longer links to libGL. - Bug - #28305. -
    • Fixed handling of multiple render targets in fixed-function - texture envrionmnent programs.
    • -
    • Fixed conversion errors in signed_rgba8888[rev] texel - fetch.
    • -
    • Don't set srcLevel on GL_TEXTURE_RECTANGLE_ARB targets.
    • -
    • Various build fixes for OpenBSD.
    • -
    • Various build fixes for OS X.
    • -
    • Various build fixes for GCC 3.3.
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.8.3.html b/mesalib/docs/relnotes-7.8.3.html deleted file mode 100644 index f63a94dba..000000000 --- a/mesalib/docs/relnotes-7.8.3.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.8.3 Release Notes / (date tbd)

    - -

    -Mesa 7.8.3 is a bug fix release which fixes bugs found since the 7.8.2 release. -

    -

    -Mesa 7.8.3 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -x  MesaLib-7.8.3.tar.gz
    -x  MesaLib-7.8.3.tar.bz2
    -x  MesaLib-7.8.3.zip
    -x  MesaDemos-7.8.3.tar.gz
    -x  MesaDemos-7.8.3.tar.bz2
    -x  MesaDemos-7.8.3.zip
    -x  MesaGLUT-7.8.3.tar.gz
    -x  MesaGLUT-7.8.3.tar.bz2
    -x  MesaGLUT-7.8.3.zip
    -
    - - -

    New features

    -

    None.

    - - -

    Changes

    -
      -
    • The radeon driver should use less memory when searching for a valid mip -image.
    • -
    - - -

    Bug fixes

    -
      -
    • Fix unsupported FB with D24S8 (bug - 29116)
    • -
    • Fix ReadPixels crash when reading depth/stencil from an FBO
    • -
    • Fixed a bug rendering to 16-bit buffers using swrast.
    • -
    • Fixed a state tracker/TGSI bug that caused crashes when using Windows' - memory debugging features.
    • -
    • Fixed an issue rendering to 32-bit channels with swrast (bug - 29487)
    • -
    • GLSL: fix indirect gl_TextureMatrix addressing (bug - 28967)
    • -
    • GLSL: fix for bug - 27216
    • -
    • GLSL: fix zw fragcoord entries in some cases (bug - 29183)
    • -
    • Fix texture env generation in some cases (bug - 28169)
    • -
    • osmesa: a fix for calling OSMesaMakeCurrent twice was applied (bug - 10966
    • -
    • A bug was fixed which could cause Mesa to ignore the - MESA_EXTENSION_OVERRIDE environment variable.
    • -
    • A bug related to specular highlights on backfaces was fixed.
    • -
    • A radeon-specific issue with glCopyTex(Sub)Image was - corrected.
    • -
    • radeon/wine: flush command stream in more cases, fixing wine d3d9 - tests.
    • -
    • r600: fix sin+cos normalization.
    • -
    • r600: (properly) ignore GL_COORD_REPLACE when point sprites are - disabled.
    • -
    • radeon: avoid flushing when the context is not current.
    • -
    • r300c: a bug affecting unaligned BOs was fixed.
    • -
    • r300c: a hardlock caused by ARB_half_float_vertex incorrectly advertised on some chipsets.
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.8.html b/mesalib/docs/relnotes-7.8.html deleted file mode 100644 index 8d8bc653f..000000000 --- a/mesalib/docs/relnotes-7.8.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.8 Release Notes / March 28, 2010

    - -

    -Mesa 7.8 is a new development release. -People who are concerned with stability and reliability should stick -with a previous release or wait for Mesa 7.8.1. -

    -

    -Mesa 7.8 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -5fcfde5383eccb3e9fd665f08a0ea59b  MesaLib-7.8.tar.gz
    -85cb891eecb89aae4fdd3499cccd934b  MesaLib-7.8.tar.bz2
    -754f39593006effc1c8ec3c27c2f1296  MesaLib-7.8.zip
    -c3869c29fa6c3dbdd763f7428d271e12  MesaDemos-7.8.tar.gz
    -9fe8ec184c7f78691e43c4c0a7f97d56  MesaDemos-7.8.tar.bz2
    -063a96947f7b83d4ad789c6cf291b184  MesaDemos-7.8.zip
    -5f4246756b7daaddb4fb3f970cad1e28  MesaGLUT-7.8.tar.gz
    -ca7048a4aa7a437dcc84cc2c7d731336  MesaGLUT-7.8.tar.bz2
    -b54581aeb79b585b158d6a32f94feff2  MesaGLUT-7.8.zip
    -
    - - -

    New features

    -
      -
    • GL_NV_conditional_render extension (swrast driver only) -
    • GL_EXT_draw_buffers2 extension (swrast and i965 driver only) -
    • GL_ARB_fragment_coord_conventions extension (for swrast, i965, and Gallium drivers) -
    • GL_EXT_texture_array extension (swrast driver only) -
    • GL_APPLE_object_purgeable extension (swrast and i945/i965 DRI drivers) -
    • Much improved support for EGL in Mesa -
    • New state trackers for OpenGL ES 1.1 and 2.0 -
    • Dedicated documentation for Gallium -
    - - -

    Bug fixes

    -
      -
    • Massive improvements to the Gallium driver for R300-R500 Radeons; this - driver is now moderately stable but not terribly performant. -
    - - -

    Changes

    -
      -
    • Removed support for color-index rendering
    • -
    • Removed support for GCC versions earlier than 3.3.0.
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.9.1.html b/mesalib/docs/relnotes-7.9.1.html deleted file mode 100644 index 5d5b4a983..000000000 --- a/mesalib/docs/relnotes-7.9.1.html +++ /dev/null @@ -1,411 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.9.1 Release Notes / January 7, 2011

    - -

    -Mesa 7.9.1 is a bug fix release which fixes bugs found since the 7.9 release. -

    -

    -Mesa 7.9.1 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -78422843ea875ad4eac35b9b8584032b  MesaLib-7.9.1.tar.gz
    -07dc6cfb5928840b8b9df5bd1b3ae434  MesaLib-7.9.1.tar.bz2
    -c8eaea5b3c3d6dee784bd8c2db91c80f  MesaLib-7.9.1.zip
    -ee9ecae4ca56fbb2d14dc15e3a0a7640  MesaGLUT-7.9.1.tar.gz
    -41fc477d524e7dc5c84da8ef22422bea  MesaGLUT-7.9.1.tar.bz2
    -90b287229afdf19317aa989d19462e7a  MesaGLUT-7.9.1.zip
    -
    - - -

    New features

    -

    None.

    - -

    Bug fixes

    -

    This list is likely incomplete.

    -
      -
    • Bug 28800 - [r300c, r300g] Texture corruption with World of Warcraft
    • - -
    • Bug 29420 - Amnesia / HPL2 RendererFeatTest - not rendering correctly
    • - -
    • Bug 29946 - [swrast] piglit valgrind glsl-array-bounds-04 fails
    • - -
    • Bug 30261 - [GLSL 1.20] allowing inconsistent invariant declaration between two vertex shaders
    • - -
    • Bug 30632 - [softpipe] state_tracker/st_manager.c:489: st_context_notify_invalid_framebuffer: Assertion `stfb && stfb->iface == stfbi' failed.
    • - -
    • Bug 30694 - wincopy will crash on Gallium drivers when going to front buffer
    • - -
    • Bug 30787 - Invalid asm shader does not generate draw-time error when used with GLSL shader
    • - -
    • Bug 30993 - getFramebufferAttachmentParameteriv wrongly generates error
    • - -
    • Bug 31101 - [glsl2] abort() in ir_validate::visit_enter(ir_assignment *ir)
    • - -
    • Bug 31193 - [regression] aa43176e break water reflections
    • - -
    • Bug 31194 - The mesa meta save/restore code doesn't ref the current GLSL program
    • - -
    • Bug 31371 - glslparsertest: ir.cpp:358: ir_constant::ir_constant(const glsl_type*, const ir_constant_data*): Assertion `(type->base_type >= 0) && (type->base_type <= 3)' failed.
    • - -
    • Bug 31439 - Crash in glBufferSubData() with size == 0
    • - -
    • Bug 31495 - [i965 gles2c bisected] OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed
    • - -
    • Bug 31514 - isBuffer returns true for unbound buffers
    • - -
    • Bug 31560 - [tdfx] tdfx_tex.c:702: error: 'const struct gl_color_table' has no member named 'Format'
    • - -
    • Bug 31617 - Radeon/Compiz: 'failed to attach dri2 front buffer', error case not handled
    • - -
    • Bug 31648 - [GLSL] array-struct-array gets assertion: `(size >= 1) && (size <= 4)' failed.
    • - -
    • Bug 31650 - [GLSL] varying gl_TexCoord fails to be re-declared to different size in the second shader
    • - -
    • Bug 31673 - GL_FRAGMENT_PRECISION_HIGH preprocessor macro undefined in GLSL ES
    • - -
    • Bug 31690 - i915 shader compiler fails to flatten if in Aquarium webgl demo.
    • - -
    • Bug 31832 - [i915] Bad renderbuffer format: 21
    • - -
    • Bug 31841 - [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !
    • - -
    • Bug 31894 - Writing to gl_PointSize with GLES2 corrupts other varyings
    • - -
    • Bug 31909 - [i965] brw_fs.cpp:1461: void fs_visitor::emit_bool_to_cond_code(ir_rvalue*): Assertion `expr->operands[i]->type->is_scalar()' failed.
    • - -
    • Bug 31934 - [gallium] Mapping empty buffer object causes SIGSEGV
    • - -
    • Bug 31983 - [i915 gles2] "if (expression with builtin/varying variables) discard" breaks linkage
    • - -
    • Bug 31985 - [GLSL 1.20] initialized uniform array considered as "unsized"
    • - -
    • Bug 31987 - [gles2] if input a wrong pname(GL_NONE) to glGetBoolean, it will not case GL_INVALID_ENUM
    • - -
    • Bug 32035 - [GLSL bisected] comparing unsized array gets segfault
    • - -
    • Bug 32070 - llvmpipe renders stencil demo incorrectly
    • - -
    • Bug 32273 - assertion fails when starting vdrift 2010 release with shaders enabled
    • - -
    • Bug 32287 - [bisected GLSL] float-int failure
    • - -
    • Bug 32311 - [965 bisected] Array look-ups broken on GM45
    • - -
    • Bug 32520 - [gles2] glBlendFunc(GL_ZERO, GL_DST_COLOR) will result in GL_INVALID_ENUM
    • - -
    • Bug 32825 - egl_glx driver completely broken in 7.9 branch [fix in master]
    • -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-7.9..mesa-7.9.1
    -
    - -

    Alex Deucher (5):

    -
      -
    • r100: revalidate after radeon_update_renderbuffers
    • -
    • r600c: add missing radeon_prepare_render() call on evergreen
    • -
    • r600c: properly align mipmaps to group size
    • -
    • gallium/egl: fix r300 vs r600 loading
    • -
    • r600c: fix some opcodes on evergreen
    • -
    - -

    Aras Pranckevicius (2):

    -
      -
    • glsl: fix crash in loop analysis when some controls can't be determined
    • -
    • glsl: fix matrix type check in ir_algebraic
    • -
    - -

    Brian Paul (27):

    -
      -
    • swrast: fix choose_depth_texture_level() to respect mipmap filtering state
    • -
    • st/mesa: replace assertion w/ conditional in framebuffer invalidation
    • -
    • egl/i965: include inline_wrapper_sw_helper.h
    • -
    • mesa: Add missing else in do_row_3D
    • -
    • mesa: add missing formats in _mesa_format_to_type_and_comps()
    • -
    • mesa: handle more pixel types in mipmap generation code
    • -
    • mesa: make glIsBuffer() return false for never bound buffers
    • -
    • mesa: fix glDeleteBuffers() regression
    • -
    • swrast: init alpha value to 1.0 in opt_sample_rgb_2d()
    • -
    • meta: Mask Stencil.Clear against stencilMax in _mesa_meta_Clear
    • -
    • st/mesa: fix mapping of zero-sized buffer objects
    • -
    • mesa: check for posix_memalign() errors
    • -
    • llvmpipe: fix broken stencil writemask
    • -
    • mesa: fix GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME query
    • -
    • mesa: return GL_FRAMEBUFFER_DEFAULT as FBO attachment type
    • -
    • mesa: make glGet*(GL_NONE) generate GL_INVALID_ENUM
    • -
    • mesa: test for cube map completeness in glGenerateMipmap()
    • -
    • tnl: Initialize gl_program_machine memory in run_vp.
    • -
    • tnl: a better way to initialize the gl_program_machine memory
    • -
    • mesa, st/mesa: disable GL_ARB_geometry_shader4
    • -
    • glsl: fix off by one in register index assertion
    • -
    • st/mesa: fix mipmap generation bug
    • -
    • glsl: new glsl_strtod() wrapper to fix decimal point interpretation
    • -
    • mesa: no-op glBufferSubData() on size==0
    • -
    • tdfx: s/Format/_BaseFormat/
    • -
    • st/mesa: fix renderbuffer pointer check in st_Clear()
    • -
    • mesa: Bump the number of bits in the register index.
    • -
    - -

    Chad Versace (5):

    -
      -
    • glsl: Fix lexer rule for ^=
    • -
    • glsl: Fix ast-to-hir for ARB_fragment_coord_conventions
    • -
    • glsl: Fix ir_expression::constant_expression_value()
    • -
    • glsl: Fix erroneous cast in ast_jump_statement::hir()
    • -
    • glsl: Fix linker bug in cross_validate_globals()
    • -
    - -

    Chia-I Wu (10):

    -
      -
    • targets/egl: Fix linking with libdrm.
    • -
    • st/vega: Fix version check in context creation.
    • -
    • st/egl: Do not finish a fence that is NULL.
    • -
    • egl: Fix a false negative check in _eglCheckMakeCurrent.
    • -
    • st/mesa: Unreference the sampler view in st_bind_surface.
    • -
    • egl_dri2: Fix __DRI_DRI2 version 1 support.
    • -
    • st/vega: Do not wait NULL fences.
    • -
    • mesa: Do not advertise GL_OES_texture_3D.
    • -
    • egl_glx: Fix borken driver.
    • -
    • egl: Check extensions.
    • -
    - -

    Daniel Lichtenberger (1):

    -
      -
    • radeon: fix potential segfault in renderbuffer update
    • -
    - -

    Daniel Vetter (1):

    -
      -
    • r200: revalidate after radeon_update_renderbuffers
    • -
    - -

    Dave Airlie (1):

    -
      -
    • r300g: fixup rs690 tiling stride alignment calculations.
    • -
    - -

    Eric Anholt (13):

    -
      -
    • intel: Allow CopyTexSubImage to InternalFormat 3/4 textures, like RGB/RGBA.
    • -
    • glsl: Free the loop state context when we free the loop state.
    • -
    • i965: Allow OPCODE_SWZ to put immediates in the first arg.
    • -
    • i965: Add support for rendering to SARGB8 FBOs.
    • -
    • glsl: Add a helper constructor for expressions that works out result type.
    • -
    • glsl: Fix structure and array comparisions.
    • -
    • glsl: Quiet unreachable no-return-from-function warning.
    • -
    • glsl: Mark the array access for whole-array comparisons.
    • -
    • glsl: Fix flipped return of has_value() for array constants.
    • -
    • mesa: Add getters for the rest of the supported draw buffers.
    • -
    • mesa: Add getters for ARB_copy_buffer's attachment points.
    • -
    • i965: Correct the dp_read message descriptor setup on g4x.
    • -
    • glsl: Correct the marking of InputsRead/OutputsWritten on in/out matrices.
    • -
    - -

    Fabian Bieler (1):

    -
      -
    • glsl: fix lowering conditional returns in subroutines
    • -
    - -

    Francisco Jerez (3):

    -
      -
    • meta: Don't leak alpha function/reference value changes.
    • -
    • meta: Fix incorrect rendering of the bitmap alpha component.
    • -
    • meta: Don't try to disable cube maps if the driver doesn't expose the extension.
    • -
    - -

    Henri Verbeet (2):

    -
      -
    • r600: Evergreen has two extra frac_bits for the sampler LOD state.
    • -
    • st/mesa: Handle wrapped depth buffers in st_copy_texsubimage().
    • -
    - -

    Ian Romanick (33):

    -
      -
    • Add 7.9 md5sums
    • -
    • docs: Import 7.8.x release notes from 7.8 branch.
    • -
    • docs: download.html does not need to be updated for each release
    • -
    • docs: Update mailing lines from sf.net to freedesktop.org
    • -
    • docs: added news item for 7.9 release
    • -
    • mesa: Validate assembly shaders when GLSL shaders are used
    • -
    • linker: Reject shaders that have unresolved function calls
    • -
    • mesa: Refactor validation of shader targets
    • -
    • glsl: Slightly change the semantic of _LinkedShaders
    • -
    • linker: Improve handling of unread/unwritten shader inputs/outputs
    • -
    • glsl: Commit lexer files changed by previous cherry picking
    • -
    • mesa: Make metaops use program refcounts instead of names.
    • -
    • glsl: Fix incorrect gl_type of sampler2DArray and sampler1DArrayShadow
    • -
    • mesa: Allow query of MAX_SAMPLES with EXT_framebuffer_multisample
    • -
    • glsl: better handling of linker failures
    • -
    • mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.
    • -
    • i915: Disallow alpha, red, RG, and sRGB as render targets
    • -
    • glsl/linker: Free any IR discarded by optimization passes.
    • -
    • glsl: Add an optimization pass to simplify discards.
    • -
    • glsl: Add a lowering pass to move discards out of if-statements.
    • -
    • i915: Correctly generate unconditional KIL instructions
    • -
    • glsl: Add unary ir_expression constructor
    • -
    • glsl: Ensure that equality comparisons don't return a NULL IR tree
    • -
    • glcpp: Commit changes in generated files cause by previous commit
    • -
    • glsl: Inherrit type of declared variable from initializer
    • -
    • glsl: Inherrit type of declared variable from initializer after processing assignment
    • -
    • linker: Ensure that unsized arrays have a size after linking
    • -
    • linker: Fix regressions caused by previous commit
    • -
    • linker: Allow built-in arrays to have different sizes between shader stages
    • -
    • ir_to_mesa: Don't generate swizzles for record derefs of non-scalar/vectors
    • -
    • Refresh autogenerated file builtin_function.cpp.
    • -
    • docs: Initial set of release notes for 7.9.1
    • -
    • mesa: set version string to 7.9.1
    • -
    - -

    Julien Cristau (1):

    -
      -
    • Makefile: don't include the same files twice in the tarball
    • -
    - -

    Kenneth Graunke (19):

    -
      -
    • glcpp: Return NEWLINE token for newlines inside multi-line comments.
    • -
    • generate_builtins.py: Output large strings as arrays of characters.
    • -
    • glsl: Fix constant component count in vector constructor emitting.
    • -
    • ir_dead_functions: Actually free dead functions and signatures.
    • -
    • glcpp: Define GL_FRAGMENT_PRECISION_HIGH if GLSL version >= 1.30.
    • -
    • glsl: Unconditionally define GL_FRAGMENT_PRECISION_HIGH in ES2 shaders.
    • -
    • glsl: Fix constant expression handling for <, >, <=, >= on vectors.
    • -
    • glsl: Use do_common_optimization in the standalone compiler.
    • -
    • glsl: Don't inline function prototypes.
    • -
    • glsl: Add a virtual as_discard() method.
    • -
    • glsl: Remove "discard" support from lower_jumps.
    • -
    • glsl: Refactor get_num_operands.
    • -
    • glcpp: Don't emit SPACE tokens in conditional_tokens production.
    • -
    • glsl: Clean up code by adding a new is_break() function.
    • -
    • glsl: Consider the "else" branch when looking for loop breaks.
    • -
    • Remove OES_compressed_paletted_texture from the ES2 extension list.
    • -
    • glsl/builtins: Compute the correct value for smoothstep(vec, vec, vec).
    • -
    • Fix build on systems where "python" is python 3.
    • -
    • i965: Internally enable GL_NV_blend_square on ES2.
    • -
    - -

    Kristian Høgsberg (1):

    -
      -
    • i965: Don't write mrf assignment for pointsize output
    • -
    - -

    Luca Barbieri (1):

    -
      -
    • glsl: Unroll loops with conditional breaks anywhere (not just the end)
    • -
    - -

    Marek Olšák (17):

    -
      -
    • r300g: fix microtiling for 16-bits-per-channel formats
    • -
    • r300g: fix texture border for 16-bits-per-channel formats
    • -
    • r300g: add a default channel ordering of texture border for unhandled formats
    • -
    • r300g: fix texture border color for all texture formats
    • -
    • r300g: fix rendering with no vertex elements
    • -
    • r300/compiler: fix rc_rewrite_depth_out for it to work with any instruction
    • -
    • r300g: fix texture border color once again
    • -
    • r300g: fix texture swizzling with compressed textures on r400-r500
    • -
    • r300g: disable ARB_texture_swizzle if S3TC is enabled on r3xx-only
    • -
    • mesa, st/mesa: fix gl_FragCoord with FBOs in Gallium
    • -
    • st/mesa: initialize key in st_vp_varient
    • -
    • r300/compiler: fix swizzle lowering with a presubtract source operand
    • -
    • r300g: fix rendering with a vertex attrib having a zero stride
    • -
    • ir_to_mesa: Add support for conditional discards.
    • -
    • r300g: finally fix the texture corruption on r3xx-r4xx
    • -
    • mesa: fix texel store functions for some float formats
    • -
    • r300/compiler: disable the rename_regs pass for loops
    • -
    - -

    Mario Kleiner (1):

    -
      -
    • mesa/r300classic: Fix dri2Invalidate/radeon_prepare_render for page flipping.
    • -
    - -

    Peter Clifton (1):

    -
      -
    • intel: Fix emit_linear_blit to use DWORD aligned width blits
    • -
    - -

    Robert Hooker (2):

    -
      -
    • intel: Add a new B43 pci id.
    • -
    • egl_dri2: Add missing intel chip ids.
    • -
    - -

    Roland Scheidegger (1):

    -
      -
    • r200: fix r200 large points
    • -
    - -

    Thomas Hellstrom (17):

    -
      -
    • st/xorg: Don't try to use option values before processing options
    • -
    • xorg/vmwgfx: Make vmwarectrl work also on 64-bit servers
    • -
    • st/xorg: Add a customizer option to get rid of annoying cursor update flicker
    • -
    • xorg/vmwgfx: Don't hide HW cursors when updating them
    • -
    • st/xorg: Don't try to remove invalid fbs
    • -
    • st/xorg: Fix typo
    • -
    • st/xorg, xorg/vmwgfx: Be a bit more frendly towards cross-compiling environments
    • -
    • st/xorg: Fix compilation errors for Xservers compiled without Composite
    • -
    • st/xorg: Don't use deprecated x*alloc / xfree functions
    • -
    • xorg/vmwgfx: Don't use deprecated x*alloc / xfree functions
    • -
    • st/xorg: Fix compilation for Xservers >= 1.10
    • -
    • mesa: Make sure we have the talloc cflags when using the talloc headers
    • -
    • egl: Add an include for size_t
    • -
    • mesa: Add talloc includes for gles
    • -
    • st/egl: Fix build for include files in nonstandard places
    • -
    • svga/drm: Optionally resolve calls to powf during link-time
    • -
    • gallium/targets: Trivial crosscompiling fix
    • -
    - -

    Tom Stellard (7):

    -
      -
    • r300/compiler: Make sure presubtract sources use supported swizzles
    • -
    • r300/compiler: Fix register allocator's handling of loops
    • -
    • r300/compiler: Fix instruction scheduling within IF blocks
    • -
    • r300/compiler: Use zero as the register index for unused sources
    • -
    • r300/compiler: Ignore alpha dest register when replicating the result
    • -
    • r300/compiler: Use correct swizzles for all presubtract sources
    • -
    • r300/compiler: Don't allow presubtract sources to be remapped twice
    • -
    - -

    Vinson Lee (1):

    -
      -
    • glsl: Fix 'control reaches end of non-void function' warning.
    • -
    - -

    richard (1):

    -
      -
    • 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.
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.9.2.html b/mesalib/docs/relnotes-7.9.2.html deleted file mode 100644 index 9d4f7ecda..000000000 --- a/mesalib/docs/relnotes-7.9.2.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.9.2 Release Notes / March 2, 2011

    - -

    -Mesa 7.9.2 is a bug fix release which fixes bugs found since the 7.9.1 release. -

    -

    -Mesa 7.9.2 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -eb4ab8c1a03386def3ea34b1358e9cda  MesaLib-7.9.2.tar.gz
    -8f6d1474912787ce13bd35f3bae9938a  MesaLib-7.9.2.tar.bz2
    -427a81dd43ac97603768dc5c6af3df26  MesaLib-7.9.2.zip
    -aacb8f4db997e346db40c6066942140a  MesaGLUT-7.9.2.tar.gz
    -18abe6cff4fad8ad4752c7b7ab548e5d  MesaGLUT-7.9.2.tar.bz2
    -3189e5732d636c71baf3d8bc23ce7b11  MesaGLUT-7.9.2.zip
    -
    - - -

    New features

    -

    None.

    - -

    Bug fixes

    -

    This list is likely incomplete.

    -
      -
    • Fix an off-by-one bug in a vsplit assertion.
    • -
    • Fix incorrect handling of layout qualifier -with in, out, attribute, and varying.
    • - -
    • Fix an i965 GPU hang in GLSL shaders that contain an unconditional discard statement.
    • - -
    • Fix an i965 shader bug where the negative absolute value was generated instead of the absolute value of a negation.
    • - -
    • Fix numerous issues handling precision qualifiers in GLSL ES.
    • - -
    • Fixed a few GLX protocol encoder bugs (Julien Cristau)
    • - -
    • Assorted Gallium llvmpipe driver bug fixes
    • - -
    • Assorted Mesa/Gallium state tracker bug fixes
    • - -
    • Bug 26795 - gl_FragCoord off by one in Gallium drivers.
    • - -
    • Bug 29164 - [GLSL 1.20] invariant variable shouldn't be used before declaration
    • - -
    • Bug 29823 - GetUniform[if]v busted
    • - -
    • Bug 29927 - [glsl2] fail to compile shader with constructor for array of struct type
    • - -
    • Bug 30156 - [i965] After updating to Mesa 7.9, Civilization IV starts to show garbage
    • - -
    • Bug 31923 - [GLSL 1.20] allowing inconsistent centroid declaration between two vertex shaders
    • - -
    • Bug 31925 - [GLSL 1.20] "#pragma STDGL invariant(all)" fail
    • - -
    • Bug 32214 - [gles2]no link error happens when missing vertex shader or frag shader
    • - -
    • Bug 32375 - [gl gles2] Not able to get the attribute by function glGetVertexAttribfv
    • - -
    • Bug 32541 - Segmentation Fault while running an HDR (high dynamic range) rendering demo
    • - -
    • Bug 32569 - [gles2] glGetShaderPrecisionFormat not implemented yet
    • - -
    • Bug 32695 - [glsl] SIGSEGV glcpp/glcpp-parse.y:833
    • - -
    • Bug 32831 - [glsl] division by zero crashes GLSL compiler
    • - -
    • Bug 32910 - Keywords 'in' and 'out' not handled properly for GLSL 1.20 shaders
    • - -
    • Bug 33219 -[GLSL bisected] implicit sized array triggers segfault in ir_to_mesa_visitor::copy_propagate
    • - -
    • Bug 33306 - GLSL integer division by zero crashes GLSL compiler
    • - -
    • Bug 33308 -[glsl] ast_to_hir.cpp:3016: virtual ir_rvalue* ast_jump_statement::hir(exec_list*, _mesa_glsl_parse_state*): Assertion `ret != __null' failed.
    • - -
    • Bug 33316 - uniform array will be allocate one line more and initialize it when it was freed will abort
    • - -
    • Bug 33386 - Dubious assembler in read_rgba_span_x86.S
    • - -
    • Bug 33388 - Dubious assembler in xform4.S
    • - -
    • Bug 33433 - Error in x86-64 API dispatch code.
    • - -
    • Bug 33507 - [glsl] GLSL preprocessor modulus by zero crash
    • - -
    • Bug 33508 - [glsl] GLSL compiler modulus by zero crash
    • - -
    • Bug 33916 - Compiler accepts reserved operators % and %=
    • - -
    • Bug 34047 - Assert in _tnl_import_array() when using GLfixed vertex datatypes with GLESv2
    • - -
    • Bug 34114 - Sun Studio build fails due to standard library functions not being in global namespace
    • - -
    • Bug 34198 - [GLSL] implicit sized array with index 0 used gets assertion
    • - -
    • Ubuntu bug 691653 - compiz crashes when using alt-tab (the radeon driver kills it)
    • - -
    • Meego bug 13005 - Graphics GLSL issue lead to camera preview fail on Pinetrail
    • - - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-7.9.1..mesa-7.9.2
    -
    - -

    Alberto Milone (1):

    -
      -
    • r600c: add evergreen ARL support.
    • -
    - -

    Brian Paul (19):

    -
      -
    • draw: Fix an off-by-one bug in a vsplit assertion.
    • -
    • mesa: fix a few format table mistakes, assertions
    • -
    • mesa: fix num_draw_buffers==0 in fixed-function fragment program generation
    • -
    • mesa: don't assert in GetIntegerIndexed, etc
    • -
    • mesa: check for dummy renderbuffer in _mesa_FramebufferRenderbufferEXT()
    • -
    • llvmpipe: make sure binning is active when we begin/end a query
    • -
    • st/mesa: fix incorrect fragcoord.x translation
    • -
    • softpipe: fix off-by-one error in setup_fragcoord_coeff()
    • -
    • cso: fix loop bound in cso_set_vertex_samplers()
    • -
    • st/mesa: set renderbuffer _BaseFormat in a few places
    • -
    • st/mesa: fix the default case in st_format_datatype()
    • -
    • st/mesa: need to translate clear color according to surface's base format
    • -
    • docs: update 7.9.2 release notes with Brian's cherry-picks
    • -
    • docs: add links to 7.9.1 and 7.9.2 release notes
    • -
    • mesa: include compiler.h for ASSERT macro
    • -
    • glsl: add ir_shader case in switch stmt to silence warning
    • -
    • glsl2: fix signed/unsigned comparison warning
    • -
    • mesa: implement glGetShaderPrecisionFormat()
    • -
    • docs: updated environment variable list
    • -
    - -

    Bryce Harrington (1):

    -
      -
    • r300g: Null pointer check for buffer deref in gallium winsys
    • -
    - -

    Chad Versace (14):

    -
      -
    • glsl: At link-time, check that globals have matching centroid qualifiers
    • -
    • glcpp: Fix segfault when validating macro redefinitions
    • -
    • glsl: Fix parser rule for type_specifier
    • -
    • glsl: Change default value of ast_type_specifier::precision
    • -
    • glsl: Add semantic checks for precision qualifiers
    • -
    • glsl: Add support for default precision statements
    • -
    • glsl: Remove redundant semantic check in parser
    • -
    • glsl: Fix semantic checks on precision qualifiers
    • -
    • glsl: Fix segfault due to missing printf argument
    • -
    • glsl: Mark 'in' variables at global scope as read-only
    • -
    • glcpp: Raise error when modulus is zero
    • -
    • glsl: Set operators '%' and '%=' to be reserved when GLSL < 1.30
    • -
    • glsl: Reinstate constant-folding for division by zero
    • -
    • tnl: Add support for datatype GL_FIXED in vertex arrays
    • -
    - -

    Chia-I Wu (1):

    -
      -
    • mesa: Add glDepthRangef and glClearDepthf to APIspec.xml.
    • -
    - -

    Chris Wilson (1):

    -
      -
    • intel: Check for unsupported texture when finishing using as a render target
    • -
    - -

    Cyril Brulebois (1):

    -
      -
    • Point to bugs.freedesktop.org rather than bugzilla.freedesktop.org
    • -
    - -

    Dave Airlie (2):

    -
      -
    • radeon/r200: fix fbo-clearmipmap + gen-teximage
    • -
    • radeon: avoid segfault on 3D textures.
    • -
    - -

    Dimitry Andric (4):

    -
      -
    • mesa: s/movzx/movzbl/
    • -
    • mesa: s/movzxw/movzwl/ in read_rgba_span_x86.S
    • -
    • glapi: adding @ char before type specifier in glapi_x86.S
    • -
    • glapi: add @GOTPCREL relocation type
    • -
    - -

    Eric Anholt (11):

    -
      -
    • i965: Avoid double-negation of immediate values in the VS.
    • -
    • docs: Add a relnote for the Civ IV on i965.
    • -
    • i965/vs: When MOVing to produce ABS, strip negate of the operand.
    • -
    • glsl: Fix the lowering of variable array indexing to not lose write_masks.
    • -
    • intel: Make renderbuffer tiling choice match texture tiling choice.
    • -
    • glapi: Add entrypoints and enums for GL_ARB_ES2_compatibility.
    • -
    • mesa: Add extension enable bit for GL_ARB_ES2_compatibility.
    • -
    • mesa: Add actual support for glReleaseShaderCompiler from ES2.
    • -
    • mesa: Add support for glDepthRangef and glClearDepthf.
    • -
    • mesa: Add getters for ARB_ES2_compatibility MAX_*_VECTORS.
    • -
    • mesa: Add getter for GL_SHADER_COMPILER with ARB_ES2_compatibility.
    • -
    - -

    Ian Romanick (42):

    -
      -
    • docs: Add 7.9.1 md5sums
    • -
    • glsl: Support the 'invariant(all)' pragma
    • -
    • glcpp: Generate an error for division by zero
    • -
    • glsl: Add version_string containing properly formatted GLSL version
    • -
    • glsl & glcpp: Refresh autogenerated lexer and parser files.
    • -
    • glsl: Disallow 'in' and 'out' on globals in GLSL 1.20
    • -
    • glsl: Track variable usage, use that to enforce semantics
    • -
    • glsl: Allow 'in' and 'out' when 'layout' is also available
    • -
    • docs: Initial set of release notes for 7.9.2
    • -
    • mesa: bump version to 7.9.2-devel
    • -
    • docs: Update 7.9.2 release notes
    • -
    • i965: Make OPCODE_KIL_NV do its work in a temp, not the null reg!
    • -
    • glsl: Refresh autogenerated lexer and parser files.
    • -
    • glsl: Don't assert when the value returned by a function has no rvalue
    • -
    • linker: Set sizes for non-global arrays as well
    • -
    • linker: Propagate max_array_access while linking functions
    • -
    • docs: Update 7.9.2 release notes
    • -
    • Use C-style system headers in C++ code to avoid issues with std:: namespace
    • -
    • mesa: glGetUniform only returns a single element of an array
    • -
    • linker: Generate link errors when ES shaders are missing stages
    • -
    • mesa: Fix error checks in GetVertexAttrib functions
    • -
    • docs: Update 7.9.2 release notes
    • -
    • mesa: Remove unsupported OES extensions
    • -
    • glapi: Regenerate for GL_ARB_ES2_compatibility.
    • -
    • mesa: Connect glGetShaderPrecisionFormat into the dispatch table
    • -
    • i965: Set correct values for range/precision of fragment shader types
    • -
    • i915: Set correct values for range/precision of fragment shader types
    • -
    • intel: Fix typeos from 3d028024 and 790ff232
    • -
    • glsl: Ensure that all GLSL versions are supported in the stand-alone compiler
    • -
    • glsl: Reject shader versions not supported by the implementation
    • -
    • mesa: Initial size for secondary color array is 3
    • -
    • glcpp: Regenerate files from recent cherry picks
    • -
    • glsl: Finish out the reduce/reduce error fixes
    • -
    • glsl: Regenerate compiler files from cherry picks
    • -
    • linker: Fix off-by-one error implicit array sizing
    • -
    • i915: Only mark a register as available if all components are written
    • -
    • i915: Calculate partial result to temp register first
    • -
    • i915: Force lowering of all types of indirect array accesses in the FS
    • -
    • docs: Update 7.9.2 release notes for recent cherry picks
    • -
    • docs: Clean up bug fixes list
    • -
    • intel: Remove driver date and related bits from renderer string
    • -
    • mesa: set version string to 7.9.2 (final)
    • -
    - -

    Jian Zhao (1):

    -
      -
    • mesa: fix an error in uniform arrays in row calculating.
    • -
    - -

    Julien Cristau (3):

    -
      -
    • glx: fix request lengths
    • -
    • glx: fix GLXChangeDrawableAttributesSGIX request
    • -
    • glx: fix length of GLXGetFBConfigsSGIX
    • -
    - -

    Keith Packard (1):

    -
      -
    • glsl: Eliminate reduce/reduce conflicts in glsl grammar
    • -
    - -

    Kenneth Graunke (12):

    -
      -
    • glsl: Expose a public glsl_type::void_type const pointer.
    • -
    • glsl: Don't bother unsetting a destructor that was never set.
    • -
    • glsl, i965: Remove unnecessary talloc includes.
    • -
    • glcpp: Remove use of talloc reference counting.
    • -
    • ralloc: Add a fake implementation of ralloc based on talloc.
    • -
    • Convert everything from the talloc API to the ralloc API.
    • -
    • ralloc: a new MIT-licensed recursive memory allocator.
    • -
    • Remove talloc from the make and automake build systems.
    • -
    • Remove talloc from the SCons build system.
    • -
    • Remove the talloc sources from the Mesa repository.
    • -
    • glsl: Fix use of uninitialized values in _mesa_glsl_parse_state ctor.
    • -
    • glsl: Use reralloc instead of plain realloc.
    • -
    - -

    Marek Olšák (3):

    -
      -
    • docs: fix messed up names with special characters in relnotes-7.9.1
    • -
    • mesa: fix texture3D mipmap generation for UNSIGNED_BYTE_3_3_2
    • -
    • st/dri: Track drawable context bindings
    • -
    - -

    Paulo Zanoni (1):

    -
      -
    • dri_util: fail driCreateNewScreen if InitScreen is NULL
    • -
    - -

    Sam Hocevar (2):

    -
      -
    • docs: add glsl info
    • -
    • docs: fix glsl_compiler name
    • -
    - -

    Vinson Lee (1):

    -
      -
    • ralloc: Add missing va_end following va_copy.
    • -
    - -

    nobled (1):

    -
      -
    • glx: Put null check before use
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-7.9.html b/mesalib/docs/relnotes-7.9.html deleted file mode 100644 index aa10e2f68..000000000 --- a/mesalib/docs/relnotes-7.9.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 7.9 Release Notes / October 4, 2010

    - -

    -Mesa 7.9 is a new development release. -People who are concerned with stability and reliability should stick -with a previous release or wait for Mesa 7.9.1. -

    -

    -Mesa 7.9 implements the OpenGL 2.1 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 2.1. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -ed65ab425b25895c7f473d0a5e6e64f8  MesaLib-7.9.tar.gz
    -82c740c49d572baa6da2b1a1eee90bca  MesaLib-7.9.tar.bz2
    -cd2b6ecec759b0457475e94bbb38fedb  MesaLib-7.9.zip
    -7b54af9fb9b1f6a1a65db2520f50848f  MesaGLUT-7.9.tar.gz
    -20d07419d1929f833fdb36bced290ad5  MesaGLUT-7.9.tar.bz2
    -62a7edecd7c92675cd6029b05217eb0a  MesaGLUT-7.9.zip
    -
    - - -

    New features

    -
      -
    • New, improved GLSL compiler written by Intel. - See the Shading Language page for - more information. -
    • New, very experimental Gallium driver for R600-R700 Radeons. -
    • Support for AMD Evergreen-based Radeons (HD 5xxx) -
    • GL_EXT_timer_query extension (i965 driver and softpipe only) -
    • GL_EXT_framebuffer_multisample extension (intel drivers, MAX_SAMPLES = 1) -
    • GL_ARB_texture_swizzle extension (alias of GL_EXT_texture_swizzle) -
    • GL_ARB_draw_elements_base_vertex, GL_ARB_fragment_program_shadow, - GL_ARB_window_pos, GL_EXT_gpu_program_parameters, - GL_ATI_texture_env_combine3, GL_MESA_pack_invert, and GL_OES_EGL_image - extensions in Gallium drivers -
    • GL_ARB_depth_clamp and GL_NV_depth_clamp extensions (in nv50 and r600 - Gallium drivers) -
    • GL_ARB_half_float_vertex extension (in nvfx, r300, r600, softpipe, - and llvmpipe Gallium drivers) -
    • GL_EXT_draw_buffers2 (in nv50, r600, softpipe, and llvmpipe Gallium - drivers) -
    • GL_EXT_texture_swizzle (in nvfx, r300, r600, softpipe, and llvmpipe - Gallium drivers) -
    • GL_ATI_texture_mirror_once (in nvfx, nv50, r300, r600, softpipe, and - llvmpipe Gallium drivers) -
    • GL_NV_conditional_render (in r300 Gallium driver) -
    • Initial "signs of life" support for Sandybridge hardware in i965 DRI - driver. -
    - - -

    Bug fixes

    -

    This list is likely incomplete.

    -
      -
    • Massive improvements to the Gallium driver for R300-R500 Radeons; this - driver is now considered stable for use as a DRI (OpenGL) driver. -
    • Bug 10908 - GLSL: gl_FogParamaters gl_Fog built-in uniform not functioning
    • -
    • Bug 13753 - Numerous bugs in GLSL uniform handling
    • -
    • Bug 16854 - GLSL function call at global scope causes SEGV
    • -
    • Bug 16856 - GLSL indexing of unsized array results in assertion failure
    • -
    • Bug 18659 - Crash in shader/slang/slang_codegen.c _slang_gen_function_call_name()
    • -
    • Bug 19089 - [GLSL] glsl1/shadow2D() cases fail
    • -
    • Bug 22622 - [GM965 GLSL] noise*() cause GPU lockup
    • -
    • Bug 23743 - For loop from 0 to 0 not optimized out
    • -
    • Bug 24553 - shader compilation times explode when using more () pairs
    • -
    • Bug 25664 - [GLSL] re-declaring an empty array fails to compile
    • -
    • Bug 25769 - [GLSL] "float" can be implicitly converted to "int"
    • -
    • Bug 25808 - [GLSL] const variable is modified successfully
    • -
    • Bug 25826 - [GLSL] declaring an unsized array then re-declaring with a size fails
    • -
    • Bug 25827 - [GLSL] vector constructor accepts too many arguments successfully
    • -
    • Bug 25829 - [GLSL] allowing non-void function without returning value
    • -
    • Bug 25830 - [GLSL] allowing non-constant-expression as const declaration initializer
    • -
    • Bug 25877 - [GLSL 1.10] implicit conversion from "int" to "float" should not be allowed
    • -
    • Bug 25878 - [GLSL] sampler is converted to int successfully
    • -
    • Bug 25994 - [GM45][GLSL] 'return' statement in vertex shader unsupported
    • -
    • Bug 25999 - [GLSL] embedded structure constructor fails to compile
    • -
    • Bug 26000 - [GLSL] allowing different parameter qualifier between the function definition and declaration
    • -
    • Bug 26001 - [GLSL 1.10] constructing matrix from matrix succeeds
    • -
    • Bug 26224 - [GLSL] Cannot get location of a uniform struct member
    • -
    • Bug 26990 - [GLSL] variable declaration in "while" fails to compile
    • -
    • Bug 27004 - [GLSL] allowing macro redefinition
    • -
    • Bug 27060 - [965] piglit glsl-fs-raytrace failure due to lack of function calls.
    • -
    • Bug 27216 - Assignment with a function call in an if statement causes an assertion failure
    • -
    • Bug 27261 - GLSL Compiler fails on the following vertex shader
    • -
    • Bug 27265 - GLSL Compiler doesnt link the attached vertex shader
    • -
    • Bug 27388 - [i965] piglit glsl-vs-arrays failure
    • -
    • Bug 27403 - GLSL struct causing "Invalid src register file ..." error
    • -
    • Bug 27914 - GLSL compiler uses MUL+ADD where it could use MAD
    • -
    • Bug 28055 - glsl-texcoord-array fails GLSL compilation
    • -
    • Bug 28374 - SIGSEGV shader/slang/slang_typeinfo.c:534
    • -
    • Bug 28748 - [i965] uninlined function calls support
    • -
    • Bug 28833 - piglit/shaders/glsl-texcoord-array fail
    • -
    • Bug 28834 - Add support for system fpclassify to GL_OES_query_matrix function for OpenBSD / NetBSD
    • -
    • Bug 28837 - varying vec4 index support
    • -
    • Bug 28845 - The GLU tesselator code has some warnings
    • -
    • Bug 28889 - [regression] wine game crash
    • -
    • Bug 28894 - slang build fails if absolute path contains spaces
    • -
    • Bug 28913 - [GLSL] allowing two version statements
    • -
    • Bug 28931 - Floating Point Exception in Warzone2100 Trunk version
    • -
    • Bug 28966 - [r300g] Dynamic branching 3 demo does not run
    • -
    • Bug 28967 - slang/slang_emit.c:350: storage_to_src_reg: Assertion `index >= 0' failed.
    • -
    • Bug 29013 - [r300g] translate_rgb_op: unknown opcode ILLEGAL OPCODE
    • -
    • Bug 29020 - [r300g] Wine d3d9 tests hardlock
    • -
    • Bug 29910 - Mesa advertises bogus GL_ARB_shading_language_120
    • -
    • Bug 30196 - [GLSL] gl_TextureMatrix{Inverse,Transpose,InverseTranspose} unsupported
    • -
    - - -

    Changes

    -
      -
    • The Mesa demo/test programs have been moved into a separate git -repository. -
    • GL/glext.h file upgraded to version 64 -
    • GL/glxext.h file upgraded to version 32 -
    • GL/wglext.h file upgraded to version 22 -
    - -
    - - diff --git a/mesalib/docs/relnotes-8.0.1.html b/mesalib/docs/relnotes-8.0.1.html deleted file mode 100644 index 33c61982c..000000000 --- a/mesalib/docs/relnotes-8.0.1.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 8.0.1 Release Notes / February 16, 2012

    - -

    -Mesa 8.0.1 is a bug fix release which fixes bugs found since the 8.0 release. -

    -

    -Mesa 8.0 implements the OpenGL 3.0 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.0. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -4855c2d93bd2ebd43f384bdcc92c9a27  MesaLib-8.0.1.tar.gz
    -24eeebf66971809d8f40775a379b36c9  MesaLib-8.0.1.tar.bz2
    -54e745d14dac5717f7f65b4e2d5c1df2  MesaLib-8.0.1.zip
    -
    - -

    New features

    -

    None.

    - -

    Bug fixes

    - -

    This list is likely incomplete.

    - -
      - -
    • Bug 28924 - [ILK] piglit tex-border-1 fail
    • - -
    • Bug 40864 - [bisected pineview] oglc pxconv-gettex(basic.allCases) fails on pineview
    • - -
    • Bug 43327 - [bisected SNB] HiZ make many oglc cases regressed
    • - -
    • Bug 44333 - [bisected] Color distortion with xbmc mediaplayer
    • - -
    • Bug 44927 - [SNB IVB regression] gl-117 abort when click
    • - -
    • Bug 45221 - [bisected IVB] glean/fbo regression in stencil-only case
    • - -
    • Bug 45877 - main/image.c:1597: _mesa_convert_colors: Assertion `dstType == 0x1406' failed.
    • - -
    • Bug 45578 - main/image.c:1659: _mesa_convert_colors: Assertion `dstType == 0x1403' failed.
    • - -
    • Bug 45872 - [bisected PNV] oglc mustpass(basic.stipple) regressed on pineview
    • - -
    • Bug 45876 - [PNV]oglc texenv(basic.allCases) regressed on pineview
    • - -
    • Bug 45917 - [PNV] Regression in Piglit test general/two-sided-lighting-separate-specular
    • - -
    • Bug 45943 - [r300g] r300_emit.c:365:r300_emit_aa_state: Assertion `(aa-d>dest)->cs_buf' failed.
    • - - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-8.0..mesa-8.0.1
    -
    - -

    Alex Deucher (2):

    -
      -
    • r600g: fix tex tile_type offset for cayman
    • -
    • r600g: 128 bit formats require tile_type = 1 on cayman
    • -
    - -

    Anuj Phogat (2):

    -
      -
    • meta: Add pixel store/pack operations in decompress_texture_image
    • -
    • meta: Avoid FBO resizing/reallocating in decompress_texture_image
    • -
    - -

    Brian Paul (6):

    -
      -
    • docs: add news item for 8.0 release
    • -
    • docs: update info about supported systems, GPUs, APIs
    • -
    • docs: add VMware link
    • -
    • docs: remove link to the GLSL compiler page
    • -
    • mesa: fix proxy texture target initialization
    • -
    • swrast: fix span color type selection
    • -
    - -

    Chad Versace (2):

    -
      -
    • i965: Rewrite the HiZ op
    • -
    • i965: Remove file i965/junk, accidentally added in 7b36c68
    • -
    - -

    Dave Airlie (1):

    -
      -
    • st/mesa: only resolve if number of samples is > 1
    • -
    - -

    Eric Anholt (3):

    -
      -
    • i965: Fix HiZ change compiler warning.
    • -
    • i965: Report the failure message when failing to compile the fragment shader.
    • -
    • i965/fs: Enable register spilling on gen7 too.
    • -
    - -

    Ian Romanick (4):

    -
      -
    • docs: Add 8.0 MD5 checksums
    • -
    • glapi: Include GLES2 headers for ES2 extension functions
    • -
    • swrast: Only avoid empty _TexEnvPrograms
    • -
    • mesa: Bump version number to 8.0.1
    • -
    - -

    Kenneth Graunke (4):

    -
      -
    • i965: Fix border color on Ironlake.
    • -
    • i965/fs: Add a new fs_inst::regs_written function.
    • -
    • i965/fs: Take # of components into account in try_rewrite_rhs_to_dst.
    • -
    • i965: Emit Ivybridge VS workaround flushes.
    • -
    - -

    Mathias Fröhlich (1):

    -
      -
    • state_stracker: Fix access to uninitialized memory.
    • -
    - -

    Paul Berry (1):

    -
      -
    • i915: Fix type of "specoffset" variable.
    • -
    - -

    Simon Farnsworth (1):

    -
      -
    • r600g: Use a fake reloc to sleep for fences
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-8.0.2.html b/mesalib/docs/relnotes-8.0.2.html deleted file mode 100644 index 460917504..000000000 --- a/mesalib/docs/relnotes-8.0.2.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 8.0.2 Release Notes / March 21, 2012

    - -

    -Mesa 8.0.2 is a bug fix release which fixes bugs found since the 8.0.1 release. -

    -

    -Mesa 8.0.2 implements the OpenGL 3.0 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.0. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -70eb3dc74fbfcd72f6776268ee1db52e  MesaLib-8.0.2.tar.gz
    -a368104e5700707048dc3e8691a9a7a1  MesaLib-8.0.2.tar.bz2
    -d5e5cdb85d2afdbcd1c0623d3ed1c54d  MesaLib-8.0.2.zip
    -
    - -

    New features

    -

    None.

    - -

    Bug fixes

    - -

    This list is likely incomplete.

    - -
      - -
    • Bug 38720 - [SNB] Trine triggers a GPU hang
    • - -
    • Bug 40059 - [SNB] hang in "Amnesia: The Dark Descent" demo
    • - -
    • Bug 45216 - [SNB] GPU hang in OilRush
    • - -
    • Bug 46631 - It's really hard to hit the fast path for the fallback glReadPixels code
    • - -
    • Bug 46679 - glReadPixels on a luminance texture returns the wrong values
    • - -
    • Bug 46311 - Missing support of point size in Mesa core
    • - -
    • Bug 46665 - [PNV] webgl conformance case max texture fails
    • - -
    • Bug 45975 - [Gen4 + ILK] render with pointcoord will fail to render
    • - -
    • Bug 46666 - [PNV] webgl conformance case NPOT case fails with TEXTURE_MIN_FILTER set to LINEAR
    • - - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-8.0.1..mesa-8.0.2
    -
    - -

    Brian Paul (7):

    -
      -
    • svga: add null vs pointer check in update_need_pipeline()
    • -
    • util: add mutex lock in u_debug_memory.c code
    • -
    • mesa: add _mesa_rebase_rgba_float/uint() functions
    • -
    • mesa: use _mesa_rebase_rgba_float/uint() in glReadPixels code
    • -
    • mesa: use _mesa_rebase_rgba_float/uint() in glGetTexImage code
    • -
    • mesa: fix GL_LUMINANCE handling in glGetTexImage
    • -
    • docs: add links to 8.0.1 release notes
    • -
    - -

    Daniel Vetter (1):

    -
      -
    • i965: fixup W-tile offset computation to take swizzling into account
    • -
    - -

    Dylan Noblesmith (1):

    -
      -
    • mesa: add back glGetnUniform*v() overflow error reporting
    • -
    - -

    Ian Romanick (1):

    -
      -
    • docs: Add 8.0.1 release md5sums
    • -
    - -

    Jakob Bornecrantz (3):

    -
      -
    • mesa: Include mesa ES mapi generated files
    • -
    • mesa: Bump version number to 8.0.2
    • -
    • docs: Add 8.0.2 release notes
    • -
    - -

    Jeremy Huddleston (3):

    -
      -
    • darwin: config file cleanups
    • -
    • darwin: Build create_context.c
    • -
    • darwin: Link against libxcb
    • -
    - -

    José Fonseca (1):

    -
      -
    • svga: Clamp advertised PIPE_SHADER_CAP_MAX_TEMPS to SVGA3D_TEMPREG_MAX.
    • -
    - -

    Kenneth Graunke (2):

    -
      -
    • i965: Only set Last Render Target Select on the last FB write.
    • -
    • i965: Fix Gen6+ dynamic state upper bound on older kernels.
    • -
    - -

    Marek Olšák (1):

    -
      -
    • gallium/rtasm: properly detect SSE and SSE2
    • -
    - -

    Neil Roberts (1):

    -
      -
    • mesa: Don't disable fast path for normalized types
    • -
    - -

    Tom Stellard (1):

    -
      -
    • r300/compiler: Fix bug when lowering KILP on r300 cards
    • -
    - -

    Yuanhan Liu (6):

    -
      -
    • mesa: let GL3 buf obj queries not depend on opengl major version
    • -
    • tnl: let _TNL_ATTRIB_POINTSIZE do not depend on ctx->VertexProgram._Enabled
    • -
    • i915: fix wrong rendering of gl_PointSize on Pineview
    • -
    • i915: move the FALLBACK_DRAW_OFFSET check outside the drawing rect check
    • -
    • i965: handle gl_PointCoord for Gen4 and Gen5 platforms
    • -
    • i915: fallback for NPOT cubemap texture
    • -
    - -

    Zack Rusin (3):

    -
      -
    • svga: fix a crash happening before setting fragment shaders.
    • -
    • svga: Fix stencil op mapping
    • -
    • svga: fix the rasterizer state resets
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-8.0.3.html b/mesalib/docs/relnotes-8.0.3.html deleted file mode 100644 index 1a5ecbb51..000000000 --- a/mesalib/docs/relnotes-8.0.3.html +++ /dev/null @@ -1,324 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 8.0.3 Release Notes / May 18, 2012

    - -

    -Mesa 8.0.3 is a bug fix release which fixes bugs found since the 8.0.2 release. -

    -

    -Mesa 8.0.3 implements the OpenGL 3.0 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.0. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -b7210a6d6e4584bd852ab29294ce717e  MesaLib-8.0.3.tar.gz
    -cc5ee15e306b8c15da6a478923797171  MesaLib-8.0.3.tar.bz2
    -32773634a0f7e70a680505a81426eccf  MesaLib-8.0.3.zip
    -
    - -

    New features

    -

    None.

    - -

    Bug fixes

    - -

    This list is likely incomplete.

    - -
      - -
    • Bug 28138 - [G45] Regnum Online, sparkling in in-game rendering
    • - -
    • Bug 30102 - glean depthStencil test fails BadLength with indirect non-swrast rendering
    • - -
    • Bug 40361 - Glitches on X3100 after upgrade to 7.11
    • - -
    • Bug 41152 - [glsl] Shader backend in Regnum Online does not work
    • - -
    • Bug 41216 - [bisected pineview]oglc filtercubemin(basic.sizedRGBA) fails
    • - -
    • Bug 41372 - i830_state.c PBO crash
    • - -
    • Bug 41495 - i830: intel_get_vb_max / intel_batchbuffer_space mismatch.
    • - -
    • Bug 44701 - Regnum online textures flickering
    • - -
    • Bug 44961 - [bisected i965] oglc sRGB(Mipmap.1D_textures) regressed
    • - -
    • Bug 44970 - [i965]oglc max_values(negative.textureSize.textureCube) segfaults
    • - -
    • Bug 45214 - Textures disappearing or missing in RegnumOnline OpenGL game
    • - -
    • Bug 45558 - cannot render on a drawable of size equal the max framebuffer size
    • - -
    • Bug 45921 - [r300g, bisected] Multiple piglit regressions after glsl_to_tgsi changes
    • - -
    • Bug 46303 - [SNB] segfault in intel_miptree_release()
    • - -
    • Bug 46739 - [snb-m-gt2+] compiz crashed with SIGSEGV in intel_miptree_release()
    • - -
    • Bug 46834 - small performance when playing flightgear (swrast fallback through GTT mapping)
    • - -
    • Bug 47126 - tests/fbo/fbo-array.c:109: create_array_fbo: Assertion `glGetError() == 0' failed.
    • - -
    • Bug 48218 - brw_fs_schedule_instructions.cpp segfault due to accessing not allocated last_mrf_write[16]
    • - -
    • Bug 48545 - LLVMpipe glReadPixels Firefox hits the slow path (WebGL rendering)
    • - -
    • Bug 49124 - swrast/s_texfetch.c:1156: set_fetch_functions: Assertion `texImage->FetchTexel' failed.
    • - - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-8.0.2..mesa-8.0.3
    -
    - -

    Alban Browaeys (1):

    -
      -
    • dri/i915: Fix off-by-one in i830 clip region size.
    • -
    - -

    Alex Deucher (2):

    -
      -
    • r200: fix fog coordinate emit
    • -
    • radeon: fix fog coordinate emit
    • -
    - -

    Alexander von Gluck (4):

    -
      -
    • llvmpipe: fix symbol conflict on Haiku
    • -
    • svga: fix typedef conflicts on Haiku
    • -
    • mesa: Don't use newlocale on Haiku
    • -
    • glsl: Don't use newlocale on Haiku
    • -
    - -

    Anuj Phogat (4):

    -
      -
    • mesa: fix issues with texture border and array textures
    • -
    • mesa: Fix valid texture target test in _mesa_GetTexLevelParameteriv()
    • -
    • mesa: Fix the cause of piglit test fbo-array failure
    • -
    • intel: Fix a case when mapping large texture fails
    • -
    - -

    Brian Paul (17):

    -
      -
    • mesa: add a couple fast-paths to fast_read_rgba_pixels_memcpy()
    • -
    • mesa/gdi: remove wmesa_set_renderbuffer_funcs() function
    • -
    • mesa/gdi: remove clear_color() function
    • -
    • mesa: bump version to 8.0.2 in configs/default
    • -
    • swrast: include s_fragprog.h to silence warnings
    • -
    • mesa: remove LSB-first pixel packing check in glReadPixels
    • -
    • mesa: fix error in _mesa_format_matches_format_and_type() for RGB888
    • -
    • mesa: add BGR888 code in _mesa_format_matches_format_and_type()
    • -
    • vbo: fix node_attrsz[] usage in vbo_bind_vertex_list()
    • -
    • mesa: add missing texture integer test in glTexSubImage()
    • -
    • mesa: add missing return after _mesa_error() in update_array()
    • -
    • glsl: propagate MaxUnrollIterations to the optimizer's loop unroller
    • -
    • st/mesa: set MaxUnrollIterations = 255
    • -
    • st/mesa: no-op glCopyPixels if source region is out of bounds
    • -
    • mesa: do more teximage error checking for generic compressed formats
    • -
    • mesa: fix/add error check in _mesa_ColorMaterial()
    • -
    • mesa: fix glMaterial / dlist bug
    • -
    - -

    Chad Versace (3):

    -
      -
    • glsl: Fix Android build
    • -
    • main: Fix memory leak in _mesa_make_extension_string()
    • -
    • intel: Disable ARB_framebuffer_object in ES contexts
    • -
    - -

    Chris Wilson (1):

    -
      -
    • i830: Compute initial number of vertices from remaining batch space
    • -
    - -

    Dave Airlie (4):

    -
      -
    • mesa/format_unpack: add LUMINANCE 8/16 UINT/INT
    • -
    • glx/drisw: avoid segfaults when we fail to get visual
    • -
    • drisw: fix image stride calculation for 16-bit.
    • -
    • intel: fix TFP at 16-bpp
    • -
    - -

    Dylan Noblesmith (7):

    -
      -
    • intel: fix null dereference processing HiZ buffer
    • -
    • util: fix undefined behavior
    • -
    • util: fix uninitialized table
    • -
    • egl: fix uninitialized values
    • -
    • st/vega: fix uninitialized values
    • -
    • egl-static: fix printf warning
    • -
    • i965: fix typo
    • -
    - -

    Eric Anholt (19):

    -
      -
    • i965/fs: Jump from discard statements to the end of the program when done.
    • -
    • intel: Fix rendering from textures after RenderTexture().
    • -
    • mesa: Fix handling of glCopyBufferSubData() for src == dst.
    • -
    • i965/fs: Move GL_CLAMP handling to coordinate setup.
    • -
    • i965/fs: Implement GL_CLAMP behavior on texture rectangles on gen6+.
    • -
    • mesa: Fix push/pop of multisample coverage invert.
    • -
    • mesa: Include the multisample enables under GL_MULTISAMPLE_BIT attrib as well.
    • -
    • mesa: Fix display list handling for GL_ARB_draw_instanced.
    • -
    • mesa: Fix display lists for draw_elements_base_vertex with draw_instanced.
    • -
    • mesa: Add missing error check for first < 0 in glDrawArraysInstanced().
    • -
    • i915: Fix piglit fbo-nodepth-test on i830.
    • -
    • intel: Return success when asked to allocate a 0-width/height renderbuffer.
    • -
    • mesa: Throw error on glGetActiveUniform inside Begin/End.
    • -
    • i965/vs: Fix up swizzle for dereference_array of matrices.
    • -
    • glsl: Fix indentation of switch code.
    • -
    • glsl: Let the constructor figure out the types of switch-related expressions.
    • -
    • glsl: Reject non-scalar switch expressions.
    • -
    • glsl: Fix assertion failure on handling switch on uint expressions.
    • -
    • mesa: Check for framebuffer completeness before looking at the rb.
    • -
    - -

    Eugeni Dodonov (1):

    -
      -
    • intel: add PCI IDs for Ivy Bridge GT2 server variant
    • -
    - -

    Han Shen(沈涵) (1):

    -
      -
    • bin/mklib: remove '-m32' for arm linux
    • -
    - -

    Ian Romanick (1):

    -
      -
    • mesa: Bump version number to 8.0.3
    • -
    - -

    Jakob Bornecrantz (1):

    -
      -
    • docs: Add 8.0.2 md5sums
    • -
    - -

    Jeremy Huddleston (7):

    -
      -
    • darwin: Eliminate a pthread mutex leak
    • -
    • darwin: Fix an error message
    • -
    • darwin: Make reported errors more user-friendly
    • -
    • darwin: Use ASL for logging
    • -
    • darwin: Unlock our mutex before destroying it
    • -
    • darwin: Eliminate a possible race condition while destroying a surface
    • -
    • darwin: Address a build failure on Leopard and earlier OS versions
    • -
    - -

    Jon TURNEY (1):

    -
      -
    • Have __glImageSize handle format GL_DEPTH_STENCIL_NV the same way as the server does
    • -
    - -

    Jonas Maebe (2):

    -
      -
    • glapi: Correct size of allocated _glapi_table struct
    • -
    • apple: Fix a use after free
    • -
    - -

    Jordan Justen (1):

    -
      -
    • mesa: Add primitive restart support to glArrayElement
    • -
    - -

    Kenneth Graunke (12):

    -
      -
    • i965: Actually upload sampler state pointers for the VS unit on Gen6.
    • -
    • i965/fs: Fix FB writes that tried to use the non-existent m16 register.
    • -
    • vbo: Remove pedantic warning about 'end' beind out of bounds.
    • -
    • vbo: Ignore invalid element ranges which are outside VBO bounds.
    • -
    • vbo: Rework checking of 'end' against _MaxElement.
    • -
    • vbo: Eliminate short-circuiting in invalid-start case.
    • -
    • i965: Fix GPU hangs in the dummy fragment shader.
    • -
    • i965: Make the dummy fragment shader work in SIMD16 mode.
    • -
    • drirc: Add force_glsl_extensions_warn workaround for Unigine Heaven.
    • -
    • i965: Avoid explicit accumulator operands in SIMD16 mode on Gen7.
    • -
    • intel: Remove pointless software fallback for glBitmap on Gen6.
    • -
    • glsl: Fix broken constant expression handling for <, <=, >, and >=.
    • -
    - -

    Kurt Roeckx (2):

    -
      -
    • i915: Compute maximum number of verts using the actual batchbuffer size.
    • -
    • i915: Fix i830 polygon stipple from PBOs.
    • -
    - -

    Marek Olšák (5):

    -
      -
    • r300g/swtcl: don't print an error when getting ClipVertex
    • -
    • r300g/swtcl: don't enter u_vbuf_mgr
    • -
    • r300g/swtcl: don't expose shader subroutine support
    • -
    • r300g/swtcl: fix polygon offset
    • -
    • r300g/swtcl: fix crash when back color is present in vertex shader
    • -
    - -

    Mathias Fröhlich (1):

    -
      -
    • glsl: Avoid excessive loop unrolling.
    • -
    - -

    Matt Turner (1):

    -
      -
    • Remove -ffast-math from default CFLAGS
    • -
    - -

    Paul Berry (1):

    -
      -
    • i915: Initialize swrast_texture_image structure fields.
    • -
    - -

    Roland Scheidegger (1):

    -
      -
    • mesa: check_index_bounds off-by-one fix
    • -
    - -

    Tom Stellard (2):

    -
      -
    • r300/compiler: Clear loop registers in vertex shaders w/o loops
    • -
    • r300/compiler: Copy all instruction attributes during local transfoms
    • -
    - -

    Vinson Lee (5):

    -
      -
    • mesa: Fix memory leak in _mesa_get_uniform_location.
    • -
    • linker: Fix memory leak in count_uniform_size::visit_field.
    • -
    • swrast: Fix memory leaks in blit_linear.
    • -
    • ir_to_mesa: Fix uninitialized member in add_uniform_to_shader.
    • -
    • mesa: Fix memory leak in generate_mipmap_compressed.
    • -
    - -

    Yuanhan Liu (2):

    -
      -
    • i915: set SPRITE_POINT_ENABLE bit correctly
    • -
    • i965: fix wrong cube/3D texture layout
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-8.0.4.html b/mesalib/docs/relnotes-8.0.4.html deleted file mode 100644 index 4ceaad2c2..000000000 --- a/mesalib/docs/relnotes-8.0.4.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 8.0.4 Release Notes / July 10, 2012

    - -

    -Mesa 8.0.4 is a bug fix release which fixes bugs found since the 8.0.2 release. -

    -

    -Mesa 8.0.4 implements the OpenGL 3.0 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.0. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -02b96082d2f1ad72e7385f4022afafb9  MesaLib-8.0.4.tar.gz
    -d546f988adfdf986cff45b1efa2d8a46  MesaLib-8.0.4.tar.bz2
    -1f0fdabe6e8019d4de6c16e20e74d163  MesaLib-8.0.4.zip
    -
    - -

    New features

    -

    None.

    - -

    Bug fixes

    - -

    This list is likely incomplete.

    - -
      - -
    • Bug 45967 - piglit getteximage-invalid-format-for-packed-type regression
    • - -
    • Bug 47742 - [softpipe] piglit fbo-generatemipmap-array regression
    • - -
    • Bug 48141 - [vmwgfx] src/gallium/auxiliary/util/u_inlines.h:256:pipe_buffer_map_range: Assertion `offset + length <= buffer->width0' failed.
    • - -
    • Bug 48472 - GPU Lockup while running demo (rzr - the scene is dead) in wine
    • - -
    • Bug 50033 - src/mesa/state_tracker/st_cb_fbo.c:379:st_render_texture: Assertion `strb->rtt_level <= strb->texture->last_level' failed.
    • - -
    • Bug 50621 - Mesa fails its test suite with a buffer overflow.
    • - -
    • Bug 50298 - [ILK IVB bisected]Ogles2conform GL/sin/sin_float_vert_xvary.test regressed
    • - -
    • Bug 51574 - ir_loop_jump constructor assigns member variable to itself
    • - - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-8.0.3..mesa-8.0.4
    -
    - -

    Andreas Betz (1):

    -
      -
    • vega: fix 565 color unpacking bug
    • -
    - -

    Antoine Labour (2):

    -
      -
    • meta: Cleanup the resources we allocate.
    • -
    • mesa: Free uniforms correclty.
    • -
    - -

    Brian Paul (22):

    -
      -
    • docs: add link to 8.0.3 release notes
    • -
    • mesa: fix Z32_FLOAT -> uint conversion functions
    • -
    • draw: fix primitive restart bug by using the index buffer offset
    • -
    • st/mesa: fix glDrawPixels(GL_DEPTH_COMPONENT) color output
    • -
    • svga: fix synchronization bug between sampler views and surfaces
    • -
    • mesa: new _mesa_error_check_format_and_type() function
    • -
    • mesa: add missing GL_UNSIGNED_INT_10F_11F_11F_REV case
    • -
    • mesa: fix missing return value in getteximage_error_check()
    • -
    • st/mesa: pass GL_MAP_INVALIDATE_RANGE_BIT to gallium drivers
    • -
    • svga: add 0.5 in float->int conversion of sample min/max lod
    • -
    • svga: fix min/max lod clamping
    • -
    • svga: change PIPE_CAPF_MAX_TEXTURE_LOD_BIAS from 16.0 to 15.0
    • -
    • st/mesa: add fallback pipe formats for (compressed) R, RG formats
    • -
    • st/mesa: copy num_immediates field when copying the immediates array
    • -
    • svga: move svga_texture() casts/calls in svga_surface_copy()
    • -
    • svga: reset vertex buffer offset in svga_release_user_upl_buffers()
    • -
    • st/mesa: don't set PIPE_BIND_DISPLAY_TARGET for user-created renderbuffers
    • -
    • st/mesa: use private pipe_sampler_view in decompress_with_blit()
    • -
    • st/mesa: add null pointer check in st_texture_image_map()
    • -
    • st/mesa: fix mipmap image size computation w.r.t. texture arrays
    • -
    • draw: fix missing immediates bug in polygon stipple code
    • -
    • st/mesa: fix max_offset computation for base vertex
    • -
    - -

    Christoph Bumiller (1):

    -
      -
    • nv50: handle NEG,ABS modifiers for short RCP encoding
    • -
    - -

    Dylan Noblesmith (1):

    -
      -
    • mesa: require GL_MAX_SAMPLES >= 4 for GL 3.0
    • -
    - -

    Eric Anholt (1):

    -
      -
    • i965/vs: Fix texelFetchOffset()
    • -
    - -

    Ian Romanick (5):

    -
      -
    • docs: Add 8.0.3 release md5sums
    • -
    • glx/tests: Fix off-by-one error in allocating extension string buffer
    • -
    • glsl: Remove spurious printf messages
    • -
    • glsl: Fix pi/2 constant in acos built-in function
    • -
    • mesa: Bump version number to 8.0.4
    • -
    - -

    José Fonseca (2):

    -
      -
    • mesa: Avoid void acinclude.m4 Android.common.mk Android.mk autogen.sh bin common.py configs configure.ac docs doxygen include Makefile scons SConstruct src tests arithmetic.
    • -
    • draw: Ensure that prepare is always run after LLVM garbagge collection.
    • -
    - -

    Kenneth Graunke (15):

    -
      -
    • mesa: Check for a negative "size" parameter in glCopyBufferSubData().
    • -
    • i965: Fix brw_swap_cmod() for LE/GE comparisons.
    • -
    • glsl: Remove unused ir_loop_jump::loop pointer.
    • -
    • ralloc: Fix ralloc_parent() of memory allocated out of the NULL context.
    • -
    • mesa: Restore depth texture state on glPopAttrib(GL_TEXTURE_BIT).
    • -
    • glsl/builtins: Fix textureGrad() for Array samplers.
    • -
    • mesa: Unbind ARB_copy_buffer and transform feedback buffers on delete.
    • -
    • mesa: Support BindBuffer{Base,Offset,Range} with a buffer of 0.
    • -
    • mesa: Unbind ARB_transform_feedback2 binding points on Delete too.
    • -
    • meta: Fix GL_RENDERBUFFER binding in decompress_texture_image().
    • -
    • i965/fs: Fix texelFetchOffset() on pre-Gen7.
    • -
    • i965/vs: Fix texelFetchOffset() on pre-Gen7.
    • -
    • i965/fs: Fix user-defined FS outputs with less than four components.
    • -
    • glsl: Hook up loop_variable_state destructor to plug a memory leak.
    • -
    • glsl: Don't trust loop analysis in the presence of function calls.
    • -
    - -

    Kurt Roeckx (1):

    -
      -
    • i830: Fix crash for GL_STENCIL_TEST in i830Enable()
    • -
    - -

    Lukas Rössler (1):

    -
      -
    • glu: fix two Clang warnings
    • -
    - -

    Marek Olšák (2):

    -
      -
    • mesa: allow exposing GL3 without EXT_texture_integer
    • -
    • st/mesa: don't do srgb->linear conversion in decompress_with_blit
    • -
    - -

    Paul Seidler (1):

    -
      -
    • tests: include mesa headers
    • -
    - -

    Stéphane Marchesin (3):

    -
      -
    • glx: Handle a null reply in QueryVersion.
    • -
    • i915g: Don't invert signalled/unsignalled fences
    • -
    • i915g: Don't avoid flushing when we have a pending fence.
    • -
    - -

    Thomas Gstädtner (1):

    -
      -
    • gallium/targets: pass ldflags parameter to MKLIB
    • -
    - -

    Vadim Girlin (2):

    -
      -
    • st/mesa: set stObj->lastLevel in guess_and_alloc_texture
    • -
    • r600g: check gpr count limit
    • -
    - -

    Vinson Lee (1):

    -
      -
    • st/mesa: Fix uninitialized members in glsl_to_tgsi_visitor constructor.
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-8.0.5.html b/mesalib/docs/relnotes-8.0.5.html deleted file mode 100644 index eb7595bb3..000000000 --- a/mesalib/docs/relnotes-8.0.5.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 8.0.5 Release Notes / October 24, 2012

    - -

    -Mesa 8.0.5 is a bug fix release which fixes bugs found since the 8.0.4 release. -

    -

    -Mesa 8.0.5 implements the OpenGL 3.0 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.0. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -cda5d101f43b8784fa60bdeaca4056f2  MesaLib-8.0.5.tar.gz
    -01305591073a76b65267f69f27d635a3  MesaLib-8.0.5.tar.bz2
    -97f11c00cac8fb98aa0131990086dc8e  MesaLib-8.0.5.zip
    -
    - -

    New features

    -

    None.

    - -

    Bug fixes

    - -

    This list is likely incomplete.

    - -
      - -
    • Bug 44912 - [bisected] WebGL conformance/textures/texture-mips tests fails
    • - -
    • Bug 46644 - Sandybridge Mobile: ARBfp TXP with coords from fragment.color doesn't apply W divide
    • - -
    • Bug 46784 - MAD using multiply written register fails
    • - -
    • Bug 47375 - Blender crash on startup after upgrade to mesa 8.0.1
    • - -
    • Bug 48120 - GL_EXT_texture_sRGB_decode still broken
    • - -
    • Bug 48628 - [bisected ILK]Oglc fogexp(basic.allCases) regressed
    • - -
    • Bug 49772 - [SNB]Oglc depth-stencil(basic.read.ds) regressed
    • - -
    • Bug 52129 - [Bisected ILK]Piglit spec_ARB_shader_texture_lod_execution_glsl-fs-shadow2DGradARB-01 regressed
    • - -
    • Bug 52382 - [ivb gt1] Severe image corruption and GPU Hang, too many PS threads
    • - -
    • Bug 52563 - build failure - struct radeon_renderbuffer has no member named Base
    • - -
    • Bug 53311 - [Bisected IVB]Oglc transform_feedback(advanced.transformFeedback.points) Invalid argument
    • - -
    • Bug 53314 - [llvmpipe] src/gallium/drivers/llvmpipe/lp_texture.c:920:llvmpipe_get_texture_tile_layout: Assertion `x < lpr->tiles_per_row[level]' failed.
    • - -
    • Bug 53316 - [llvmpipe] src/gallium/drivers/llvmpipe/lp_texture.c:601:llvmpipe_get_transfer: Assertion `resource' failed.
    • - -
    • Bug 53317 - [llvmpipe] SIGSEGV src/gallium/auxiliary/gallivm/lp_bld_sample.c:99
    • - -
    • Bug 53318 - [softpipe] sp_state_shader.c:194:softpipe_delete_fs_state: Assertion `var != softpipe->fs_variant' failed.
    • - -
    • Bug 53319 - [softpipe] sp_texture.c:322:softpipe_get_transfer: Assertion `level <= resource->last_level' failed.
    • - -
    • Bug 53618 - [Bisected i915]Piglit glx_GLX_ARB_create_context_NULL_attribute_list Aborted
    • - -
    • Bug 53972 - Black Mirror III: too dark
    • - -
    • Bug 54183 - [Bisected ILK regression]many piglit/oglc/ogles2 cases Segmentation fault
    • - -
    • Bug 54193 - output_components uninitialized in fs_visitor::emit_fb_writes()
    • - -
    • Bug 54301 - [Bisected ILK regression]Piglit glx_GLX_ARB_create_context_forward-compatible_flag_with_3.0 Segmentation fault
    • - -
    • Bug 56211 - src/mesa/state_tracker/st_cb_texture.c:1123:copy_image_data_to_texture: Assertion `u_minify(stImage->pt->height0, src_level) == stImage->base.Height' failed.
    • - - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-8.0.4..mesa-8.0.5
    -
    - -

    Alex Deucher (3):

    -
      -
    • r600g: 8.0.x support for Trinity
    • -
    • r600g: add new Sumo, Palm, BTC pci ids
    • -
    • r600g: add additional evergreen pci ids
    • -
    - -

    Andreas Boll (4):

    -
      -
    • docs/relnotes-8.0.4: fix html markup
    • -
    • mesa: fix html in shortlog_mesa.sh script
    • -
    • mesa: add get-pick-list.sh script into bin/
    • -
    • mesa: Bump version number to 8.0.5
    • -
    - -

    Brian Paul (18):

    -
      -
    • mesa: use _mesa_is_user_fbo() and _mesa_is_winsys_fbo() functions
    • -
    • intel: use _mesa_is_winsys/user_fbo() helpers
    • -
    • st/egl: fix uninitialized pointer bug
    • -
    • mesa: added Ian's shortlog_mesa.sh script in bin/
    • -
    • mesa: loosen small matrix determinant check
    • -
    • xlib: add X error handler around XGetImage() call
    • -
    • radeon: set swrast_renderbuffer::ColorType field when mapping renderbuffers
    • -
    • svga: fix invalid memory reference in needs_to_create_zero()
    • -
    • meta: fix glDrawPixels fallback test, stencil drawing
    • -
    • radeon: fix Base/base typo
    • -
    • st/mesa: fix glCopyTexSubImage crash
    • -
    • gallivm: fix crash in lp_sampler_static_state()
    • -
    • st/mesa: fix renderbuffer validation bug
    • -
    • softpipe: fix softpipe_delete_fs_state() failed assertion
    • -
    • mesa: raise GL_INVALID_OPERATION in glGenerateMipmap for missing base image
    • -
    • st/mesa: s/CALLOC/calloc/ to fix allocation bug
    • -
    • mesa: do internal format error checking for glTexStorage()
    • -
    • mesa: fix incorrect error for glCompressedSubTexImage
    • -
    - -

    Chad Versace (3):

    -
      -
    • mesa: Don't advertise GLES extensions in GL contexts
    • -
    • i830: Fix stack corruption
    • -
    • swrast: Fix implicit declaration warnings
    • -
    - -

    Chris Forbes (1):

    -
      -
    • mesa: fix dropped && in glGetStringi()
    • -
    - -

    Christoph Bumiller (1):

    -
      -
    • st/mesa: call update_renderbuffer_surface for sRGB renderbuffers, too
    • -
    - -

    Eric Anholt (9):

    -
      -
    • i965/gen7: Reduce GT1 WM thread count according to updated BSpec.
    • -
    • i965/fs: Invalidate live intervals in passes that remove an instruction.
    • -
    • i965: Fix bug in the old FS backend's projtex() calculation.
    • -
    • i965: Add support for GL_SKIP_DECODE_EXT on other SRGB formats.
    • -
    • i965/vs: Convert EdgeFlagPointer values appropriately for the VS on gen4.
    • -
    • i965: Fix accumulator_contains() test to also reject swizzles of the dst.
    • -
    • mesa: Fix glPopAttrib() behavior on GL_FRAMEBUFFER_SRGB.
    • -
    • mesa: In conditional rendering fallback, check the query status.
    • -
    • i965: Drop the confusing saturate argument to math instruction setup.
    • -
    - -

    Ian Romanick (8):

    -
      -
    • docs: Add 8.0.4 release md5sums
    • -
    • Revert "i965: Avoid unnecessary recompiles for shaders that don't use dFdy()."
    • -
    • i965: Fix regression in depth texture rendering on pre-SNB
    • -
    • dri2: Fix bug in attribute handling for non-desktop OpenGL contexts
    • -
    • mesa: Generate an error when glCopyTexImage border is invalid
    • -
    • mesa/es: Validate glTexImage border in Mesa code rather than the ES wrapper
    • -
    • mesa: Allow glGetTexParameter of GL_TEXTURE_SRGB_DECODE_EXT
    • -
    • dri_util: Use calloc to allocate __DRIcontext
    • -
    - -

    Jonas Maebe (1):

    -
      -
    • darwin: do not create double-buffered offscreen pixel formats
    • -
    - -

    Jordan Justen (1):

    -
      -
    • intel: move error on create context to proper path
    • -
    - -

    José Fonseca (1):

    -
      -
    • mesa: disable MSVC global optimization in pack.c
    • -
    - -

    Kenneth Graunke (8):

    -
      -
    • mesa: Use GLdouble for depthMax in final unpack conversions.
    • -
    • i965/fs: Initialize output_components[] by filling it with zeros.
    • -
    • mesa: Prevent repeated glDeleteShader() from blowing away our refcounts.
    • -
    • i965: Support MESA_FORMAT_SIGNED_RGBA_16.
    • -
    • glsl: Fix #pragma invariant(all) language version check.
    • -
    • i965/vs: Don't clobber sampler message MRFs with subexpressions.
    • -
    • intel: Move finish_batch() call before MI_BATCH_BUFFER_END and padding.
    • -
    • i965/fs: Don't use brw->fragment_program in calculate_urb_setup().
    • -
    - -

    Maarten Lankhorst (1):

    -
      -
    • winsys/radeon: Remove unnecessary pipe_thread_destroy in radeon_drm_cs_destroy
    • -
    - -

    Marek Olšák (6):

    -
      -
    • mesa: remove assertions that do not allow compressed 2D_ARRAY textures
    • -
    • r300g: fix colormask with non-BGRA formats
    • -
    • r600g: fix RSQ of negative value on Cayman
    • -
    • r600g: fix EXP on Cayman
    • -
    • r600g: fix instance divisor on Cayman
    • -
    • gallium/u_blit: set dst format from pipe_resource, not pipe_surface
    • -
    - -

    Michel Dänzer (2):

    -
      -
    • st/mesa: Fix source miptree level for copying data to finalized miptree.
    • -
    • st/mesa: Fix assertions for copying texture image to finalized miptree.
    • -
    - -

    Niels Ole Salscheider (1):

    -
      -
    • st/mesa: index can be negative in the PROGRAM_CONSTANT case
    • -
    - -

    Paul Berry (5):

    -
      -
    • i965: Compute dFdy() correctly for FBOs.
    • -
    • mesa: Add UsesDFdy to struct gl_fragment_program.
    • -
    • i965: Avoid unnecessary recompiles for shaders that don't use dFdy().
    • -
    • i965/Gen6: Work around GPU hangs due to misaligned depth coordinate offsets.
    • -
    • i965/Gen7: Work around GPU hangs due to misaligned depth coordinate offsets.
    • -
    - -

    Stéphane Marchesin (1):

    -
      -
    • glsl/linker: Avoid buffer over-run in parcel_out_uniform_storage::visit_field
    • -
    - -

    Tapani Pälli (2):

    -
      -
    • xmlconfig: use __progname when building for Android
    • -
    • android: do not expose single buffered eglconfigs
    • -
    - -

    Vadim Girlin (1):

    -
      -
    • winsys/radeon: fix relocs caching
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-8.0.html b/mesalib/docs/relnotes-8.0.html deleted file mode 100644 index 6987544ac..000000000 --- a/mesalib/docs/relnotes-8.0.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 8.0 Release Notes / February 9, 2012

    - -

    -Mesa 8.0 is a new development release. -People who are concerned with stability and reliability should stick -with a previous release or wait for Mesa 8.0.1. -

    -

    -Mesa 8.0 implements the OpenGL 3.0 API, but the version reported by -glGetString(GL_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.0. -

    -

    -See the Compiling/Installing page for prerequisites -for DRI hardware acceleration. -

    - - -

    MD5 checksums

    -
    -3516fea6c28ce4a0fa9759e4894729a1  MesaLib-8.0.tar.gz
    -1a5668fe72651a670611164cefc703b2  MesaLib-8.0.tar.bz2
    -66f5a01a85530a91472a3acceb556db8  MesaLib-8.0.zip
    -
    - - -

    New features

    -
      -
    • GL_ARB_ES2_compatibility (r300g, r600g) -
    • GL_ARB_depth_buffer_float (r600g) -
    • GL_ARB_vertex_type_2_10_10_10_rev (r600g) -
    • GL_ARB_texture_storage (gallium drivers and swrast) -
    • GL_EXT_packed_float (i965) -
    • GL_EXT_texture_array (r600g, i965) -
    • GL_EXT_texture_shared_exponent (i965) -
    • GL_NV_fog_distance (all gallium drivers, nouveau classic) -
    • GL_NV_primitive_restart (r600g) -
    • GL_OES_EGL_image_external (gallium drivers) -
    • GL_OES_compressed_ETC1_RGB8_texture (softpipe, llvmpipe) -
    • ARB_texture_rgb10_a2ui (softpipe, r600g) -
    • Many updates to the VMware svga Gallium driver -
    - - -

    Bug fixes

    - - -

    Changes

    -
      -
    • Removed all DRI drivers that did not support DRI2. Specifically, - i810, mach64, mga, r128, savage, sis, tdfx, and unichrome were - removed.
    • -
    • Removed support for BeOS.
    • -
    • Removed the obsolete (and unmaintained) Windows "gldirect" and - "ICD" drivers.
    • -
    • Removed the linux-fbdev software driver.
    • -
    • Removed all remnants of paletted texture support. As required by - desktop OpenGL, GL_COLOR_INDEX data can still be uploaded - to a color (e.g., RGBA) texture. However, the data cannot be stored - internally as color-index.
    • -
    • Removed support for GL_APPLE_client_storage extension.
    • -
    • Removed the classic Mesa r300 and r600 drivers, which are superseded - by the gallium drivers for this hardware.
    • -
    • Removed the dead Gallium i965, cell and failover drivers, which were - either broken and with nobody in sight to fix the situation or - deprecated.
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-9.0.1.html b/mesalib/docs/relnotes-9.0.1.html deleted file mode 100644 index 50e8b70fd..000000000 --- a/mesalib/docs/relnotes-9.0.1.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 9.0.1 Release Notes / November 16th, 2012

    - -

    -Mesa 9.0.1 is a bug fix release which fixes bugs found since the 9.0 release. -

    -

    -Mesa 9.0 implements the OpenGL 3.1 API, but the version reported by -glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / -glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.1. OpenGL -3.1 is only available if requested at context creation -because GL_ARB_compatibility is not supported. -

    - -

    MD5 checksums

    -
    -97d6554c05ea7449398afe3a0ede7018  MesaLib-9.0.1.tar.bz2
    -fd0fd5a6e56bc3dd210c80e42baef975  MesaLib-9.0.1.tar.gz
    -c2683d957acd530a00f747f50317186f  MesaLib-9.0.1.zip
    -
    - -

    New features

    -

    None.

    - -

    Bug fixes

    - -

    This list is likely incomplete.

    - -
      -
    • Bug 44912 - [bisected] WebGL conformance/textures/texture-mips tests fails
    • - -
    • Bug 55856 - kwin with gles window content is not updating (gen4)
    • - -
    • Bug 56057 - INTEL_swap_event not correctly listed
    • - -
    • Bug 56211 - src/mesa/state_tracker/st_cb_texture.c:1123:copy_image_data_to_texture: Assertion `u_minify(stImage->pt->height0, src_level) == stImage->base.Height' failed.
    • - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-9.0..mesa-9.0.1
    -
    - -

    Adam Jackson (1):

    -
      -
    • glx: Add GLXBadProfileARB to the error string list
    • -
    - -

    Andreas Boll (7):

    -
      -
    • docs: add news item for 9.0 release
    • -
    • mesa: add get-pick-list.sh script into bin/
    • -
    • mesa: add initial .cherry-ignore file for the 9.0 branch
    • -
    • mesa: use .cherry-ignore in the get-pick-list.sh script
    • -
    • build: add config.sub and config.guess to tarballs target
    • -
    • build: add missing Makefile.in files to tarballs target
    • -
    • build: add missing files to tarballs target
    • -
    - -

    Brian Paul (2):

    -
      -
    • mesa: don't call TexImage driver hooks for zero-sized images
    • -
    • mesa: fix error check for zero-sized compressed subtexture
    • -
    - -

    Fredrik Höglund (1):

    -
      -
    • egl_dri2/x11: Fix eglPostSubBufferNV()
    • -
    - -

    Ian Romanick (5):

    -
      -
    • docs: Add 9.0 release md5sums
    • -
    • i965: Fix regression in depth texture rendering on pre-SNB
    • -
    • glx: Set sRGBCapable to a default value
    • -
    • docs: Add 9.0.1 release notes
    • -
    • mesa: Bump version to 9.0.1
    • -
    - -

    Imre Deak (7):

    -
      -
    • mesa: glGet: fix indentation of _mesa_init_get_hash
    • -
    • mesa: glGet: fix indentation of find_value
    • -
    • mesa: glGet: fix indentation of print_table_stats
    • -
    • mesa: glGet: fix API check for EGL_image_external enums
    • -
    • glapi: rename/move GL_POLYGON_OFFSET_BIAS to its extension section
    • -
    • mesa: glGet: fix parameter lookup for apps using multiple APIs
    • -
    • glget: fix make check for glGet GL_POLYGON_OFFSET_BIAS
    • -
    - -

    Jonas Ådahl (1):

    -
      -
    • wayland: Destroy frame callback when destroying surface
    • -
    - -

    Kenneth Graunke (1):

    -
      -
    • glsl: Allow ir_if in the linker's move_non_declarations function.
    • -
    - -

    Kristian Høgsberg (5):

    -
      -
    • gbm: Reject buffers that are not wl_drm buffers in gbm_bo_import()
    • -
    • gbm: Use the kms dumb ioctls for cursor instead of libkms
    • -
    • egl/wayland: Update to Wayland 0.99 API
    • -
    • wayland: Remove 0.85 compatibility #ifdefs
    • -
    • wayland: Drop support for ill-defined, unused wl_egl_pixmap
    • -
    - -

    Marcin Slusarz (1):

    -
      -
    • nouveau: use pre-calculated stride for resource_get_handle
    • -
    - -

    Matt Turner (4):

    -
      -
    • egl: Return EGL_BAD_MATCH for invalid profile attributes
    • -
    • Re-add HAVE_PTHREADS preprocessor macro
    • -
    • build: Ship install-sh in the tarball
    • -
    • ralloc: Annotate printf functions with PRINTFLIKE(...)
    • -
    - -

    Michel Dänzer (2):

    -
      -
    • st/mesa: Fix source miptree level for copying data to finalized miptree.
    • -
    • st/mesa: Fix assertions for copying texture image to finalized miptree.
    • -
    - -

    Owen W. Taylor (1):

    -
      -
    • glx: Fix listing of INTEL_swap_event in glXQueryExtensionsString()
    • -
    - -

    Quentin Glidic (1):

    -
      -
    • intel: Add missing #include <time.h>
    • -
    - -

    Tomeu Vizoso (1):

    -
      -
    • mesa/es: Define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT enum for all GLs
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-9.0.2.html b/mesalib/docs/relnotes-9.0.2.html deleted file mode 100644 index 65b9b1116..000000000 --- a/mesalib/docs/relnotes-9.0.2.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 9.0.2 Release Notes / January 22th, 2013

    - -

    -Mesa 9.0.2 is a bug fix release which fixes bugs found since the 9.0.1 release. -

    -

    -Mesa 9.0 implements the OpenGL 3.1 API, but the version reported by -glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / -glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.1. OpenGL -3.1 is only available if requested at context creation -because GL_ARB_compatibility is not supported. -

    - -

    MD5 checksums

    -
    -5ae216ca9fecfa349f14ecb83aa3f124  MesaLib-9.0.2.tar.gz
    -dc45d1192203e418163e0017640e1cfc  MesaLib-9.0.2.tar.bz2
    -93d40ec77d656dd04b561ba203ffbb91  MesaLib-9.0.2.zip
    -
    - -

    New features

    -

    None.

    - -

    Bug fixes

    - -

    This list is likely incomplete.

    - -
      -
    • Bug 22576 - [KMS] mesa demo spectex broken on rv280
    • - -
    • Bug 26809 - KMS/R200: Bad shading in NWN since Mesa rewrite
    • - -
    • Bug 45877 - [bisected regression] Oglc fbo(negative.invalidParams3) Segmentation fault
    • - -
    • Bug 54402 - st_glsl_to_tgsi.cpp:4006:dst_register: Assertion `index < VERT_RESULT_MAX' failed
    • - -
    • Bug 55175 - Memoryleak with glPopAttrib only on Intel GM45
    • - -
    • Bug 56442 - glcpp accepts junk after #else/#elif/#endif tokens
    • - -
    • Bug 56706 - EGL sets error to EGL_SUCCESS when DRI driver fails to create context
    • - -
    • Bug 57622 - Webgl conformance shader-with-non-reserved-words crash.
    • - -
    • Bug 57842 - r200: Culling is broken when rendering to an FBO
    • - -
    • Bug 57984 - r300g: blend sfactor=GL_DST_COLOR fails with FBOs
    • - -
    • Bug 58545 - [llvmpipe] src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c:75:analyse_src: Assertion `src->Index < (sizeof(ctx->imm)/sizeof((ctx->imm)[0]))' failed.
    • - -
    • Bug 59383 - src/glsl/tests/Makefile.am missing $(top_srcdir)/include
    • - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-9.0.1..mesa-9.0.2
    -
    - -

    Abdiel Janulgue (1):

    -
      -
    • mesa: Fix a crash in update_texture_state() for external texture type
    • -
    - -

    Adam Jackson (4):

    -
      -
    • glcpp: Fix visibility CFLAGS in automake
    • -
    • glcpp: Typo fix.
    • -
    • galahad, noop: Fix visibility CFLAGS in automake
    • -
    • r300g: Fix visibility CFLAGS in automake
    • -
    - -

    Alex Deucher (2):

    -
      -
    • radeonsi: add some new SI pci ids
    • -
    • radeonsi: add a new SI pci id
    • -
    - -

    Ander Conselvan de Oliveira (2):

    -
      -
    • egl/wayland: Don't invalidate drawable on swap buffers
    • -
    • egl/wayland: Dispatch the event queue before get_buffers
    • -
    • egl/wayland: Destroy the pending buffer callback with the egl surface
    • -
    - -

    Andreas Boll (9):

    -
      -
    • docs: fix release date of 9.0.1
    • -
    • docs: add news item for 9.0.1 release
    • -
    • Add .dirstamp to toplevel .gitignore
    • -
    • build: use git ls-files for adding all Makefile.in into the release tarball
    • -
    • build: Fix GLES linkage without libglapi
    • -
    • Revert "r600g: try to fix streamout for the cases where BURST_COUNT > 0"
    • -
    • mesa: update .cherry-ignore list
    • -
    • mesa: Bump version to 9.0.2
    • -
    • docs: Add 9.0.2 release notes
    • -
    - -

    Anuj Phogat (2):

    -
      -
    • mesa: Generate invalid operation in glGenerateMipMap for integer textures
    • -
    • meta: Remove redundant code in _mesa_meta_GenerateMipmap
    • -
    - -

    Ben Skeggs (3):

    -
      -
    • nvc0: fix missing permanent bo reference on poly cache
    • -
    • nvc0: point vertex runout at a valid address
    • -
    • nv50: point vertex runout at a valid address
    • -
    - -

    Brian Paul (5):

    -
      -
    • svga: don't use uninitialized framebuffer state
    • -
    • st/mesa: replace REALLOC() with realloc()
    • -
    • st/mesa: free TGSI tokens with ureg_free_tokens()
    • -
    • util: added pipe_surface_release() function
    • -
    • gallivm: support more immediates in lp_build_tgsi_info()
    • -
    - -

    Bryan Cain (1):

    -
      -
    • glsl_to_tgsi: set correct register type for array and structure elements
    • -
    - -

    Chad Versace (2):

    -
      -
    • i965: Validate requested GLES context version in brwCreateContext
    • -
    • egl/dri2: Set error code when dri2CreateContextAttribs fails
    • -
    - -

    Chris Fester (1):

    -
      -
    • util: null-out the node's prev/next pointers in list_del()
    • -
    - -

    Christoph Bumiller (5):

    -
      -
    • nv50/ir/tgsi: fix srcMask for TXP with SHADOW1D
    • -
    • nvc0: add missing call to map edge flag in push_vbo
    • -
    • nv50/ir: wrap assertion using typeid in #ifndef NDEBUG
    • -
    • nouveau: fix undefined behaviour when testing sample_count
    • -
    • nv50/ir: restore use of long immediate encodings
    • -
    - -

    Dave Airlie (5):

    -
      -
    • r600g: fix lod bias/explicit lod with cube maps.
    • -
    • glsl_to_tgsi: fix dst register for texturing fetches.
    • -
    • glsl: fix cut-n-paste error in error handling. (v2)
    • -
    • glsl: initialise killed_all field.
    • -
    • glsl: fix uninitialised variable from constructor
    • -
    - -

    Eric Anholt (4):

    -
      -
    • mesa: Fix the core GL genned-name handling for glBindBufferBase()/Range().
    • -
    • mesa: Fix core GL genned-name handling for glBeginQuery().
    • -
    • mesa: Fix segfault on reading from a missing color read buffer.
    • -
    • i965/gen4: Fix memory leak each time compile_gs_prog() is called.
    • -
    - -

    Ian Romanick (2):

    -
      -
    • docs: Add 9.0.1 release md5sums
    • -
    • glsl: Don't add structure fields to the symbol table
    • -
    - -

    Johannes Obermayr (4):

    -
      -
    • clover: Install CL headers.
    • -
    • gallium/auxiliary: Add -fno-rtti to CXXFLAGS on LLVM >= 3.2.
    • -
    • clover: Adapt libclc's INCLUDEDIR and LIBEXECDIR to make use of the new introduced libclc.pc.
    • -
    • tests: AM_CPPFLAGS must include $(top_srcdir) instead of $(top_builddir).
    • -
    - -

    Jonas Ådahl (1):

    -
      -
    • wayland: Don't cancel a roundtrip when any event is received
    • -
    - -

    José Fonseca (1):

    -
      -
    • llvmpipe: Obey back writemask.
    • -
    - -

    Kenneth Graunke (8):

    -
      -
    • i965/vs: Fix unit mismatch in scratch base_offset parameter.
    • -
    • i965/vs: Implement register spilling.
    • -
    • mesa: Don't flatten IF statements by default.
    • -
    • glcpp: Don't use infinite lookhead for #define differentiation.
    • -
    • i965/vs: Don't lose the MRF writemask when doing compute-to-MRF.
    • -
    • i965/vs: Preserve the type when copy propagating into an instruction.
    • -
    • mesa: Fix glGetVertexAttribI[u]iv now that we have real integer attribs.
    • -
    • i965: Fix AA Line Distance Mode in 3DSTATE_SF on Ivybridge.
    • -
    - -

    Kristian Høgsberg (1):

    -
      -
    • egl/wayland: Add invalidate back in eglSwapBuffers()
    • -
    - -

    Maarten Lankhorst (2):

    -
      -
    • makefiles: use configured name for -ldrm* where possible
    • -
    • automake: strip LLVM_CXXFLAGS and LLVM_CPPFLAGS too
    • -
    - -

    Marek Olšák (17):

    -
      -
    • st/mesa: fix integer texture border color for some formats (v2)
    • -
    • r300g: fix texture border color for sRGB formats
    • -
    • mesa: bump MAX_VARYING to 32
    • -
    • draw: fix assertion failure in draw_emit_vertex_attr
    • -
    • vbo: fix glVertexAttribI* functions
    • -
    • mesa: add MaxNumLevels to gl_texture_image, remove MaxLog2
    • -
    • mesa: fix error checking of TexStorage(levels) for array and rect textures
    • -
    • st/mesa: fix guessing the base level size
    • -
    • st/mesa: fix computation of last_level during texture creation
    • -
    • st/mesa: fix computation of last_level in GenerateMipmap
    • -
    • r600g: fix streamout on RS780 and RS880
    • -
    • r600g: advertise 32 streamout vec4 outputs
    • -
    • r600g: fix broken streamout if streamout_begin caused a context flush
    • -
    • mesa: fix BlitFramebuffer between linear and sRGB formats
    • -
    • r600g: try to fix streamout for the cases where BURST_COUNT > 0
    • -
    • r600g: always use a tiled resource as the destination of MSAA resolve
    • -
    • mesa: add MaxNumLevels to gl_texture_image, remove MaxLog2
    • -
    - -

    Mario Kleiner (1):

    -
      -
    • mesa: Don't glPopAttrib() GL_POINT_SPRITE_COORD_ORIGIN on < OpenGL-2.0
    • -
    - -

    Matt Turner (1):

    -
      -
    • glcpp: Reject garbage after #else and #endif tokens
    • -
    - -

    Stefan Dösinger (1):

    -
      -
    • r300: Don't disable destination read if the src blend factor needs it
    • -
    - -

    Tapani Pälli (1):

    -
      -
    • android: generate matching remap_helper to dispatch table
    • -
    - -

    Tom Stellard (1):

    -
      -
    • r600g: Use LOOP_START_DX10 for loops
    • -
    - -

    Vinson Lee (1):

    -
      -
    • i915: Fix wrong sizeof argument in i915_update_tex_unit.
    • -
    - -

    smoki (2):

    -
      -
    • r200: fix broken tcl lighting
    • -
    • radeon/r200: Fix tcl culling
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-9.0.3.html b/mesalib/docs/relnotes-9.0.3.html deleted file mode 100644 index e8ec62964..000000000 --- a/mesalib/docs/relnotes-9.0.3.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 9.0.3 Release Notes / February 21th, 2013

    - -

    -Mesa 9.0.3 is a bug fix release which fixes bugs found since the 9.0.2 release. -

    -

    -Mesa 9.0 implements the OpenGL 3.1 API, but the version reported by -glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / -glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.1. OpenGL -3.1 is only available if requested at context creation -because GL_ARB_compatibility is not supported. -

    - -

    MD5 checksums

    -
    -168384ac0101f4600a15edd3561acdc7  MesaLib-9.0.3.tar.gz
    -d7515cc5116c72ac63d735655bd63689  MesaLib-9.0.3.tar.bz2
    -a2e1c794572440fd0d839a7d7dfea00c  MesaLib-9.0.3.zip
    -
    - -

    New features

    -

    None.

    - -

    Bug fixes

    - -

    This list is likely incomplete.

    - -
      -
    • Bug 25201 - Pink artifacts on objects in the distance in ETQW/Quake 4
    • - -
    • Bug 31598 - configure: Doesn't check for python libxml2
    • - -
    • Bug 40404 - [softpipe] piglit glsl-max-varyings regression
    • - -
    • Bug 47220 - [bisected] Oglc pxconv-gettex(basic.allCases) regressed
    • - -
    • Bug 48629 - [bisected i965]Oglc shad-compiler(advanced.TestLessThani) regressed
    • - -
    • Bug 54240 - [swrast] piglit fbo-generatemipmap-filtering regression
    • - -
    • Bug 56920 - [sandybridge][uxa] graphics very glitchy and always flickering
    • - -
    • Bug 57166 - [GM45] Chrome experiment "Stars" crash: brw_fs_emit.cpp:708: brw_reg brw_reg_from_fs_reg(fs_reg*): Assertion „!"not reached"“ failed.
    • - -
    • Bug 57746 - build test failure: nouveau_fbo.c:198:3: error: too few arguments to function 'nouveau_renderbuffer_del'
    • - -
    • Bug 57754 - [swrast] Mesa 9.1-devel implementation error: Unable to delete renderbuffer, no context
    • - -
    • Bug 58680 - [IVB] Graphical glitches in 0 A.D
    • - -
    • Bug 58972 - [softpipe] util/u_tile.c:795:pipe_put_tile_z: Assertion `0' failed.
    • - -
    • Bug 59364 - [bisected] Mesa build fails: clientattrib.c:33:22: fatal error: indirect.h: No such file or directory
    • - -
    • Bug 59700 - [ILK/SNB/IVB Bisected]Oglc vertexshader(advanced.TestLightsTwoSided) causes GPU hung
    • - -
    • Bug 59873 - [swrast] piglit ext_framebuffer_multisample-interpolation 0 centroid-edges regression
    • - -
    • Bug 60052 - [Bisected]Piglit glx_extension_string_sanity fail
    • - -
    • Bug 60172 - Planeshift: triangles where grass would be
    • - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-9.0.2..mesa-9.0.3
    -
    - -

    Adam Jackson (1):

    -
      -
    • r200: Fix probable thinko in r200EmitArrays
    • -
    - -

    Andreas Boll (7):

    -
      -
    • docs: Add 9.0.2 release md5sums
    • -
    • docs: add news item for 9.0.2 release
    • -
    • configure.ac: Allow OpenGL ES1 and ES2 only with enabled OpenGL
    • -
    • build: require python module libxml2
    • -
    • cherry-ignore: Ignore candidates for the 9.1 branch.
    • -
    • mesa: Bump version to 9.0.3
    • -
    • docs: Add 9.0.3 release notes
    • -
    - -

    Anuj Phogat (1):

    -
      -
    • mesa: Fix GL_LUMINANCE handling for textures in glGetTexImage
    • -
    - -

    Brian Paul (29):

    -
      -
    • st/glx: accept GLX_SAMPLE_BUFFERS/SAMPLES_ARB == 0
    • -
    • draw: set precalc_flat flag for AA lines too
    • -
    • softpipe: fix up FS variant unbinding / deletion
    • -
    • softpipe: fix unreliable FS variant binding bug
    • -
    • xlib: handle _mesa_initialize_visual()'s return value
    • -
    • xlib: allow GLX_DONT_CARE for glXChooseFBConfig() attribute values
    • -
    • st/glx: allow GLX_DONT_CARE for glXChooseFBConfig() attribute values
    • -
    • util: fix addressing bug in pipe_put_tile_z() for PIPE_FORMAT_Z32_FLOAT
    • -
    • util: add get/put_tile_z() support for PIPE_FORMAT_Z32_FLOAT_S8X24_UINT
    • -
    • mesa: use GLbitfield64 when copying program inputs
    • -
    • svga: add NULL pointer check in svga_create_sampler_state()
    • -
    • vbo: add a null pointer check to handle OOM instead of crashing
    • -
    • osmesa: use _mesa_generate_mipmap() for mipmap generation, not meta
    • -
    • xlib: use _mesa_generate_mipmap() for mipmap generation, not meta
    • -
    • st/mesa: set ctx->Const.MaxSamples = 0, not 1
    • -
    • mesa: fix-up and use _mesa_delete_renderbuffer()
    • -
    • mesa: pass context parameter to gl_renderbuffer::Delete()
    • -
    • st/mesa: fix context use-after-free problem in st_renderbuffer_delete()
    • -
    • dri_glx: fix use after free report
    • -
    • mesa: remove warning message in _mesa_reference_renderbuffer_()
    • -
    • st/mesa: add null pointer check in st_renderbuffer_delete()
    • -
    • util: add some defensive coding in u_upload_alloc()
    • -
    • st/mesa: do proper error checking for u_upload_alloc() calls
    • -
    • util: add new error checking code in vbuf helper
    • -
    • mesa: don't enable GL_EXT_framebuffer_multisample for software drivers
    • -
    • st/mesa: only enable GL_EXT_framebuffer_multisample if GL_MAX_SAMPLES >= 2
    • -
    • mesa: don't expose IBM_rasterpos_clip in a core context
    • -
    • svga: fix sRGB rendering
    • -
    • nouveau: Fix build.
    • -
    - -

    Chad Versace (1):

    -
      -
    • i965/disasm: Fix horizontal stride of dest registers
    • -
    - -

    Eric Anholt (5):

    -
      -
    • i965/fs: Fix the gen6-specific if handling for 80ecb8f15b9ad7d6edc
    • -
    • i965/fs: Don't generate saturates over existing variable values.
    • -
    • i965: Actually add support for GL_ANY_SAMPLES_PASSED from GL_ARB_oq2.
    • -
    • i965/vs: Try again when we've successfully spilled a reg.
    • -
    • i965/gen7: Set up all samplers even if samplers are sparsely used.
    • -
    - -

    Frank Henigman (1):

    -
      -
    • mesa: add bounds checking for uniform array access
    • -
    - -

    Jerome Glisse (1):

    -
      -
    • r600g: add cs memory usage accounting and limit it v3 (backport for mesa 9.0)
    • -
    - -

    Jordan Justen (1):

    -
      -
    • unpack: support unpacking MESA_FORMAT_ARGB2101010
    • -
    - -

    José Fonseca (2):

    -
      -
    • mesa/st: Don't use 4bits for GL_UNSIGNED_BYTE_3_3_2(_REV)
    • -
    • draw: Properly limit vertex buffer fetches on draw arrays.
    • -
    - -

    Kenneth Graunke (19):

    -
      -
    • i965: Fix primitive restart on Haswell.
    • -
    • i965: Refactor texture swizzle generation into a helper.
    • -
    • i965: Do texture swizzling in hardware on Haswell.
    • -
    • i965: Lower textureGrad() with samplerCubeShadow.
    • -
    • i965: Use Haswell's sample_d_c for textureGrad with shadow samplers.
    • -
    • i965: Add chipset limits for Haswell GT1/GT2.
    • -
    • cherry-ignore: Ignore i965 guardband bug fixes.
    • -
    • i965: Add missing _NEW_BUFFERS dirty bit in Gen7 SBE state.
    • -
    • i965/vs: Create a 'lod_type' temporary for ir->lod_info.lod->type.
    • -
    • i965/vs: Set LOD to 0 for ordinary texture() calls.
    • -
    • i965/vs: Store texturing results into a vec4 temporary.
    • -
    • cherry-ignore: Ignore candidates for the 9.1 branch.
    • -
    • mesa: Disable GL_NV_primitive_restart extension in core contexts.
    • -
    • glsl: Track UBO block names in the symbol table.
    • -
    • build: Fix build on systems where /usr/bin/python isn't python 2.
    • -
    • i965: Refactor Gen6+ SF attribute override code.
    • -
    • i965: Compute the maximum SF source attribute.
    • -
    • i965: Fix the SF Vertex URB Read Length calculation for Sandybridge.
    • -
    • i965: Fix the SF Vertex URB Read Length calculation for Gen7 platforms.
    • -
    - -

    Marek Olšák (3):

    -
      -
    • r600g: fix int->bool conversion in fence_signalled
    • -
    • gallium/u_upload_mgr: fix a serious memory leak
    • -
    • r300g: fix blending with blend color and RGBA formats
    • -
    - -

    Matt Turner (3):

    -
      -
    • mesa: Return 0 for XFB_VARYING_MAX_LENGTH if no varyings
    • -
    • mesa: Set transform feedback's default buffer mode to INTERLEAVED_ATTRIBS
    • -
    • mesa/uniform_query: Don't write to *params if there is an error
    • -
    - -

    Michel Dänzer (1):

    -
      -
    • configure.ac: GLX cannot work without OpenGL
    • -
    - -

    Paul Berry (1):

    -
      -
    • mesa: Allow glReadBuffer(GL_NONE) for winsys framebuffers.
    • -
    - -

    Roland Scheidegger (1):

    -
      -
    • softpipe: fix using optimized filter function
    • -
    - -

    Stefan Dösinger (3):

    -
      -
    • meta: Disable GL_FRAGMENT_SHADER_ATI in MESA_META_SHADER
    • -
    • radeon: Initialize swrast before setting limits
    • -
    • r200: Initialize swrast before setting limits
    • -
    - -

    Zack Rusin (2):

    -
      -
    • glx: only advertise GLX_INTEL_swap_event if it's supported
    • -
    • DRI2: Don't disable GLX_INTEL_swap_event unconditionally
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-9.0.html b/mesalib/docs/relnotes-9.0.html deleted file mode 100644 index 16b1417f3..000000000 --- a/mesalib/docs/relnotes-9.0.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 9.0 Release Notes / October 8, 2012

    - -

    -Mesa 9.0 is a new development release. -People who are concerned with stability and reliability should stick -with a previous release or wait for Mesa 9.0.1. -

    -

    -Mesa 9.0 implements the OpenGL 3.1 API, but the version reported by -glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / -glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.1. OpenGL -3.1 is only available if requested at context creation -because GL_ARB_compatibility is not supported. -

    - - -

    MD5 checksums

    -
    -be4cd34c6599a7cb9d254b05c48bdb1f  MesaLib-9.0.tar.gz
    -60e557ce407be3732711da484ab3db6c  MesaLib-9.0.tar.bz2
    -16b128544cd3f7e237927bb9f8aab7ce  MesaLib-9.0.zip
    -
    - - -

    New features

    - -

    -Note: some of the new features are only available with certain drivers. -

    - -
      -
    • Added new Gallium3D - nv30 driver
    • -
    • Added new Gallium3D - radeonsi driver
    • -
    • Added OpenCL state tracker Clover
    • -
    • Completed VDPAU state tracker (video decoding support is currently limited to MPEG1 and MPEG2)
    • -
    • GL_ARB_base_instance
    • -
    • GL_ARB_blend_func_extended
    • -
    • GL_ARB_debug_output
    • -
    • GL_ARB_invalidate_subdata - Currently a "no-op" implementation. This -extension is always enabled in all drivers.
    • -
    • GL_ARB_shader_bit_encoding
    • -
    • GL_ARB_texture_buffer_object
    • -
    • GL_ARB_timer_query
    • -
    • GL_ARB_transform_feedback3
    • -
    • GL_ARB_transform_feedback_instanced
    • -
    • GL_ARB_uniform_buffer_object
    • -
    • GL_EXT_unpack_subimage for ES 2.0
    • -
    • GL_EXT_read_format_bgra for ES 1.1 and 2.0
    • -
    • GL_EXT_texture_rg for ES 2.x
    • -
    • GL_NV_read_buffer for ES 2.0
    • -
    • GLX_ARB_create_context_robustness
    • -
    • EGL_KHR_create_context
    • -
    • EGL_KHR_surfaceless_context - This replaces the -EGL_KHR_surfaceless_{gles1,gles2,opengl} extensions that were never approved -by Khronos.
    • -
    • EGL_EXT_create_context_robustness
    • -
    - - -

    Bug fixes

    - -

    TBD -- This list is likely incomplete.

    - - -

    Changes

    - -
      -
    • -The legacy/static Makefile system (ex: 'make linux-dri') has been removed. -
      -The two supported build methods are now autoconf/automake and SCons. -
    • -
    • Removed support for GL_ARB_shadow_ambient extension
    • -
    • Removed Gallium3D - nvfx driver (use nv30 instead)
    • -
    • -libGLU has been moved into its own repository, found at http://cgit.freedesktop.org/mesa/glu/ -
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-9.1.1.html b/mesalib/docs/relnotes-9.1.1.html deleted file mode 100644 index a73c97424..000000000 --- a/mesalib/docs/relnotes-9.1.1.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 9.1.1 Release Notes / March 19th, 2013

    - -

    -Mesa 9.1.1 is a bug fix release which fixes bugs found since the 9.1 release. -

    -

    -Mesa 9.1 implements the OpenGL 3.1 API, but the version reported by -glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / -glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.1. OpenGL -3.1 is only available if requested at context creation -because GL_ARB_compatibility is not supported. -

    - -

    MD5 checksums

    -
    -6508d9882d8dce7106717f365632700c  MesaLib-9.1.1.tar.gz
    -6ea2bdc3b7ecfb4257b39814b4182580  MesaLib-9.1.1.tar.bz2
    -3434c0eb47849a08c53cd32833d10d13  MesaLib-9.1.1.zip
    -
    - -

    New features

    -

    None.

    - -

    Bug fixes

    - -

    This list is likely incomplete.

    - -
      -
    • Bug 30232 - [GM45] mesa demos spriteblast render incorrectly
    • - -
    • Bug 32429 - [gles2] Ironlake: gl_PointCoord takes no effect for point sprites
    • - -
    • Bug 38086 - Mesa 7.11-devel implementation error: Unexpected program target in destroy_program_variants_cb()
    • - -
    • Bug 57121 - [snb] corrupted GLSL built-in function results when using Uniform Buffer contents as arguments
    • - -
    • Bug 58042 - [bisected] Garbled UI in Team Fortress 2 and Counter-Strike: Source
    • - -
    • Bug 58960 - Texture flicker with fragment shader
    • - -
    • Bug 59495 - [i965 Bisected]Oglc fbblit(advanced.blitFb-3d-cube.mirror.both) fails
    • - -
    • Bug 59783 - [IVB bisected] 3DMMES2.0 Taiji performance reduced by ~13% with gnome-session enable compositing
    • - -
    • Bug 60121 - build - libvdpau_softpipe fails at runtime.
    • - -
    • Bug 60143 - gbm_dri_bo_create fails to initialize bo->base.base.format
    • - -
    • Bug 60802 - Corruption with DMA ring on cayman
    • - -
    • Bug 60848 - [bisected] r600g: add htile support cause gpu lockup in Dishonored wine.
    • - -
    • Bug 60938 - [softpipe] piglit interpolation-noperspective-gl_BackColor-flat-fixed regression
    • - -
    • Bug 61012 - alloc_layout_array tx * ty assertion failure when making pbuffer current
    • - -
    • Bug 61026 - Segfault in glBitmap when called with PBO source
    • - - -
    - - -

    Changes

    -

    The full set of changes can be viewed by using the following GIT command:

    - -
    -  git log mesa-9.1..mesa-9.1.1
    -
    - - -

    Adam Sampson (1):

    -
      -
    • autotools: oprofilejit should be included in the list of LLVM components required
    • -
    - -

    Alex Deucher (2):

    -
      -
    • r600g: add Richland APU pci ids
    • -
    • r600g: Use blitter rather than DMA for 128bpp on cayman (v3)
    • -
    - -

    Andreas Boll (2):

    -
      -
    • docs: Add 9.1 release md5sums
    • -
    • docs: add news item for 9.1 release
    • -
    - -

    Anuj Phogat (1):

    -
      -
    • meta: Allocate texture before initializing texture coordinates
    • -
    - -

    Brian Paul (11):

    -
      -
    • docs: remove stray 'date' text
    • -
    • docs: insert links to the 9.0.3 release
    • -
    • draw: fix non-perspective interpolation in interp()
    • -
    • st/mesa: implement glBitmap unpacking from a PBO, for the cache path
    • -
    • st/xlib: initialize the drawable size in create_xmesa_buffer()
    • -
    • st/mesa: fix trimming of GL_QUAD_STRIP
    • -
    • st/mesa: check for dummy programs in destroy_program_variants()
    • -
    • st/mesa: fix polygon offset state translation logic
    • -
    • draw: fix broken polygon offset stage
    • -
    • llvmpipe: add missing checks for polygon offset point/line modes
    • -
    • svga: always link with C++
    • -
    - -

    Daniel van Vugt (1):

    -
      -
    • gbm: Remember to init format on gbm_dri_bo_create.
    • -
    - -

    Eric Anholt (7):

    -
      -
    • i965/fs: Do a general SEND dependency workaround for the original 965.
    • -
    • i965/fs: Fix copy propagation with smearing.
    • -
    • i965/fs: Delay setup of uniform loads until after pre-regalloc scheduling.
    • -
    • i965/fs: Only do CSE when the dst types match.
    • -
    • i965/fs: Fix broken math on values loaded from uniform buffers on gen6.
    • -
    • mesa: Fix setup of ctx->Point.PointSprite for GLES2.
    • -
    • i965: Fix the W value of deprecated pointcoords on pre-gen6.
    • -
    - -

    Frank Henigman (1):

    -
      -
    • i965: Link i965_dri.so with C++ linker.
    • -
    - -

    Ian Romanick (3):

    -
      -
    • mesa: Add previously picked commit to .cherry-ignore
    • -
    • mesa: Modify candidate search string
    • -
    • egl: Allow 24-bit visuals for 32-bit RGBA8888 configs
    • -
    - -

    Jakub Bogusz (1):

    -
      -
    • vdpau-softpipe: Build correct source file - vl_winsys_xsp.c
    • -
    - -

    Jerome Glisse (1):

    -
      -
    • r600g: workaround hyperz lockup on evergreen
    • -
    - -

    John Kåre Alsaker (1):

    -
      -
    • llvmpipe: Fix creation of shared and scanout textures.
    • -
    - -

    Jordan Justen (1):

    -
      -
    • attrib: push/pop FRAGMENT_PROGRAM_ARB state
    • -
    - -

    José Fonseca (3):

    -
      -
    • scons: Allows choosing VS 10 or 11.
    • -
    • scons: Define _ALLOW_KEYWORD_MACROS on MSVC builds.
    • -
    • scons: Warn when using MSVS versions prior to 2012.
    • -
    - -

    Keith Kriewall (1):

    -
      -
    • scons: Fix Windows build with LLVM 3.2
    • -
    - -

    Kenneth Graunke (1):

    -
      -
    • i965: Fix Crystal Well PCI IDs.
    • -
    - -

    Marek Olšák (5):

    -
      -
    • r600g: use async DMA with a non-zero src offset
    • -
    • r600g: flush and invalidate htile cache when appropriate
    • -
    • gallium/util: add helper code for 1D integer range
    • -
    • r600g: always map uninitialized buffer range as unsynchronized
    • -
    • r600g: pad the DMA CS to a multiple of 8 dwords
    • -
    - -

    Martin Andersson (1):

    -
      -
    • winsys/radeon: Only add bo to hash table when creating flink
    • -
    - -

    Matt Turner (1):

    -
      -
    • mesa: Allow ETC2/EAC formats with ARB_ES3_compatibility.
    • -
    - -

    Michel Dänzer (3):

    -
      -
    • radeonsi: Fix up and enable flat shading.
    • -
    • r600g/Cayman: Fix blending using destination alpha factor but non-alpha dest
    • -
    • radeonsi: Fix off-by-one for maximum vertex element index in some cases
    • -
    - -

    Tapani Pälli (2):

    -
      -
    • mesa: add missing case in _mesa_GetTexParameterfv()
    • -
    • mesa/es: NULL check in EGLImageTargetTexture2DOES
    • -
    - -

    Vadim Girlin (1):

    -
      -
    • r600g: fix check_and_set_bank_swizzle for cayman
    • -
    - -

    Vincent Lejeune (2):

    -
      -
    • r600g/llvm: Add support for UBO
    • -
    • r600g: Check comp_mask before merging export instructions
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes-9.1.html b/mesalib/docs/relnotes-9.1.html deleted file mode 100644 index 8232ab8ee..000000000 --- a/mesalib/docs/relnotes-9.1.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - Mesa Release Notes - - - - -
    -

    The Mesa 3D Graphics Library

    -
    - - -
    - -

    Mesa 9.1 Release Notes / February 22, 2013

    - -

    -Mesa 9.1 is a new development release. -People who are concerned with stability and reliability should stick -with a previous release or wait for Mesa 9.1.1. -

    -

    -Mesa 9.1 implements the OpenGL 3.1 API, but the version reported by -glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / -glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. -Some drivers don't support all the features required in OpenGL 3.1. OpenGL -3.1 is only available if requested at context creation -because GL_ARB_compatibility is not supported. -

    - - -

    MD5 checksums

    -
    -86d40f3056f89949368764bf84aff55e  MesaLib-9.1.tar.gz
    -d3891e02215422e120271d976ff1947e  MesaLib-9.1.tar.bz2
    -01645f28f53351c23b0beb6c688911d8  MesaLib-9.1.zip
    -
    - - -

    New features

    - -

    -Note: some of the new features are only available with certain drivers. -

    - -
      -
    • GL_ANGLE_texture_compression_dxt3
    • -
    • GL_ANGLE_texture_compression_dxt5
    • -
    • GL_ARB_ES3_compatibility
    • -
    • GL_ARB_internalformat_query
    • -
    • GL_ARB_map_buffer_alignment
    • -
    • GL_ARB_shading_language_packing
    • -
    • GL_ARB_texture_buffer_object_rgb32
    • -
    • GL_ARB_texture_cube_map_array
    • -
    • GL_EXT_color_buffer_float
    • -
    • GL_OES_depth_texture_cube_map
    • -
    • OpenGL 3.1 core profile support on Radeon HD2000 up to HD6000 series
    • -
    • Multisample anti-aliasing support on Radeon X1000 series
    • -
    • OpenGL ES 3.0 support on Intel HD Graphics 2000, 2500, 3000, and 4000
    • -
    - - -

    Bug fixes

    - -

    TBD -- This list is likely incomplete.

    - - -

    Changes

    - -
      -
    • Removed VAAPI state tracker (unmaintained and broken)
    • -
    • Removed i965's broken hardware implementation of GL_NV_vertex_program
    • -
    • Removed swrast support for GL_NV_vertex_program
    • -
    • Removed swrast support for GL_NV_fragment_program
    • -
    • Removed OpenVMS support (unmaintained and broken)
    • -
    • Removed makedepend build dependency
    • -
    - -
    - - diff --git a/mesalib/docs/relnotes.html b/mesalib/docs/relnotes.html index 2e11bc497..04eea158a 100644 --- a/mesalib/docs/relnotes.html +++ b/mesalib/docs/relnotes.html @@ -21,58 +21,62 @@ The release notes summarize what's new or changed in each Mesa release.

    @@ -81,29 +85,31 @@ Versions of Mesa prior to 6.4 are summarized in the

    diff --git a/mesalib/docs/relnotes/3.1 b/mesalib/docs/relnotes/3.1 new file mode 100644 index 000000000..65324eb49 --- /dev/null +++ b/mesalib/docs/relnotes/3.1 @@ -0,0 +1,145 @@ + + Mesa 3.1 release notes + + PLEASE READ!!!! + + +New copyright +------------- + +Mesa 3.1 will be distributed under an XFree86-style copyright instead +of the GNU LGPL. + + +New directories +--------------- + +All documentation files are now in the docs/ directory. +All shell scripts are now in the bin/ directory. + + +New library names +----------------- + +Formerly, the main Mesa library was named libMesaGL.so (or libMesaGL.a) +and the GLU library was named libMesaGLU.so (or libMesaGLU.a). + +Now, the main library is named libGL.so (or libGL.a) and the GLU library +is named libGLU.so (or libGLU.a). + +The change allows Mesa to be more easily substituted for OpenGL. +Specifically, the linker/loader on some Unix-like systems won't +allow libMesaGL.so to be used instead of libGL.so if the application +was linked with the former. + +Warning: if you have another OpenGL implementation installed on your +system (i.e. you have another OpenGL libGL.so) you'll have to be +carefull about which library (OpenGL or Mesa) you link against. Be +aware of -L linker flags and the value of the LD_LIBRARY_PATH environment +variable. + + +New library versioning +---------------------- + +Previously, the Mesa GL library was named libMesaGL.so.3.0 +To better support Linux/OpenGL standards, the Mesa GL library is now +named libGL.so.1.2.030100 This indicates version 1.2 of the OpenGL spec +and Mesa implementation 3.1.0 + +In the long term this will allow better interoperability with other +OpenGL implementations, especially on Linux. In the short term, +OpenGL apps may have to be relinked to use the new library naming. + + + +New makefiles +------------- + +The old Makefiles found in the various directories have been renamed +to Makefile.X11 in order to prevent filename collisions with autoconfig- +generated Makefiles. + +The top-level Makefile simply includes Makefile.X11 +If your top-level Makefile get's overwritten/destroyed you can restore +it by copying Makefile.X11 to Makefile + + +New extensions +-------------- + +GL_EXT_stencil_wrap + Implements two new stencil operations: GL_INCR_WRAP_EXT and + GL_DECR_WRAP_EXT which allow stencil increment and decrement + without clamping. + +GL_INGR_blend_func_separate + Allows specification of blend factors for RGB and Alpha independently. + (INGR = Intergraph) + +GL_ARB_multitexture + Multiple simultaneous textures. (ARB = Architecture Review Board) + +GL_NV_texgen_reflection + nVidia texgen extension for better reflection mapping. + +GL_PGI_misc_hints + Assorted transformation hints. + +GL_EXT_compiled_vertex_array + Compiled vertex arrays. + +GL_EXT_clip_volume_hint + Allows one to disable clip volume (frustum) testing. + + + +Extensions removed +------------------ + +GL_EXT_multitexture - obsolete in favor of GL_ARB_multitexture + + + +Config file +----------- + +By default, /etc/mesa.conf will be read when Mesa starts. This +file controls default hints, enable/disable of extensions, and +more. See the CONFIG file for documentation. + + + +Optimizations +------------- + +Keith Whitwell has contributed significant optimizations to Mesa's +vertex transformation code. Basically, the whole transformation +stage of Mesa has been rewritten. + +It's impossible to give a speedup factor. You'll just have to +try your app and see how it performs. + + + +Device Driver changes +--------------------- + +A bunch of new device driver functions have been added. See src/dd.h +Keith Harrison contributed many of them. I've been planning on adding +a bunch of functions like these to make writing hardware drivers easier. +More such function will probably be added in the near future. + + + +Miscellaneous +------------- + +util/glstate.c has some handy functions for debugging. Basically, it +offers a simple function for printing GL state variables. It's not +finished yet. There's a LOT more GLenum records to be added (see the +code). Anyone want to help? + + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/3.2 b/mesalib/docs/relnotes/3.2 new file mode 100644 index 000000000..ec7d4f8dc --- /dev/null +++ b/mesalib/docs/relnotes/3.2 @@ -0,0 +1,11 @@ + + Mesa 3.2 release notes + + PLEASE READ!!!! + + +Mesa 3.2 is a stabilization of the Mesa 3.1 release. No new features +have been added. For a list of bug fixes please read the VERSIONS file. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/3.2.1 b/mesalib/docs/relnotes/3.2.1 new file mode 100644 index 000000000..d34efcc86 --- /dev/null +++ b/mesalib/docs/relnotes/3.2.1 @@ -0,0 +1,31 @@ + + Mesa 3.2.1 release notes + + PLEASE READ!!!! + + + +The Mesa 3.2.1 release mainly just fixes bugs since the 3.2 release. +See the VERSIONS file for the exact list. + + + +GLU Polygon Tessellator +----------------------- + +The GLU tessellator has been reverted back to the version included +with Mesa 3.0 since it's more stable. The Mesa 3.1/3.2 tessellator +implemented the GLU 1.3 specification but suffered from a number of +bugs. + +Mesa implements GLU 1.1. + +Ideally, people should use the GLU 1.3 library included in SGI's +OpenGL Sample Implementation (SI) available from +http://oss.sgi.com/projects/ogl-sample/ +People are working to make easy-to-install Linux RPMs of the +GLU library. + + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/3.3 b/mesalib/docs/relnotes/3.3 new file mode 100644 index 000000000..3850767bb --- /dev/null +++ b/mesalib/docs/relnotes/3.3 @@ -0,0 +1,270 @@ + + Mesa 3.3 release notes + + July 21, 2000 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 3.3) designate new developmental releases. +Even numbered versions (such as 3.2.1) designate stable releases. + +Mesa 3.3 has a undergone many internal changes since version 3.2 +and features a lot of new extensions. 3.3 is expected to be pretty +stable, but perhaps not as stable as 3.2 which has been used by +thousands of users over the past months. + +Everyone is encouraged to try Mesa 3.3. Bugs should be reported to +the Mesa bug database on www.sourceforge.net. + + + +Header file / GLenum changes +---------------------------- + +The gl.h and glu.h headers now use #defines to define all GL_* tokens +instead of C-language enums. This change improves Mesa/OpenGL +interoperability. + + + +New API dispatch code +--------------------- + +The core Mesa gl* functions are now implemented with a new dispatch +(jump table) which will allow simultaneous direct/indirect rendering. + +The code is found in the glapi*.[ch] files. + +Of interest: the actual "glFooBar" functions are generated with +templatized code defined in glapitemp.h and included by glapi.c +The glapitemp.h template should be reusable for all sorts of OpenGL +projects. + +The new dispatch code has also optimized with x86 assembly code. +This optimization eliminates copying the function arguments during +dispatch. + + + +New thread support +------------------ + +Thread support in Mesa has been rewritten. The glthread.[ch] files +replace mthreads.[ch]. Thread safety is always enabled (on platforms +which support threads, that is). There is virtually no performance +penalty for typical single-thread applications. See the glapi.c +file for details. + +The Xlib driver (XMesa) is now thread-safe as well. Be sure to +call XInitThreads() in your app first. See the xdemos/glthreads.c +demo for an example. + + + +Make configuration changes +-------------------------- + +If you use the old-style (non GNU automake) method to build Mesa note +that several of the configuration names have changed: + + Old name New name + ------------- ---------------- + linux-elf linux + linux linux-static + linux-386-elf linux-386 + linux-386 linux-386-static + etc. + + + +New extensions +-------------- + +GL_ARB_transpose_matrix + Adds glLoadTransposeMatrixARB() and glMultTransposeMatrixARB() + functions. + +GL_ARB_texture_cube_map + For cube-based reflection mapping. + +GL_EXT_texture_add_env + Adds GL_ADD texture environment mode. + See http://www.berkelium.com/OpenGL/EXT/texture_env_add.txt + +GL_EXT_texture_lod_bias + Allows mipmapped texture blurring and sharpening. + +GLX_EXT_visual_rating extension + This extension has no effect in stand-alone Mesa (used for DRI). + +GL_HP_occlusion_test + Used for bounding box occlusion testing (see demos/occlude.c). + +GL_SGIX_pixel_texture / GL_SGIS_pixel_texture + Lets glDraw/CopyPixels draw a texture coordinate image. + +GL_SGI_color_matrix + Adds a color matrix and another set of scale and bias parameters + to the glDraw/CopyPixels paths. + +GL_SGI_color_table + Adds additional color tables to the glDraw/Read/CopyPixels paths. + +GL_EXT_histogram + Compute histograms for glDraw/Read/CopyPixels. + +GL_EXT_blend_func_separate + This is the same as GL_INGR_blend_func_separate. + +GL_ARB_texture_cube_mapping + 6-face cube mapping, nicer than sphere mapping + +GL_EXT_texture_env_combine + For advanced texture environment effects. + + +Documentation for all these functions can be found at +http://oss.sgi.com/projects/ogl-sample/registry/ + + + +GLX_SGI_make_current_read functionality +--------------------------------------- + +The functionality of this extension is needed for GLX 1.3 (and required +for the Linux/OpenGL standards base). + +Implementing this function required a **DEVICE DRIVER CHANGE**. +The old SetBuffer() function has been replaced by SetReadBuffer() and +SetDrawBuffer(). All device drivers will have to be updated because +of this change. + +The new function, glXMakeContextCurrent(), in GLX 1.3 now works in Mesa. +The xdemos/wincopy.c program demonstrates it. + + + +Image-related code changes +-------------------------- + +The imaging path code used by glDrawPixels, glTexImage[123]D, +glTexSubImage[123], etc has been rewritten. It's now faster, +uses less memory and has several bug fixes. This work was +actually started in Mesa 3.1 with the glTexImage paths but has now +been carried over to glDrawPixels as well. + + + +Device driver interface changes +------------------------------- + +Added new functions for hardware stencil buffer support: + WriteStencilSpan + ReadStencilSpan + WriteStencilPixels + ReadStencilPixels + + +Removed old depth buffer functions: + AllocDepthBuffer + DepthTestSpan + DepthTestPixels + ReadDepthSpanFloat + ReadDepthSpanInt + + +Added new depth buffer functions: + WriteDepthSpan + ReadDepthSpan + WriteDepthPixels + ReadDepthPixels + + These functions always read/write 32-bit GLuints. This will allow + drivers to have anywhere from 0 to 32-bit Z buffers without + recompiling for 16 vs 32 bits as was previously needed. + + +New texture image functions + The entire interface for texture image specification has been updated. + With the new functions, it's optional for Mesa to keep an internal copy + of all textures. Texture download should be a lot faster when the extra + copy isn't made. + +Misc changes + TexEnv now takes a target argument + Removed UseGlobalTexturePalette (use Enable function instead) + + +Also added + ReadPixels + CopyPixels + + +The SetBufffer function has been replaced by SetDrawBuffer and +SetReadBuffer functions. This lets core Mesa independently +specify which buffer is to be used for reading and which for +drawing. + +The Clear function's mask parameter has changed. Instead of +mask being the flags specified by the user to glClear, the +mask is now a bitmask of the DD_*_BIT flags in dd.h. Now +multiple color buffers can be specified for clearing (ala +glDrawBuffers). The driver's Clear function must also +check the glColorMask glIndexMask, and glStencilMask settings +and do the right thing. See the X/Mesa, OS/Mesa, or FX/Mesa +drivers for examples. + + +The depth buffer changes shouldn't be hard to make for existing +drivers. In fact, it should simply the code. Be careful with +the depthBits value passed to gl_create_context(). 1 is a bad +value! It should normally be 0, 16, 24, or 32. + + +gl_create_framebuffer() takes new arguments which explicitly tell +core Mesa which ancillary buffers (depth, stencil, accum, alpha) +should be implemented in software. Mesa hardware drivers should +carefully set these flags depending on which buffers are in the +graphics card. + + + +Internal constants +------------------ + +Point and line size range and granularity limits are now stored +in the gl_constants struct, which is the Const member of GLcontext. +The limits are initialized from values in config.h but may be +overridden by device drivers to reflect the limits of that driver's +hardware. + +Also added constants for NumAuxBuffers and SubPixelBits. + + + +OpenGL Conformance +------------------ + +Mesa now passes all the OpenGL 1.1 conformance tests, except for +antialiased lines. AA lines fail on some, but not all, the tests. +In order to fix the remaining failures, a new AA line algorithm will +be needed (which computes coverage values for end-point fragments). +This will be done for Mesa 3.5/3.6. + + + +OpenGL 1.2 GL_ARB_imaging subset +-------------------------------- + +Mesa 3.3 implements all the features of GL_ARB_imaging except for +image convolution. This will (hopefully) be done for Mesa 3.5/3.6. + + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/3.4 b/mesalib/docs/relnotes/3.4 new file mode 100644 index 000000000..657ccdaab --- /dev/null +++ b/mesalib/docs/relnotes/3.4 @@ -0,0 +1,21 @@ + + Mesa 3.4 release notes + + November 3, 2000 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 3.3) designate new developmental releases. +Even numbered versions (such as 3.4) designate stable releases. + +Mesa 3.4 simply fixes bugs found in the Mesa 3.3 release. For details, +see the VERSIONS file. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/3.4.1 b/mesalib/docs/relnotes/3.4.1 new file mode 100644 index 000000000..73d75c64d --- /dev/null +++ b/mesalib/docs/relnotes/3.4.1 @@ -0,0 +1,21 @@ + + Mesa 3.4.1 release notes + + February 9, 2001 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 3.3) designate new developmental releases. +Even numbered versions (such as 3.4) designate stable releases. + +Mesa 3.4.1 is a maintenance release that simply fixes bugs found since +the Mesa 3.4 release. For details, see the VERSIONS file. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/3.4.2 b/mesalib/docs/relnotes/3.4.2 new file mode 100644 index 000000000..9caea900d --- /dev/null +++ b/mesalib/docs/relnotes/3.4.2 @@ -0,0 +1,21 @@ + + Mesa 3.4.2 release notes + + May 17, 2001 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 3.3) designate new developmental releases. +Even numbered versions (such as 3.4) designate stable releases. + +Mesa 3.4.2 is a maintenance release that simply fixes bugs found since +the Mesa 3.4.1 release. For details, see the VERSIONS file. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/3.5 b/mesalib/docs/relnotes/3.5 new file mode 100644 index 000000000..b2aa1b852 --- /dev/null +++ b/mesalib/docs/relnotes/3.5 @@ -0,0 +1,227 @@ + + Mesa 3.5 release notes + + June 21, 2001 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 3.5) designate new developmental releases. +Even numbered versions (such as 3.4) designate stable releases. + +The biggest change in Mesa 3.5 is a complete overhaul of the source +code in order to make it more modular. This was driven by the DRI +hardware drivers. It simplifies the DRI drivers and opens the door +to hardware transform/clip/lighting (TCL). Keith Whitwell can take +the credit for that. + + + +Driver Support +-------------- + +The device driver interface in Mesa 3.5 has changed a lot since Mesa 3.4 +Not all of the older Mesa drivers have been updated. Here's the status: + +Driver Status +---------------------- ----------- +XMesa (Xlib) updated +OSMesa (off-screen) updated +FX (3dfx Voodoo1/2) updated +SVGA updated +GGI not updated +Windows/Win32 not updated +DOS/DJGPP not updated +BeOS not updated +Allegro not updated +D3D not updated +DOS not updated + +We're looking for volunteers to update the remaining drivers. Please +post to the Mesa3d-dev mailing list if you can help. + + + +GLU 1.3 +------- + +Mesa 3.5 includes the SGI Sample Implementation (SI) GLU library. +This version of GLU supports the GLU 1.3 specification. The old +Mesa GLU library implemented the 1.1 specification. The SI GLU +library should work much better. + +You'll need a C++ compiler to compile the SI GLU library. This may +be a problem on some systems. + + + +New Extensions +-------------- + +GL_EXT_convolution + Adds image convolution to glRead/Copy/DrawPixels/TexImage. + +GL_ARB_imaging + This is the optional imaging subset of OpenGL 1.2. + It's the GL_EXT_convolution, GL_HP_convolution_border_modes, + GL_EXT_histogram, GL_EXT_color_table, GL_EXT_color_subtable + GL_EXT_blend_color, GL_EXT_blend_minmax, GL_EXT_blend_subtract + and GL_SGI_color_matrix extensions all rolled together. + This is supported in all software renderers but not in all + hardware drivers (3dfx for example). + +GL_ARB_texture_compression + This is supported in Mesa but only used by the 3dfx DRI drivers + for Voodoo4 and later. + +GL_ARB_texture_env_add + This is identical to GL_EXT_texture_env_add. + +GL_NV_blend_square + Adds extra blend source and dest factors which allow squaring + of color values. + +GL_EXT_fog_coord + Allows specification of a per-vertex fog coordinate instead of + having fog always computed from the eye distance. + +GL_EXT_secondary_color + Allows specifying the secondary (specular) color for each vertex + instead of getting it only from lighting in GL_SEPARATE_SPECULAR_COLOR + mode. + +GL_ARB_texture_env_combine + Basically the same as GL_EXT_texture_env_combine + +GL_ARB_texture_env_add extension + Texture addition mode. + +GL_ARB_texture_env_dot3 extension + Dot product texture environment. + +GL_ARB_texture_border_clamp + Adds GL_CLAMP_TO_BORDER_ARB texture wrap mode + +GL_SGIX_depth_texture, GL_SGIX_shadow and GL_SGIX_shadow_ambient + Implements a shadow casting algorithm based on depth map textures + +GL_SGIS_generate_mipmap + Automatically generate lower mipmap images whenever the base mipmap + image is changed with glTexImage, glCopyTexImage, etc. + + + +libOSMesa.so +------------ + +libOSMesa.so is a new library which contains the OSMesa interface for +off-screen rendering. Apps which need the OSMesa interface should link +with both -lOSMesa and -lGL. This change was made so that stand-alone +Mesa works the same way as XFree86/DRI's libGL. + + + +Device Driver Changes / Core Mesa Changes +----------------------------------------- + +The ctx->Driver.LogicOp() function has been removed. It used to +be called during state update in order to determine if the driver +could do glLogicOp() operations, and if not, set the SWLogicOpEnabled +flag. Drivers should instead examine the LogicOp state themselves +and choose specialized point, line, and triangle functions appropriately, +or fall back to software rendering. The Xlib driver was the only driver +to use this function. And since the Xlib driver no longer draws +points, lines or triangles using Xlib, the LogicOp function isn't needed. + +The ctx->Driver.Dither() function has been removed. Drivers should +detect dither enable/disable via ctx->Driver.Enable() instead. + +The ctx->Driver.IndexMask() and ctx->Driver.ColorMask() functions +are now just called from glIndexMask and glColorMask like the other +GL state-changing functions. They are no longer called from inside +gl_update_state(). Also, they now return void. The change was made +mostly for sake of uniformity. + +The NEW_DRVSTATE[0123] flags have been removed. They weren't being used +and are obsolete w.r.t. the way state updates are done in DRI drivers. + + +Removed obsolete gl_create_visual() and gl_destroy_visual(). + +Renamed functions (new namespace): + +old new +gl_create_framebuffer _mesa_create_framebuffer +gl_destroy_framebuffer _mesa_destroy_framebuffer +gl_create_context _mesa_create_context +gl_destroy_context _mesa_destroy_context +gl_context_initialize _mesa_context_initialize +gl_copy_context _mesa_copy_context +gl_make_current _mesa_make_current +gl_make_current2 _mesa_make_current2 +gl_get_current_context _mesa_get_current_context +gl_flush_vb _mesa_flush_vb +gl_warning _mesa_warning +gl_compile_error _mesa_compile_error + + +All the drivers have been updated, but not all of them have been +tested since I can't test some platforms (DOS, Windows, Allegro, etc). + + +X/Mesa Driver +------------- + +The source files for the X/Mesa driver in src/X have been renamed. +The xmesa[1234].c files are gone. The new files are xm_api.c, +xm_dd.c, xm_line.c, xm_span.c and xm_tri.c. + + + +Multitexture +------------ + +Eight texture units are now supported by default. + + + +OpenGL SI related changes +------------------------- + +In an effort to make Mesa's internal interfaces more like the OpenGL +SI interfaces, a number of changes have been made: + +1. Importing the SI's glcore.h file which defines a number of +interface structures like __GLimports and __GLexports. + +2. Renamed "struct gl_context" to "struct __GLcontextRec". + +3. Added __glCoreCreateContext() and __glCoreNopDispatch() functions. + +4. The GLcontext member Visual is no longer a pointer. + +5. New file: imports.c to setup default import functions for Mesa. + + + + +16-bit color channels +--------------------- + +There's experimental support for 16-bit color channels (64-bit pixels) +in Mesa 3.5. Only the OSMesa interface can be used for 16-bit rendering. +Type "make linux-osmesa16" in the top-level directory to build the +special libOSMesa16.so library. + +This hasn't been tested very thoroughly yet so please file bug reports +if you have trouble. + +In the future I hope to implement support for 32-bit, floating point +color channels. + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/4.0 b/mesalib/docs/relnotes/4.0 new file mode 100644 index 000000000..2f729db15 --- /dev/null +++ b/mesalib/docs/relnotes/4.0 @@ -0,0 +1,162 @@ + + Mesa 4.0 release notes + + October 18, 2001 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 3.3) designate new developmental releases. +Even numbered versions (such as 3.4) designate stable releases. + +Mesa version 4.0 signifies two things: + + 1. A stabilization of the 3.5 development release + 2. Implementation of the OpenGL 1.3 specification + + +Note that the Mesa major version number is incremented with the OpenGL +minor version number: + + Mesa 1.x == OpenGL 1.0 + Mesa 2.x == OpenGL 1.1 + Mesa 3.x == OpenGL 1.2 + Mesa 4.x == OpenGL 1.3 + + + +New Features +------------ + +Mesa 3.5 already had all the new features of OpenGL 1.3, implemented as +extensions. These extensions were simply promoted to standard features: + + 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 + +In Mesa 4.0 the functions defined by these extensions are now available +without the "ARB" suffix. For example, glLoadTransposeMatrixf() is now +a standard API function. The new functions in OpenGL 1.3 and Mesa 4.0 are: + + glActiveTexture + glClientActiveTexture + glCompressedTexImage1D + glCompressedTexImage2D + glCompressedTexImage3D + glCompressedTexSubImage1D + glCompressedTexSubImage2D + glCompressedTexSubImage3D + glGetCompressedTexImage + glLoadTransposeMatrixd + glLoadTransposeMatrixf + glMultiTexCoord1d + glMultiTexCoord1dv + glMultiTexCoord1f + glMultiTexCoord1fv + glMultiTexCoord1i + glMultiTexCoord1iv + glMultiTexCoord1s + glMultiTexCoord1sv + glMultiTexCoord2d + glMultiTexCoord2dv + glMultiTexCoord2f + glMultiTexCoord2fv + glMultiTexCoord2i + glMultiTexCoord2iv + glMultiTexCoord2s + glMultiTexCoord2sv + glMultiTexCoord3d + glMultiTexCoord3dv + glMultiTexCoord3f + glMultiTexCoord3fv + glMultiTexCoord3i + glMultiTexCoord3iv + glMultiTexCoord3s + glMultiTexCoord3sv + glMultiTexCoord4d + glMultiTexCoord4dv + glMultiTexCoord4f + glMultiTexCoord4fv + glMultiTexCoord4i + glMultiTexCoord4iv + glMultiTexCoord4s + glMultiTexCoord4sv + glMultTransposeMatrixd + glMultTransposeMatrixf + glSampleCoverage + glSamplePass + + +GLX 1.4 is the companion to OpenGL 1.3. The only new features in GLX 1.4 +are support for multisampling and the GLX_ARB_get_proc_address extension. +glXGetProcAddress() is the only new function in GLX 1.4. + + + +Multisample and Texture Compression +----------------------------------- + +The OpenGL 1.3 specification allows the multisample and texture compression +features to essentially be no-ops. For example, if you query for multisample +support you'll find none, but the API functions work. + +Similarly, texture compression is not implemented by any of the software +drivers but you can specify a generic compressed texture format (like +GL_COMPRESSED_RGBA) to glTexImage2D and it'll be accepted. + + + +Device Drivers +-------------- + +Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the +device driver. If the driver enables all the ARB extensions which are part +of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise, +it'll return "1.2". + +A number of Mesa's software drivers haven't been actively maintained for +some time. We rely on volunteers to maintain many of the drivers. +Here's the current status of all included drivers: + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.3 +OSMesa (off-screen) implements OpenGL 1.3 +FX (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.3 +GGI needs updating +DOS/DJGPP needs updating +BeOS needs updating +Allegro needs updating +D3D needs updating +DOS needs updating + +Special thanks go to Karl Schultz for updating the Windows driver. + +The XFree86/DRI drivers have not yet been updated to use Mesa 4.0 as of +September 2001, but that should happen eventually. + + + +Other Changes +------------- + +See the VERSIONS file for more details about bug fixes, etc. in Mesa 4.0. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/4.0.1 b/mesalib/docs/relnotes/4.0.1 new file mode 100644 index 000000000..e84df6bf8 --- /dev/null +++ b/mesalib/docs/relnotes/4.0.1 @@ -0,0 +1,21 @@ + + Mesa 4.0.1 release notes + + December 17, 2001 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 3.3) designate new developmental releases. +Even numbered versions (such as 3.4) designate stable releases. + +Mesa 4.0.1 only contains bug fixes since version 4.0. + +See the docs/VERSIONS file for the list of bug fixes. + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/4.0.2 b/mesalib/docs/relnotes/4.0.2 new file mode 100644 index 000000000..b476956ba --- /dev/null +++ b/mesalib/docs/relnotes/4.0.2 @@ -0,0 +1,49 @@ + + Mesa 4.0.2 release notes + + March 25, 2002 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 3.3) designate new developmental releases. +Even numbered versions (such as 3.4) designate stable releases. + +Mesa 4.0.2 only contains bug fixes and a new DOS driver since version 4.0.1. + +See the docs/VERSIONS file for the list of bug fixes. + + +Device Drivers +-------------- + +Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the +device driver. If the driver enables all the ARB extensions which are part +of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise, +it'll return "1.2". + +A number of Mesa's software drivers haven't been actively maintained for +some time. We rely on volunteers to maintain many of the drivers. +Here's the current status of all included drivers: + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.3 +OSMesa (off-screen) implements OpenGL 1.3 +FX (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.3 +DOS/DJGPP implements OpenGL 1.3 (new in Mesa 4.0.2) +GGI needs updating +BeOS needs updating +Allegro needs updating +D3D needs updating + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/4.0.3 b/mesalib/docs/relnotes/4.0.3 new file mode 100644 index 000000000..0b3e34bef --- /dev/null +++ b/mesalib/docs/relnotes/4.0.3 @@ -0,0 +1,51 @@ + + Mesa 4.0.3 release notes + + June 25, 2002 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 3.3) designate new developmental releases. +Even numbered versions (such as 3.4) designate stable releases. + +Mesa 4.0.3 basically just contains bug fixes version 4.0.2. + +See the docs/VERSIONS file for the list of bug fixes. + +The GGI driver has been updated, thanks to Filip Spacek. + + +Device Drivers +-------------- + +Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the +device driver. If the driver enables all the ARB extensions which are part +of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise, +it'll return "1.2". + +A number of Mesa's software drivers haven't been actively maintained for +some time. We rely on volunteers to maintain many of the drivers. +Here's the current status of all included drivers: + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.3 +OSMesa (off-screen) implements OpenGL 1.3 +FX (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.3 +DOS/DJGPP implements OpenGL 1.3 (new in Mesa 4.0.2) +GGI implements OpenGL 1.3 +BeOS needs updating +Allegro needs updating +D3D needs updating + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/4.1 b/mesalib/docs/relnotes/4.1 new file mode 100644 index 000000000..24e9299eb --- /dev/null +++ b/mesalib/docs/relnotes/4.1 @@ -0,0 +1,307 @@ + + Mesa 4.1 release notes + + October 29, 2002 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Even numbered versions (such as 4.0) designate stable releases. +Odd numbered versions (such as 4.1) designate new developmental releases. + + +New Features in Mesa 4.1 +------------------------ + +New extensions. Docs at http://oss.sgi.com/projects/ogl-sample/registry/ + +GL_NV_vertex_program + + NVIDIA's vertex programming extension + +GL_NV_vertex_program1_1 + + A few features built on top of GL_NV_vertex_program + +GL_ARB_window_pos + + This is the ARB-approved version of GL_MESA_window_pos + +GL_ARB_depth_texture + + This is the ARB-approved version of GL_SGIX_depth_texture. + It allows depth (Z buffer) data to be stored in textures. + This is used by GL_ARB_shadow + +GL_ARB_shadow + + Shadow mapping with depth textures. + This is the ARB-approved version of GL_SGIX_shadow. + +GL_ARB_shadow_ambient + + Allows one to specify the luminance of shadowed pixels. + This is the ARB-approved version of GL_SGIX_shadow_ambient. + +GL_EXT_shadow_funcs + + Extends the set of GL_ARB_shadow texture comparision functions to + include all eight of standard OpenGL dept-test functions. + +GL_ARB_point_parameters + + This is basically the same as GL_EXT_point_parameters. + +GL_ARB_texture_env_crossbar + + Allows any texture combine stage to reference any texture source unit. + +GL_NV_point_sprite + + For rendering points as textured quads. Useful for particle effects. + +GL_NV_texture_rectangle (new in 4.0.4 actually) + + Allows one to use textures with sizes that are not powers of two. + Note that mipmapping and several texture wrap modes are not allowed. + +GL_EXT_multi_draw_arrays + + Allows arrays of vertex arrays to be rendered with one call. + +GL_EXT_stencil_two_side + + Separate stencil modes for front and back-facing polygons. + +GLX_SGIX_fbconfig & GLX_SGIX_pbuffer + + Off-screen rendering support. + +GL_ATI_texture_mirror_once + + Adds two new texture wrap modes: GL_MIRROR_CLAMP_ATI and + GL_MIRROR_CLAMP_TO_EDGE_ATI. + + + +Device Driver Status +-------------------- + +A number of Mesa's software drivers haven't been actively maintained for +some time. We rely on volunteers to maintain many of these drivers. +Here's the current status of all included drivers: + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.3 +OSMesa (off-screen) implements OpenGL 1.3 +FX (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.3 +DOS/DJGPP implements OpenGL 1.3 +GGI implements OpenGL 1.3 +BeOS needs updating (underway) +Allegro needs updating +D3D needs updating +DOS needs updating + + + +New features in GLUT +-------------------- + +1. Frames per second printing + + GLUT now looks for an environment variable called "GLUT_FPS". If it's + set, GLUT will print out a frames/second statistic to stderr when + glutSwapBuffers() is called. By default, frames/second is computed + and displayed once every 5 seconds. You can specify a different + interval (in milliseconds) when you set the env var. For example + 'export GLUT_FPS=1000' or 'setenv GLUT_FPS 1000' will set the interval + to one second. + + NOTE: the demo or application must call the glutInit() function for + this to work. Otherwise, the env var will be ignored. + + Finally, this feature may not be reliable in multi-window programs. + + +2. glutGetProcAddress() function + + The new function: + + void *glutGetProcAddress(const char *procName) + + is a wrapper for glXGetProcAddressARB() and wglGetProcAddress(). It + lets you dynamically get the address of an OpenGL function at runtime. + The GLUT_API_VERSION has been bumped to 5, but I haven't bumped the + GLUT version number from 3.7 since that's probably Mark Kilgard's role. + + This function should probably also be able to return the address of + GLUT functions themselves, but it doesn't do that yet. + + + +XXX Things To Do Yet XXXX +------------------------- + +isosurf with vertex program exhibits some missing triangles (probably +when recycling the vertex buffer for long prims). + + + +Porting Info +------------ + +If you're porting a DRI or other driver from Mesa 4.0.x to Mesa 4.1 here +are some things to change: + +1. ctx->Texture._ReallyEnabled is obsolete. + + Since there are now 5 texture targets (1D, 2D, 3D, cube and rect) that + left room for only 6 units (6*5 < 32) in this field. + This field is being replaced by ctx->Texture._EnabledUnits which has one + bit per texture unit. If the bit k of _EnabledUnits is set, that means + ctx->Texture.Unit[k]._ReallyEnabled is non-zero. You'll have to look at + ctx->Texture.Unit[k]._ReallyEnabled to learn if the 1D, 2D, 3D, cube or + rect texture is enabled for unit k. + + This also means that the constants TEXTURE1_*, TEXTURE2_*, etc are + obsolete. + + The tokens TEXTURE0_* have been replaced as well (since there's no + significance to the "0" part: + + old token new token + TEXTURE0_1D TEXTURE_1D_BIT + TEXTURE0_2D TEXTURE_2D_BIT + TEXTURE0_3D TEXTURE_3D_BIT + TEXTURE0_CUBE TEXTURE_CUBE_BIT + TEXTURE_RECT_BIT + + These tokens are only used for the ctx->Texture.Unit[i].Enabled and + ctx->Texture.Unit[i]._ReallyEnabled fields. Exactly 0 or 1 bits will + be set in _ReallyEnabled at any time! + + Q: "What's the purpose of Unit[i].Enabled vs Unit[i]._ReallyEnabled?" + A: The user can enable GL_TEXTURE_1D, GL_TEXTURE_2D, etc for any + texure unit all at once (an unusual thing to do). + OpenGL defines priorities that basically say GL_TEXTURE_2D has + higher priority than GL_TEXTURE_1D, etc. Also, just because a + texture target is enabled by the user doesn't mean we'll actually + use that texture! If a texture object is incomplete (missing mip- + map levels, etc) it's as if texturing is disabled for that target. + The _ReallyEnabled field will have a bit set ONLY if the texture + target is enabled and complete. This spares the driver writer from + examining a _lot_ of GL state to determine which texture target is + to be used. + + +2. Tnl tokens changes + + During the implementation of GL_NV_vertex_program some of the vertex + buffer code was changed. Specifically, the VERT_* bits defined in + tnl/t_context.h have been renamed to better match the conventions of + GL_NV_vertex_program. The old names are still present but obsolete. + Drivers should use the newer names. + + For example: VERT_RGBA is now VERT_BIT_COLOR0 and + VERT_SPEC_RGB is now VERT_BIT_COLOR1. + + + +3. Read/Draw Buffer changes + + The business of setting the current read/draw buffers in Mesa 4.0.x + was complicated. It's much simpler now in Mesa 4.1. + + Here are the changes: + + - Renamed ctx->Color.DrawDestMask to ctx->Color._DrawDestMask + - Removed ctx->Color.DriverDrawBuffer + - Removed ctx->Pixel.DriverReadBuffer + - Removed ctx->Color.MultiDrawBuffer + - Removed ctx->Driver.SetDrawBuffer() + - Removed swrast->Driver.SetReadBuffer(). + - Added ctx->Color._DrawDestMask - a bitmask of FRONT/BACK_LEFT/RIGHT_BIT + values to indicate the current draw buffers. + - Added ctx->Pixel._ReadSrcMask to indicate the source for pixel reading. + The value is _one_ of the FRONT/BACK_LEFT/RIGHT_BIT values. + - Added ctx->Driver.DrawBuffer() and ctx->Driver.ReadBuffer(). + These functions exactly correspond to glDrawBuffer and glReadBuffer calls. + Many drivers will set ctx->Driver.DrawBuffer = _swrast_DrawBuffer and + leave ctx->Draw.ReadBuffer NULL. + DRI drivers should implement their own function for ctx->Driver.DrawBuffer + and use it to set the current hardware drawing buffer. You'll probably + also want to check for GL_FRONT_AND_BACK mode and fall back to software. + Call _swrast_DrawBuffer() too, to update the swrast state. + - Added swrast->Driver.SetBuffer(). + This function should be implemented by all device drivers that use swrast. + Mesa will call it to specify the buffer to use for span reading AND + writing and point/line/triangle rendering. + There should be no confusion between current read or draw buffer anymore. + - Added swrast->CurrentBuffer to indicate which color buffer to read/draw. + Will be FRONT_LEFT_BIT, BACK_LEFT_BIT, FRONT_RIGHT_BIT or BACK_RIGHT_BIT. + This value is usually passed to swrast->Driver.SetBuffer(). + + +4. _mesa_create_context() changes. This function now takes a pointer to + a __GLimports object. The __GLimports structure contains function + pointers to system functions like fprintf(), malloc(), etc. + The _mesa_init_default_imports() function can be used to initialize + a __GLimports object. Most device drivers (like the DRI drivers) + should use this. + + +5. In tnl's struct vertex_buffer, the field "ProjectedClipCoords" + has been replaced by "NdcPtr" to better match the OpenGL spec's + terminology. + + +6. Since GL_EXT_stencil_two_side has been implemented, many of the + ctx->Stencil fields are now 2-element arrays. For example, + "GLenum Ref" is now "GLenum Ref[2]" The [0] elements are the front-face + values and the [1] elements are the back-face values. + ctx->Stencil.ActiveFace is 0 or 1 to indicate the current face for + the glStencilOp/Func/Mask() functions. + ctx->Stencil.TestTwoSide controls whether or not 1 or 2-sided stenciling + is enabled. + + +7. Removed ctx->Polygon._OffsetAny. Removed ctx->Polygon.OffsetMRD. + + +8. GLfloat / GLchan changes: + + - Changed ctx->Driver.ClearColor() to take GLfloat[4] instead of GLchan[4]. + ctx->Color.ClearColor is now GLfloat[4] too. + - Changed ctx->Driver.AlphaRef() to take GLfloat instead of GLchan. + - ctx->Color.AlphaRef is now GLfloat. + - texObj->BorderColor is now GLfloat[4]. texObj->_BorderChan is GLchan[4]. + + This is part of an effort to remove all GLchan types from core Mesa so + that someday we can support 8, 16 and 32-bit color channels dynamically + at runtime, instead of at compile-time. + + +9. GLboolean ctx->Tranform.ClipEnabled[MAX_CLIP_PLANES] has been replaced + by GLuint ctx->Transform.ClipPlanesEnabled. The later is a bitfield. + + +10. There's a new matrix_stack type in mtypes.h used for the Modelview, + Projection, Color and Texcoord matrix stacks. + + +11. The ctx->Current.* fields have changed a lot. Now, there's a + ctx->Current.Attrib[] array for all vertex attributes which matches + the NV vertex program conventions. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/5.0 b/mesalib/docs/relnotes/5.0 new file mode 100644 index 000000000..1b22996d8 --- /dev/null +++ b/mesalib/docs/relnotes/5.0 @@ -0,0 +1,84 @@ + + Mesa 5.0 release notes + + November 13, 2002 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Even-numbered versions (such as 5.0) designate stable releases. +Odd-numbered versions (such as 4.1) designate new developmental releases. + +Mesa 5.0 is basically just a stabilization of Mesa 4.1. To see a list of +bug fixes, etc. see the VERSIONS file. + + + +New Features in Mesa 5.0 +------------------------ + +Mesa 5.0 supports OpenGL 1.4. Note Mesa's versioning convention: + + OpenGL Version Mesa Version + ------------------------------ + 1.0 1.x + 1.1 2.x + 1.2 3.x + 1.3 4.x + 1.4 5.x + +OpenGL 1.4 (and Mesa 5.0) incorporates the following OpenGL extensions as +standard features: + + GL_ARB_depth_texture + GL_ARB_shadow + GL_ARB_texture_env_crossbar + GL_ARB_texture_mirror_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_point_parameters + GL_EXT_secondary_color + GL_EXT_stencil_wrap + GL_SGIS_generate_mipmap + + + +Device Driver Status +-------------------- + +A number of Mesa's software drivers haven't been actively maintained for +some time. We rely on volunteers to maintain many of these drivers. +Here's the current status of all included drivers: + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.4 +OSMesa (off-screen) implements OpenGL 1.4 +FX (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.4 +DOS/DJGPP implements OpenGL 1.3 +GGI implements OpenGL 1.3 +DOS implements OpenGL 1.4 +BeOS needs updating (underway) +Allegro needs updating +D3D needs updating + +Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the +driver call the _mesa_enable_1_4_extensions() function. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/5.0.1 b/mesalib/docs/relnotes/5.0.1 new file mode 100644 index 000000000..f37e9c4a7 --- /dev/null +++ b/mesalib/docs/relnotes/5.0.1 @@ -0,0 +1,45 @@ + + Mesa 5.0.1 release notes + + March 30, 2003 + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Even-numbered versions (such as 5.0.x) designate stable releases. +Odd-numbered versions (such as 4.1.x) designate new developmental releases. + +Mesa 5.0.1 just fixes bugs found since the 5.0 release. See the VERSIONS +file for details. + + +Device Driver Status +-------------------- + +A number of Mesa's software drivers haven't been actively maintained for +some time. We rely on volunteers to maintain many of these drivers. +Here's the current status of all included drivers: + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.4 +OSMesa (off-screen) implements OpenGL 1.4 +FX (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.4 +DJGPP implements OpenGL 1.4 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.4 +Allegro needs updating +D3D needs updating + +Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the +driver call the _mesa_enable_1_4_extensions() function. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/5.0.2 b/mesalib/docs/relnotes/5.0.2 new file mode 100644 index 000000000..d0e05b2c7 --- /dev/null +++ b/mesalib/docs/relnotes/5.0.2 @@ -0,0 +1,45 @@ + + Mesa 5.0.2 release notes + + September 5, 2003 + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Even-numbered versions (such as 5.0.x) designate stable releases. +Odd-numbered versions (such as 4.1.x) designate new developmental releases. + +Mesa 5.0.2 just fixes bugs found since the 5.0.1 release. See the VERSIONS +file for details. + + +Device Driver Status +-------------------- + +A number of Mesa's software drivers haven't been actively maintained for +some time. We rely on volunteers to maintain many of these drivers. +Here's the current status of all included drivers: + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.4 +OSMesa (off-screen) implements OpenGL 1.4 +FX (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.4 +DJGPP implements OpenGL 1.4 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.4 +Allegro needs updating +D3D needs updating + +Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the +driver call the _mesa_enable_1_4_extensions() function. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/5.1 b/mesalib/docs/relnotes/5.1 new file mode 100644 index 000000000..59b7964a0 --- /dev/null +++ b/mesalib/docs/relnotes/5.1 @@ -0,0 +1,279 @@ + + Mesa 5.1 release notes + + December 17, 2003 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Even-numbered versions (such as 5.0) designate stable releases. +Odd-numbered versions (such as 5.1) designate new developmental releases. + + +Bug fixes +--------- +See the VERSIONS file for a list of bugs fixed in this release. + + + +New Features in Mesa 5.1 +------------------------ + +GL_ARB_vertex_program / GL_ARB_fragment_program + Michal Krol and Karl Rasche implemented these extensions. Thanks! + Be aware that there may be some rough edges and lurking bugs. + +GL_ATI_texture_env_combine3 extension + This adds a few new texture combine modes. + Contributed by Ian Romanick. + +GL_SGI_texture_color_table + Adds a color table lookup to the RGBA texture path. There's a separate + color table for each texture unit. + Contributed by Eric Plante. + +GL_NV_fragment_program + NVIDIA's fragment-level programming feature. + Possible lurking bugs: + - the DDX and DDY commands aren't fully tested + - there may be bugs in the parser + - the TEX and TXP instructions both do perspective correction + - the pack/unpack instructions may not be correct + +GL_EXT_depth_bounds_test + This extension adds a scissor-like test for the Z axis. It's used to + optimize stencil-volume shadow algorithms. + +GL_NV_light_max_exponent + Lifts the 128 limit for max light exponent. + +GL_EXT_texture_rectangle + Identical to GL_NV_texture_rectangle + +GL_ARB_occlusion_query + Useful for visibility-based culling. + +GL_ARB_texture_non_power_of_two + Removes the restriction that texture dimensions must be powers of two. + +GL_ARB_vertex_buffer_object + Allows server-side vertex arrays, optimized host/card data transfers, etc. + +GL_ARB_point_sprite + ARB-approved version of GL_NV_point_sprite. Basically allows textures + to be applied to points. + +GL_IBM_multimode_draw_arrays + Allows multiple vertex arrays to be drawn with one call, including arrays + of different types of primitives. + +GL_SUN_multi_draw_arrays + An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4. + +Faster glDrawPixels / glCopyPixels in X11 driver + If your X screen is 32bpp, glDrawPixels to the front color buffer will + be accelerated (via XPutImage()) if the image format is GL_BGRA and the + type is GL_UNSIGNED_BYTE. No raster operations, such as depth test, + blend, fog, etc. can be enabled. + + If your X screen is 16bpp, glDrawPixels to the front color buffer will + be accelerated (via XPutImage()) if the image format is GL_RGB and the + type is GL_UNSIGNED_SHORT_5_6_5. No raster operations, such as depth + test, blend, fog, etc. can be enabled. + + glCopyPixels() calls for the front color buffer will be accelerated + (via XCopyArea()) if no raster operations, such as depth test, blend, + fog, pixel zoom, etc. are enabled. + + The speed-up over typical software rendering is a factor of 10 for + glDrawPixels and 100 for glCopyPixels. + + +With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object, +GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports +all the new features of OpenGL 1.5. Mesa 6.0 (the next stable release) +will advertise GL_VERSION = "1.5". + + + +Vertex/Fragment program debugger +-------------------------------- + +GL_MESA_program_debug is an experimental extension to support +interactive debugging of vertex and fragment programs. See the +docs/specs/OLD/MESA_program_debug.spec file for details. + +The bulk of the vertex/fragment program debugger is implemented +outside of Mesa. The GL_MESA_program_debug extension just has minimal +hooks for stopping running programs and inspecting programs. + +The progs/tests/debugger.c (only in CVS) program is an example of how +the extension can be used. Presently, the debugger code and demo code +is in the same file. Eventually the debugger code should be moved +into a reusable module. + +As it is now, the demo lets you set breakpoings in vertex/fragment +programs, single step, and print intermediate register values. It's +basically just a proof of concept. + + + +Directory tree reorganization +----------------------------- + +The directory structure for Mesa has been overhauled to improve its layout. +All source code for Mesa, GLU, GLUT, etc is now under the src/ directory +in appropriate subdirectories. + +The Mesa source code and drivers has been reorganized under src/mesa/. + +All demonstration programs and tests are now in subdirectories under progs/. + + + +Build System Changes +-------------------- + +The GNU automake/autoconf support has been removed. As it was, it seldom +worked on anything but Linux. The Mesa developers aren't big fans of +automake/autoconf/libtool and didn't have the time to maintain it. +If someone wants to contribute new automake/autoconf support (and is +willing to maintain it), it may be re-incorporated into Mesa, subject +to some requirements. + +The "old style" makefile system has been updated: + 1. Make-config has been trimmed down to fewer, modern configurations. + 2. Most of the bin/mklib.* scripts have been rolled into a new "mklib" + script that works on all sorts of systems. There are probably some + bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5. + Improvements/contributes are greatly appreciated. + 3. The Makefile.X11 files have been cleaned up in various ways + + + +Source File Changes +------------------- + +The mmath.[ch] files are obsolete. Their contents have been moved +into the imports.[ch] and macros.[ch] files. + +The files related to vertex and fragment programming have changed. +Old files: + vpexec.[ch] + vpparse.[ch] + vpstate.[ch] +New files: + program.[ch] - generic ARB/NV program code + arbprogram.[ch] - ARB program API functions + arbfragparse.[ch] - ARB fragment program parsing + arbvertparse.[ch] - ARB vertex program parsing + arbparse.[ch] - ARB vertex/fragment parsing + arbparse_syn.h - vertex/fragment program syntax + nvprogram.[ch] - NV program API functions + nvvertprog.h - NV vertex program definitions + nvfragprog.h - NV fragment program definitions + nvvertparse.[ch] - NV vertex program parser + nvfragparse.[ch] - NV fragment program parser + nvvertexec.[ch] - NV vertex program execution + swrast/s_nvfragprog.[ch] - NV fragment program execution + +The files related to per-vertex handling have changed. +Old files: + tnl/t_eval_api.c - old per-vertex code + tnl/t_imm_alloc.c - old per-vertex code + tnl/t_imm_api.c - old per-vertex code + tnl/t_imm_debug.c - old per-vertex code + tnl/t_imm_dlist.c - old per-vertex code + tnl/t_imm_elt.c - old per-vertex code + tnl/t_imm_eval.c - old per-vertex code + tnl/t_imm_exec.c - old per-vertex code + tnl/t_imm_fixup.c - old per-vertex code + tnl/t_vtx_sse.c - old per-vertex code + tnl/t_vtx_x86.c - old per-vertex code +New files: + tnl/t_save_api.c - new per-vertex code + tnl/t_save_loopback.c - new per-vertex code + tnl/t_save_playback.c - new per-vertex code + tnl/t_vtx_eval.c - old per-vertex code + +Other new files: + bufferobj.[ch] - GL_ARB_vertex_buffer_object functions + version.h - defines the Mesa version info + +Other removed files: + swrast/s_histogram.[ch] - moved into src/histogram.c + + + +Other Changes +------------- + +The ctx->Driver.CreateTexture function has been removed - it wasn't used. + +New device driver hook functions: + NewTextureObject - used to allocate struct gl_texture_objects + NewTextureImage - used to allocate struct gl_texture_images + +New ctx->Texture._EnabledCoordUnits field: + With the addition of GL_NV_fragment_program we may need to interpolate + various sets of texture coordinates even when the corresponding texture + unit is not enabled. That is, glEnable(GL_TEXTURE_xD) may never get + called but we still may have to interpolate texture coordinates across + triangles so that the fragment program will get them. + This new field indicates which sets of texture coordinates are needed. + If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the + same bit MUST be set in ctx->Texture._EnabledCoordUnits. + +The ctx->_TriangleCaps field is deprecated. + Instead of testing the DD_* bits in _TriangleCaps, you should instead + directly test the relevant state variables, or use one of the helper + functions like NEED_SECONDARY_COLOR() at the bottom of context.h + While testing _TriangleCaps bits was fast, it was kludgey, and setting + the bits in the first place could be error prone. + +New vertex processing code. + The code behind glBegin, glEnd, glVertex, glNormal, etc. has been + totally rewritten. It's a cleaner implementation now and should use + less memory. (Keith) + + + +To Do +----- +Add screen-awareness to fakeglx.c + + + + +Device Driver Status +-------------------- + +A number of Mesa's software drivers haven't been actively maintained for +some time. We rely on volunteers to maintain many of these drivers. +Here's the current status of all included drivers: + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.4 +OSMesa (off-screen) implements OpenGL 1.4 +FX (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.4 +DJGPP implements OpenGL 1.4 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.4 +Allegro needs updating +D3D needs updating + +Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the +driver call the _mesa_enable_1_4_extensions() function. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/6.0 b/mesalib/docs/relnotes/6.0 new file mode 100644 index 000000000..1a3c2fb1a --- /dev/null +++ b/mesalib/docs/relnotes/6.0 @@ -0,0 +1,86 @@ + + Mesa 6.0 release notes + + January 16, 2004 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 5.1) designate new developmental releases. +Even numbered versions (such as 6.0) designate stable releases. + +Mesa version 6.0 signifies two things: + + 1. A stabilization of the 5.1 development release + 2. Implementation of the OpenGL 1.5 specification. When you query + glGetString(GL_VERSION) "1.5" will be returned (as long as the + driver supports all the required features). + + +Note that the Mesa major version number is incremented with the OpenGL +minor version number: + + Mesa 1.x == OpenGL 1.0 + Mesa 2.x == OpenGL 1.1 + Mesa 3.x == OpenGL 1.2 + Mesa 4.x == OpenGL 1.3 + Mesa 5.x == OpenGL 1.4 + Mesa 6.x == OpenGL 1.5 + + + +New Features +------------ + +Mesa 5.1 already had all the new features of OpenGL 1.5, implemented as +extensions. These extensions were simply promoted to standard features: + + GL_ARB_occlusion_query extension + GL_ARB_texture_non_power_of_two extension + GL_ARB_vertex_buffer_object extension + GL_EXT_shadow_funcs + + + +Device Drivers +-------------- + +Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on +the device driver. For example, if the driver enables all the ARB +extensions which are part of OpenGL 1.3 then glGetString(GL_VERSION) +will return "1.3". Otherwise, it'll return "1.2". + +A number of Mesa's software drivers haven't been actively maintained for +some time. We rely on volunteers to maintain many of the drivers. +Here's the current status of all included drivers: + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.5 +OSMesa (off-screen) implements OpenGL 1.5 +FX (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.5 +DJGPP implements OpenGL 1.5 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.5 +Allegro needs updating +D3D needs updating + + + + +Other Changes +------------- + +See the VERSIONS file for more details about bug fixes, etc. in Mesa 6.0. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/6.0.1 b/mesalib/docs/relnotes/6.0.1 new file mode 100644 index 000000000..1444b9fc8 --- /dev/null +++ b/mesalib/docs/relnotes/6.0.1 @@ -0,0 +1,49 @@ + + Mesa 6.0.1 release notes + + April 2, 2003 + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Even-numbered versions (such as 6.0.x) designate stable releases. +Odd-numbered versions (such as 6.1.x) designate new developmental releases. + +Mesa 6.0.1 just fixes bugs found since the 6.0 release. See the VERSIONS +file for details. + + + +Device Drivers +-------------- + +Mesa advertises itself as supporting OpenGL 1.2, 1.3, 1.4 or 1.5 +depending on the device driver's capabilities. For example, if the +driver enables all the ARB extensions which are part of OpenGL 1.5 +then glGetString(GL_VERSION) will return "1.5". Otherwise, it'll +return "1.4" or the next lower version that implements all required +functionality. + +A number of Mesa's software drivers haven't been actively maintained for +some time. We rely on volunteers to maintain many of the drivers. +Here's the current status of all included drivers: + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.5 +OSMesa (off-screen) implements OpenGL 1.5 +FX (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.5 +DJGPP implements OpenGL 1.5 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.5 +Allegro needs updating +D3D needs updating + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/6.1 b/mesalib/docs/relnotes/6.1 new file mode 100644 index 000000000..8de64d1f1 --- /dev/null +++ b/mesalib/docs/relnotes/6.1 @@ -0,0 +1,111 @@ + + Mesa 6.1 release notes + + August 18, 2004 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 6.1) designate new developmental releases. +Even numbered versions (such as 6.0) designate stable releases. + + +New Features +------------ + +Half-precision floating point (GLhalf) pixel formats are supported +in Mesa, but the feature isn't exposed yet since the ARB extension +hasn't been finalized yet. + + +Texture image handling +---------------------- + +The code which implements image conversion, pixel transfer ops, etc +for glTexImage commands has been rewritten. + +Now the gl_texture_format struct has a new StoreImage function +pointer. Each texture format must implement this function. The +function is totally responsible for converting the user's texture +image into the specific format. A few helper functions makes this +relatively simple. + +Overall, the code is much simpler, cleaner and easier to work with +now. Adding new texture formats is straight-forward and there's no +longer any distinction between "hardware" and "software" formats. + +Finally, the code for compressed texture images has been reorganized +as well. + +Removed files: + texutil.c + texutil.h + texutil_tmp.h + +New files: + texcompress_s3tc.c + texcompress_fxt1.c + + + +Driver / context changes +------------------------ + +The _mesa_create_context() and _mesa_initialize_context() function +parameters have changed. They now take a pointer to a struct +dd_function_table. Drivers can initialize this table by calling +_mesa_init_driver_functions(). Drivers should then plug in the special +functions they implement. In particular, the ctx->Driver.NewTextureObject +pointer _must_ be set so that the default texture objects created in +_mesa_create/initialize_context() are correctly built. + +The _mesa_init_driver_functions() function allows a lot of redundant code +to be removed from the device drivers (such as initializing +ctx->Driver.Accum to point to _swrast_Accum). Adding new functions to +the dd_function_table can be done with less hassle since the pointer can +be initialized in _mesa_init_driver_functions() rather than in _all_ the +drivers. + + +Device Drivers +-------------- + +Mesa advertises itself as supporting OpenGL 1.2, 1.3, 1.4 or 1.5 +depending on the device driver's capabilities. For example, if the +driver enables all the ARB extensions which are part of OpenGL 1.5 +then glGetString(GL_VERSION) will return "1.5". Otherwise, it'll +return "1.4" or the next lower version that implements all required +functionality. + +A number of Mesa's software drivers haven't been actively maintained for +some time. We rely on volunteers to maintain many of the drivers. +Here's the current status of all included drivers: + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.5 +OSMesa (off-screen) implements OpenGL 1.5 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.5 +DJGPP implements OpenGL 1.5 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.5 +Allegro needs updating +D3D needs updating + + + +Other Changes +------------- + +See the VERSIONS file for more details about bug fixes, etc. in Mesa 6.1. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/6.2 b/mesalib/docs/relnotes/6.2 new file mode 100644 index 000000000..06cfba0c7 --- /dev/null +++ b/mesalib/docs/relnotes/6.2 @@ -0,0 +1,51 @@ + + Mesa 6.2 release notes + + October 2, 2004 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 6.1) designate new developmental releases. +Even numbered versions (such as 6.2) designate stable releases. + + +This release primarily just fixes bugs found in the Mesa 6.1 release. +See the VERSIONS file for details. + + +ToDo: PBO for polygon stipple, convolution filter, etc. + + + +Known Issues +------------ + +The GL_EXT_pixel_buffer_object extension isn't fully implemented for +functions like glPolygonStipple, glConvolutionFilter, glColorTable, +etc. The important functions like glRead/DrawPixels, glTex[Sub]Image, +and glBitmap work with PBOs. + + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.5 +OSMesa (off-screen) implements OpenGL 1.5 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.5 +DJGPP implements OpenGL 1.5 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.5 +Allegro needs updating +D3D needs updating + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/6.2.1 b/mesalib/docs/relnotes/6.2.1 new file mode 100644 index 000000000..c7baa5d42 --- /dev/null +++ b/mesalib/docs/relnotes/6.2.1 @@ -0,0 +1,49 @@ + + Mesa 6.2.1 release notes + + December 9, 2004 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 6.1) designate new developmental releases. +Even numbered versions (such as 6.2.x) designate stable releases. + + +This release primarily just fixes bugs found in the Mesa 6.2 release. +See the VERSIONS file for details. + + + +Known Issues +------------ + +The GL_EXT_pixel_buffer_object extension isn't fully implemented for +functions like glPolygonStipple, glConvolutionFilter, glColorTable, +etc. The important functions like glRead/DrawPixels, glTex[Sub]Image, +and glBitmap work with PBOs. This has been fixed for Mesa 6.3. + + + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.5 +OSMesa (off-screen) implements OpenGL 1.5 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.5 +DJGPP implements OpenGL 1.5 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.5 +Allegro needs updating +D3D needs updating + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/6.3 b/mesalib/docs/relnotes/6.3 new file mode 100644 index 000000000..6b4dfaaf9 --- /dev/null +++ b/mesalib/docs/relnotes/6.3 @@ -0,0 +1,114 @@ + + Mesa 6.3 release notes + + July 20, 2005 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 6.3) designate new developmental releases. +Even numbered versions (such as 6.2) designate stable releases. + + + +New Features +------------ + +GL_ARB_draw_buffers - allows a fragment program to write to a number of + separate color buffers, instead of just one. + +GL_OES_read_format - allows one to query the fastest glReadPixels format + and datatype. + +GL_ARB_pixel_buffer_object - buffer objects for pixel read/write functions. + +GL_EXT_framebuffer_object - allows render-to-texture and provides a + window-system indepedent Pbuffer facility. + The Mesa CVS tree contains a couple tests of this extension. + +DirectFB driver, contributed by Claudio Ciccani. See docs/README.directfb +for details. + + + +Vertex/Fragment Program PRINT Instruction +----------------------------------------- + +The GL_NV_vertex_program and GL_NV_fragment_program languages have been +extended with a PRINT instruction. + + + +glDeleteTextures(), glDeletePrograms() and glDeleteBuffers() Changed +-------------------------------------------------------------------- + +To match the behaviour of other OpenGL implementations, glDeleteTextures, +glDeletePrograms and glDeleteBuffers have been modified so that: + + * The named texture/program/buffer ID is immediately freed for re-use. + + * The actual texture object, program or buffers isn't really deleted until + it is no longer bound in any rendering context (the reference count + is zero). + +Previously, the texture/program/buffer ID wasn't freed until the object +was really deleted. + +Note that textures, programs and buffers can be shared by several rendering +contexts so they can't be deleted until they're unbound in _all_ contexts. + + + +GL_EXT_framebuffer_object changes +--------------------------------- + +Implementing this extension involved changing a lot of code (for the better). + +The gl_framebuffer object now a collection of gl_renderbuffer objects. +Renderbuffers may store colors, stencil indices, or depth values. The +gl_framebuffer and gl_renderbuffer types are object-oriented in design. + +All the old RGB, color index, stencil and depth-related span functions for +reading/writing pixels from/to buffers has changed. Now, all pixels are +read/written through a set of common renderbuffer functions (methods). + +Most device drivers have been updated for these changes, but some haven't. + + + +To Do (someday) items +--------------------- + Switch to freeglut + Increase MAX_DRAWBUFFERS + driver hooks for BeginQuery/EndQuery + + + +Miscellaneous +------------- + +The main/get.c file is now generated with a Python script (get_gen.py). + + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.5 +OSMesa (off-screen) implements OpenGL 1.5 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.5 +DJGPP implements OpenGL 1.5 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.5 +Allegro needs updating +D3D needs updating + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/6.3.1 b/mesalib/docs/relnotes/6.3.1 new file mode 100644 index 000000000..eacc952ae --- /dev/null +++ b/mesalib/docs/relnotes/6.3.1 @@ -0,0 +1,48 @@ + + Mesa 6.3.1 release notes + + July XX, 2005 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 6.3) designate new developmental releases. +Even numbered versions (such as 6.2) designate stable releases. + + + +DRI drivers +----------- + +This release includes the DRI drivers and GLX code for hardware rendering. + + + +Bug fixes +--------- + +Bugs fixed in 6.3.1 are listed in the VERSIONS file. + + + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.5 +OSMesa (off-screen) implements OpenGL 1.5 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.5 +DJGPP implements OpenGL 1.5 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.5 +Allegro needs updating +D3D needs updating + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/6.3.2 b/mesalib/docs/relnotes/6.3.2 new file mode 100644 index 000000000..e5243ef78 --- /dev/null +++ b/mesalib/docs/relnotes/6.3.2 @@ -0,0 +1,36 @@ + + Mesa 6.3.2 Release Notes + + August 19, 2005 + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 6.3) designate new developmental releases. +Even numbered versions (such as 6.2) designate stable releases. + + +6.3.2 is primarily a bug-fix release. See the VERSIONS file for details. + + + +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa (Xlib) implements OpenGL 1.5 +OSMesa (off-screen) implements OpenGL 1.5 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.5 +DJGPP implements OpenGL 1.5 +GGI implements OpenGL 1.3 +BeOS implements OpenGL 1.5 +Allegro needs updating +D3D needs updating + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/6.4 b/mesalib/docs/relnotes/6.4 new file mode 100644 index 000000000..1a945a103 --- /dev/null +++ b/mesalib/docs/relnotes/6.4 @@ -0,0 +1,49 @@ + + Mesa 6.4 Release Notes + + October 24, 2005 + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 6.3) designate new developmental releases. +Even numbered versions (such as 6.4) designate stable releases. + + +6.4 is a bug-fix release. See the VERSIONS file for details. + + + +GLUT tarball +------------ + +Starting with 6.4, the GLUT library sources are distributed in a separate +tarball. This was done at the request of Linux distro vendors who prefer +to use freeglut. + + + + +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa (Xlib) implements OpenGL 1.5 +OSMesa (off-screen) implements OpenGL 1.5 +Windows/Win32 implements OpenGL 1.5 +Glide (3dfx Voodoo1/2) requires updates +SVGA requires updates +DJGPP requires updates +GGI requires updates +BeOS requires updates +Allegro requires updates +D3D requires updates + +The drivers which require updates mostly need to be updated to work +with the new gl_renderbuffer / gl_framebuffer infrastructure introduced +in Mesa 6.3. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/relnotes/6.4.1.html b/mesalib/docs/relnotes/6.4.1.html new file mode 100644 index 000000000..c9df78786 --- /dev/null +++ b/mesalib/docs/relnotes/6.4.1.html @@ -0,0 +1,75 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 6.4.1 / November 29, 2006

    + +

    +Mesa 6.4.1 is a stable, bug-fix release. +

    + + +

    MD5 checksums

    +
    +698ceb574cf882b0226761f5913c0da9  MesaLib-6.4.1.tar.gz
    +ea148c828ec6f645526451db1b8556f1  MesaLib-6.4.1.tar.bz2
    +42e93279468975ed2bf3111b8721e5d9  MesaLib-6.4.1.zip
    +e3b0d50807fd2bdcd1a95aaddd786f13  MesaDemos-6.4.1.tar.gz
    +99df1fdcb98d391666b476ca6f1dda8a  MesaDemos-6.4.1.tar.bz2
    +b999d2c6d92fb4b7740a3dbd889348e3  MesaDemos-6.4.1.zip
    +eadfe01fe5ddfb1eb8227dd567b31635  MesaGLUT-6.4.1.tar.gz
    +bd003bb4f981a4f91dee4c38644d4f3f  MesaGLUT-6.4.1.tar.bz2
    +71c401c037088bf688a88afdaeb3420f  MesaGLUT-6.4.1.zip
    +
    + + +

    Bug fixes

    +
      +
    • redefining a vertex program string didn't take effect in TNL module +
    • fixed occasional segfault upon vertex/fragment parsing error +
    • vertex program LIT instruction didn't handle 0^0=1 correctly +
    • fragment program fog option didn't work with glDrawPixels, glBitmap +
    • USE_MGL_NAMESPACE didn't work for x86-64 +
    • OSMesa demos were missing from previous release tarballs +
    • fixed problem with float->ushort conversion in glClear (bug 4992) +
    • popping of GL_EYE_PLANE texgen state was broken (bug 4996) +
    • popping of GL_SPOT_DIRECTION light state was broken (bug 5005) +
    • fixed occasional triangle color interpolation problem on VMS +
    • work around invalid free() call (bug 5131) +
    • fixed BSD X server compilation problem by including stdint.h +
    + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa (Xlib)		implements OpenGL 1.5
    +OSMesa (off-screen)	implements OpenGL 1.5
    +Windows/Win32		implements OpenGL 1.5
    +Glide (3dfx Voodoo1/2)  requires updates	
    +SVGA			requires updates
    +DJGPP			requires updates
    +GGI			requires updates
    +BeOS			requires updates
    +Allegro			requires updates
    +D3D			requires updates
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/6.4.2.html b/mesalib/docs/relnotes/6.4.2.html new file mode 100644 index 000000000..4c8a75c9b --- /dev/null +++ b/mesalib/docs/relnotes/6.4.2.html @@ -0,0 +1,82 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 6.4.2 / February 2, 2006

    + +

    +Mesa 6.4.2 is a stable, bug-fix release. +

    + + +

    MD5 checksums

    +
    +cb0d745d520fa7c2bb9178058b763544  MesaLib-6.4.2.tar.gz
    +7674d2c603b5834259e4e5a820cefd5b  MesaLib-6.4.2.tar.bz2
    +d224e1325b33ff71a0f3893fc6b4d594  MesaLib-6.4.2.zip
    +d4b345d4588fc750cd3d34f3ac26673e  MesaDemos-6.4.2.tar.gz
    +9cae1ab874af533ce356bd7dfe2e0bb0  MesaDemos-6.4.2.tar.bz2
    +2da6e1d1245e441d27813595c6ba50de  MesaDemos-6.4.2.zip
    +84427d18c3453f0ea52388eeba7169b5  MesaGLUT-6.4.2.tar.gz
    +b157ba8ad1ea63260cf5339132e7aac6  MesaGLUT-6.4.2.tar.bz2
    +fe1523744fc05edc3811dfc6a1bf4181  MesaGLUT-6.4.2.zip
    +
    + + +

    New features

    +
      +
    • added OSMesaColorClamp() function/feature +
    • added wglGetExtensionStringARB() function +
    + +

    Changes

    +
      +
    • GLUT tarball +
      +Starting with 6.4, the GLUT library sources are distributed in a separate +tarball. This was done at the request of Linux distro vendors who prefer +to use freeglut. +
    + +

    Bug fixes

    +
      +
    • fixed some problems when building on Windows +
    • GLw header files weren't installed by installmesa script (bug 5396) +
    • GL/glfbdev.h file was missing from tarballs +
    • fixed TNL initialization bug which could lead to crash (bug 5791) +
    + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa (Xlib)		implements OpenGL 1.5
    +OSMesa (off-screen)	implements OpenGL 1.5
    +Windows/Win32		implements OpenGL 1.5
    +Glide (3dfx Voodoo1/2)  requires updates	
    +SVGA			requires updates
    +DJGPP			requires updates
    +GGI			requires updates
    +BeOS			requires updates
    +Allegro			requires updates
    +D3D			requires updates
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/6.4.html b/mesalib/docs/relnotes/6.4.html new file mode 100644 index 000000000..9f7d9b8de --- /dev/null +++ b/mesalib/docs/relnotes/6.4.html @@ -0,0 +1,97 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 6.4 / October 24, 2005

    + +

    +Mesa 6.4 is a stable, bug-fix release. +

    + + +

    MD5 checksums

    +
    +1cce0c1eb4fd15e9dfe837a1ce0c9812  MesaLib-6.4.tar.gz
    +85a84e47a3f718f752f306b9e0954ef6  MesaLib-6.4.tar.bz2
    +b976fea4f3ee06354c53f91b6e3f2ffc  MesaLib-6.4.zip
    +d8734f2c69bcf7ef9f5ae454a85743ba  MesaDemos-6.4.tar.gz
    +1a8c4d4fc699233f5fdb902b8753099e  MesaDemos-6.4.tar.bz2
    +607ab7c7a7de0cc5febbdde2bfa03098  MesaDemos-6.4.zip
    +3260156f66174322a092be0767962d34  MesaGLUT-6.4.tar.gz
    +0465d053f83775f44a12dec4050dfd78  MesaGLUT-6.4.tar.bz2
    +02abfcdcdf72ba938ae00f6e3b70fbe0  MesaGLUT-6.4.zip
    +
    + + +

    New

    +
      +
    • Added a fast XOR line drawing function in Xlib driver +
    • Added support for GL_ARB_texture_mirrored_repeat to savage driver (supported only on Savage4 hardware). +
    + +

    Changes

    +
      +
    • Mesa now packaged in three parts: Library, Demos and GLUT +
    + +

    Bug fixes

    +
      +
    • GLX_X_RENDERABLE token wasn't accepted by glXChooseFBConfig +
    • Some files were present multiple times in the 6.3.2 tarballs +
    • r200_vtxtmp_x86.S file was missing from 6.3.2 tarball (bug 4207) +
    • glxgears_fbconfig demo didn't work (bug 4237) +
    • fixed bug when bilinear sampling 2d textures with borders +
    • glXCreatePbuffer() could segfault instead of returning 0 (bug 4235) +
    • fixed undefined frexp and rand in X.org libGLcore.a (bug 4242) +
    • fixed a few problems with proxy color tables (bug 4270) +
    • fixed precision problem in Z clearing (bug 4395) +
    • glBitmap, glDraw/CopyPixels mistakenly generated selection hits +
    • fixed potential segfault caused by reading pixels outside + of renderbuffer bounds +
    • glGetTexLevelParameter didn't accept GL_TEXTURE_DEPTH_SIZE_ARB +
    • fixed memory corruption bug involving software alpha buffers +
    • glReadPixels clipped by window bounds was sometimes broken +
    • glDraw/CopyPixels of stencil data ignored the stencil write mask +
    • glReadPixels from a texture bound to a framebuffer object didn't work +
    • glIsRender/FramebufferEXT weren't totally correct +
    • fixed a number of point size attenuation/fade bugs +
    • fixed glFogCoord bug 4729 +
    • GLX encoding for transpose matrix functions was broken +
    • fixed broken fragment program KIL and SWZ instructions +
    • fragment programs that wrote result.depth.z didn't work +
    + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa (Xlib)		implements OpenGL 1.5
    +OSMesa (off-screen)	implements OpenGL 1.5
    +Windows/Win32		implements OpenGL 1.5
    +Glide (3dfx Voodoo1/2)  requires updates	
    +SVGA			requires updates
    +DJGPP			requires updates
    +GGI			requires updates
    +BeOS			requires updates
    +Allegro			requires updates
    +D3D			requires updates
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/6.5.1.html b/mesalib/docs/relnotes/6.5.1.html new file mode 100644 index 000000000..97a705a51 --- /dev/null +++ b/mesalib/docs/relnotes/6.5.1.html @@ -0,0 +1,146 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 6.5.1 Release Notes / September 15, 2006

    + +

    +Mesa 6.5.1 is a 6.5 follow-on development release mostly consisting of +bug fixes. +

    + + +

    MD5 checksums

    +
    +d9a555297319bb932a3192952d53d073  MesaLib-6.5.1.tar.gz
    +c46f2c6646a270911b791dd8e1c2d977  MesaLib-6.5.1.tar.bz2
    +939eaaff33322bfeafac784402b45f4f  MesaLib-6.5.1.zip
    +9e4bbe83c007bfbaa67449a81cc3d36a  MesaDemos-6.5.1.tar.gz
    +0f2794baf7a9d98b22caea9f78c6942d  MesaDemos-6.5.1.tar.bz2
    +14c77eab9cc7a265c331abf239927c1c  MesaDemos-6.5.1.zip
    +c5f87c23aaf4eaf1bda0d007ea98366c  MesaGLUT-6.5.1.tar.gz
    +2525642fe7f454e3e1a1aad01359b406  MesaGLUT-6.5.1.tar.bz2
    +e33b165c22551e23b58ede8767378543  MesaGLUT-6.5.1.zip
    +
    + + +

    New Features

    +
      +
    • Intel i965 "broadwater" DRI driver + +
    • GL_APPLE_vertex_array_object - allows encapsulation of a set of vertex + arrays in an object. + +
    • GL_EXT_texture_sRGB - non-linearly mapped texture formats + +
    • GL_EXT_gpu_program_parameters - addes a few new functions for setting + multiple vertex/fragment program parameters with one call. +
    • "engine" demo +
    • updated fbdev driver and GLUT for fbdev (Sean D'Epagnier) +
    • many updates to the DRI drivers +
    + +

    Changes

    +
      +
    • The glVertexAttribARB functions no longer alias the conventional + vertex attributes. +
    • glxinfo program prints more info with -l option +
    • GL_FRAGMENT_PROGRAM_NV and GL_FRAGMENT_PROGRAM_ARB are now + compatible, in terms of glBindProgramARB() +
    • The GL_ARB_vertex_program attribute vertex.weight is now + accepted by the parser, even though the GL_ARB_vertex_blend and + GL_EXT_vertex_weighting extensions aren't supported. + Allows Warcraft to run. +
    + +

    Bug fixes

    +
      +
    • fixed broken texture border handling for depth textures (bug 6498) +
    • removed the test for duplicated framebuffer attachments, per + version 117 of the GL_EXT_framebuffer_object specification +
    • fixed a few render-to-texture bugs, including render to depth texture +
    • clipping of lines against user-defined clip planes was broken (6512) +
    • assembly language dispatch for SPARC was broken (bug 6484) +
    • assorted compilation fixes on various Unix platforms (Dan Schikore) +
    • glPopAttrib could restore an invalid value for GL_DRAW_BUFFER +
    • assorted minor fixes for 16 and 32 bit/channel modes +
    • fixed assorted bugs in texture compression paths +
    • fixed indirect rendering vertex array crashes (bug 6863) +
    • glDrawPixels GL_INDEX_OFFSET didn't always work +
    • fixed convolution memory leak (bug 7077) +
    • rectangular depth textures didn't work +
    • invalid mode to glBegin didn't generate an error (bug 7142) +
    • 'normalized' parameter to glVertexAttribPointerARB didn't work +
    • disable bogus GLX_SGI_video_sync extension in xlib driver +
    • fixed R128 driver locking bug (Martijn van Oosterhout) +
    • using evaluators with vertex programs caused crashes (bug 7564) +
    • fragment.position wasn't set correctly for point/line primitives +
    • fixed parser bug for scalar sources for GL_NV_fragment_program +
    • max fragment program length was incorrectly 128, now 1024 +
    • writes to result.depth in fragment programs weren't clamped to [0,1] +
    • fixed potential dangling pointer bug in glBindProgram() +
    • fixed some memory leaks (and potential crashes) in Xlib driver +
    • fixed a number of build issues on HP-UX (Christopher Bell) +
    • accum buffer didn't work with OSMesa interface +
    + + +

    Internal code changes

    + +

    +A number of Mesa program-related structs were renamed. +For example struct vertex_program is now struct gl_vertex_program. +All the effected drivers have been updated. +

    + +

    Ian Romanick updated the GL API dispatch code in a number of ways. +First, many old/unused extensions were removed. +Second, the static entrypoints for some extensions were removed. +This means GL function pointers will have to be used more often +(e.g. use glXGetProcAddressARB()). +

    + + +

    To Do (someday) items

    +
      +
    • Switch to freeglut +
    • Increase MAX_DRAWBUFFERS +
    • Fix linux-glide target/driver. +
    • Fix lambda calculation for frag progs. +
    + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 1.5
    +OSMesa (off-screen)	implements OpenGL 1.5
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			implements OpenGL 1.3
    +Wind River UGL		implements OpenGL 1.3
    +Windows/Win32		implements OpenGL 1.5
    +DJGPP			implements OpenGL 1.5
    +GGI			implements OpenGL 1.3
    +BeOS			implements OpenGL 1.5
    +Allegro			needs updating
    +D3D			needs updating
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/6.5.2.html b/mesalib/docs/relnotes/6.5.2.html new file mode 100644 index 000000000..b14f24f28 --- /dev/null +++ b/mesalib/docs/relnotes/6.5.2.html @@ -0,0 +1,133 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 6.5.2 Release Notes / December 2, 2006

    + +

    +Mesa 6.5.2 is a 6.5 follow-on development release with a few new features +but mostly consisting of bug fixes. +

    + + +

    MD5 checksums

    +
    +11a033b078e090b3caaeb467234fe299  MesaLib-6.5.2.tar.gz
    +e4d894181f1859651658b3704633e10d  MesaLib-6.5.2.tar.bz2
    +63bf1d444fa738cca52ce1043e284021  MesaLib-6.5.2.zip
    +2b8f1375d16bda5f5a2304174cd5bcf7  MesaDemos-6.5.2.tar.gz
    +e870efe98d3a50be01ab211b9b2e25d9  MesaDemos-6.5.2.tar.bz2
    +d92cc6f5fee5ca75af0be04f9f4908f0  MesaDemos-6.5.2.zip
    +8d4d77e3a7132f4217bbc7c1ab157030  MesaGLUT-6.5.2.tar.gz
    +e84edbb11c69c8e408dfadd2ed08e95b  MesaGLUT-6.5.2.tar.bz2
    +c6d7134843ed5faf11f6686ecb5d2a2e  MesaGLUT-6.5.2.zip
    +
    + + +

    New features

    +
      +
    • New DRI memory manager system. Currently used by the i915tex driver. +Other DRI drivers will be updated to use the new memory manager in coming +months. +
      +To use the new driver you'll need the most recent DRM library and drivers +(version 2.2 or later) and a recent xf86-video-intel driver module from X.org. +
      +New features resulting from this work include: +
        +
      • EXT_framebuffer_objects, render to texture +
      • ARB_pixel_buffer_objects +
      • Accelerated CopyTexSubimage, DrawPixels, ReadPixels, CopyPixels +
      • Accelerated texture uploads from pixel buffer objects +
      • Potentially texturing directly from the pixel buffer object (zero +copy texturing). +
      +
    • New Intel i965 DRI driver +
    • New minstall script to replace normal install program +
    • Faster fragment program execution in software +
    • Added (or fixed) support for + GLX_SGI_make_current_read to the following drivers: +
        +
      • radeon
      • +
      • savage
      • +
      • mga
      • +
      • tdfx
      • +
      +
    • Added support for ARB_occlusion_query to the tdfx driver (Ian +Romanick).
    • +
    + +

    Bug fixes

    +
      +
    • fixed invalid memory read while rendering textured points (bug 8320) +
    • fixed problems with freebsd-dri configuration (bug 8344) +
    • Mesa's fake glxGetCurrentContext() wasn't thread-aware +
    • OPTION NV_position_invariant didn't work in NV vertex programs +
    • glDrawPixels into a user-created framebuffer object could crash Xlib driver +
    • Line clipping was broken in some circumstances +
    • fragment.fogcoord register didn't always contain the correct value +
    • RGBA logicops didn't work reliably in some DRI drivers +
    • Fixed broken RGBA LogicOps in Intel DRI drivers +
    • Fixed some fragment program bugs in Intel i915 DRI driver +
    • Fixed glGetVertexAttribfvARB bug 8883 +
    • Implemented glGetUniform[fi]vARB() functions +
    • Fixed glDrawPixels(GL_COLOR_INDEX, GL_BITMAP) segfault (bug 9044) +
    • Fixed some gluBuild2DMipmaps() bugs (Greg McGarragh) +
    • Fixed broken "mgl" name mangling +
    • Indirect rending was broken for glMap* functions (bug 8899) +
    + + +

    Internal code changes

    + +
      +
    • The device driver functions ResizeBuffers and GetBufferSize have been +decprecated. +
    • OpenGL 2.0 and 2.1 support is nearly done. We need to do quite a bit +more testing of the shading language functions. +
    + + +

    To Do (someday) items

    +
      +
    • Switch to freeglut +
    • Increase MAX_DRAWBUFFERS +
    • Fix linux-glide target/driver. +
    • Improved lambda and derivative calculation for frag progs. +
    + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 1.5
    +OSMesa (off-screen)	implements OpenGL 1.5
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			implements OpenGL 1.3
    +Wind River UGL		implements OpenGL 1.3
    +Windows/Win32		implements OpenGL 1.5
    +DJGPP			implements OpenGL 1.5
    +GGI			implements OpenGL 1.3
    +BeOS			implements OpenGL 1.5
    +Allegro			needs updating
    +D3D			needs updating
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/6.5.3.html b/mesalib/docs/relnotes/6.5.3.html new file mode 100644 index 000000000..207a36cad --- /dev/null +++ b/mesalib/docs/relnotes/6.5.3.html @@ -0,0 +1,126 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 6.5.3 Release Notes / April 27, 2007

    + +

    +Mesa 6.5.3 is a development release with many changes and new features. +Mesa 7.0 is expected to follow shortly. +

    + + +

    MD5 checksums

    +
    +39f33ea64e34e2d5b20640b008b57649  MesaLib-6.5.3.tar.gz
    +46359457147c469745f24b5074a186f0  MesaLib-6.5.3.tar.bz2
    +a8946fa861634ce15971396f47992c41  MesaLib-6.5.3.zip
    +08e26948d57eaca74d02a530b2d8106e  MesaDemos-6.5.3.tar.gz
    +8af91773ab2653fe537499676b05f2e8  MesaDemos-6.5.3.tar.bz2
    +783f81b171bf89b0929abc894efd25a6  MesaDemos-6.5.3.zip
    +9467d415388fe1ad82991fb20704b812  MesaGLUT-6.5.3.tar.gz
    +360843e46b7ebb6909290b023f9b26fa  MesaGLUT-6.5.3.tar.bz2
    +7686065e5c15a30de08a1610860b6840  MesaGLUT-6.5.3.zip
    +
    + + +

    Shared library numbering

    +

    +Mesa 6.5.3 supports the OpenGL 2.0/2.1 API. However, the (unix) +shared library version is still 1.5 (i.e. libGL.so.1.5.xxxxxx). +Bumping the shared library version to 2.x would cause linking problems +with existing OpenGL applications. Since OpenGL 2.x is backward +compatible with OpenGL 1.x the shared library version number doesn't +have to be incremented (which would indicate an incompatible ABI). +

    +

    +Other OpenGL vendors name their OpenGL 2.x libraries libGL.so.1.0.xxxxx +for the same reason. +

    + + + +

    New features

    +
      +
    • OpenGL 2.0 and 2.1 API support. +
    • Entirely new Shading Language code generator. See the +Shading Language page for more information. +
    • Much faster software execution of vertex, fragment shaders. +
    • New vertex buffer object (vbo) infrastructure +
    • Updated glext.h file (version 39) +
    • Updated glxext.h file (version 19) +
    • GL_MAX_DRAWBUFFERS is now 4 (software rendering) so + "multiple render targets" are really supported. +
    + +

    Bug fixes

    +
      +
    • Fog was errantly applied when a fragment shader was enabled (bug 9346) +
    • glPush/PopClientAttrib didn't handle VBO bindings correctly (bug 9445) +
    • With 32-bit Z buffer, the fragment Z of lines and points was sometimes wrong. +
    • GL_POST_CONVOLUTION_ALPHA_BIAS/SCALE was broken. +
    • 1D convolution state could effect 2D image transfers +
    • Overlapping glCopyPixels with negative Y zoom didn't work (bug 10521) +
    • Fixed a number of framebuffer/renderbuffer reference counting bugs +
    • Fixed a few bugs in software-emulated alpha planes +
    • Assorted minor bug fixes in glCopy/DrawPixels, glPixelZoom, etc. +
    • Assorted DRI driver bug fixes. +
    • Fixed a number of bugs that prevented "depth-peeling" rendering from working. +
    + + +

    Internal code changes

    +
      +
    • Old array_cache module replaced by new vbo module. All geometry +rendering is now cast in the form of vertex buffer objects. +
    • Massive changes to the Shading Language compiler and related state. +
    • Vertex/fragment shaders are compiled into GPU instructions and +programs very similar to GL_ARB_vertex/fragment_program. +
    • Vertex and fragment programs are executed with the same code now. +
    • The SSE-optimized vertex program path has been removed since it didn't +support more than 12 temp registers, didn't support branching/looping, etc. +
    + + +

    To Do (someday) items

    +
      +
    • Switch to freeglut +
    • Fix linux-glide target/driver. +
    • Improved lambda and derivative calculation for frag progs. +
    + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/6.5.html b/mesalib/docs/relnotes/6.5.html new file mode 100644 index 000000000..de7a99a18 --- /dev/null +++ b/mesalib/docs/relnotes/6.5.html @@ -0,0 +1,138 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 6.5 Release Notes / March 31, 2006

    + +

    +Mesa 6.5 is a new development release. +

    + + +

    MD5 checksums

    +
    +657be3b92f6dabc78a67ed9cb8d67813  MesaLib-6.5.tar.gz
    +61beda590bfc5b4a12e979d5f2d70d7a  MesaLib-6.5.tar.bz2
    +19d48b872d579d4f91466060804a59ac  MesaLib-6.5.zip
    +694ad3a7007010c7418a9c72d1cba5b7  MesaDemos-6.5.tar.gz
    +ab95b590dcd640726a2d89e62068c66e  MesaDemos-6.5.tar.bz2
    +b792c303fefd87294488e2b7eab976e5  MesaDemos-6.5.zip
    +ac1d585483617db0c91e5c15cb5ec3a3  MesaGLUT-6.5.tar.gz
    +59f0bf2b2ffb67fe23ee479f9b044f31  MesaGLUT-6.5.tar.bz2
    +005decb2136718e22222ac1c4805cd15  MesaGLUT-6.5.zip
    +
    + + + +

    New Features

    +
      +
    • OpenGL Shading language support +
      + This includes the GL_ARB_shader_objects, GL_ARB_shading_language_100, + GL_ARB_vertex_shader and GL_ARB_fragment_shader extensions. Most of + the work was done by Michal Krol. + There's probably a fair number of bugs since this is a pretty large, + complicated body of code. +
      + The OpenGL 2.0 interface to these features will be implemented in a + future version of Mesa, + +
    • GL_EXT_timer_query +
      + Used to measure the time of OpenGL operations at high precision. + Only supported in the software/Xlib driver at this time. + +
    • GL_EXT_packed_depth_stencil +
      + Defines a new GL_DEPTH_STENCIL_EXT pixel format. + +
    • GL_EXT_framebuffer_blit +
      + A simplified glCopyPixels-like feature for copying pixel rectangles. + +
    • GL_ARB_half_float_pixel +
      + Adds a new half-precision floating point format for image transfers, + such as for glDrawPixels, glReadPixels, glTexImage, etc. +
    + +

    Changes

    +
      +
    • removed GL_HP_occlusion_test (use GL_ARB_occlusion_query instead) +
    • removed GL_SGIX/SGIS_pixel_texture extensions +
    +

    Bug fixes

    +
      +
    • fixed glxcontextmodes.c datatype problem (bug 5835) +
    • fixed aix-gcc build/install bugs (bug 5874) +
    • fixed some bugs in texture env program generation +
    • glXCopyContext() didn't handle texture object bindings properly +
    • glXCopyContext() didn't copy all lighting state +
    • fixed FreeBSD config (Pedro Giffuni) +
    • fixed some minor framebuffer object bugs +
    • replaced dprintf() with _glu_printf() in GLU (bug 6244) +
    • fixed a number of thread safety bugs/regressions +
    • fixed a number of GLU tesselator bugs (John Shell, bug 6339) +
    • paletted texturing was broken w/ floating point palettes (K. Schultz) +
    • lots of assorted framebuffer object bug fixes +
    + + +

    Known Issues

    +
      +
    • Rendering to depth textures will not work. Rendering to GL_DEPTH_STENCIL +textures should work. +
    + + +

    Driver Interface Changes

    +
      +
    • Stencil: The Driver.StencilOp/Func/Mask() functions have been replaced by +the two-sided versions: Driver.Stencil*Separate(). +
    • Render-to-texture: The functions for rendering to textures have changed. +
    + + +

    To Do (someday) items

    +
      +
    • Switch to freeglut +
    • Increase MAX_DRAWBUFFERS +
    • Fix linux-glide target/driver. +
    • Fix lambda calculation for frag progs. +
    + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 1.5
    +OSMesa (off-screen)	implements OpenGL 1.5
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			implements OpenGL 1.3
    +Wind River UGL		implements OpenGL 1.3
    +Windows/Win32		implements OpenGL 1.5
    +DJGPP			implements OpenGL 1.5
    +GGI			implements OpenGL 1.3
    +BeOS			implements OpenGL 1.5
    +Allegro			needs updating
    +D3D			needs updating
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.0.1.html b/mesalib/docs/relnotes/7.0.1.html new file mode 100644 index 000000000..686f30d53 --- /dev/null +++ b/mesalib/docs/relnotes/7.0.1.html @@ -0,0 +1,108 @@ + + + + Mesa Release Notes + + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.0.1 Release Notes / August 3, 2007

    + +

    +Mesa 7.0.1 is a stable release with bug fixes since version 7.0. +

    + + +

    MD5 checksums

    +
    +db55141a44b902fcc61d9265b7862c06  MesaLib-7.0.1.tar.gz
    +c056abd763e899114bf745c9eedbf9ad  MesaLib-7.0.1.tar.bz2
    +ecc2637547fae2b38271ae362d013afa  MesaLib-7.0.1.zip
    +b85a4a5be4e829f4a1165e4514b13183  MesaDemos-7.0.1.tar.gz
    +3b66b3268df12ca8a6c4e0c4c457912c  MesaDemos-7.0.1.tar.bz2
    +b1c18006f16e44e80fea66774c59b391  MesaDemos-7.0.1.zip
    +b87a69986839ae43ce12fc8e3dc1ebb4  MesaGLUT-7.0.1.tar.gz
    +25f30d0c1651997b4412366ba0572f7f  MesaGLUT-7.0.1.tar.bz2
    +676ee6682a6ce78a5540554fd975c03e  MesaGLUT-7.0.1.zip
    +
    + + +

    New features

    +
      +
    • Added a bluegene-osmesa build config +
    + +

    Bug fixes

    +
      +
    • Fixed some MingW build issues +
    • Added a few missing OpenGL 2.0 API entrypoints: +
        +
      • glVertexAttrib4bv +
      • glVertexAttrib4iv +
      • glVertexAttrib4ubv +
      • glVertexAttrib4uiv +
      • glVertexAttrib4usv +
      +
    • Fixed glDrawPixels(GL_STENCIL_INDEX) pixel transfer bug 11457 +
    • GLSL bug fix: added vec2(vec4) constructor +
    • GLSL bug fix: .strq and .rgba writemasks didn't always work +
    • Stencil pixel map didn't always work for glDrawPixels (bug 11475) +
    • Fixed polygon stipple bug in i915 driver +
    • Binding a zero-sized texture didn't disable texturing (bug 11309) +
    • Queries of GL_INFO_LOG_LENGTH, GL_SHADER_SOURCE_LENGTH didn't include +the terminating zero (bug 11588) +
    • glXChooseFBConfig() in Xlib driver didn't handle GLX_STEREO flag properly +
    • Fixed a GLSL function call bug (#11731) +
    • glPointParameteriv(GL_DISTANCE_ATTENUATION_EXT) didn't work (bug 11754) +
    • glGetAttribLocation() always returned 1 (bug 11774) +
    • Fixed a few memory-related bugs in GLU library +
    + + +

    Changes

    +
      +
    • The libOSMesa library version has been reverted to 6.5.3 (soname=6) +in order to avoid application linking issues. Otherwise, applications +previously linked with libOSMesa.so.6 would no longer link with libOSMesa.so.7 +
    • Dropped obsolete, unmaintained Windows project files for VC6 and VC7. +
    + + +

    To Do (someday) items

    +
      +
    • Switch to freeglut +
    • Fix linux-glide target/driver. +
    • Improved lambda and derivative calculation for frag progs. +
    + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.0.2.html b/mesalib/docs/relnotes/7.0.2.html new file mode 100644 index 000000000..b69e5493a --- /dev/null +++ b/mesalib/docs/relnotes/7.0.2.html @@ -0,0 +1,95 @@ + + + + Mesa Release Notes + + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.0.2 Release Notes / November 10, 2007

    + +

    +Mesa 7.0.2 is a stable release with bug fixes since version 7.0. +

    + + +

    MD5 checksums

    +
    +c9cf607f36e7e50172f5f9c7d552c34e  MesaLib-7.0.2.tar.gz
    +93e6ed7924ff069a4f883b4fce5349dc  MesaLib-7.0.2.tar.bz2
    +10c324c3613f90f059cb8429f700f300  MesaLib-7.0.2.zip
    +aa8b1244a5de1d23e5814bf9b67f1435  MesaDemos-7.0.2.tar.gz
    +11a10410bae7be85cf25bc7119966468  MesaDemos-7.0.2.tar.bz2
    +1dd0b5fd6d69430a2fd76a6adbfd8fff  MesaDemos-7.0.2.zip
    +a7dbf25c025955858bd2d89a6eb6db4c  MesaGLUT-7.0.2.tar.gz
    +3a33f8efc8c58a592a854cfc7a643286  MesaGLUT-7.0.2.tar.bz2
    +eba4ef2aa8c362ead81b54357f1903a3  MesaGLUT-7.0.2.zip
    +
    + + +

    New features

    +
      +
    • Updated Windows VC7 project files +
    • Added DESTDIR variable for 'make install' +
    • Added pkg-config files for gl, glu, glut and glw libraries +
    • Added bluegene-xlc-osmesa and catamount-osmesa-pgi configs +
    • Support for Intel G33/Q33/Q35 graphics chipsets +
    + +

    Bug fixes

    +
      +
    • Fixed a vertex buffer wrapping issue (bug 9962) +
    • Added mutex protection around texture object reference counters +
    • Added checking/support for additional chips in the i915/i945 family +(see 11978) +
    • Fixed a blending/banding issue (bug 11931) +
    • Fixed a GLU matrix inversion bug (#6748) +
    • Fixed problem with large glDrawArrays calls and indirect rendering (bug 12141) +
    • Fixed an assortment of i965 driver bugs +
    • Fixed x86-64 vertex transformation bug (12216) +
    • Fixed X server crash caused by multiple indirect rendering clients +
    • Parsing of state.texgen in ARB vertex/fragment programs didn't work (bug 12313) +
    • Fixed a glCopyPixels/glPixelZoom bug (12417) +
    • Fixed a bug when using glMaterial in display lists (bug 10604) +
    • Fixed a few GLUT/Fortran issues (Bill Mitchell) +
    • Fixed Blender crash bug (12164) +
    • Fixed some issues preventing cross-compiling +
    • Fixed up broken GL_ATI_separate_stencil extension +
    • glDrawArrays(count=0) led to a crash +
    • Fix SSE code gen memory leak, possible crash +
    • Fixed MMX 565 rgb conversion problem (bug 12614) +
    • Added -fno-strict-aliasing and -fPIC flags for gcc +
    • Fixed Blender crash in Unichrome driver (bug 13142) +
    + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.0.3.html b/mesalib/docs/relnotes/7.0.3.html new file mode 100644 index 000000000..ccc02e68d --- /dev/null +++ b/mesalib/docs/relnotes/7.0.3.html @@ -0,0 +1,91 @@ + + + + Mesa Release Notes + + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.0.3 Release Notes / April 4, 2008

    + +

    +Mesa 7.0.3 is a stable release with bug fixes since version 7.0.2. +

    + + +

    MD5 checksums

    +
    +3fd1cb76531b2515ef7db92d9a93dbf8  MesaLib-7.0.3.tar.gz
    +e6e6379d7793af40a6bc3ce1bace572e  MesaLib-7.0.3.tar.bz2
    +97882bac195229ee0b78cab82e0e3be1  MesaLib-7.0.3.zip
    +8abf6bbcb1661e7dd4ce73b3fbb85898  MesaDemos-7.0.3.tar.gz
    +47fd6863621d3c9c7dbb870ab7f0c303  MesaDemos-7.0.3.tar.bz2
    +99e442e14da1928f76a7297bb421a3af  MesaDemos-7.0.3.zip
    +2b50fe9fadc4709b57c52adef09fce3c  MesaGLUT-7.0.3.tar.gz
    +0ff23c4e91b238abae63a5fc9fa003e7  MesaGLUT-7.0.3.tar.bz2
    +70e83554a4462dad28e0d6e20f79aada  MesaGLUT-7.0.3.zip
    +
    + + +

    Bug fixes

    +
      +
    • Added missing glw.pc.in file to release tarball +
    • Fix GLUT/Fortran issues +
    • GLSL gl_FrontLightModelProduct.sceneColor variable wasn't defined +
    • Fix crash upon GLSL variable array indexes (not yet supported) +
    • Two-sided stencil test didn't work in software rendering +
    • Fix two-sided lighting bugs/crashes (bug 13368) +
    • GLSL gl_FrontFacing didn't work properly +
    • glGetActiveUniform returned incorrect sizes (bug 13751) +
    • Fix several bugs relating to uniforms and attributes in GLSL API (Bruce Merry, bug 13753) +
    • glTexImage3D(GL_PROXY_TEXTURE_3D) mis-set teximage depth field +
    • Fixed GLX indirect vertex array rendering bug (14197) +
    • Fixed crash when deleting framebuffer objects (bugs 13507, 14293) +
    • User-defined clip planes enabled for R300 (bug 9871) +
    • Fixed glBindTexture() crash upon bad target (bug 14514) +
    • Fixed potential crash in glDrawPixels(GL_DEPTH_COMPONENT) (bug 13915) +
    • Bad strings given to glProgramStringARB() didn't generate GL_INVALID_OPERATION +
    • Fixed minor point rasterization regression (bug 11016) +
    • state.texenv.color state var didn't work in GL_ARB_fragment_program (bug 14931) +
    • glBitmap from a PBO didn't always work +
    • glGetTexImage into a PBO didn't always work +
    • Comments at the end of ARB vertex/fragment programs crashed the parser +
    + +

    Changes

    +
      +
    • Updated glext.h to version 40 +
    + + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.0.4.html b/mesalib/docs/relnotes/7.0.4.html new file mode 100644 index 000000000..dbaf1b49b --- /dev/null +++ b/mesalib/docs/relnotes/7.0.4.html @@ -0,0 +1,87 @@ + + + + Mesa Release Notes + + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.0.4 Release Notes / August 16, 2008

    + +

    +Mesa 7.0.4 is a stable release with bug fixes since version 7.0.3. +

    + + +

    MD5 checksums

    +
    +909afa3a01ae31478d363837681415ac  MesaLib-7.0.4.tar.gz
    +8d7bacbe0234742a5d08c8088c4619e9  MesaLib-7.0.4.tar.bz2
    +5e44261ef85b049a868e1785d9adc276  MesaLib-7.0.4.zip
    +53dcd77d37a819feaf50b5fcdd0a6e0f  MesaDemos-7.0.4.tar.gz
    +c1215b31c5f7b85f81eed3bfba07d556  MesaDemos-7.0.4.tar.bz2
    +b1825a7361f116b28d82d328077630b4  MesaDemos-7.0.4.zip
    +d7677d015f52602d1bf8b837fb717848  MesaGLUT-7.0.4.tar.gz
    +f5f8b46f7e763d9f7b7d1d115c1c44ee  MesaGLUT-7.0.4.tar.bz2
    +a786775271a02c62a3370b13b26bf48d  MesaGLUT-7.0.4.zip
    +
    + + +

    Bug fixes

    +
      +
    • define #extension GL_ARB_texture_rectangle in shading language +
    • fixed WIN32 compile problem in libGLU +
    • Fixed a per-vertex glMaterial bug which could cause bad lighting +
    • Fixed potential crash in AA/smoothed triangle rendering when using a fragment shader +
    • Fixed glDrawElement + VBO segfault (bug 16156) +
    • Fixed GLSL linker bug causing generic vertex attributes to get aliased +
    • Fixed stack overflow when using glPixelZoom on Windows +
    • Fixed broken all(bvec2) GLSL function, added misc missing bvec constructors +
    • ARB program "state.clip[n].plane" didn't parse correctly +
    • Fixed broken glGetUniformiv() (bug 13774) +
    + +

    Changes

    +
      +
    • Including the latest glext.h and glxext.h header files from Khronos +
    • Added support for DragonFly OS +
    • Added a build config for FreeBSD static libs (Anatolij Shkodin) +
    • Enabled GL_EXT_multi_draw_arrays extension in R200/R300 drivers +
    • Enabled GL_ARB_point_sprite extension in I965 driver +
    • Enabled GL_EXT_texture_sRGB extension in I965 driver +
    • Added support for GL shading language in I965 driver +
    + + + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.0.html b/mesalib/docs/relnotes/7.0.html new file mode 100644 index 000000000..850a5dcaf --- /dev/null +++ b/mesalib/docs/relnotes/7.0.html @@ -0,0 +1,100 @@ + + + + Mesa Release Notes + + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.0 Release Notes / June 22, 2007

    + +

    +Mesa 7.0 is a stable release, featuring OpenGL 2.1 API support. +A number of bugs have been fixed since the 6.5.3 release. +

    + + +

    MD5 checksums

    +
    +35a1698986f7ac8dc435624ee9256cda  MesaLib-7.0.tar.gz
    +50c371455fa7532c04aa0a970f9bc51f  MesaLib-7.0.tar.bz2
    +bcedb6f43c97c1bc49e5cc7f12835722  MesaLib-7.0.zip
    +9bad332c7b74f59be96556135212ca9e  MesaDemos-7.0.tar.gz
    +fada2bc1f29da513e015fda1e3abd0c0  MesaDemos-7.0.tar.bz2
    +84e3bbe470d983ae32f1f0c779faf99e  MesaDemos-7.0.zip
    +76c7bb54f9850c689eba844f6daed332  MesaGLUT-7.0.tar.gz
    +4af28296e02772ef1de00e4e79bf3d12  MesaGLUT-7.0.tar.bz2
    +9043cb0b54cc03d1874728d74b12188c  MesaGLUT-7.0.zip
    +
    + + +

    New features

    +
      +
    • OpenGL 2.0 and 2.1 API support. +
    + +

    Bug fixes

    +
      +
    • Fixed a few fog-related bugs. +
    • Fixed broken GLSL mix() function. +
    • Fixed broken GLSL exp() functions. +
    • Fixed GLSL mod4(vec4, vec4) bug. +
    • Implemented GLSL asin(), acos(), atan() functions. +
    • Fixed an R300 driver bug that caused Xorg composite manager to crash +
    • Fixed R300 vertex program/matrix bug (10848) +
    • GLSL dFdx() and dFdy() work for fragment program inputs now (texcoords) +
    • Specifying an invalid texture unit as a sampler could lead to a crash +
    • The GLX protocol request for glXDestroyPBuffer() was incorrect (bug 10983) +
    • ARB vp state.light[n].half value was incorrect (bug 10987) +
    • Fixed a positional light source bug (bug 11009) +
    • Fixed point size attenuation problem (bug 11042) +
    • glPopAttrib didn't restore texture object's LOD bias (bug 11049) +
    • Fixed a TLS / TEXTREL problem (bug 7459) +
    + + +

    Internal code changes

    +
      +
    • Some texture code consolidation and simplifiction (Ian Romanick) +
    • R300 driver clean-ups. +
    + + +

    To Do (someday) items

    +
      +
    • Switch to freeglut +
    • Fix linux-glide target/driver. +
    • Improved lambda and derivative calculation for frag progs. +
    + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.1.html b/mesalib/docs/relnotes/7.1.html new file mode 100644 index 000000000..03b2f361c --- /dev/null +++ b/mesalib/docs/relnotes/7.1.html @@ -0,0 +1,101 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.1 Release Notes / August 26, 2008

    + +

    +Mesa 7.1 is a new development release. +There have been many internal code changes since Mesa 7.0.x. +It should be relatively stable, but those who are especially concerned about +stability should wait for Mesa 7.2 or use Mesa 7.0.4 (the previous stable +release). +

    +

    +Note that this version of Mesa does not use the GEM memory manager. +The master branch of git uses GEM. +

    +

    +DRM version 2.3.1 should be used with Mesa 7.1 +

    + + +

    MD5 checksums

    +
    +971c2fe6e6949dc5ba200a6f97a6dc81  MesaLib-7.1.tar.gz
    +6bff7f532d16f90f944a400c8bd7074d  MesaLib-7.1.tar.bz2
    +d48224bf9d54c3da6776adb4869ba024  MesaLib-7.1.zip
    +3de268420efca43e9a19ab506cdfc993  MesaDemos-7.1.tar.gz
    +abfc9775e1462363af8ec160d1feb01f  MesaDemos-7.1.tar.bz2
    +f7b3623387c4036e9895cd9ac0dfad99  MesaDemos-7.1.zip
    +fdf348f78cd09304b6ff801ef8acc8eb  MesaGLUT-7.1.tar.gz
    +f6d88a4eeb02e98c7e92f1c895d3c76b  MesaGLUT-7.1.tar.bz2
    +4dc102a5ca51e1c41dde87d3f8c7b22a  MesaGLUT-7.1.zip
    +
    + + +

    New features

    +
      +
    • autoconf-based configuration (and clean-up of Makefiles) +
    • Assorted DRI driver enhancements +
    • Reduced dependencies between X server and Mesa +
    • GL_EXT_texture_from_pixmap extension for Xlib driver +
    • Support for the GL shading language with i965 driver (implemented by Intel) +
    • ATI R500 series support (Radeon X1300–X1950) in r300 DRI driver +
    + + +

    Bug fixes

    +
      +
    • Numerous GLSL fixes +
    • Fixed some error code/detection bugs in the GLSL-related API functions +
    • Lots of DRI driver fixes. +
    + + +

    To Do (someday) items

    +
      +
    • Remove the MEMCPY() and _mesa_memcpy() wrappers and just use memcpy(). +Probably do the same for malloc, calloc, etc. +The wrappers were useful in the past for memory debugging but now we +have valgrind. Not worried about SunOS 4 support anymore either... +
    • Switch to freeglut +
    • Fix linux-glide target/driver. +
    • Improved lambda and derivative calculation for frag progs. +
    + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.10.1.html b/mesalib/docs/relnotes/7.10.1.html new file mode 100644 index 000000000..260cb9d26 --- /dev/null +++ b/mesalib/docs/relnotes/7.10.1.html @@ -0,0 +1,383 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.10.1 Release Notes / March 2, 2011

    + +

    +Mesa 7.10.1 is a bug fix release which fixes bugs found since the 7.10 release. +

    +

    +Mesa 7.10.1 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +4b4cee19f3bf16eb78bd4cc278ccf812  MesaLib-7.10.1.tar.gz
    +efe8da4d80c2a5d32a800770b8ce5dfa  MesaLib-7.10.1.tar.bz2
    +0fd2b1a025934de3f8cecf9fb9b57f4c  MesaLib-7.10.1.zip
    +42beb0f5188d544476c19496f725fa67  MesaGLUT-7.10.1.tar.gz
    +637bb8a20fdad89f7382b4ea83f896e3  MesaGLUT-7.10.1.tar.bz2
    +bdbf3ffb2606d6aa8afabb6c6243b91b  MesaGLUT-7.10.1.zip
    +
    + + +

    New features

    +

    None.

    + +

    Bug fixes

    +

    This list is likely incomplete.

    +
      +
    • Fix an off-by-one bug in a vsplit assertion.
    • +
    • Fix incorrect handling of layout qualifier +with in, out, attribute, and varying.
    • + +
    • Fix an i965 shader bug where the negative absolute value was generated instead of the absolute value of a negation.
    • + +
    • Fix numerous issues handling precision qualifiers in GLSL ES.
    • + +
    • Fixed a few GLX protocol encoder bugs (Julien Cristau)
    • + +
    • Assorted Gallium llvmpipe driver bug fixes
    • + +
    • Assorted Mesa/Gallium state tracker bug fixes
    • + +
    • Bug 26795 - gl_FragCoord off by one in Gallium drivers.
    • + +
    • Bug 29164 - [GLSL 1.20] invariant variable shouldn't be used before declaration
    • + +
    • Bug 29823 - GetUniform[if]v busted
    • + +
    • Bug 29927 - [glsl2] fail to compile shader with constructor for array of struct type
    • + +
    • Bug 30156 - [i965] After updating to Mesa 7.9, Civilization IV starts to show garbage
    • + +
    • Bug 31923 - [GLSL 1.20] allowing inconsistent centroid declaration between two vertex shaders
    • + +
    • Bug 31925 - [GLSL 1.20] "#pragma STDGL invariant(all)" fail
    • + +
    • Bug 32214 - [gles2]no link error happens when missing vertex shader or frag shader
    • + +
    • Bug 32375 - [gl gles2] Not able to get the attribute by function glGetVertexAttribfv
    • + +
    • Bug 32541 - Segmentation Fault while running an HDR (high dynamic range) rendering demo
    • + +
    • Bug 32569 - [gles2] glGetShaderPrecisionFormat not implemented yet
    • + +
    • Bug 32695 - [glsl] SIGSEGV glcpp/glcpp-parse.y:833
    • + +
    • Bug 32831 - [glsl] division by zero crashes GLSL compiler
    • + +
    • Bug 32910 - Keywords 'in' and 'out' not handled properly for GLSL 1.20 shaders
    • + +
    • Bug 33219 -[GLSL bisected] implicit sized array triggers segfault in ir_to_mesa_visitor::copy_propagate
    • + +
    • Bug 33306 - GLSL integer division by zero crashes GLSL compiler
    • + +
    • Bug 33308 -[glsl] ast_to_hir.cpp:3016: virtual ir_rvalue* ast_jump_statement::hir(exec_list*, _mesa_glsl_parse_state*): Assertion `ret != __null' failed.
    • + +
    • Bug 33316 - uniform array will be allocate one line more and initialize it when it was freed will abort
    • + +
    • Bug 33386 - Dubious assembler in read_rgba_span_x86.S
    • + +
    • Bug 33388 - Dubious assembler in xform4.S
    • + +
    • Bug 33433 - Error in x86-64 API dispatch code.
    • + +
    • Bug 33507 - [glsl] GLSL preprocessor modulus by zero crash
    • + +
    • Bug 33508 - [glsl] GLSL compiler modulus by zero crash
    • + +
    • Bug 33916 - Compiler accepts reserved operators % and %=
    • + +
    • Bug 34030 - [bisected] Starcraft 2: some effects are corrupted or too big
    • + +
    • Bug 34047 - Assert in _tnl_import_array() when using GLfixed vertex datatypes with GLESv2
    • + +
    • Bug 34114 - Sun Studio build fails due to standard library functions not being in global namespace
    • + +
    • Bug 34179 - Nouveau 3D driver: nv50_pc_emit.c:863 assertion error kills Compiz
    • + +
    • Bug 34198 - [GLSL] implicit sized array with index 0 used gets assertion
    • + +
    • Ubuntu bug 691653 - compiz crashes when using alt-tab (the radeon driver kills it)
    • + +
    • Meego bug 13005 - Graphics GLSL issue lead to camera preview fail on Pinetrail
    • + + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-7.10..mesa-7.10.1
    +
    + +

    Alberto Milone (1):

    +
      +
    • r600c: add evergreen ARL support.
    • +
    + +

    Brian Paul (21):

    +
      +
    • draw: Fix an off-by-one bug in a vsplit assertion.
    • +
    • docs: add links to 7.9.1 and 7.10 release notes
    • +
    • docs: added news item for 7.9.1 and 7.10 release
    • +
    • gallivm: work around LLVM 2.6 bug when calling C functions
    • +
    • gallivm: fix copy&paste error from previous commit
    • +
    • mesa: fix a few format table mistakes, assertions
    • +
    • mesa: fix num_draw_buffers==0 in fixed-function fragment program generation
    • +
    • mesa: don't assert in GetIntegerIndexed, etc
    • +
    • mesa: check for dummy renderbuffer in _mesa_FramebufferRenderbufferEXT()
    • +
    • llvmpipe: make sure binning is active when we begin/end a query
    • +
    • st/mesa: fix incorrect fragcoord.x translation
    • +
    • softpipe: fix off-by-one error in setup_fragcoord_coeff()
    • +
    • cso: fix loop bound in cso_set_vertex_samplers()
    • +
    • st/mesa: fix incorrect glCopyPixels position on fallback path
    • +
    • st/mesa: set renderbuffer _BaseFormat in a few places
    • +
    • st/mesa: fix the default case in st_format_datatype()
    • +
    • st/mesa: need to translate clear color according to surface's base format
    • +
    • docs: update 7.9.2 release notes with Brian's cherry-picks
    • +
    • docs: add link to 7.10.1 release notes
    • +
    • mesa: implement glGetShaderPrecisionFormat()
    • +
    • docs: updated environment variable list
    • +
    + +

    Bryce Harrington (1):

    +
      +
    • r300g: Null pointer check for buffer deref in gallium winsys
    • +
    + +

    Chad Versace (20):

    +
      +
    • glsl: At link-time, check that globals have matching centroid qualifiers
    • +
    • glcpp: Fix segfault when validating macro redefinitions
    • +
    • glsl: Fix parser rule for type_specifier
    • +
    • glsl: Change default value of ast_type_specifier::precision
    • +
    • glsl: Add semantic checks for precision qualifiers
    • +
    • glsl: Add support for default precision statements
    • +
    • glsl: Remove redundant semantic check in parser
    • +
    • glsl: Fix semantic checks on precision qualifiers
    • +
    • glsl: Fix segfault due to missing printf argument
    • +
    • glsl: Mark 'in' variables at global scope as read-only
    • +
    • mesa: Refactor handling of extension strings
    • +
    • mesa: Add/remove extensions in extension string
    • +
    • mesa: Change dependencies of some OES extension strings
    • +
    • mesa: Change OES_point_sprite to depend on ARB_point_sprite
    • +
    • mesa: Change OES_standard_derivatives to be stand-alone extension
    • +
    • i915: Disable extension OES_standard_derivatives
    • +
    • glcpp: Raise error when modulus is zero
    • +
    • glsl: Set operators '%' and '%=' to be reserved when GLSL < 1.30
    • +
    • glsl: Reinstate constant-folding for division by zero
    • +
    • tnl: Add support for datatype GL_FIXED in vertex arrays
    • +
    + +

    Chia-I Wu (1):

    +
      +
    • mesa: Add glDepthRangef and glClearDepthf to APIspec.xml.
    • +
    + +

    Christoph Bumiller (1):

    +
      +
    • nv50,nvc0: do not forget to apply sign mode to saved TGSI inputs
    • +
    + +

    Cyril Brulebois (1):

    +
      +
    • Point to bugs.freedesktop.org rather than bugzilla.freedesktop.org
    • +
    + +

    Dave Airlie (3):

    +
      +
    • radeon/r200: fix fbo-clearmipmap + gen-teximage
    • +
    • radeon: calculate complete texture state inside TFP function
    • +
    • radeon: avoid segfault on 3D textures.
    • +
    + +

    Dimitry Andric (4):

    +
      +
    • mesa: s/movzx/movzbl/
    • +
    • mesa: s/movzxw/movzwl/ in read_rgba_span_x86.S
    • +
    • glapi: adding @ char before type specifier in glapi_x86.S
    • +
    • glapi: add @GOTPCREL relocation type
    • +
    + +

    Eric Anholt (16):

    +
      +
    • glsl: Fix the lowering of variable array indexing to not lose write_masks.
    • +
    • i965/fs: When producing ir_unop_abs of an operand, strip negate.
    • +
    • i965/vs: When MOVing to produce ABS, strip negate of the operand.
    • +
    • i965/fs: Do flat shading when appropriate.
    • +
    • i965: Avoid double-negation of immediate values in the VS.
    • +
    • intel: Make renderbuffer tiling choice match texture tiling choice.
    • +
    • i965: Fix dead pointers to fp->Parameters->ParameterValues[] after realloc.
    • +
    • docs: Add a relnote for the Civ IV on i965.
    • +
    • glapi: Add entrypoints and enums for GL_ARB_ES2_compatibility.
    • +
    • mesa: Add extension enable bit for GL_ARB_ES2_compatibility.
    • +
    • mesa: Add actual support for glReleaseShaderCompiler from ES2.
    • +
    • mesa: Add support for glDepthRangef and glClearDepthf.
    • +
    • mesa: Add getters for ARB_ES2_compatibility MAX_*_VECTORS.
    • +
    • mesa: Add getter for GL_SHADER_COMPILER with ARB_ES2_compatibility.
    • +
    • i965: Fix a bug in i965 compute-to-MRF.
    • +
    • i965/fs: Add a helper function for detecting math opcodes.
    • +
    + +

    Fredrik Höglund (1):

    +
      +
    • st/mesa: fix a regression from cae2bb76
    • +
    + +

    Ian Romanick (42):

    +
      +
    • docs: Add 7.10 md5sums
    • +
    • glsl: Support the 'invariant(all)' pragma
    • +
    • glcpp: Generate an error for division by zero
    • +
    • glsl: Add version_string containing properly formatted GLSL version
    • +
    • glsl & glcpp: Refresh autogenerated lexer and parser files.
    • +
    • glsl: Disallow 'in' and 'out' on globals in GLSL 1.20
    • +
    • glsl: Track variable usage, use that to enforce semantics
    • +
    • glsl: Allow 'in' and 'out' when 'layout' is also available
    • +
    • docs: Initial bits of 7.10.1 release notes
    • +
    • mesa: bump version to 7.10.1-devel
    • +
    • doc: Update 7.10.1 release notes
    • +
    • glsl: Emit errors or warnings when 'layout' is used with 'attribute' or 'varying'
    • +
    • docs: Update 7.10.1 release notes
    • +
    • glsl: Refresh autogenerated lexer and parser files.
    • +
    • glsl: Don't assert when the value returned by a function has no rvalue
    • +
    • linker: Set sizes for non-global arrays as well
    • +
    • linker: Propagate max_array_access while linking functions
    • +
    • docs: Update 7.10.1 release notes
    • +
    • mesa: glGetUniform only returns a single element of an array
    • +
    • linker: Generate link errors when ES shaders are missing stages
    • +
    • mesa: Fix error checks in GetVertexAttrib functions
    • +
    • Use C-style system headers in C++ code to avoid issues with std:: namespace
    • +
    • docs: Update 7.10.1 release notes
    • +
    • glapi: Regenerate for GL_ARB_ES2_compatibility.
    • +
    • mesa: Connect glGetShaderPrecisionFormat into the dispatch table
    • +
    • i965: Set correct values for range/precision of fragment shader types
    • +
    • i915: Set correct values for range/precision of fragment shader types
    • +
    • intel: Fix typeos from 3d028024 and 790ff232
    • +
    • glsl: Ensure that all GLSL versions are supported in the stand-alone compiler
    • +
    • glsl: Reject shader versions not supported by the implementation
    • +
    • mesa: Initial size for secondary color array is 3
    • +
    • glsl: Finish out the reduce/reduce error fixes
    • +
    • glsl: Regenerate compiler and glcpp files from cherry picks
    • +
    • linker: Fix off-by-one error implicit array sizing
    • +
    • docs: update 7.10.1 release notes with Ian's recent cherry picks
    • +
    • i915: Only mark a register as available if all components are written
    • +
    • i915: Calculate partial result to temp register first
    • +
    • i915: Force lowering of all types of indirect array accesses in the FS
    • +
    • docs: Update 7.10.1 with (hopefully) the last of the cherry picks
    • +
    • docs: Clean up bug fixes list
    • +
    • intel: Remove driver date and related bits from renderer string
    • +
    • mesa: set version string to 7.10.1 (final)
    • +
    + +

    Jian Zhao (1):

    +
      +
    • mesa: fix an error in uniform arrays in row calculating.
    • +
    + +

    Julien Cristau (3):

    +
      +
    • glx: fix request lengths
    • +
    • glx: fix GLXChangeDrawableAttributesSGIX request
    • +
    • glx: fix length of GLXGetFBConfigsSGIX
    • +
    + +

    Keith Packard (1):

    +
      +
    • glsl: Eliminate reduce/reduce conflicts in glsl grammar
    • +
    + +

    Kenneth Graunke (20):

    +
      +
    • glsl: Expose a public glsl_type::void_type const pointer.
    • +
    • glsl: Don't bother unsetting a destructor that was never set.
    • +
    • glsl, i965: Remove unnecessary talloc includes.
    • +
    • glcpp: Remove use of talloc reference counting.
    • +
    • ralloc: Add a fake implementation of ralloc based on talloc.
    • +
    • Convert everything from the talloc API to the ralloc API.
    • +
    • ralloc: a new MIT-licensed recursive memory allocator.
    • +
    • Remove talloc from the make and automake build systems.
    • +
    • Remove talloc from the SCons build system.
    • +
    • Remove the talloc sources from the Mesa repository.
    • +
    • glsl: Fix use of uninitialized values in _mesa_glsl_parse_state ctor.
    • +
    • i965/fs: Apply source modifier workarounds to POW as well.
    • +
    • i965: Fix shaders that write to gl_PointSize on Sandybridge.
    • +
    • i965/fs: Avoid register coalescing away gen6 MATH workarounds.
    • +
    • i965/fs: Correctly set up gl_FragCoord.w on Sandybridge.
    • +
    • i965: Increase Sandybridge point size clamp.
    • +
    • i965/fs: Refactor control flow stack handling.
    • +
    • i965: Increase Sandybridge point size clamp in the clip state.
    • +
    • glsl: Use reralloc instead of plain realloc.
    • +
    • Revert "i965/fs: Correctly set up gl_FragCoord.w on Sandybridge."
    • +
    + +

    Marek Olšák (4):

    +
      +
    • docs: fix messed up names with special characters in relnotes-7.10
    • +
    • docs: fix messed up names with special characters in relnotes-7.9.1
    • +
    • mesa: fix texture3D mipmap generation for UNSIGNED_BYTE_3_3_2
    • +
    • st/dri: Track drawable context bindings
    • +
    + +

    Paulo Zanoni (1):

    +
      +
    • dri_util: fail driCreateNewScreen if InitScreen is NULL
    • +
    + +

    Sam Hocevar (2):

    +
      +
    • docs: add glsl info
    • +
    • docs: fix glsl_compiler name
    • +
    + +

    Tom Fogal (1):

    +
      +
    • Regenerate gl_mangle.h.
    • +
    + +

    Tom Stellard (2):

    +
      +
    • r300/compiler: Disable register rename pass on r500
    • +
    • r300/compiler: Don't erase sources when converting RGB->Alpha
    • +
    + +

    Vinson Lee (3):

    +
      +
    • ralloc: Add missing va_end following va_copy.
    • +
    • mesa: Move declaration before code in extensions.c.
    • +
    • mesa: Move loop variable declarations outside for loop in extensions.c.
    • +
    + +

    nobled (1):

    +
      +
    • glx: Put null check before use
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.10.2.html b/mesalib/docs/relnotes/7.10.2.html new file mode 100644 index 000000000..4703f5ebd --- /dev/null +++ b/mesalib/docs/relnotes/7.10.2.html @@ -0,0 +1,211 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.10.2 Release Notes / April 6, 2011

    + +

    +Mesa 7.10.2 is a bug fix release which fixes bugs found since the 7.10 release. +

    +

    +Mesa 7.10.2 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +2f9f444265534a2cfd9a99d1a8291089  MesaLib-7.10.2.tar.gz
    +f5de82852f1243f42cc004039e10b771  MesaLib-7.10.2.tar.bz2
    +47836e37bab6fcafe3ac90c9544ba0e9  MesaLib-7.10.2.zip
    +175120325828f313621cc5bc6c504803  MesaGLUT-7.10.2.tar.gz
    +8c71d273f5f8d6c5eda4ffc39e0fe03e  MesaGLUT-7.10.2.tar.bz2
    +03036c8efe7b791a90fa0f2c41b43f43  MesaGLUT-7.10.2.zip
    +
    + + +

    New features

    +

    None.

    + +

    Bug fixes

    +

    This list is likely incomplete.

    +
      + +
    • Bug 29172 - Arrandale - Pill Popper Pops Pills
    • + +
    • Bug 31159 - shadow problem in 0ad game
    • + +
    • Bug 32688 - [RADEON:KMS:R300G] some games have a wireframe or outline visible
    • + +
    • Bug 32949 - [glsl wine] Need for Speed renders incorrectly with GLSL enabled
    • + +
    • Bug 34203 - [GLSL] fail to call long chains across shaders
    • + +
    • Bug 34376 - [GLSL] allowing assignment to unsized array +
        +
      • The commit message incorrectly + lists bug + 34367.
      • +
      +
    • + +
    • Bug 34370 - [GLSL] "i<5 && i<4" in for loop fails
    • + +
    • Bug 34374 - [GLSL] fail to redeclare an array using initializer
    • + +
    • Bug 35073 - [GM45] Alpha test is broken when rendering to FBO with no color attachment
    • + +
    • Bug 35483 - util_blit_pixels_writemask: crash in line 322 of src/gallium/auxiliary/util/u_blit.c
    • + + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-7.10.1..mesa-7.10.2
    +
    + +

    Note: Reverted commits and the reverts are not included in this list.

    + +

    Alex Deucher (2):

    +
      +
    • r600c: add new ontario pci ids
    • +
    • r600g: add some additional ontario pci ids
    • +
    + +

    Benjamin Franzke (1):

    +
      +
    • st/dri: Fix surfaceless gl using contexts with previous bound surfaces
    • +
    + +

    Brian Paul (9):

    +
      +
    • docs: pull 7.9.2 release notes into 7.10 branch
    • +
    • docs: update news.html with 7.10.1 and 7.9.2 releases
    • +
    • docs: fill in 7.10.1 release data
    • +
    • docs: add, fix release notes links
    • +
    • docs: update info about Mesa packaging/contents
    • +
    • docs: update prerequisites, remove old demo info
    • +
    • mesa: Guard against null pointer deref in fbo validation
    • +
    • st/mesa: Apply LOD bias from correct texture unit
    • +
    • glsl: silence warning in printf() with a cast
    • +
    + +

    Chad Versace (1):

    +
      +
    • i965: Fix tex_swizzle when depth mode is GL_RED
    • +
    + +

    Dave Airlie (1):

    +
      +
    • r600: don't close fd on failed load
    • +
    + +

    Eric Anholt (2):

    +
      +
    • i965: Apply a workaround for the Ironlake "vertex flashing".
    • +
    • i965: Fix alpha testing when there is no color buffer in the FBO.
    • +
    + +

    Fabian Bieler (1):

    +
      +
    • st/mesa: Apply LOD from texture object
    • +
    + +

    Henri Verbeet (1):

    +
      +
    • st/mesa: Validate state before doing blits.
    • +
    + +

    Ian Romanick (13):

    +
      +
    • docs: Add 7.10.1 md5sums
    • +
    • glsl: Refactor AST-to-HIR code handling variable initializers
    • +
    • glsl: Refactor AST-to-HIR code handling variable redeclarations
    • +
    • glsl: Process redeclarations before initializers
    • +
    • glsl: Function signatures cannot have NULL return type
    • +
    • glsl: Add several function / call related validations
    • +
    • linker: Add imported functions to the linked IR
    • +
    • glsl: Use insert_before for lists instead of open coding it
    • +
    • glsl: Only allow unsized array assignment in an initializer
    • +
    • glcpp: Refresh autogenerated lexer files
    • +
    • docs: Initial bits of 7.10.2 release notes
    • +
    • mesa: set version string to 7.10.2
    • +
    • mesa: Remove nonexistant files from _FILES lists
    • +
    + +

    Jerome Glisse (1):

    +
      +
    • r600g: move user fence into base radeon structure
    • +
    + +

    José Fonseca (2):

    +
      +
    • mesa: Fix typo glGet*v(GL_TEXTURE_COORD_ARRAY_*).
    • +
    • mesa: More glGet* fixes.
    • +
    + +

    Kenneth Graunke (4):

    +
      +
    • glcpp: Rework lexer to use a SKIP state rather than REJECT.
    • +
    • glcpp: Remove trailing contexts from #if rules.
    • +
    • i965/fs: Fix linear gl_Color interpolation on pre-gen6 hardware.
    • +
    • glsl: Accept precision qualifiers on sampler types, but only in ES.
    • +
    + +

    Marek Olšák (15):

    +
      +
    • st/mesa: fix crash when DrawBuffer->_ColorDrawBuffers[0] is NULL
    • +
    • st/mesa: fail to alloc a renderbuffer if st_choose_renderbuffer_format fails
    • +
    • r300/compiler: fix the saturate modifier when applied to TEX instructions
    • +
    • r300/compiler: fix translating the src negate bits in pair_translate
    • +
    • r300/compiler: Abs doesn't cancel Negate (in the conversion to native swizzles)
    • +
    • r300/compiler: TEX instructions don't support negation on source arguments
    • +
    • r300/compiler: do not set TEX_IGNORE_UNCOVERED on r500
    • +
    • r300/compiler: saturate Z before the shadow comparison
    • +
    • r300/compiler: fix equal and notequal shadow compare functions
    • +
    • r300/compiler: remove unused variables
    • +
    • st/mesa: fix crash when using both user and vbo buffers with the same stride
    • +
    • r300g: fix alpha-test with no colorbuffer
    • +
    • r300g: tell the GLSL compiler to lower the continue opcode
    • +
    • r300/compiler: propagate SaturateMode down to the result of shadow comparison
    • +
    • r300/compiler: apply the texture swizzle to shadow pass and fail values too
    • +
    + +

    Michel Dänzer (1):

    +
      +
    • Use proper source row stride when getting depth/stencil texels.
    • +
    + +

    Tom Stellard (4):

    +
      +
    • r300/compiler: Use a 4-bit writemask in pair instructions
    • +
    • prog_optimize: Fix reallocating registers for shaders with loops
    • +
    • r300/compiler: Fix vertex shader MAD instructions with constant swizzles
    • +
    • r300/compiler: Don't try to convert RGB to Alpha in full instructions
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.10.3.html b/mesalib/docs/relnotes/7.10.3.html new file mode 100644 index 000000000..94527354d --- /dev/null +++ b/mesalib/docs/relnotes/7.10.3.html @@ -0,0 +1,308 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.10.3 Release Notes / June 13, 2011

    + +

    +Mesa 7.10.3 is a bug fix release which fixes bugs found since the 7.10.2 release. +

    +

    +Mesa 7.10.3 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +d77b02034c11d6c2a55c07f82367d780  MesaLib-7.10.3.tar.gz
    +8c38fe8266be8e1ed1d84076ba5a703b  MesaLib-7.10.3.tar.bz2
    +614d063ecd170940d9ae7b355d365d59  MesaLib-7.10.3.zip
    +8768fd562ede7ed763d92b2d22232d7a  MesaGLUT-7.10.3.tar.gz
    +1496415b89da9549f0f3b34d9622e2e2  MesaGLUT-7.10.3.tar.bz2
    +1f29d0e7398fd3bf9f36f5db02941198  MesaGLUT-7.10.3.zip
    +
    + + +

    New features

    +

    None.

    + + +

    Bug fixes

    +

    This list is likely incomplete.

    +
      + +
    • Bug 29162 - mesa/darwin is severly broken
    • + +
    • Bug 31590 - Black space between colors on mole hill example
    • + +
    • Bug 32395 - [glsl] Incorrect code generation for shadow2DProj() with bias
    • + +
    • Bug 32564 - [llvmpipe] prog: Unknown command line argument '-disable-mmx'. Try: 'prog -help' with llvm-2.9svn
    • + +
    • Bug 32835 - [glsl] recursive #define results in infinite stack recursion
    • + +
    • Bug 33303 - [glsl] ir_constant_expression.cpp:72: virtual ir_constant* ir_expression::constant_expression_value(): Assertion `op[0]->type->base_type == op[1]->type->base_type' failed.
    • + +
    • Bug 33314 - [glsl] ir_constant_expression.cpp:122: virtual ir_constant* ir_expression::constant_expression_value(): Assertion `op[0]->type->base_type == GLSL_TYPE_BOOL' failed.
    • + +
    • Bug 33512 - [SNB] case ogles2conform/GL/gl_FragCoord/gl_FragCoord_xy_frag.test and gl_FragCoord_w_frag.test fail
    • + +
    • Bug 34280 - r200 mesa-7.10 font distortion
    • + +
    • Bug 34321 - The ARB_fragment_program subset of ARB_draw_buffers not implemented
    • + +
    • Bug 35603 - GLSL compiler freezes compiling shaders
    • + +
    • Bug 36173 - struct renderbuffer's 'format' field never set when using FBO
    • + +
    • Bug 36238 - Mesa release files don't contain scons control files
    • + +
    • Bug 36410 - [SNB] Rendering errors in 3DMMES subtest taiji
    • + +
    • Bug 36527 - [wine] Wolfenstein: Failed to translate rgb instruction.
    • + +
    • Bug 36651 - mesa requires bison and flex to build but configure does not check for them
    • + +
    • Bug 36738 - Openarena crash with r300g, swrastg + llvm > 2.8
    • + +
    • Bug 37648 - Logic error in mesa/main/teximage.c:texsubimage
    • + +
    • Bug 37739 - Color clear of FBO without color buffer crashes
    • + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-7.10.2..mesa-7.10.3
    +
    + +

    Alan Hourihane (1):

    +
      +
    • Check for out of memory when creating fence
    • +
    + +

    Alex Buell (1):

    +
      +
    • configure: bump LIBDRM_REQUIRED to 2.4.24
    • +
    + +

    Alex Deucher (2):

    +
      +
    • r600c: add new pci ids
    • +
    • r600g: add new pci ids
    • +
    + +

    Brian Paul (19):

    +
      +
    • docs: add link to 7.10.2 release notes
    • +
    • scons: remove dangling reference to state_trackers/python/SConscript
    • +
    • Makefile: add missing Scons files
    • +
    • llvmpipe: document issue with LLVM 2.8 and earlier with AVX
    • +
    • docs: replace llvmpipe/README with docs/llvmpipe.html
    • +
    • glsl: add static qualifier to silence warning
    • +
    • glsl: add cast to silence signed/unsigned comparison warning
    • +
    • mesa: s/height/depth/ in texsubimage()
    • +
    • mesa: fix void pointer arithmetic warnings
    • +
    • mesa: add some missing GLAPIENTRY keywords
    • +
    • mesa: check that flex/bison are installed
    • +
    • st/mesa: fix incorrect texture level/face/slice accesses
    • +
    • draw: fix edge flag handling in clipper (for unfilled tris/quads/polygons)
    • +
    • vbo: check array indexes to prevent negative indexing
    • +
    • vbo: remove node->count > 0 test in vbo_save_playback_vertex_list()
    • +
    • st/mesa: fix software accum buffer format bug
    • +
    • mesa: add include/c99/inttypes.h include/c99/stdbool.h include/c99/stdint.h files to tarballs
    • +
    • docs: 7.10.3 release notes skeleton file, links
    • +
    • mesa: bump version to 7.10.3
    • +
    + +

    Carl Worth (2):

    +
      +
    • glcpp: Simplify calling convention of parser's active_list functions
    • +
    • glcpp: Fix attempts to expand recursive macros infinitely (bug #32835).
    • +
    + +

    Dave Airlie (1):

    +
      +
    • st/mesa: fix compressed mipmap generation.
    • +
    + +

    Eric Anholt (19):

    +
      +
    • i965: Fix the VS thread limits for GT1, and clarify the WM limits on both.
    • +
    • glsl: Avoid cascading errors when looking for a scalar boolean and failing.
    • +
    • glsl: Semantically check the RHS of `&&' even when short-circuiting.
    • +
    • glsl: Semantically check the RHS of `||' even when short-circuiting.
    • +
    • glsl: When we've emitted a semantic error for ==, return a bool constant.
    • +
    • glsl: Perform type checking on "^^" operands.
    • +
    • intel: Use _mesa_base_tex_format for FBO texture attachments.
    • +
    • swrast: Don't assert against glReadPixels of GL_RED and GL_RG.
    • +
    • mesa: Add a gl_renderbuffer.RowStride field like textures have.
    • +
    • mesa: Add a function to set up the default renderbuffer accessors.
    • +
    • intel: Use Mesa core's renderbuffer accessors for depth.
    • +
    • mesa: Use _mesa_get_format_bytes to refactor out the RB get_pointer_*
    • +
    • mesa: Use _mesa_get_format_bytes to refactor out the RB get_row_*
    • +
    • mesa: Add renderbuffer accessors for R8/RG88/R16/RG1616.
    • +
    • swrast: Don't try to adjust_colors for <8bpc when handling R16, RG1616.
    • +
    • intel: Use mesa core's R8, RG88, R16, RG1616 RB accessors.
    • +
    • Revert "intel: Add spans code for the ARB_texture_rg support."
    • +
    • mesa: Add support for the ARB_fragment_program part of ARB_draw_buffers.
    • +
    • mesa: Add support for OPTION ATI_draw_buffers to ARB_fp.
    • +
    + +

    Hans de Goede (1):

    +
      +
    • texstore: fix regression stricter check for memcpy path for unorm88 and unorm1616
    • +
    + +

    Henri Verbeet (3):

    +
      +
    • mesa: Also update the color draw buffer if it's explicitly set to GL_NONE.
    • +
    • glx: Destroy dri2Hash on DRI2 display destruction.
    • +
    • glx: Only remove the glx_display from the list after it's destroyed.
    • +
    + +

    Ian Romanick (9):

    +
      +
    • docs: Add 7.10.2 md5sums
    • +
    • glsl: Fix off-by-one error setting max_array_access for non-constant indexing
    • +
    • ir_to_mesa: Handle shadow compare w/projection and LOD bias correctly
    • +
    • intel: Fix ROUND_DOWN_TO macro
    • +
    • glsl: Regenerate compiler and glcpp files from cherry picks
    • +
    • i965: Remove hint_gs_always and resulting dead code
    • +
    • mesa: Don't try to clear a NULL renderbuffer
    • +
    • mesa: Ignore blits to/from missing buffers
    • +
    • docs: Add list of bugs fixed in 7.10.3 release
    • +
    + +

    Jeremy Huddleston (18):

    +
      +
    • apple: Update GL specs
    • +
    • apple: Rename glcontextmodes.[ch] to glxconfig.[ch]
    • +
    • apple: Rename __GLcontextModes to struct glx_config
    • +
    • apple: Rename GLXcontext
    • +
    • apple: Re-add driContext and do_destroy
    • +
    • apple: Rename _gl_context_modes_find_visual to glx_config_find_visual
    • +
    • apple: Rename GLXcontext
    • +
    • apple: Change from XExtDisplayInfo to struct glx_display
    • +
    • apple: ifdef out come glapi-foo on darwin
    • +
    • glx: Dead code removal
    • +
    • apple: Build darwin using applegl rather than indirect
    • +
    • apple: Fix build failures in applegl_glx.c
    • +
    • darwin: Define GALLIUM_DRIVERS_DIRS in darwin config
    • +
    • apple: Package applegl source into MesaLib tarball
    • +
    • darwin: Set VG_LIB_{NAME,GLOB} to fix make install
    • +
    • darwin: Don't link against libGL when building libOSMesa
    • +
    • darwin: Fix VG_LIB_GLOB to also match the unversioned symlink
    • +
    • osmesa: Fix missing symbols when GLX_INDIRECT_RENDERING is defined.
    • +
    + +

    José Fonseca (13):

    +
      +
    • llvmpipe: Update readme.
    • +
    • mesa: GL_PROVOKING_VERTEX_EXT is a GLenum, not GLboolean.
    • +
    • mesa: Fix GetVertexAttrib* inside display lists.
    • +
    • draw: Fix draw_variant_output::format's type.
    • +
    • gallivm: Tell LLVM to not assume a 16-byte aligned stack on x86.
    • +
    • gallivm: Fix for dynamically linked LLVM 2.8 library.
    • +
    • st/wgl: Adjust the pbuffer invisible window size.
    • +
    • st/wgl: Fix debug output format specifiers of stw_framebuffer_get_size().
    • +
    • st/wgl: Prevent spurious framebuffer sizes when the window is minimized.
    • +
    • st/wgl: Cope with zero width/height windows.
    • +
    • st/wgl: Allow to create pbuffers bigger than the desktop.
    • +
    • st/wgl: Remove buggy assertion.
    • +
    • wgl: Don't hold on to user supplied HDC.
    • +
    + +

    Kenneth Graunke (10):

    +
      +
    • i965/fs: Switch W and 1/W in Sandybridge interpolation setup.
    • +
    • i965: Refactor Sandybridge implied move handling.
    • +
    • i965: Resolve implied moves in brw_dp_READ_4_vs_relative.
    • +
    • intel: Add IS_GT2 macro for recognizing Sandybridge GT2 systems.
    • +
    • i965: Allocate the whole URB to the VS and fix calculations for Gen6.
    • +
    • intel: Support glCopyTexImage() from ARGB8888 to XRGB8888.
    • +
    • glsl: Fix memory error when creating the supported version string.
    • +
    • glsl: Regenerate autogenerated file builtin_function.cpp.
    • +
    • i965: Rename various gen6 #defines to match the documentation.
    • +
    • i965: Never enable the GS on Gen6.
    • +
    + +

    Kostas Georgiou (1):

    +
      +
    • r600c/g: Add pci id for FirePro 2270
    • +
    + +

    Marek Olšák (18):

    +
      +
    • tgsi/ureg: bump the limit of immediates
    • +
    • st/mesa: fix changing internal format via RenderbufferStorage
    • +
    • st/mesa: GenerateMipmap should not be killed by conditional rendering
    • +
    • swrast: BlitFramebuffer should not be killed by conditional rendering
    • +
    • st/mesa: BlitFramebuffer should not be killed by conditional rendering
    • +
    • st/mesa: CopyTex(Sub)Image should not be killed by conditional rendering
    • +
    • st/mesa: conditional rendering should not kill texture decompression via blit
    • +
    • mesa: forbid UseProgram to be called inside Begin/End
    • +
    • mesa: UseShaderProgramEXT and Uniform* shouldn't be allowed inside Begin/End
    • +
    • mesa: queries of non-existent FBO attachments should return INVALID_OPERATION
    • +
    • r300g: fix draw_vbo splitting on r3xx-r4xx
    • +
    • r300g: fix texturing with non-3D textures and wrap R mode set to sample border
    • +
    • r300g: fix occlusion queries when depth test is disabled or zbuffer is missing
    • +
    • r300g: clear can be killed by render condition
    • +
    • st/mesa: remove asserts in st_texture_image_copy
    • +
    • mesa: fix up assertion in _mesa_source_buffer_exists
    • +
    • mesa: invalidate framebuffer if internal format of renderbuffer is changed
    • +
    • mesa: return after invalidating renderbuffer
    • +
    + +

    Matt Turner (1):

    +
      +
    • r300/compiler: align memory allocations to 8-bytes
    • +
    + +

    Tom Stellard (3):

    +
      +
    • r300/compiler: Fix incorrect presubtract conversion
    • +
    • r300/compiler: Fix dataflow analysis bug with ELSE blocks
    • +
    • r300/compiler: Limit instructions to 3 source selects
    • +
    + +

    Vinson Lee (1):

    +
      +
    • gallivm: Disable MMX-disabling code on llvm-2.9.
    • +
    + +

    Zou Nan hai (1):

    +
      +
    • i965: Align interleaved URB write length to 2
    • +
    + +

    pepp (1):

    +
      +
    • st/mesa: assign renderbuffer's format field when allocating storage
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.10.html b/mesalib/docs/relnotes/7.10.html new file mode 100644 index 000000000..a88811e50 --- /dev/null +++ b/mesalib/docs/relnotes/7.10.html @@ -0,0 +1,2798 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.10 Release Notes / January 7, 2011

    + +

    +Mesa 7.10 is a new development release. +People who are concerned with stability and reliability should stick +with a previous release or wait for Mesa 7.10.1. +

    +

    +Mesa 7.10 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +0a70c15c135561824bdcae92bf232e43  MesaLib-7.10.tar.gz
    +33fb94eccc02cbb4d8d1365615e38e46  MesaLib-7.10.tar.bz2
    +5cafdc0eda0f9bf370b95c98df3338fa  MesaLib-7.10.zip
    +bc644be551ed585fc4f66c16b64a91c9  MesaGLUT-7.10.tar.gz
    +5c2677a155672352d62b177e4f0f92e8  MesaGLUT-7.10.tar.bz2
    +2ce5001f74496d1ba719ef74d910a5cf  MesaGLUT-7.10.zip
    +
    + + +

    New features

    +
      +
    • GL_ARB_explicit_attrib_location extension (Intel and software drivers). +
    • GL_ARB_texture_rg (Intel, software drivers, gallium drivers). +
    • GL_EXT_separate_shader_objects extension (Intel and software drivers). +
    • GL_NV_primitive_restart extension (Gallium softpipe, llvmpipe). +
    • New fragment shader back-end for i965-class hardware. +
    • Support for Sandybridge chipset in i965 DRI driver. +
    + + +

    Bug fixes

    +

    This list is likely incomplete.

    +
      +
    • Bug 28800 - [r300c, r300g] Texture corruption with World of Warcraft
    • + +
    • Bug 29420 - Amnesia / HPL2 RendererFeatTest - not rendering correctly
    • + +
    • Bug 29946 - [swrast] piglit valgrind glsl-array-bounds-04 fails
    • + +
    • Bug 30261 - [GLSL 1.20] allowing inconsistent invariant declaration between two vertex shaders
    • + +
    • Bug 30632 - [softpipe] state_tracker/st_manager.c:489: st_context_notify_invalid_framebuffer: Assertion `stfb && stfb->iface == stfbi' failed.
    • + +
    • Bug 30694 - wincopy will crash on Gallium drivers when going to front buffer
    • + +
    • Bug 30771 - [r600g] vert-tex glsl demo
    • + +
    • Bug 30787 - Invalid asm shader does not generate draw-time error when used with GLSL shader
    • + +
    • Bug 30974 - [llvmpipe] SIGABRT src/gallium/drivers/llvmpipe/lp_state_fs.c:779
    • + +
    • Bug 30993 - getFramebufferAttachmentParameteriv wrongly generates error
    • + +
    • Bug 31101 - [glsl2] abort() in ir_validate::visit_enter(ir_assignment *ir)
    • + +
    • Bug 31193 - [regression] aa43176e break water reflections
    • + +
    • Bug 31194 - The mesa meta save/restore code doesn't ref the current GLSL program
    • + +
    • Bug 31371 - glslparsertest: ir.cpp:358: ir_constant::ir_constant(const glsl_type*, const ir_constant_data*): Assertion `(type->base_type >= 0) && (type->base_type <= 3)' failed.
    • + +
    • Bug 31439 - Crash in glBufferSubData() with size == 0
    • + +
    • Bug 31495 - [i965 gles2c bisected] OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed
    • + +
    • Bug 31514 - isBuffer returns true for unbound buffers
    • + +
    • Bug 31560 - [tdfx] tdfx_tex.c:702: error: ‘const struct gl_color_table’ has no member named ‘Format’
    • + +
    • Bug 31617 - Radeon/Compiz: 'failed to attach dri2 front buffer', error case not handled
    • + +
    • Bug 31648 - [GLSL] array-struct-array gets assertion: `(size >= 1) && (size <= 4)' failed.
    • + +
    • Bug 31650 - [GLSL] varying gl_TexCoord fails to be re-declared to different size in the second shader
    • + +
    • Bug 31673 - GL_FRAGMENT_PRECISION_HIGH preprocessor macro undefined in GLSL ES
    • + +
    • Bug 31690 - i915 shader compiler fails to flatten if in Aquarium webgl demo.
    • + +
    • Bug 31832 - [i915] Bad renderbuffer format: 21
    • + +
    • Bug 31841 - [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !
    • + +
    • Bug 31894 - Writing to gl_PointSize with GLES2 corrupts other varyings
    • + +
    • Bug 31909 - [i965] brw_fs.cpp:1461: void fs_visitor::emit_bool_to_cond_code(ir_rvalue*): Assertion `expr->operands[i]->type->is_scalar()' failed.
    • + +
    • Bug 31934 - [gallium] Mapping empty buffer object causes SIGSEGV
    • + +
    • Bug 31983 - [i915 gles2] "if (expression with builtin/varying variables) discard" breaks linkage
    • + +
    • Bug 31985 - [GLSL 1.20] initialized uniform array considered as "unsized"
    • + +
    • Bug 31987 - [gles2] if input a wrong pname(GL_NONE) to glGetBoolean, it will not case GL_INVALID_ENUM
    • + +
    • Bug 32035 - [GLSL bisected] comparing unsized array gets segfault
    • + +
    • Bug 32070 - llvmpipe renders stencil demo incorrectly
    • + +
    • Bug 32273 - assertion fails when starting vdrift 2010 release with shaders enabled
    • + +
    • Bug 32287 - [bisected GLSL] float-int failure
    • + +
    • Bug 32311 - [965 bisected] Array look-ups broken on GM45
    • + +
    • Bug 32520 - [gles2] glBlendFunc(GL_ZERO, GL_DST_COLOR) will result in GL_INVALID_ENUM
    • + +
    • Bug 32825 - egl_glx driver completely broken in 7.9 branch [fix in master]
    • + + + +
    + + +

    Changes

    +

    Adam Jackson (2):

    +
      +
    • i965: Update renderer strings for sandybridge
    • +
    • drivers/x11: unifdef XFree86Server
    • +
    + +

    Alex Deucher (30):

    +
      +
    • r600c: fix mipmap stride on evergreen
    • +
    • r600c: add reloc for CB_COLOR0_ATTRIB
    • +
    • r600c: pull over 6xx/7xx vertex fixes for evergreen
    • +
    • r600c: fix segfault in evergreen stencil code
    • +
    • r100: revalidate after radeon_update_renderbuffers
    • +
    • r600c: add missing radeon_prepare_render() call on evergreen
    • +
    • r600c: properly align mipmaps to group size
    • +
    • egl_dri2: Add radeon chip ids
    • +
    • r600c/evergreen: texture align is group_bytes just like 6xx/7xx
    • +
    • r600g: fix buffer alignment
    • +
    • r600g: All EVENT_WRITE packets need the EVENT_INDEX field
    • +
    • r600g: translate ARR instruction for evergreen
    • +
    • r600g: use meaningful defines for chiprev
    • +
    • r600g: use full range of VS resources for vertex samplers
    • +
    • r600g: fix additional EVENT_WRITE packet
    • +
    • r600g: fix some winsys functions to deal properly with evergreen
    • +
    • r600c: add Ontario Fusion APU support
    • +
    • r600g: add support for ontario APUs
    • +
    • r600c: fix VC flush on cedar and palm
    • +
    • gallium/egl: fix r300 vs r600 loading
    • +
    • r600c: fix some opcodes on evergreen
    • +
    • r600c: bump texture limits to hw limits
    • +
    • r600g: bump texture/cb limits appropriately for evergreen
    • +
    • radeon: bump mip tree levels to 15
    • +
    • r600g: fix rendering with a vertex attrib having a zero stride
    • +
    • r600g: remove useless switch statements
    • +
    • r600g: add support for NI (northern islands) asics
    • +
    • r600c: add support for NI asics
    • +
    • r600g: support up to 64 shader constants
    • +
    • r600c: fix up SQ setup in blit code for Ontario/NI
    • +
    + +

    Andre Maasikas (3):

    +
      +
    • r600c: fix buffer height setting in dri2 case
    • +
    • r600g: break alu clause earlier
    • +
    • r600g: fix evergreen interpolation setup
    • +
    + +

    Andrew Randrianasulu (2):

    +
      +
    • dri/nv04: Don't expose ARB_texture_env_combine/dot3.
    • +
    • dri/nv04: Enable eng3dm for A8/L8 textures.
    • +
    + +

    Aras Pranckevicius (2):

    +
      +
    • glsl: fix crash in loop analysis when some controls can't be determined
    • +
    • glsl: fix matrix type check in ir_algebraic
    • +
    + +

    Bas Nieuwenhuizen (3):

    +
      +
    • r600g: set ENABLE_KILL in the shader state in the new design
    • +
    • r600g: set ENABLE_KILL on evergreen too
    • +
    • r600g: use dirty list to track dirty blocks
    • +
    + +

    Ben Skeggs (3):

    +
      +
    • nv50: DST
    • +
    • nv50: DPH
    • +
    • nv50: silence some unknown get_param warnings
    • +
    + +

    Benjamin Franzke (2):

    +
      +
    • st/egl image: multiply drm buf-stride with blocksize
    • +
    • r600g: implement texture_get_handle (needed for eglExportDRMImageMESA)
    • +
    + +

    Brian Paul (296):

    +
      +
    • glx: add const qualifiers to __indirect_glMultiDrawArraysEXT()
    • +
    • glsl2: fix signed/unsigned comparison warning
    • +
    • llvmpipe: cast to silence warning
    • +
    • llvmpipe: s/boolean/unsigned/ in bitfield to silence warning
    • +
    • nv50: use unsigned int for bitfields to silence warnings
    • +
    • tgsi: fix incorrect usage_mask for shadow tex instructions
    • +
    • gallivm: expand AoS sampling to cover all filtering modes
    • +
    • gallivm: fix incorrect vector shuffle datatype
    • +
    • gallivm: move i32_vec_type inside the #ifdef
    • +
    • mesa: include mfeatures.h in formats.c
    • +
    • gallivm: fix wrong return value in bitwise functions
    • +
    • tgsi/sse: fix aos_to_soa() loop to handle num_inputs==0
    • +
    • gallivm: added missing case for PIPE_TEXTURE_RECT
    • +
    • gallium: better docs for pipe_rasterizer_state::sprite_coord_enable
    • +
    • gallium: rework handling of sprite_coord_enable state
    • +
    • gallium/docs: added new pipeline.txt diagram
    • +
    • mesa: don't call valid_texture_object() in non-debug builds
    • +
    • glsl2: silence compiler warnings in printf() calls
    • +
    • docs: remove old broken link
    • +
    • docs: mark as obsolete, remove dead links
    • +
    • llvmpipe: fix query bug when no there's no scene
    • +
    • gallivm: remove debug code
    • +
    • llvmpipe: maintain fragment shader state for draw module
    • +
    • llvmpipe: indentation fix
    • +
    • llvmpipe: reformatting, remove trailing whitespace, etc
    • +
    • llvmpipe: clean-up, comments in setup_point_coefficient()
    • +
    • llvmpipe: rename sprite field, add sprite_coord_origin
    • +
    • llvmpipe: implement sprite coord origin modes
    • +
    • draw: fix test for using the wide-point stage
    • +
    • llvmpipe: check bitshift against PIPE_MAX_SHADER_OUTPUTS
    • +
    • draw: check bitshift against PIPE_MAX_SHADER_OUTPUS
    • +
    • Merge branch 'sprite-coord'
    • +
    • draw: new draw_fs.[ch] files
    • +
    • glsl2: fix typo in error msg
    • +
    • gallivm: fix lp_build_sample_compare()
    • +
    • softpipe: add missing calls to set draw vertex samplers/views
    • +
    • mesa: don't advertise bogus GL_ARB_shading_language_120 extension
    • +
    • configs: remove egl-swrast target from linux-dri config
    • +
    • llvmpipe: fix sprite texcoord setup for non-projective texturing
    • +
    • mesa: fix assertions to handle srgb formats
    • +
    • st/mesa: add missing MESA_FORMAT_S8 case in st_mesa_format_to_pipe_format()
    • +
    • st/mesa: use the wrapped renderbuffer in CopyPixels()
    • +
    • llvmpipe: make min/max lod and lod bias dynamic state
    • +
    • llvmpipe: make texture border_color dynamic state
    • +
    • softpipe: fix repeat() function for NPOT textures
    • +
    • gallivm: fix repeat() function for NPOT textures
    • +
    • swrast: update comments for REMAINDER() macro
    • +
    • softpipe: rename sp_state_fs.c -> sp_state_shader.c
    • +
    • softpipe: make shader-related functions static
    • +
    • softpipe: make blend/stencil/depth functions static
    • +
    • softpipe: make sampler state functions static
    • +
    • softpipe: make vertex state functions static
    • +
    • softpipe: make rasterizer state functions static
    • +
    • softpipe: make stream out state functions static
    • +
    • softpipe: make clip state functions static
    • +
    • softpipe: minor asst. clean-ups
    • +
    • softpipe: allocate tile data on demand
    • +
    • llvmpipe: fix swizzling of texture border color
    • +
    • softpipe: fix swizzling of texture border color
    • +
    • draw: pass sampler state down to llvm jit state
    • +
    • gallivm: check for level=0 case in lp_build_minify()
    • +
    • gallivm: added some comments
    • +
    • draw: check for null sampler pointers
    • +
    • swrast: fix choose_depth_texture_level() to respect mipmap filtering state
    • +
    • st/mesa: replace assertion w/ conditional in framebuffer invalidation
    • +
    • glsl2: fix signed/unsigned comparison warning
    • +
    • st/xlib: add some comments
    • +
    • ir_to_mesa: assorted clean-ups, const qualifiers, new comments
    • +
    • mesa: remove assertion w/ undeclared variable texelBytes
    • +
    • gallivm: remove newlines
    • +
    • draw/llvmpipe: replace DRAW_MAX_TEXTURE_LEVELS with PIPE_MAX_TEXTURE_LEVELS
    • +
    • mesa: reformatting, comments, code movement
    • +
    • x11: fix breakage from gl_config::visualType removal
    • +
    • gallivm: work-around trilinear mipmap filtering regression with LLVM 2.8
    • +
    • mesa: remove post-convolution width/height vars
    • +
    • gallivm: add compile-time option to emit inst addrs and/or line numbers
    • +
    • llvmpipe: code to dump bytecode to file (disabled)
    • +
    • gallivm: added lp_build_print_vec4()
    • +
    • gallivm: added lp_build_load_volatile()
    • +
    • glsl: add ir_unop_round_even case to silence unhandled enum warning
    • +
    • st/mesa: fix regressions in glDrawPixels(GL_STENCIL_INDEX)
    • +
    • st/mesa: reformatting in st_cb_drawpixels.c
    • +
    • st/mesa: use GLuint to avoid problem w/ uint not defined on mingw32
    • +
    • st/mesa: update function name, comments
    • +
    • gallivm: use util_snprintf()
    • +
    • llvmpipe: remove lp_setup_coef*.c files from Makefile
    • +
    • mesa: fix mesa version string construction
    • +
    • gallivm: fix incorrect type for zero vector in emit_kilp()
    • +
    • llvmpipe/draw: always enable LLVMAddInstructionCombiningPass()
    • +
    • draw: use float version of LLVM Mul/Add instructions
    • +
    • draw: fix typo in comment
    • +
    • mesa: add GL_RG case to _mesa_source_buffer_exists()
    • +
    • mesa: add missing cases for packing red/green images
    • +
    • st/mesa: added cases for GL_COMPRESSED_RED/RG in st_choose_format()
    • +
    • docs: update texture red/green support in GL3.txt
    • +
    • docs: add GL_ARB_texture_rg to release notes
    • +
    • mesa: driver hook for primitive restart
    • +
    • mesa: set/get primitive restart state
    • +
    • mesa: API spec for primitive restart
    • +
    • mesa: regenerated files with primitive restart
    • +
    • mesa: plug in primitive restart function
    • +
    • vbo: support for primitive restart
    • +
    • gallium: new CAP, state for primitive restart
    • +
    • st/mesa: support for primitive restart
    • +
    • draw: implement primitive splitting for primitive restart
    • +
    • softpipe: enable primitive restart
    • +
    • llvmpipe: enable primitive restart
    • +
    • docs: added GL_NV_primitive_restart extension
    • +
    • Merge branch 'primitive-restart-cleanup'
    • +
    • winsys/xlib: formatting fixes
    • +
    • winsys/xlib: use Bool type for shm field
    • +
    • winsys/xlib: fix up allocation/dealloction of XImage
    • +
    • winsys/xlib: rename xm->xlib
    • +
    • galahad: silence warnings
    • +
    • mesa: move declaration before code
    • +
    • docs: updated GL3 status for primitive restart
    • +
    • mesa: 80-column wrapping
    • +
    • mesa: simplify fbo format checking code
    • +
    • mesa: split up the image.c file
    • +
    • mesa: add pixel packing for unscaled integer types
    • +
    • mesa: _mesa_ClearColorIuiEXT() and _mesa_ClearColorIiEXT()
    • +
    • mesa: _mesa_is_format_integer() function
    • +
    • mesa: minor reformatting, clean-ups
    • +
    • mesa: added _mesa_is_fragment_shader_active() helper
    • +
    • mesa: new glDrawPixels error check for integer formats
    • +
    • softpipe: added some texture sample debug code (disabled)
    • +
    • mesa: added new gl_extensions::EXT_gpu_shader4 field
    • +
    • mesa: added new gl_framebuffer::_IntegerColor field
    • +
    • mesa: added glGet query for GL_RGBA_INTEGER_MODE_EXT
    • +
    • mesa: compute _IntegerColor field in _mesa_test_framebuffer_completeness()
    • +
    • mesa: added cases for GL_EXT_texture_integer formats
    • +
    • mesa: added cases for GL_EXT_texture_integer
    • +
    • st/mesa: add format selection for signed/unsigned integer formats
    • +
    • mesa: simplify target_can_be_compressed() function
    • +
    • glapi: GL_EXT_texture_integer API
    • +
    • glapi: include/build EXT_texture_integer.xml
    • +
    • mesa: regenerated API files for GL_EXT_texture_integer
    • +
    • mesa: plug in GL_EXT_texture_integer functions
    • +
    • mesa: display list support for GL_EXT_texture_integer
    • +
    • st/mesa: be smarter choosing texture format for glDrawPixels()
    • +
    • softpipe: remove >32bpp color restriction
    • +
    • mesa: silence enum comparison warning
    • +
    • mesa: fix uninitialized var warning
    • +
    • xlib: silence unused var warning
    • +
    • util: use pointer_to_func() to silence warning
    • +
    • rtasm: use pointer_to_func() to silence warning
    • +
    • translate: use function typedefs, casts to silence warnings
    • +
    • translate: remove unused prototypes
    • +
    • mesa: additional glReadPixels error checks for GL_EXT_texture_integer
    • +
    • mesa: additional switch cases for GL_EXT_texture_integer
    • +
    • mesa: additional teximage error checks for GL_EXT_texture_integer
    • +
    • mesa: do integer FB / shader validation check in _mesa_valid_to_render()
    • +
    • mesa: call _mesa_valid_to_render() in glDrawPixels, glCopyPixels, glBitmap
    • +
    • mesa: remove the unused _mesa_is_fragment_shader_active() function
    • +
    • mesa: fix bug in _mesa_is_format_integer()
    • +
    • mesa: rename function to _mesa_is_format_integer_color()
    • +
    • mesa: remove 'normalized' parameter from _mesa_VertexAttribIPointer()
    • +
    • vbo: re-indent file
    • +
    • glapi: xml spec file for GL_EXT_gpu_shader4
    • +
    • glapi: include EXT_gpu_shader4.xml
    • +
    • glapi: regenerated API files
    • +
    • mesa: plug in stubs for glBindFragDataLocation(), glGetFragDataLocation()
    • +
    • mesa: add glGetUniformuiv(), plug in uint glUniform funcs
    • +
    • mesa: plug in more GL_EXT_gpu_shader4 functions
    • +
    • mesa: add new GLvertexformat entries for integer-valued attributes
    • +
    • mesa: implement integer-valued vertex attribute functions
    • +
    • mesa: add gl_client_array::Integer field and related vertex array state code
    • +
    • mesa: consolidate glVertex/Color/etcPointer() code
    • +
    • mesa: state/queries for GL_MIN/MAX_PROGRAM_TEXEL_OFFSET_EXT
    • +
    • mesa: glArrayElement support for integer-valued arrays
    • +
    • mesa: clean-up array element code
    • +
    • mesa: add extension table entry for GL_EXT_gpu_shader4
    • +
    • mesa: remove obsolete comment
    • +
    • mesa: fix incorrect type in _mesa_texstore_rgba_int16()
    • +
    • mesa: fix integer cases in _mesa_is_legal_format_and_type()
    • +
    • mesa: add const qualifier to _mesa_is_legal_format_and_type()
    • +
    • mesa: additional integer formats in _mesa_bytes_per_pixel()
    • +
    • mesa: pixel transfer ops do not apply to integer-valued textures
    • +
    • mesa: remove dead code
    • +
    • osmesa: fix renderbuffer memleak in OSMesaMakeCurrent()
    • +
    • mesa: use GLubyte for edge flag arrays
    • +
    • mesa: move the gl_config struct declaration
    • +
    • dri/util: add a bunch of comments
    • +
    • mesa: remove always-false conditional in check_compatible()
    • +
    • mesa: fix aux/accum comment and error message mixups
    • +
    • llvmpipe: assign context's frag shader pointer before using it
    • +
    • llvmpipe: add a cast
    • +
    • mesa: silence new warnings in texobj.c
    • +
    • egl/gdi: fix typo: xsurf->gsurf
    • +
    • mesa: code to unpack RGBA as uints
    • +
    • gallivm: implement scatter stores into temp register file
    • +
    • gallivm: add some LLVM var labels
    • +
    • gallivm: added debug code to dump temp registers
    • +
    • gallivm: add pixel offsets in scatter stores
    • +
    • gallivm: added lp_elem_type()
    • +
    • gallivm: implement execution mask for scatter stores
    • +
    • tgsi: remove unused function
    • +
    • llvmpipe: added some debug assertions, but disabled
    • +
    • gallivm: alloca() was called too often for temporary arrays
    • +
    • gallivm: add const qualifiers, fix comment string
    • +
    • softpipe: disable vertex texturing with draw/llvm
    • +
    • mesa: consolidate pixel packing/unpacking code
    • +
    • mesa: rename vars in pixel pack/unpack code
    • +
    • mesa: implement uint texstore code
    • +
    • mesa: remove stray GL_FLOAT case in _mesa_is_legal_format_and_type()
    • +
    • mesa: make fixed-pt and byte-valued arrays a runtime feature
    • +
    • softpipe: can't no-op depth test stage when occlusion query is enabled
    • +
    • mesa: no-op glBufferSubData() on size==0
    • +
    • mesa: #include mfeatures.h in enums.h
    • +
    • mesa: improve error message
    • +
    • mesa: add missing formats in _mesa_format_to_type_and_comps()
    • +
    • mesa: handle more pixel types in mipmap generation code
    • +
    • mesa: make glIsBuffer() return false for never bound buffers
    • +
    • mesa: fix glDeleteBuffers() regression
    • +
    • tdfx: s/Format/_BaseFormat/
    • +
    • mesa: consolidate assertions in teximage code
    • +
    • radeon: set gl_texture_image::TexFormat field in radeonSetTexBuffer2()
    • +
    • r600: set gl_texture_image::TexFormat field in r600SetTexBuffer2()
    • +
    • r200: set gl_texture_image::TexFormat field in r200SetTexBuffer2()
    • +
    • r300: set gl_texture_image::TexFormat field in r300SetTexBuffer2()
    • +
    • evergreen: set gl_texture_image::TexFormat field in evergreenSetTexBuffer()
    • +
    • st/mesa: fix glDrawPixels(depth/stencil) bugs
    • +
    • glsl: fix assorted MSVC warnings
    • +
    • mesa: add more work-arounds for acoshf(), asinhf(), atahf()
    • +
    • glsl: remove opt_constant_expression.cpp from SConscript
    • +
    • mesa: fix error messages and minor reindenting
    • +
    • mesa: whitespace cleanups
    • +
    • mesa: 80-column wrapping
    • +
    • mesa: reorder texture_error_check() params
    • +
    • mesa: minor clean-ups in context code
    • +
    • mesa: upgrade to glext.h version 66
    • +
    • mesa: pass gl_format to _mesa_init_teximage_fields()
    • +
    • mesa: fix error msg typo
    • +
    • glapi: rename GL3.xml to GL3x.xml as it covers all GL 3.x versions
    • +
    • mesa: hook up GL 3.x entrypoints
    • +
    • docs: update some GL 3.0 status
    • +
    • mesa: fix get_texture_dimensions() for texture array targets
    • +
    • swrast: init alpha value to 1.0 in opt_sample_rgb_2d()
    • +
    • glsl: fix off by one in register index assertion
    • +
    • glsl: use gl_register_file in a few places
    • +
    • mesa: rename, make _mesa_register_file_name() non-static
    • +
    • mesa: _mesa_valid_register_index() to validate register indexes
    • +
    • mesa: replace #defines with new gl_shader_type enum
    • +
    • mesa: use gl_shader_type enum
    • +
    • glsl: better handling of linker failures
    • +
    • glsl: start restoring some geometry shader code
    • +
    • mesa: add assertion and update comment in _mesa_format_image_size()
    • +
    • mesa: added _mesa_format_image_size64()
    • +
    • x11: remove test_proxy_teximage() function
    • +
    • st/mesa: fix mapping of zero-sized buffer objects
    • +
    • gallivm/llvmpipe: squash merge of the llvm-context branch
    • +
    • mesa: raise max texture sizes to 16K
    • +
    • softpipe: increase max texture size to 16K
    • +
    • mesa: replace large/MAX_WIDTH stack allocations with heap allocations
    • +
    • mesa: replace large/MAX_WIDTH stack allocations with heap allocations
    • +
    • swrast: avoid large stack allocations in blend code
    • +
    • swrast: avoid large stack allocations in tex combine code
    • +
    • st/mesa: avoid large stack allocations in readpixels code
    • +
    • mesa: replace more MAX_WIDTH stack allocations with heap allocations
    • +
    • gallivm/llvmpipe: remove lp_build_context::builder
    • +
    • gallivm: fix null builder pointers
    • +
    • mesa: fix GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME query
    • +
    • mesa: return GL_FRAMEBUFFER_DEFAULT as FBO attachment type
    • +
    • llvmpipe: fix broken stencil writemask
    • +
    • mesa: consolidate some compiler -D flags
    • +
    • swrast: allow GL_RG format in glDrawPixels()
    • +
    • swrast: fix indentation
    • +
    • swrast: accept GL_RG in glReadPixels()
    • +
    • swrast: restructure some glReadPixels() code
    • +
    • mesa: make glGet*(GL_NONE) generate GL_INVALID_ENUM
    • +
    • mesa: remove unneeded cast
    • +
    • mesa: update comments, remove dead code
    • +
    • st/mesa: new comment about updating state vars
    • +
    • mesa: add error margin to clip mask debug/check code
    • +
    • gallium/util: minor formatting fixes
    • +
    • mesa/llvm: use llvm-config --cppflags
    • +
    • st/mesa: fix mipmap generation bug
    • +
    • mesa: test for cube map completeness in glGenerateMipmap()
    • +
    • mesa: set gl_texture_object::_Complete=FALSE in incomplete()
    • +
    • mesa: consolidate glTexImage1/2/3D() code
    • +
    • mesa: simplify proxy texture code in texture_error_check()
    • +
    • mesa: consolidate the glTexSubImage1/2/3D() functions
    • +
    • mesa: consolidate glCopyTexImage1/2D() code
    • +
    • mesa: consolidate glCopyTexSubImage1/2/3D() functions
    • +
    • mesa: consolidate glCompressedTexImage1/2/3D() functions
    • +
    • mesa: make _mesa_test_proxy_teximage() easier to read
    • +
    • configure: use llvm-config --cppflags instead of --cflags
    • +
    • mesa: revamp error checking for compressed texture images
    • +
    • mesa: simplify target checking for TexImage functions
    • +
    • draw/llvm: don't flush in vs_llvm_delete()
    • +
    • tnl: Initialize gl_program_machine memory in run_vp.
    • +
    • tnl: a better way to initialize the gl_program_machine memory
    • +
    • mesa, st/mesa: disable GL_ARB_geometry_shader4
    • +
    • mesa/meta: fix broken assertion, rename stack depth var
    • +
    • glsl: new glsl_strtod() wrapper to fix decimal point interpretation
    • +
    • st/mesa: fix renderbuffer pointer check in st_Clear()
    • +
    + +

    Brian Rogers (1):

    +
      +
    • mesa: Add missing else in do_row_3D
    • +
    + +

    Chad Versace (25):

    +
      +
    • intel_extensions: Add ability to set GLSL version via environment
    • +
    • glsl: Add glsl_type::uvecN_type for N=2,3
    • +
    • glsl: Add lexer rules for uint and uvecN (N=2..4)
    • +
    • glsl: Changes in generated file glsl_lexer.cpp
    • +
    • glsl: Add lexer rules for << and >> in GLSL 1.30
    • +
    • glsl: Change generated file glsl_lexer.cpp
    • +
    • glsl: Implement ast-to-hir for binary shifts in GLSL 1.30
    • +
    • glsl: Implement constant expr evaluation for bitwise-not
    • +
    • glsl: Implement constant expr evaluation for bit-shift ops
    • +
    • glsl: Implement constant expr evaluation for bitwise logic ops
    • +
    • glsl: Fix ir validation for bit logic ops
    • +
    • glsl: Define shift_result_type() in ast_to_hir.cpp
    • +
    • glsl: Implement ast-to-hir for bit-shift-assignment
    • +
    • glsl: Define bit_logic_result_type() in ast_to_hir.cpp
    • +
    • glsl: Implement ast-to-hir for bit-logic ops
    • +
    • glsl: Fix lexer rule for ^=
    • +
    • glsl: Commit generated file glsl_lexer.cpp
    • +
    • glsl: Fix ast-to-hir for ARB_fragment_coord_conventions
    • +
    • mesa: Fix C++ includes in sampler.cpp
    • +
    • glsl: Fix ir_expression::constant_expression_value()
    • +
    • glsl: Fix erroneous cast in ast_jump_statement::hir()
    • +
    • glsl: Fix Doxygen tag file in recently renamed files
    • +
    • glsl: Improve usage message for glsl_compiler
    • +
    • glsl: Fix linker bug in cross_validate_globals()
    • +
    • glsl: In ast_to_hir, check sampler array indexing
    • +
    + +

    Chia-I Wu (149):

    +
      +
    • glapi: Fix build errors for ES.
    • +
    • glapi: Fix ES build errors again.
    • +
    • mesa: Update ES APIspec.xml.
    • +
    • st/xlib: Notify the context when the front/back buffers are swapped.
    • +
    • targets/egl: Use C++ compiler to link GL/ES state trackers.
    • +
    • libgl-xlib: Remove unused st_api_create_OpenGL.
    • +
    • st/egl: Split modeset code support to modeset.c.
    • +
    • st/egl: Rename kms backend to drm.
    • +
    • st/egl: s/kms/drm/ on the drm backend.
    • +
    • egl: Enable drm platform by default.
    • +
    • egl: Check extensions.
    • +
    • st/egl: Skip single-buffered configs in EGL.
    • +
    • mapi: Fix compiler warnings.
    • +
    • st/egl: Drop context argument from egl_g3d_get_egl_image.
    • +
    • targets/egl: Fix linking with libdrm.
    • +
    • st/vega: Fix version check in context creation.
    • +
    • egl: Use attribute names as the _EGLConfig member names.
    • +
    • egl: Access config attributes directly.
    • +
    • st/egl: Access _EGLConfig directly.
    • +
    • st/egl: Do not finish a fence that is NULL.
    • +
    • mesa: Remove unused vtxfmt_tmp.h.
    • +
    • egl_dri2: Drop the use of _egl[SG]etConfigKey.
    • +
    • egl_glx: Drop the use of [SG]ET_CONFIG_ATTRIB.
    • +
    • egl_glx: Fix borken driver.
    • +
    • egl: Move attributes in _EGLImage to _EGLImageAttribs.
    • +
    • egl: Parse image attributes with _eglParseImageAttribList.
    • +
    • egl: Move fallback routines to eglfallbacks.c.
    • +
    • egl: Drop dpy argument from the link functions.
    • +
    • egl: Minor changes to the _EGLConfig interface.
    • +
    • egl: Minor changes to the _EGLScreen interface.
    • +
    • egl: Fix _eglModeLookup.
    • +
    • st/egl: Fix native_mode refresh mode.
    • +
    • egl: Add reference count for resources.
    • +
    • egl: Use reference counting to replace IsLinked or IsBound.
    • +
    • egl: Fix a false negative check in _eglCheckMakeCurrent.
    • +
    • st/egl: Use resource reference count for egl_g3d_sync.
    • +
    • egl_dri2: Fix a typo that make glFlush be called at wrong time.
    • +
    • glapi: Do not use glapidispatch.h.
    • +
    • glapi: Move glapidispatch.h to core mesa.
    • +
    • glapi: Do not use glapioffsets.h.
    • +
    • glapi: Merge glapioffsets.h into glapidispath.h.
    • +
    • vbo: Use CALL_* macros.
    • +
    • mesa: Remove unnecessary glapitable.h includes.
    • +
    • autoconf: Better client API selection.
    • +
    • docs: Update egl and openvg docs.
    • +
    • autoconf: Update configuration info.
    • +
    • Merge branch 'glapi-reorg'
    • +
    • targets: Add missing quotes to Makefile.xorg.
    • +
    • autoconf: st/vega requires --enable-openvg.
    • +
    • st/mesa: Unreference the sampler view in st_bind_surface.
    • +
    • autoconf: Tidy configure output for EGL.
    • +
    • targets/egl: Fix a warning with --disable-opengl build.
    • +
    • egl: Rework _eglGetSearchPath.
    • +
    • mesa: Select FEATURE_remap_table when multiple APIs are enabled.
    • +
    • mesa: Allow contexts of different APIs to coexist.
    • +
    • egl: Set up the pthread key even TLS is used.
    • +
    • st/egl: Add native_surface::present callback.
    • +
    • st/egl: Use native_surface::present callback.
    • +
    • d3d1x: Use native_surface::present.
    • +
    • st/egl: Remove flush_frontbuffer and swap_buffers.
    • +
    • st/egl: Add support for swap interval and swap behavior.
    • +
    • st/egl: Add support for EGL_MATCH_NATIVE_PIXMAP.
    • +
    • st/egl: Add extern "C" wrapper to native.h.
    • +
    • st/egl: Add native_display_buffer interface.
    • +
    • st/egl: Use native_display_buffer for EGL_MESA_drm_image.
    • +
    • autoconf: Add --enable-gallium-egl.
    • +
    • docs: Update egl docs.
    • +
    • st/dri: Add support for surfaceless current contexts.
    • +
    • egl_dri2: Fix __DRI_DRI2 version 1 support.
    • +
    • st/vega: Do not wait NULL fences.
    • +
    • gallium: Add st_api::name.
    • +
    • gallium: Add st_context_iface::share to st_api.
    • +
    • st/wgl: Use st_context_iface::share for DrvShareLists.
    • +
    • st/glx: Replace MESA_VERSION_STRING by xmesa_get_name.
    • +
    • mesa: Clean up core.h.
    • +
    • scons: Define IN_DRI_DRIVER.
    • +
    • tgsi: Add STENCIL to text parser.
    • +
    • st/vega: vegaLookupSingle should validate the state.
    • +
    • st/vega: Set wrap_r for mask and blend samplers.
    • +
    • st/vega: Fix vgReadPixels with a subrectangle.
    • +
    • egl_dri2: Fix one context, multiple surfaces.
    • +
    • auxiliary: util_blit_pixels_tex should restore the viewport.
    • +
    • st/vega: Fix a crash with empty paths.
    • +
    • st/vega: Masks and surfaces should share orientation.
    • +
    • st/vega: No flipping in vg_prepare_blend_surface.
    • +
    • st/vega: Fix a typo in EXTENDED_BLENDER_OVER_FUNC.
    • +
    • llvmpipe: Fix build errors on x86.
    • +
    • st/vega: Overhaul renderer with renderer states.
    • +
    • st/vega: Add DRAWTEX renderer state.
    • +
    • st/vega: Add SCISSOR renderer state.
    • +
    • st/vega: Add CLEAR renderer state for vgClear.
    • +
    • st/vega: Add FILTER renderer state for image filtering.
    • +
    • st/vega: Use the renderer for vgMask.
    • +
    • st/vega: Add POLYGON_STENCIL and POLYGON_FILL renderer state.
    • +
    • st/vega: Delay fb state update to vg_validate_state.
    • +
    • st/vega: Use st_framebuffer for fb width/height.
    • +
    • st/vega: Move g3d states to renderer.
    • +
    • st/vega: Make shader_bind call into the renderer.
    • +
    • st/vega: vg_manager should care about only the color buffer.
    • +
    • st/vega: Clean up vg_context fields and functions.
    • +
    • st/vega: Clean up renderer fields and functions.
    • +
    • st/vega: vg_copy_texture and vg_copy_surface should share code.
    • +
    • st/vega: Get rid of renderer_copy_texture.
    • +
    • st/vega: Update to latest headers.
    • +
    • st/vega: Fix image sampler views for alpha-only formats.
    • +
    • st/vega: Make path_render and path_stroke take a matrix.
    • +
    • st/vega: Make image_draw take a matrix.
    • +
    • st/vega: Add primitive text support.
    • +
    • st/vega: Revive mask layer support.
    • +
    • st/vega: More flexible shader selection.
    • +
    • st/vega: Add color transformation support.
    • +
    • st/vega: Bump version to 1.1.
    • +
    • st/vega: Fix paint coordinates transformations.
    • +
    • st/vega: Fix negated logic in image_draw.
    • +
    • st/vega: Fix degenerate paints.
    • +
    • st/vega: Simplify radial gradient.
    • +
    • st/vega: Remove st_inlines.h.
    • +
    • st/vega: Delay blend texture creation until needed.
    • +
    • st/vega: Create drawing surface mask as needed.
    • +
    • st/vega: Initialize pipe states with renderer.
    • +
    • st/vega: Avoid unnecessary constant bufer upload.
    • +
    • st/vega: Destroy the pipe context with vg_context.
    • +
    • st/vega: polygon_array requires a deep free.
    • +
    • st/egl: Set pipe_resource::array_size to 1.
    • +
    • st/vega: Set pipe_resource::array_size to 1.
    • +
    • st/vega: Move vertex transformation to shader.
    • +
    • st/vega: Add a missing break.
    • +
    • st/vega: Add some comments to pipeline shaders.
    • +
    • st/vega: Refactor blend shaders.
    • +
    • st/vega: Move masking after blending.
    • +
    • st/vega: Add support for per-channel alpha.
    • +
    • st/vega: Blending should use premultiplied alpha.
    • +
    • st/vega: Fix VG_BLEND_MULTIPLY.
    • +
    • st/vega: Add blend shaders for all blend modes.
    • +
    • st/vega: Fix pipe blend state for various blend modes.
    • +
    • egl: _eglFilterArray should not allocate.
    • +
    • mapi: Rewrite mapi_abi.py to get rid of preprocessor magic.
    • +
    • vbo: Drop second ATTR macro.
    • +
    • vbo: Fix GLES2 glVertexAttrib.
    • +
    • mesa: Do not advertise GL_OES_texture_3D.
    • +
    • mesa: Fix GL_FIXED arrays.
    • +
    • mesa: Fix glTexCoordPointer with type GL_FIXED.
    • +
    • st/egl: Plug pbuffer leaks.
    • +
    • st/egl: Fix eglCopyBuffers.
    • +
    • st/egl: Assorted fixes for dri2_display_get_configs.
    • +
    • docs/egl: Update ../egl.html.
    • +
    • st/egl: Fix eglChooseConfig when configs is NULL.
    • +
    • docs: Add an example for EGL_DRIVERS_PATH.
    • +
    • autoconf: Fix --with-driver=xlib --enable-openvg.
    • +
    + +

    Chris Wilson (2):

    +
      +
    • i915g: Fix closure of full batch buffers
    • +
    • intel: Check for unsupported texture when finishing using as a render target
    • +
    + +

    Christoph Bumiller (80):

    +
      +
    • nv50: import new compiler
    • +
    • nouveau: update nouveau_class.h
    • +
    • nv50: introduce the big formats table
    • +
    • nv50: don't produce MOV immediate to output reg in store opt
    • +
    • nv50: change back accidentally swapped UNORM,SNORM vertex type
    • +
    • nv50: add/fix some license headers
    • +
    • nv50: simple reload elimination and local CSE
    • +
    • nv50: fix constant_operand opt mul by 2 case
    • +
    • nv50: permit usage of undefined TGSI TEMPs
    • +
    • nv50: add missing 2nd source for POW multiplication
    • +
    • nv50: add signed RGTC1 to format table, allow 2_10_10_10 for vbufs
    • +
    • nv50: fix for empty BBs
    • +
    • nv50: insert MOVs also for PHI sources from dominating block
    • +
    • nv50: explicitly set src type for SET ops
    • +
    • nv50: fixes for nested IFs
    • +
    • nv50: don't eliminate loads to dedicated values
    • +
    • nv50: fix constbuf validation
    • +
    • nv50: build proper phi functions in the first place
    • +
    • nv50: fix reg count
    • +
    • nv50: begin implementing loops
    • +
    • nv50: more constant folding
    • +
    • nv50: loops part 2
    • +
    • nv50: flatten simple IF/ELSE/ENDIF constructs
    • +
    • nv50: fix thinko in store to output reg possible check
    • +
    • nv50: generate JOINs for outermost IF clauses
    • +
    • nv50: more TGSI opcodes (SIN, SCS, ARL, RET, KILP)
    • +
    • nv50: fix PSIZ and PRIMID mapping
    • +
    • nv50: check dst compatibility in CSE
    • +
    • nv50: initialize edgeflag input index
    • +
    • nv50: emit predicate for interp
    • +
    • Merge remote branch 'origin/master' into nv50-compiler
    • +
    • nv50: DP2, fix ARL
    • +
    • nv50: yet another case we need a nop.exit
    • +
    • nv50: fix check for sprite/point coord enable
    • +
    • nv50: handle TEXTURE_SWIZZLE and GEOMETRY_SHADER4 caps
    • +
    • nv50: set the FragDepth output index
    • +
    • nv50: turn off verbose debug output by default
    • +
    • nv50: attempt at making more complicated loops work
    • +
    • nv50: SSG
    • +
    • nv50: make FrontFacing -1 or +1
    • +
    • nv50: re-add proper TEXBIAS sequence
    • +
    • nv50: make use of TGSI immediate type
    • +
    • nv50: must join SELECT inputs before MOV inputs
    • +
    • nv50: fix XPD, was negated
    • +
    • nv50: fix find_dom_frontier
    • +
    • nv50: fix build-predicate function
    • +
    • Merge remote branch 'origin/master' into nv50-compiler
    • +
    • nv50: load address register before using it, not after
    • +
    • nv50: save tgsi instructions
    • +
    • nv50: prepare for having multiple functions
    • +
    • nv50: don't parse again in tgsi_2_nc
    • +
    • nv50: use actual loads/stores if TEMPs are accessed indirectly
    • +
    • nv50: create value references with the right type
    • +
    • nv50: duplicate interps in load_proj_tex_coords
    • +
    • nv50: address regs are 16 bit
    • +
    • nv50: fix can_load check for 3rd source
    • +
    • nv50: reduce bb_reachable_by runtime from pot to linear
    • +
    • nv50: minor compiler fixes and cleanups
    • +
    • nv50: cannot move from local mem to output reg directly
    • +
    • nv50: newlines in shader bincode printing
    • +
    • nv50: match TEMP limit with nv50 ir builder
    • +
    • nv50: handle TGSI EXP and LOG again
    • +
    • nv50: check for immediates when turning MUL ADD into MAD
    • +
    • nv50: interp cannot write flags reg
    • +
    • nv50: MOV TEMP[0], -CONST[0] must be float32 negation
    • +
    • nv50: fix indirect CONST access with large or negative offsets
    • +
    • nv50: fix TXP depth comparison value
    • +
    • nv50: consider address register in reload elimination
    • +
    • nv50: improve and fix modifier folding optimization
    • +
    • nv50: put low limit on REG_ALLOC_TEMP and FP_RESULT_COUNT
    • +
    • Merge remote branch 'origin/nv50-compiler'
    • +
    • nv50: don't segfault on shaders with 0 instructions
    • +
    • nv50: get shader fixups/relocations into working state
    • +
    • nv50: add relocs for stack and local mem buffers
    • +
    • nv50: emit constbuf relocs before uploading constants
    • +
    • nv50: fix typo in fifo packet length limit
    • +
    • nv50: use formats table in nv50_surface.c
    • +
    • nv50: use CLEAR_BUFFERS for surface fills
    • +
    • nv50: fix/handle a few more PIPE_CAPs
    • +
    • nv50: fix GP state bind and validate
    • +
    + +

    Corbin Simpson (8):

    +
      +
    • r600g: Use align() instead of handrolled code.
    • +
    • r600g: Trivially deobfuscate r600_hw_states.
    • +
    • r600g: Deobfuscate and comment a few more functions in r600_hw_states.
    • +
    • r600g: Clean up some indentation and |= vs. | usage.
    • +
    • r600g: Fix false and true.
    • +
    • r600g: "tmp" is such a bad name for a texture.
    • +
    • r600g: Clean up PS setup.
    • +
    • r600g: Cleanup viewport floats.
    • +
    + +

    Daniel Lichtenberger (1):

    +
      +
    • radeon: fix potential segfault in renderbuffer update
    • +
    + +

    Daniel Vetter (21):

    +
      +
    • r200: revalidate after radeon_update_renderbuffers
    • +
    • i915g: rip out ->sw_tiled
    • +
    • i915g: s/hw_tiled/tiling
    • +
    • i915g: add pineview pci ids
    • +
    • i915g: kill RGBA/X formats
    • +
    • i915g: kill buf->map_gtt
    • +
    • i915g: kill idws->pool
    • +
    • i915g: drop alignment parameter from iws->buffer_create
    • +
    • i915g: add winsys function to create tiled buffers
    • +
    • i915g: switch to tiled allocations, kill set_fence
    • +
    • i915g: prepare winsys/batchbuffer for execbuf2
    • +
    • i915g: return tiling in iws->buffer_from_handle
    • +
    • i915g: implement unfenced color&depth buffer using tiling bits
    • +
    • i915g: implement unfenced relocs for textures using tiling bits
    • +
    • i915g: postpone mipmap/face offset calculation
    • +
    • i915g: don't pot-align stride for tiled buffers
    • +
    • i915g: enable X-tiling for textures
    • +
    • i915g: switch rendering to mipmapped textures to (x,y) offsets
    • +
    • i915g: enable x-tiling for render targets
    • +
    • i915g: assert(depth_surface->offset == 0)
    • +
    • i915g: track TODO items
    • +
    + +

    Dave Airlie (182):

    +
      +
    • r300g: fix buffer reuse issue caused by previous commit
    • +
    • r600g: pull r600_draw struct out into header
    • +
    • r600g: use index min/max + index buffer offset.
    • +
    • r600g: add vgt dma src defines
    • +
    • r600g: fixup texture state on evergreen.
    • +
    • r600g: fix texture bos and avoid doing depth blit on evergreen
    • +
    • r600g: hide radeon_ctx inside winsys.
    • +
    • r600g: attempt to abstract kernel bos from pipe driver.
    • +
    • r600g: move constant buffer creation behind winsys abstraction.
    • +
    • r600g: use malloc bufmgr for constant buffers
    • +
    • r600g: add support for kernel bo
    • +
    • r600g: add winsys bo caching.
    • +
    • r600g: add upload manager support.
    • +
    • r600g: fixup map flushing.
    • +
    • r600g: use calloc for ctx bo allocations
    • +
    • r600g: oops got the use_mem_constant the wrong way around.
    • +
    • r600g; add uses waterfall to asm cf for r6xx.
    • +
    • r600g: only emit uses waterfall on r6xx hw.
    • +
    • util/r300g: split the r300 index buffer modifier functions out to util
    • +
    • r600g: modify index buffers for sizes the hw can't deal with.
    • +
    • r600g: send correct surface base update for multi-cbufs
    • +
    • r600g: fix fbo-drawbuffers-maxtargets
    • +
    • r600g: clean up valgrind issues on maxtargets test.
    • +
    • r600g: drop debugging that snuck in
    • +
    • r600g: fix tiling support for ddx supplied buffers
    • +
    • r600g: add z16 to color setup
    • +
    • r600g: add color/texture support for more depth formats.
    • +
    • r600g: fix r700 cube map sizing.
    • +
    • r600g: fixup r700 CB_SHADER_CONTROL register.
    • +
    • r600g: add missing BC_INST wrapper for evergreen
    • +
    • r600g: only flush for the correct colorbuffer, not all of them.
    • +
    • r600g: deal with overflow of VTX/TEX CF clauses.
    • +
    • r600g: set back to correct codepaths.
    • +
    • r600g: fixup evergreen miptree setup.
    • +
    • r600g: fix eg texture borders.
    • +
    • r600g: fix typo in struct member name
    • +
    • r600g: cleanup some of the DB blit code
    • +
    • r600g: make stencil readback work
    • +
    • r600g: disable dirty handling on texture from depth code.
    • +
    • r600g: use floats instead of hex for blit vbo
    • +
    • r600g: fix depth readback on rv610 and other quirky variants.
    • +
    • r600g: fix typo in evergreen register list
    • +
    • u_blitter: add a custom blitter call passing a dsa cso
    • +
    • r600g: use blitter to do db->cb flushing.
    • +
    • r600g: fix warnings since last commit.
    • +
    • egl: fix build since 17eace581d25a626a7d75d9d1205d012cbb14a6e
    • +
    • r300g: fix point sprite coord.
    • +
    • r600g: add vert support for 16/16 and 16/16/16 floats.
    • +
    • r600g: add some more vertex format support.
    • +
    • r600g: some more vertex formats
    • +
    • r600g: fix draw-elements and draw-elements-base-vertex
    • +
    • r600g: drop index_offset parameter to index buffer translate.
    • +
    • r600g: fixup tex wrapping.
    • +
    • r600g: fixup VP->FP output->input routing.
    • +
    • r600g: fix typo in r700 alu emit
    • +
    • r600g: fixup sprite coord enable.
    • +
    • r600g: fix polygon mode
    • +
    • mesa/mipmap: fix warning since 1acadebd6270d3604b026842b8a21360968618a0
    • +
    • r600g: add eg poly mode code.
    • +
    • r600g: make index bias fix for evergreen
    • +
    • r600g: add eg db count control register.
    • +
    • r300g: fix glsl-fs-pointcoord
    • +
    • r600g: add evergreen texture resource properly.
    • +
    • r600g: fix db flush breaking config state
    • +
    • r600g: on evergreen the centroid isn't set in this register.
    • +
    • r600g: add back evergreen name.
    • +
    • r600g: add evergreen texture border support to new path
    • +
    • r600g: move radeon.h members around to add back map flushing.
    • +
    • r600g: add initial vertex translate support.
    • +
    • r600g: remove old assert from new codepath
    • +
    • Revert "r600g: add initial vertex translate support."
    • +
    • r600g: port r300g fix for X* formats in texformat code
    • +
    • r600g: add L8A8 unorm.
    • +
    • r600g: clean up some code from move to new paths.
    • +
    • r600g: return string for chip family
    • +
    • r600g: use Elements macro instead of manual sizeofs
    • +
    • r600g: fix evergreen depth flushing.
    • +
    • r600g: add winsys support for CTL constants.
    • +
    • r600g: drop depth quirk on evergreen
    • +
    • r600g: add reloc for evergreen color attrib
    • +
    • r600g: realign evergreen code with r600 code.
    • +
    • r600g: add assembler support for other vtx fetch fields.
    • +
    • r600g: fixup vertex format picking.
    • +
    • r600g: sync vertex/texture cache on resources on evergreen
    • +
    • r600g: add cb flushing for extra buffers + depth buffer on r600/evergreen
    • +
    • r600g: fix evergreen draw-buffers
    • +
    • r600g: flush SH cache on constant change on evergreen
    • +
    • r600g: only set the Z export if shader exports it.
    • +
    • r600g: setup basic loop consts on r600 + evergreen.
    • +
    • mesa/st: initial attempt at RG support for gallium drivers
    • +
    • r600g: break out of search for reloc bo after finding it.
    • +
    • r600g: the code to check whether a new vertex shader is needed was wrong
    • +
    • r600g: fix wwarning in bo_map function
    • +
    • r600g: TODO domain management
    • +
    • r600g: add bo fenced list.
    • +
    • pb: don't keep checking buffers after first busy
    • +
    • r600g: add bo busy backoff.
    • +
    • r600g: drop mman allocator
    • +
    • r600g: drop use_mem_constant.
    • +
    • r600g: avoid unneeded bo wait
    • +
    • pb: fix numDelayed accounting
    • +
    • r600g: add evergreen stencil support.
    • +
    • r600g: use format from the sampler view not from the texture.
    • +
    • r600g: fix Z export enable bits.
    • +
    • r600g: add some RG texture format support.
    • +
    • r600g: drop width/height per level storage.
    • +
    • r600g: fix input/output Z export mixup for evergreen.
    • +
    • r600g: evergreen has no request size bit in texture word4
    • +
    • r600g: enable vertex samplers.
    • +
    • r600g: add TXL opcode support.
    • +
    • r600g: don't run with scissors.
    • +
    • r600g: fix typo in vertex sampling on r600
    • +
    • gallium/tgsi: add support for stencil writes.
    • +
    • gallium/format: add support for X24S8 and S8X24 formats.
    • +
    • gallium/format: add X32_S8X24_USCALED format.
    • +
    • gallium/util: add S8 tile sampling support.
    • +
    • mesa: add support for FRAG_RESULT_STENCIL.
    • +
    • mesa: improve texstore for 8/24 formats and add texstore for S8.
    • +
    • softpipe: add support for shader stencil export capability
    • +
    • st/mesa: add option to choose a texture format that we won't render to.
    • +
    • st/mesa: use shader stencil export to accelerate shader drawpixels.
    • +
    • r600g: add support for S8, X24S8 and S8X24 sampler formats.
    • +
    • r600g: add shader stencil export support.
    • +
    • glsl: add support for shader stencil export
    • +
    • st/mesa: enable stencil shader export extension if supported
    • +
    • r600g: fix depth0 setting
    • +
    • r600g: fix scissor/cliprect confusion
    • +
    • r600g: store samplers/views across blit when we need to modify them
    • +
    • r600g: reduce size of context structure.
    • +
    • r600g: the vs/ps const arrays weren't actually being used.
    • +
    • r600g: add copy into tiled texture
    • +
    • r600g: split out miptree setup like r300g
    • +
    • r600g: use common texture object create function
    • +
    • r600g: rename pitch in texture to pitch_in_bytes
    • +
    • r600g: remove bpt and start using pitch_in_bytes/pixels.
    • +
    • r600g: fix transfer stride.
    • +
    • r600g: drop all use of unsigned long
    • +
    • r600g: use blitter for hw copy region
    • +
    • r600g: evergreen add stencil export bit
    • +
    • r600g: add missing eg reg definition
    • +
    • r600g: fix stencil export for evergreen harder
    • +
    • r600g: drop unused context members
    • +
    • r600g: only pick centroid coordinate when asked.
    • +
    • r600g: fixup pos/face ena/address properly
    • +
    • r600g: fixup typo in macro name
    • +
    • r600g: select linear interpolate if tgsi input requests it
    • +
    • r300g: clean up warning due to unknown cap.
    • +
    • tgsi: add scanner support for centroid inputs
    • +
    • r600g: evergreen interpolation support.
    • +
    • r600g: add evergreen ARL support.
    • +
    • r600g: switch to a common formats.h file since they are in different regs
    • +
    • r600g: add defines for tiling
    • +
    • r600g: get tiling info from kernel
    • +
    • r600g: set tiling bits in hw state
    • +
    • r600g: do proper tracking of views/samplers.
    • +
    • r600g: fix typo in tiling setup cb code.
    • +
    • r600g: depth needs to bound to ds
    • +
    • r600g: attempt to cleanup depth blit
    • +
    • r600g: fix transfer function for tiling.
    • +
    • r600g: retrieve tiling info from kernel for shared buffers.
    • +
    • r600g: all non-0 mipmap levels need to be w/h aligned to POT.
    • +
    • r600g: move to per-miplevel array mode.
    • +
    • r600g: start adding hooks for aligning width/height for tiles.
    • +
    • r600g: add r600 surface to store the aligned height.
    • +
    • r600g: introduce a per-driver resource flag for transfers.
    • +
    • r600g: add texture tiling alignment support.
    • +
    • r600g: add texture tiling enable under a debug option.
    • +
    • r600g: initial translate state support
    • +
    • r600g: start splitting out common code from eg/r600.
    • +
    • r600g: not fatal if we can't get tiling info from kernel
    • +
    • r600g: merge more of the common r600/evergreen state handling
    • +
    • r600g: drop more common state handling code
    • +
    • r600g: fix magic 0x1 ->flat shade ena
    • +
    • r600g: add assembler support for all the kcache fields.
    • +
    • gallium/noop: report GL 2.1
    • +
    • r600g: pick correct color swap for A8 fbos.
    • +
    • r300g/r600g: bump cache manager timeouts to 1s
    • +
    • r600g: it looks like r600 can handle dword offsets in the indices.
    • +
    • r300g: try and use all of vertex constant space
    • +
    • r300g: fixup rs690 tiling stride alignment calculations.
    • +
    • r600g: fix evergreen segfaults.
    • +
    • r600g: hack around property unknown issues.
    • +
    + +

    Eric Anholt (300):

    +
      +
    • glsl: Add definition of gl_TextureMatrix inverse/transpose builtins.
    • +
    • i965: Share the KIL_NV implementation between glsl and non-glsl.
    • +
    • i965: Also enable CC statistics when doing OQs.
    • +
    • i965: Track the windowizer's dispatch for kill pixel, promoted, and OQ
    • +
    • glsl: Rework assignments with write_masks to have LHS chan count match RHS.
    • +
    • glsl: Fix copy'n'wasted ir_noop_swizzle conditions.
    • +
    • ir_to_mesa: Only compare vector_elements present for any_nequal/all_equal
    • +
    • i965: Fix the vector/expression splitting for the write_mask change.
    • +
    • i965: When splitting vector variable assignment, ignore unset channels.
    • +
    • i965: Update expression splitting for the vector-result change to compares.
    • +
    • i965: Warning fix for vector result any_nequal/all_equal change.
    • +
    • mesa: Remove the non-required ARB_imaging extension.
    • +
    • mesa: Remove EXT_histogram.
    • +
    • mesa: Remove SGI_color_table.
    • +
    • mesa: Remove SGI_color_matrix.
    • +
    • mesa: Remove EXT_convolution.
    • +
    • intel: Remove disabled stencil drawpixels acceleration.
    • +
    • intel: Remove unnecessary minimum pitch alignment to 32 bytes.
    • +
    • intel: Replace my intel_texture_bitmap code with _mesa_meta_Bitmap.
    • +
    • radeon: Remove copied minimum pitch alignment code.
    • +
    • unichrome: Mostly revert my convolution removal changes.
    • +
    • intel: Remove dead intelIsTextureResident().
    • +
    • i915: Remove a dead if (0) block.
    • +
    • intel: Dead comment removal.
    • +
    • intel: Corresponding FinishRenderTexture debug to BeginRenderTexture.
    • +
    • i965: Add support for rendering to SARGB8 FBOs.
    • +
    • intel: Fix segfault on INTEL_DEBUG=fbo with unsupported framebuffers.
    • +
    • intel: Add fallback debug to glGenerateMipmap.
    • +
    • intel: More reverting of the sw fallback for depth texture border color.
    • +
    • intel: Improve some of the miptree debugging.
    • +
    • mesa: Fix type typo in glGenerateMipmap handling of GL_UNSIGNED_INT data.
    • +
    • glsl: Fix broadcast_index of lower_variable_index_to_cond_assign.
    • +
    • glsl: Add validation that a swizzle only references valid channels.
    • +
    • i965: Fix up writemasked assignments in the new FS.
    • +
    • i965: Remove swizzling of assignment to vector-splitting single-channel LHS.
    • +
    • i965: Handle all_equal/any_nequal in the new FS.
    • +
    • i965: Fix vector splitting RHS channel selection with sparse writemasks.
    • +
    • i965: Add support for dFdx()/dFdy() to the FS backend.
    • +
    • i965: Add support for attribute interpolation on Sandybridge.
    • +
    • i965: Set up inputs to the fragment shader according to FP InputsRead.
    • +
    • i965: Add support for POW in gen6 FS.
    • +
    • i965: Fix negation in the new FS backend.
    • +
    • i965: Actually track the "if" depth in loop in the new FS backend.
    • +
    • i965: Apply the same set of lowering passes to new FS as to Mesa IR.
    • +
    • i965: Fix valgrind complaint about base_ir for new FS debugging.
    • +
    • i965: Fix up the FS backend for the variable array indexing pass.
    • +
    • i965: Set the variable type when dereferencing an array.
    • +
    • i965: Add support for dereferencing structs to the new FS backend.
    • +
    • i965: Add support for struct, array, and matrix uniforms to FS backend.
    • +
    • i965: Fix all non-snb regression in the snb attribute interpolation commit.
    • +
    • i965: Fix up part of my Sandybridge attributes support patch.
    • +
    • i965: Add support for gl_FrontFacing to the new FS backend.
    • +
    • i965: Subtract instead of adding when computing y delta in new FS backend.
    • +
    • mesa: Pull ir_to_mesa's sampler number fetcher out to shared code.
    • +
    • i965: Set up sampler numbers in the FS backend.
    • +
    • i965: Add support for non-color render target write data to new FS backend.
    • +
    • i965: Add support for MRT to the new FS backend.
    • +
    • i965: Add support for ir_loop counters to the new FS backend.
    • +
    • i965: Add support for ARB_fragment_coord_conventions to the new FS backend.
    • +
    • glsl: Also update implicit sizes of varyings at link time.
    • +
    • i965: Do interpolation for varying matrices and arrays in the FS backend.
    • +
    • i965: Don't try to emit interpolation for unused varying slots.
    • +
    • i965: Fix array indexing of arrays of matrices.
    • +
    • i965: Clean up obsolete FINISHME comment.
    • +
    • mesa: Move the list of builtin uniform info from ir_to_mesa to shared code.
    • +
    • i965: Add support for builtin uniforms to the new FS backend.
    • +
    • i965: Fix use of undefined mem_ctx in vector splitting.
    • +
    • i956: Make new FS discard do its work in a temp, not the null reg!
    • +
    • i965: Clean up the virtual GRF handling.
    • +
    • ra: First cut at a graph-coloring register allocator for mesa.
    • +
    • i965: First cut at register allocation using graph coloring.
    • +
    • i965: Add live interval analysis and hook it up to the register allocator.
    • +
    • i965: Remove my "safety counter" code from loops.
    • +
    • i965: Fix whole-structure/array assignment in new FS.
    • +
    • mesa: Don't reference a W component in setting up a vec3 uniform component.
    • +
    • i965: Fix new FS handling of builtin uniforms with packed scalars in structs.
    • +
    • glsl: Add a lowering pass for texture projection.
    • +
    • i965: Use the lowering pass for texture projection.
    • +
    • i965: Split the gen4 and gen5 sampler handling apart.
    • +
    • i965: Add gen6 attribute interpolation to new FS backend.
    • +
    • i965: Fix the gen6 jump size for BREAK/CONT in new FS.
    • +
    • i965: Also increment attribute location when skipping unused slots.
    • +
    • i965: Pre-gen6, map VS outputs (not FS inputs) to URB setup in the new FS.
    • +
    • i965: Add real support for pre-gen5 texture sampling to the new FS.
    • +
    • i965: Fix up copy'n'pasteo from moving coordinate setup around for gen4.
    • +
    • i965: Restore the forcing of aligned pairs for delta_xy on chips with PLN.
    • +
    • i965: When producing a single channel swizzle, don't make a temporary.
    • +
    • i965: Add a sanity check for register allocation sizes.
    • +
    • i965: Fix off-by-ones in handling the last members of register classes.
    • +
    • i965: Don't try to emit code if we failed register allocation.
    • +
    • i965: Add support for EXT_texture_swizzle to the new FS backend.
    • +
    • i965: Set up swizzling of shadow compare results for GL_DEPTH_TEXTURE_MODE.
    • +
    • i965: Fix glean/texSwizzle regression in previous commit.
    • +
    • i965: Be more conservative on live interval calculation.
    • +
    • i965: Add trivial dead code elimination in the new FS backend.
    • +
    • i965: Add initial folding of constants into operand immediate slots.
    • +
    • i965: In disasm, gen6 fb writes don't put msg reg # in destreg_conditionalmod.
    • +
    • i965: Add support for gen6 FB writes to the new FS.
    • +
    • i965: Enable the constant propagation code.
    • +
    • i965: Also do constant propagation for the second operand of CMP.
    • +
    • i965: Add back gen6 headerless FB writes to the new FS backend.
    • +
    • i965: Gen6 no longer has the IFF instruction; always use IF.
    • +
    • i965: Fix up IF/ELSE/ENDIF for gen6.
    • +
    • i965: Fix botch in the header_present case in the new FS.
    • +
    • i965: Add some clarification of the WECtrl field.
    • +
    • i965: Don't do 1/w multiplication in new FS for gen6
    • +
    • i965: Gen6's sampler messages are the same as Ironlake.
    • +
    • i965: Refactor gl_FrontFacing setup out of general variable setup.
    • +
    • i965: Add support for gl_FrontFacing on gen6.
    • +
    • i965: Don't assume that WPOS is always provided on gen6 in the new FS.
    • +
    • i965: Fix gen6 pointsize handling to match pre-gen6.
    • +
    • i965: Disable emitting if () statements on gen6 until we really fix them.
    • +
    • i965: Normalize cubemap coordinates like is done in the Mesa IR path.
    • +
    • mesa: Simplify a bit of _mesa_add_state_reference using memcmp.
    • +
    • i965: Drop the check for duplicate _mesa_add_state_reference.
    • +
    • i965: Drop the check for YUV constants in the param list.
    • +
    • i965: Handle swizzles in the addition of YUV texture constants.
    • +
    • i965: Fix gen6 WM push constants updates.
    • +
    • i965: Fix new FS gen6 interpolation for sparsely-populated arrays.
    • +
    • i965: Enable attribute swizzling (repositioning) in the gen6 SF.
    • +
    • i965: Add register coalescing to the new FS backend.
    • +
    • i965: Split FS_OPCODE_DISCARD into two steps.
    • +
    • i965: Reduce register interference checks for changed FS_OPCODE_DISCARD.
    • +
    • i965: Move FS backend structures to a header.
    • +
    • i965: Give the math opcodes information on base mrf/mrf len.
    • +
    • i965: Give the FB write and texture opcodes the info on base MRF, like math.
    • +
    • i965: Compute to MRF in the new FS backend.
    • +
    • i965: Don't consider gen6 math instructions to write to MRFs.
    • +
    • i965: Add a couple of checks for gen6 math instruction limits.
    • +
    • i965: Don't compute-to-MRF in gen6 math instructions.
    • +
    • i965: Expand uniform args to gen6 math to full registers to get hstride == 1.
    • +
    • i965: Don't compute-to-MRF in gen6 VS math.
    • +
    • i965: Fix gen6 pixel_[xy] setup to avoid mixing int and float src operands.
    • +
    • i965: Always use the new FS backend on gen6.
    • +
    • i965: Fix missing "break;" in i2b/f2b, and missing AND of CMP result.
    • +
    • intel: Allow CopyTexSubImage to InternalFormat 3/4 textures, like RGB/RGBA.
    • +
    • i965: Don't rebase the index buffer to min 0 if any arrays are in VBOs.
    • +
    • i965: Add support for rescaling GL_TEXTURE_RECTANGLE coords to new FS.
    • +
    • i965: Set class_sizes[] for the aligned reg pair class.
    • +
    • i965: Update the live interval when coalescing regs.
    • +
    • i965: Add a pass to the FS to split virtual GRFs to float channels.
    • +
    • i965: Add a function for handling the move of boolean values to flag regs.
    • +
    • i965: Add peepholing of conditional mod generation from expressions.
    • +
    • i965: Enable the new FS backend on pre-gen6 as well.
    • +
    • i965: Fix texturing on pre-gen5.
    • +
    • i965: Set the type of the null register to fix gen6 FS comparisons.
    • +
    • i965: Disable the debug printf I added for FS disasm.
    • +
    • i965: Fix a weirdness in NOT handling.
    • +
    • i965: Fix assertion failure on gen6 BufferSubData to busy BO.
    • +
    • i965: Assert out on gen6 VS constant buffer reads that hang the GPU for now.
    • +
    • i965: Fix scissor-offscreen on gen6 like we did pre-gen6.
    • +
    • i965: Avoid blits in BufferCopySubdata on gen6.
    • +
    • i965: Tell the shader compiler when we expect depth writes for gen6.
    • +
    • i965: Remove the gen6 emit_mi_flushes I sprinkled around the driver.
    • +
    • i965: Disable thread dispatch when the FS doesn't do any work.
    • +
    • i965: Add EU emit support for gen6's new IF instruction with comparison.
    • +
    • i965: Set the source operand types for gen6 if/else/endif to integer.
    • +
    • i965: Use the new style of IF statement with embedded comparison on gen6.
    • +
    • i965: Split register allocation out of the ever-growing brw_fs.cpp.
    • +
    • i965: Fix gl_FrontFacing emit on pre-gen6.
    • +
    • i965: Add support for register spilling.
    • +
    • i965: Don't emit register spill offsets directly into g0.
    • +
    • i965: Correct scratch space allocation.
    • +
    • i965: Be more aggressive in tracking live/dead intervals within loops.
    • +
    • i965: Move the FS disasm/annotation printout to codegen time.
    • +
    • i965: Add support for pull constants to the new FS backend.
    • +
    • i965: Add EU code for dword scattered reads (constant buffer array indexing).
    • +
    • i965: Clarify an XXX comment in FB writes with real info.
    • +
    • i965: Use SENDC on the first render target write on gen6.
    • +
    • i965: Clear some undefined fields of g0 when using them for gen6 FB writes.
    • +
    • i965: Add disasm for the flag register.
    • +
    • i965: Add support for discard instructions on gen6.
    • +
    • i965: Handle new ir_unop_round_even in channel expression splitting.
    • +
    • i965: Fix typo in comment about state flags.
    • +
    • i965: Set up the constant buffer on gen6 when it's needed.
    • +
    • i965: Add support for constant buffer loads on gen6.
    • +
    • i965: Drop the eot argument to read messages, which can never be set.
    • +
    • i965: Fix VS URB entry sizing.
    • +
    • i965: Disable register spilling on gen6 until it's fixed.
    • +
    • i965: Make FS uniforms be the actual type of the uniform at upload time.
    • +
    • i965: Add user clip planes support to gen6.
    • +
    • i965: Update gen6 SF state when point state (sprite or attenuation) changes.
    • +
    • i965: Upload required gen6 VS push constants even when using pull constants.
    • +
    • i965: Update the gen6 stencil ref state when stencil state changes.
    • +
    • mesa: Make metaops use program refcounts instead of names.
    • +
    • mesa: Don't compute an unused texture completeness debug string.
    • +
    • intel: For batch, use GTT mapping instead of writing to a malloc and copying.
    • +
    • intel: Annotate debug printout checks with unlikely().
    • +
    • intel: Remove the magic unaligned memcpy code.
    • +
    • i965: Remove dead intel_structs.h file.
    • +
    • intel: Avoid taking logbase2 of several things that we max.
    • +
    • intel: Remove duplicated teximage miptree to object miptree promotion.
    • +
    • intel: Remove leftover dri1 locking fields in the context.
    • +
    • mesa: Fix delayed state flagging for EXT_sso-related program changes.
    • +
    • intel: Fix the client-side swapbuffers throttling.
    • +
    • Revert "intel: Fix the client-side swapbuffers throttling."
    • +
    • i965: Allow OPCODE_SWZ to put immediates in the first arg.
    • +
    • i965: Add support for math on constants in gen6 brw_wm_glsl.c path.
    • +
    • i965: Work around strangeness in swizzling/masking of gen6 math.
    • +
    • i965: re-enable gen6 IF statements in the fragment shader.
    • +
    • glsl: Free the loop state context when we free the loop state.
    • +
    • i965: Fix gl_FragCoord inversion when drawing to an FBO.
    • +
    • i965: Shut up spurious gcc warning about GLSL_TYPE enums.
    • +
    • mesa: Don't spam the console in a debug build unless some spam is requested.
    • +
    • i965: Add state dumping for sampler state.
    • +
    • i965: Add dumping of the sampler default color.
    • +
    • i965: Fail on loops on gen6 for now until we write the EU emit code for it.
    • +
    • i965: Eliminate dead code more aggressively.
    • +
    • mesa: Include C++ files in the makedepend of DRI drivers.
    • +
    • i965: Fix compute_to_mrf to not move a MRF write up into another live range.
    • +
    • i965: Just use memset() to clear most members in FS constructors.
    • +
    • i965: Remove extra n at the end of every instruction in INTEL_DEBUG=wm.
    • +
    • i965: Fold constants into the second arg of BRW_SEL as well.
    • +
    • glsl: Add a helper function for determining if an rvalue could be a saturate.
    • +
    • i965: Recognize saturates and turn them into a saturated mov.
    • +
    • ir_to_mesa: Detect and emit MOV_SATs for saturate constructs.
    • +
    • i965: Improve compute-to-mrf.
    • +
    • i965: Remove duplicate MRF writes in the FS backend.
    • +
    • i965: Move gen4 blend constant color to the gen4 blending file.
    • +
    • i965: Don't upload polygon stipple unless required.
    • +
    • i965: Don't upload line stipple pattern unless we're stippling.
    • +
    • i965: Don't upload line smooth params unless we're line smoothing.
    • +
    • i965: Use the new embedded compare in SEL on gen6 for VS MIN and MAX opcodes.
    • +
    • i965: Fix type of gl_FragData[] dereference for FB write.
    • +
    • glsl: Make the symbol table's add_function just use the function's name.
    • +
    • glsl: Make the symbol table's add_variable just use the variable's name.
    • +
    • glsl: Add a helper constructor for expressions that works out result type.
    • +
    • glsl: Fix structure and array comparisions.
    • +
    • glsl: Quiet unreachable no-return-from-function warning.
    • +
    • i965: Dump the WHILE jump distance on gen6.
    • +
    • i965: Add support for gen6 DO/WHILE ISA emit.
    • +
    • i965: Add support for gen6 BREAK ISA emit.
    • +
    • i965: Add support for gen6 CONTINUE instruction emit.
    • +
    • i965: Enable IF statements in the VS.
    • +
    • i965: Add support for loops in the VS.
    • +
    • glsl: Mark the array access for whole-array comparisons.
    • +
    • glsl: Fix flipped return of has_value() for array constants.
    • +
    • mesa: Add getters for the rest of the supported draw buffers.
    • +
    • mesa: Add getters for ARB_copy_buffer's attachment points.
    • +
    • intel: Add an env var override to execute for a different GPU revision.
    • +
    • i965: Update gen6 WM state on compiled program change, not just FP change.
    • +
    • i965: Update gen6 SF state on fragment program change too.
    • +
    • i965: Fix compile warning about missing opcodes.
    • +
    • i965: Move payload reg setup to compile, not lookup time.
    • +
    • i965: Provide delta_xy reg to gen6 non-GLSL path PINTERP.
    • +
    • i965: Fix up 16-wide gen6 FB writes after various refactoring.
    • +
    • i965: Don't smash a group of coordinates doing gen6 16-wide sampler headers.
    • +
    • i965: Fix gen6 interpolation setup for 16-wide.
    • +
    • i965: Fix up gen6 samplers for their usage by brw_wm_emit.c
    • +
    • i965: Make the sampler's implied move on gen6 be a raw move.
    • +
    • i965: Align gen6 push constant size to dispatch width.
    • +
    • i965: Add support for the instruction compression bits on gen6.
    • +
    • i965: Nuke brw_wm_glsl.c.
    • +
    • i965: Remove INTEL_DEBUG=glsl_force now that there's no brw_wm_glsl.c
    • +
    • i965: Fix comment about gen6_wm_constants.
    • +
    • i965: Handle saturates on gen6 math instructions.
    • +
    • i965: Always hand the absolute value to RSQ.
    • +
    • i965: Add disabled debug code for dumping out the WM constant payload.
    • +
    • i965: Work around gen6 ignoring source modifiers on math instructions.
    • +
    • i965: Fix flipped value of the not-embedded-in-if on gen6.
    • +
    • i965: Don't try to store gen6 (float) blend constant color in bytes.
    • +
    • i965: Set up the color masking for the first drawbuffer on gen6.
    • +
    • i965: Set up the per-render-target blend state on gen6.
    • +
    • i965: Set the render target index in gen6 fixed-function/ARB_fp path.
    • +
    • i965: Use the new pixel mask location for gen6 ARB_fp KIL instructions.
    • +
    • i965: Drop KIL_NV from the ff/ARB_fp path since it was only used for GLSL.
    • +
    • i965: Drop push-mode reladdr constant loading and always use constant_map.
    • +
    • i965: Fix VS constants regression pre-gen6.
    • +
    • i965: Clean up VS constant buffer location setup.
    • +
    • i965: Set up the correct texture border color state struct for Ironlake.
    • +
    • i965: Set render_cache_read_write surface state bit on gen6 constant surfs.
    • +
    • i965: remove unused variable since brw_wm_glsl.c removal.
    • +
    • intel: Use plain R8 and RG8 for COMPRESSED_RED and COMPRESSED_RG.
    • +
    • intel: Set the swizzling for depth textures using the GL_RED depth mode.
    • +
    • glsl: Correct the marking of InputsRead/OutputsWritten on in/out matrices.
    • +
    • i965: Correct the dp_read message descriptor setup on g4x.
    • +
    • intel: Include stdbool so we can stop using GLboolean when we want to.
    • +
    • i965: Fix ARL to work on gen6.
    • +
    • i956: Fix the old FP path fragment position setup on gen6.
    • +
    • i965: Fix gl_FragCoord.z setup on gen6.
    • +
    • i965: Add support for using the BLT ring on gen6.
    • +
    • intel: Update renderbuffers before looking up CopyTexImage's read buffer.
    • +
    • intel: Drop commented intel_flush from copy_teximage.
    • +
    • intel: Try to sanely check that formats match for CopyTexImage.
    • +
    • intel: Support glCopyTexImage() from XRGB8888 to ARGB8888.
    • +
    • i965: Avoid using float type for raw moves, to work around SNB issue.
    • +
    • i965: Set the alternative floating point mode on gen6 VS and WM.
    • +
    • i965: Add support for gen6 constant-index constant loading.
    • +
    • i965: Add support for gen6 reladdr VS constant loading.
    • +
    • i965: Improve the hacks for ARB_fp scalar^scalar POW on gen6.
    • +
    • i965: Factor out the ir comparision to BRW_CONDITIONAL_* code.
    • +
    • i965: Fix regression in FS comparisons on original gen4 due to gen6 changes.
    • +
    • i965: Do lowering of array indexing of a vector in the FS.
    • +
    • intel: Only do frame throttling at glFlush time when using frontbuffer.
    • +
    • intel: Handle forced swrast clears before other clear bits.
    • +
    • intel: Use tri clears when we don't know how to blit clear the format.
    • +
    • intel: Add spans code for the ARB_texture_rg support.
    • +
    • intel: Add a couple of helper functions to reduce rb code duplication.
    • +
    • intel: Fix segfaults from trying to use _ColorDrawBuffers in FBO validation.
    • +
    • intel: When validating an FBO's combined depth/stencil, use the given FBO.
    • +
    + +

    Fabian Bieler (2):

    +
      +
    • r600g: set address of pop instructions to next instruction
    • +
    • glsl: fix lowering conditional returns in subroutines
    • +
    + +

    Francisco Jerez (51):

    +
      +
    • dri/nv04: Fix PGRAPH_ERRORs when running OA.
    • +
    • dri/nv04: Mipmapping fixes.
    • +
    • dri/nv04: Align SIFM transfer dimensions.
    • +
    • dri/nv04: Fix up color mask.
    • +
    • dri/nv04: Fix maximum texture size.
    • +
    • dri/nv04: Fix provoking vertex.
    • +
    • dri/nouveau: Update nouveau_class.h.
    • +
    • dri/nouveau: Add some more extensions.
    • +
    • dri/nouveau: Fix glRenderbufferStorage with DEPTH_COMPONENT as internal format.
    • +
    • dri/nouveau: Don't request a fake front unnecessarily.
    • +
    • dri/nouveau: Don't reemit the BO state in nouveau_state_emit().
    • +
    • dri/nouveau: Cleanup references to the old FBOs on glMakeCurrent().
    • +
    • meta: Don't bind the created texture object in init_temp_texture().
    • +
    • dri/nv10: Fix the CLAMP texture wrap mode.
    • +
    • dri/nv04: Use nvgl_wrap_mode().
    • +
    • dri/nouveau: Remove unnecessary assertion.
    • +
    • dri/nouveau: Cleanup more references to old FBOs and VBOs.
    • +
    • dri/nv10-nv20: Fix texturing in some cases after a base level change.
    • +
    • dri/nouveau: Fix software mipmap generation on 1x1 textures.
    • +
    • dri/nouveau: Have a smaller amount of larger scratch buffers.
    • +
    • dri/nouveau: Remove unnecessary flush.
    • +
    • dri/nv10: Use fast Z clears.
    • +
    • dri/nouveau: Minor cleanup.
    • +
    • dri/nv10: Fake fast Z clears for pre-nv17 cards.
    • +
    • dri/nouveau: Initialize tile_flags when allocating a render target.
    • +
    • nouveau: Get larger push buffers.
    • +
    • dri/nouveau: Force a "slow" Z clear if we're getting a new depth buffer.
    • +
    • dri/nv20: Clear with the 3D engine.
    • +
    • dri/nouveau: Don't assert(0) on compressed internal formats.
    • +
    • dri/nv25: Bind a hierarchical depth buffer.
    • +
    • dri/nouveau: Call _mesa_update_state() after framebuffer invalidation.
    • +
    • dri/nouveau: Honor the access flags in nouveau_bufferobj_map_range.
    • +
    • dri/nouveau: Tell the vbo module we want real hardware BOs.
    • +
    • dri/nouveau: Split out the scratch helpers to a separate file.
    • +
    • dri/nouveau: Avoid recursion in nouveau_bo_context_reset().
    • +
    • dri/nouveau: Use a macro to iterate over the bound vertex attributes.
    • +
    • dri/nouveau: Split out array handling to its own file.
    • +
    • dri/nouveau: Optimize VBO binding re-emission.
    • +
    • dri/nouveau: Keep small DYNAMIC_DRAW vertex buffers in system ram.
    • +
    • dri/nouveau: Pipeline glTexSubImage texture transfers.
    • +
    • dri/nouveau: Fix type promotion issue on 32bit platforms.
    • +
    • dri/nouveau: Validate the framebuffer state on read buffer changes.
    • +
    • dri/nouveau: Re-emit the BO state when coming back from a software fallback.
    • +
    • meta: Don't leak alpha function/reference value changes.
    • +
    • meta: Fix incorrect rendering of the bitmap alpha component.
    • +
    • vbo: Avoid unnecessary copy to/from current in vertex format upgrade.
    • +
    • meta: Don't try to disable cube maps if the driver doesn't expose the extension.
    • +
    • meta: Handle bitmaps with alpha test enabled.
    • +
    • dri/nouveau: Split hardware/software TNL instantiation more cleanly.
    • +
    • dri/nouveau: Fix typo.
    • +
    • dri/nouveau: Kill a bunch of ternary operators.
    • +
    + +

    Fredrik Höglund (2):

    +
      +
    • r600g: Fix texture sampling with swizzled coords
    • +
    • r600g: fix pow(0, 0) evaluating to NaN
    • +
    + +

    Guillermo S. Romero (1):

    +
      +
    • r300g: Do not use buf param before checking for NULL.
    • +
    + +

    Henri Verbeet (19):

    +
      +
    • r600g: Flush upload buffers before draws instead of before flushes.
    • +
    • r600g: Check for other references before checking for existing mappings in radeon_bo_pb_map_internal().
    • +
    • r600g: Remove a redundant flush in r600_texture_transfer_map().
    • +
    • r600g: Buffer object maps imply a wait.
    • +
    • r600g: Respect PB_USAGE_UNSYNCHRONIZED in radeon_bo_pb_map_internal().
    • +
    • Revert "r600g: Flush upload buffers before draws instead of before flushes."
    • +
    • r600g: fix exports_ps to export a number not a mask.
    • +
    • r600g: Mention AMD in the renderer string.
    • +
    • r600g: Cleanup the fenced_bo list in r600_context_fini().
    • +
    • r600g: Evergreen has two extra frac_bits for the sampler LOD state.
    • +
    • r600: Evergreen has two extra frac_bits for the sampler LOD state.
    • +
    • r600g: Add PIPE_FORMAT_L8A8_UNORM for Evergreen as well.
    • +
    • r600g: Swizzle vertex data only once.
    • +
    • r600g: Synchronize supported color formats between Evergreen and r600/r700.
    • +
    • r600g: Fix the PIPE_FORMAT_L8A8_UNORM color swaps.
    • +
    • r600g: Fix the PIPE_FORMAT_A8_UNORM color swap for Evergreen as well.
    • +
    • r600g: Cleanup block bo references in r600_context_fini().
    • +
    • r600g: Cleanup fetch shader resources in r600_pipe_shader_destroy().
    • +
    • st/mesa: Handle wrapped depth buffers in st_copy_texsubimage().
    • +
    + +

    Hui Qi Tay (10):

    +
      +
    • llvmpipe: minor changes in llvm coefficient calcs
    • +
    • draw: cliptest and viewport done in a single loop in vertex shader
    • +
    • draw: added viewport and cliptest flags
    • +
    • draw: sanitize llvm variant key
    • +
    • draw: corrections for w coordinate
    • +
    • draw: corrections to allow for different cliptest cases
    • +
    • llvmpipe: Moved draw pipeline twoside function to llvm setup code
    • +
    • llvmpipe: added llvm offset setup code
    • +
    • llvmpipe: clean up polygon offset function in lp setup code
    • +
    • llvmpipe: fix such that offset/twoside function only does in-place modification
    • +
    + +

    Ian Romanick (102):

    +
      +
    • glsl2: Refactor testing for whether a deref is of a matrix or array
    • +
    • glsl2: Add flags to enable variable index lowering
    • +
    • glsl: Add doxygen comments
    • +
    • EGL DRI2: Silence piles of 'unused variable' warnings
    • +
    • EGL DRI2: Silence 'missing initializer' warnings
    • +
    • egl_glx: Silence piles of 'unused variable' warnings
    • +
    • egl: Fix several 'comparison between signed and unsigned integer' warnings
    • +
    • dri: Ensure that DRI driver cpp files are in tarballs
    • +
    • mesa: Force GL_ARB_copy_buffer to always be enabled
    • +
    • mesa: Force GL_SGIS_generate_mipmap to always be enabled
    • +
    • Remove GL_MESA_packed_depth_stencil
    • +
    • Remove GL_EXT_cull_vertex
    • +
    • Regenerate files changed by previous commit
    • +
    • Remove unnescessary initializations of UpdateTexturePalette
    • +
    • ARB_texture_rg: Add GLX protocol support
    • +
    • ARB_texture_rg: Correct some errors in RED / RG internal format handling
    • +
    • ARB_texture_rg: Add GL_TEXTURE_{RED,GREEN}_SIZE query support
    • +
    • ARB_texture_rg: Add GL_RED as a valid GL_DEPTH_TEXTURE_MODE
    • +
    • ARB_texture_rg: Handle RED and RG the same as RGB for tex env
    • +
    • ARB_texture_rg: Add R8, R16, RG88, and RG1616 internal formats
    • +
    • ARB_texture_rg: Allow RED and RG textures as FBO color buffer attachments
    • +
    • mesa: Enable GL_ARB_texture_rg in software paths
    • +
    • i965: Enable GL_ARB_texture_rg
    • +
    • mesa: Add ARB_texture_compression_rgtc as an alias for EXT_texture_compression_rgtc
    • +
    • ARB_texture_rg: Add GL_COMPRESSED_{RED,RG} cases in _mesa_is_color_format
    • +
    • mesa: Fix misplaced #endif
    • +
    • mesa: Trivial correction to comment
    • +
    • rgtc: Detect RGTC formats as color formats and as compressed formats
    • +
    • docs: Add list of bugs fixed in 7.9
    • +
    • docs: Import 7.9 release notes from 7.9 branch.
    • +
    • docs: Import 7.8.x release notes from 7.8 branch.
    • +
    • docs: download.html does not need to be updated for each release
    • +
    • docs: Update mailing lines from sf.net to freedesktop.org
    • +
    • docs: Import news updates from 7.9 branch
    • +
    • docs: added news item for 7.9 release
    • +
    • glsl: Fail linking if assign_attribute_locations fails
    • +
    • glsl: Refactor 'layout' grammar to match GLSL 1.60 spec grammar
    • +
    • glsl: Slight refactor of error / warning checking for ARB_fcc layout
    • +
    • glsl: Clear type_qualifier using memset
    • +
    • glsl: Wrap ast_type_qualifier contents in a struct in a union
    • +
    • glsl: Regenerate files modified by previous commits
    • +
    • glcpp: Add the define for ARB_explicit_attrib_location when present
    • +
    • glcpp: Regenerate files changes by previous commit
    • +
    • glsl: Add parser support for GL_ARB_explicit_attrib_location layouts
    • +
    • glsl: Regenerate files changes by previous commit
    • +
    • glsl: Track explicit location in AST to IR translation
    • +
    • glsl: Add linker support for explicit attribute locations
    • +
    • main: Enable GL_ARB_explicit_attrib_location for swrast
    • +
    • intel: Enable GL_ARB_explicit_attrib_location
    • +
    • glsl: Remove const decoration from inlined function parameters
    • +
    • docs: skeleton for 7.10 release notes
    • +
    • docs: Update status of GL 3.x related extensions
    • +
    • mesa: Validate assembly shaders when GLSL shaders are used
    • +
    • glsl: Fix incorrect assertion
    • +
    • linker: Reject shaders that have unresolved function calls
    • +
    • mesa: Silence unused variable warning
    • +
    • mesa: Refactor validation of shader targets
    • +
    • mesa: Clean up two 'comparison between signed and unsigned' warnings
    • +
    • mesa: Clean up various 'unused parameter' warnings in shaderapi
    • +
    • glsl: Slightly change the semantic of _LinkedShaders
    • +
    • linker: Trivial indention fix
    • +
    • i965: Fix indentation after commit 3322fbaf
    • +
    • linker: Improve handling of unread/unwritten shader inputs/outputs
    • +
    • glapi: Add GL_EXT_separate_shader_objects
    • +
    • glapi: Commit files changed by previous commit
    • +
    • mesa: Add infrastructure to track GL_EXT_separate_shader_objects
    • +
    • mesa: Skeletal support for GL_EXT_separate_shader_objects
    • +
    • mesa: Add display list support for GL_EXT_separate_shader_objects functions
    • +
    • mesa: Track an ActiveProgram distinct from CurrentProgram
    • +
    • Track separate programs for each stage
    • +
    • swrast: Enable GL_EXT_separate_shader_objects in software paths
    • +
    • intel: Enable GL_EXT_separate_shader_objects in Intel drivers
    • +
    • docs: add GL_EXT_separate_shader_objects to release notes
    • +
    • glsl: Fix incorrect gl_type of sampler2DArray and sampler1DArrayShadow
    • +
    • ir_to_mesa: Refactor code for emitting DP instructions
    • +
    • mesa: Allow query of MAX_SAMPLES with EXT_framebuffer_multisample
    • +
    • glsl: Refactor is_vec_{zero,one} to be methods of ir_constant
    • +
    • glsl: Simplify generation of swizzle for vector constructors
    • +
    • glsl: Make is_zero and is_one virtual methods of ir_rvalue
    • +
    • ir_to_mesa: Generate smarter code for some conditional moves
    • +
    • glsl: Add ir_unop_sin_reduced and ir_unop_cos_reduced
    • +
    • glsl: Eliminate assumptions about size of ir_expression::operands
    • +
    • glsl: Add ir_rvalue::is_negative_one predicate
    • +
    • glsl: Add unary ir_expression constructor
    • +
    • glsl: Add ir_quadop_vector expression
    • +
    • glsl: Fix matrix constructors with vector parameters
    • +
    • i915: Disallow alpha, red, RG, and sRGB as render targets
    • +
    • glsl: Use M_LOG2E constant instead of calling log2
    • +
    • glsl: Lower ir_binop_pow to a sequence of EXP2 and LOG2
    • +
    • i915: Request that POW instructions be lowered
    • +
    • i915: Correctly generate unconditional KIL instructions
    • +
    • glsl: Ensure that equality comparisons don't return a NULL IR tree
    • +
    • i965: Correctly emit constants for aggregate types (array, matrix, struct)
    • +
    • glsl: Inherrit type of declared variable from initializer
    • +
    • linker: Ensure that unsized arrays have a size after linking
    • +
    • linker: Fix regressions caused by previous commit
    • +
    • glsl: Inherrit type of declared variable from initializer after processing assignment
    • +
    • linker: Allow built-in arrays to have different sizes between shader stages
    • +
    • ir_to_mesa: Don't generate swizzles for record derefs of non-scalar/vectors
    • +
    • Refresh autogenerated file builtin_function.cpp.
    • +
    • glsl: Allow less restrictive uses of sampler array indexing in GLSL <= 1.20
    • +
    • docs: Import 7.9.1 release notes from 7.9 branch
    • +
    + +

    Jakob Bornecrantz (27):

    +
      +
    • rbug: Cast opcode to corrent int size
    • +
    • rbug: Add function to get opcode name string
    • +
    • scons: Link against talloc in the Gallium DRI drivers
    • +
    • i915g: Link with wrapper sw winsys with scons
    • +
    • tgsi: Actually care what check_soa_dependencies says
    • +
    • tgsi: Fix missing test before check
    • +
    • llvmpipe: Move makefile include to before targets
    • +
    • wrapper: Fix spelling
    • +
    • wrapper: Add a way to dewrap a pipe screen without destroying it
    • +
    • egl: Remove unnecessary headers
    • +
    • target-helpers: Remove per target software wrapper check
    • +
    • graw: Tidy graw xlib scons file a bit
    • +
    • scons: Remove old pipebuffer SConscript
    • +
    • scons: Detabify
    • +
    • scons: Check for pkg-config before trying to use it
    • +
    • scons: Check for libdrm_[intel|radeon] as well
    • +
    • scons: Move dependancy checks to the main gallium scons file
    • +
    • scons: Unify state tracker SConscripts
    • +
    • galahad: Correct the name of the scons library
    • +
    • graw: Use inline sw helper instead of roll your own loader
    • +
    • libgl-xlib: Use sw helper instead of roll your own
    • +
    • libgl-xlib: Use inline debug helper instead of non-inline version
    • +
    • graw: Use inline debug helper instead of non-inline version
    • +
    • gallium: Remove redundant sw and debug target helpers
    • +
    • i915g: Improve debug printing for textures
    • +
    • i915g: Make sure that new vbo gets updated
    • +
    • st/mesa: Unbind all constant buffers
    • +
    + +

    Jerome Glisse (75):

    +
      +
    • r600g: alternative command stream building from context
    • +
    • r600g: move chip class to radeon common structure
    • +
    • r600g: use pipe context for flushing inside map
    • +
    • r600g: add back reference check when mapping buffer
    • +
    • r600g: directly allocate bo for user buffer
    • +
    • r600g: fix multi buffer rendering
    • +
    • r600g: occlusion query for new design
    • +
    • r600g: flush color buffer after draw command
    • +
    • r600g: disable shader rebuild optimization & account cb flush packet
    • +
    • r600g: fix multiple occlusion query on same id
    • +
    • r600g: initial evergreen support in new path
    • +
    • r600g: fix typo in evergreen define (resource are in x range)
    • +
    • r600g: move use_mem_constants flags for new designs structure alignment
    • +
    • r600g: evergreen fix for new design
    • +
    • r600g: fix compilation after change to evergreend.h
    • +
    • r600g: fixup some evergreen register definitions
    • +
    • r600g: fix evergreen new path
    • +
    • r600g: fix reg definition
    • +
    • r600g: fix evergreen new path
    • +
    • r600g: bring over fix from old path to new path
    • +
    • r600g: fix vertex resource & polygon offset
    • +
    • r600g: disable early cull optimization when occlusion query running
    • +
    • r600g: move around variables to share depth uncompression code
    • +
    • r600g: use depth decompression in new path
    • +
    • r600g: fix index buffer drawing
    • +
    • r600g: build packet header once
    • +
    • r600g: fix pointsprite & resource unbinding
    • +
    • r600g: fix routing btw vertex & pixel shader
    • +
    • r600g: fix occlusion query after change to block structure
    • +
    • r600g: use ptr for blit depth uncompress function
    • +
    • r600g: fix remaining piglit issue in new design
    • +
    • r600g: switch to new design
    • +
    • r600g: suspend/resume occlusion query around clear/copy
    • +
    • r600g: avoid rebuilding the vertex shader if no change to input format
    • +
    • r600g: use a hash table instead of group
    • +
    • r600g: delete old path
    • +
    • r600g: cleanup
    • +
    • r600g: more cleanup
    • +
    • r600g: use constant buffer instead of register for constant
    • +
    • r600g: fix constant & literal src splitting, also fix mplayer gl2 shader
    • +
    • evergreeng: avoid overlapping border color btw VS & PS
    • +
    • r600g: indentation fixes
    • +
    • r600g: rename radeon_ws_bo to r600_bo
    • +
    • r600g: allow r600_bo to be a sub allocation of a big bo
    • +
    • r600g: use r600_bo for relocation argument, simplify code
    • +
    • r600g: rename radeon_ws_bo to r600_bo
    • +
    • r600g: remove dead label & fix indentation
    • +
    • r600g: store reloc information in bo structure
    • +
    • r600g: improve bo flushing
    • +
    • r600g: simplify block relocation
    • +
    • r600g: userspace fence to avoid kernel call for testing bo busy status
    • +
    • r600g: avoid segfault due to unintialized list pointer
    • +
    • r600g: fix dirty state handling
    • +
    • r600g: allow driver to work without submitting cmd to GPU
    • +
    • gallium/noop: no operation gallium driver
    • +
    • r600g: code cleanup (indent, trailing space, empty line ...)
    • +
    • r600g: fix occlusion query on evergreen (avoid lockup)
    • +
    • r600g: add fetch shader capabilities
    • +
    • r600g: dump raw shader output for debugging
    • +
    • r600g: update polygon offset only when rasterizer or zbuffer change
    • +
    • r600g: indentation fix
    • +
    • r600g: more indentation fix + warning silencing + dead code removal
    • +
    • r600g: build fetch shader from vertex elements
    • +
    • r600g: avoid useless shader rebuild at draw call
    • +
    • r600g: remove useless flush map
    • +
    • r600g: remove dead code
    • +
    • r600g: fix userspace fence against lastest kernel
    • +
    • r600g: avoid using pb* helper we are loosing previous cpu cycle with it
    • +
    • r600g: specialized upload manager
    • +
    • r600g: indentation cleanup
    • +
    • r600g: fix bo size when creating bo from handle
    • +
    • r600g: fix segfault when translating vertex buffer
    • +
    • r600g: need to reference upload buffer as the might still live accross flush
    • +
    • r600g: properly unset vertex buffer
    • +
    • r600g: avoid segfault
    • +
    + +

    Joakim Sindholt (3):

    +
      +
    • util/u_blitter: fix leak
    • +
    • radeong: fix leaks
    • +
    • r300g: silence guard band cap errors
    • +
    + +

    Johann Rudloff (3):

    +
      +
    • radeon: Implement EGL_MESA_no_surface_extension
    • +
    • radeon: Implement __DRI_IMAGE and EGL_MESA_image_drm
    • +
    • radeon: Implement GL_OES_EGL_image
    • +
    + +

    John Doe (3):

    +
      +
    • r600g: misc cleanup
    • +
    • r600g: don't double count dirty block
    • +
    • r600g: keep a mapping around for each bo
    • +
    + +

    Jon TURNEY (1):

    +
      +
    • Ensure -L$(TOP)/$(LIB_DIR) appears in link line before any -L in $LDFLAGS
    • +
    + +

    José Fonseca (128):

    +
      +
    • gallivm: Fix address register swizzle.
    • +
    • gallivm: Start collecting bitwise arithmetic helpers in a new module.
    • +
    • gallivm: Clamp indirect register indices to file_max.
    • +
    • util: linearized sRGB values don't fit into 8bits
    • +
    • llvmpipe: Default to no threading on single processor systems.
    • +
    • tgsi: Don't ignore indirect registers in tgsi_check_soa_dependencies
    • +
    • llvmpipe: Describe how to profile llvmpipe.
    • +
    • llvmpipe: When failing free fs shader too.
    • +
    • util: Flush stdout on util_format.
    • +
    • gallivm: Add unorm support to lp_build_lerp()
    • +
    • llvmpipe: Special case complementary and identify blend factors in SoA.
    • +
    • llvmpipe: Make rgb/alpha bland func/factors match, when there is no alpha.
    • +
    • draw: Prevent clipped vertices overflow.
    • +
    • draw: Fullfil the new min_lod/max_lod/lod_bias/border_color dynamic state
    • +
    • gallivm: Fetch the lod from the dynamic state when min_lod == max_lod.
    • +
    • gallivm: Remove dead experimental code.
    • +
    • llvmpipe: Decouple sampler view and sampler state updates.
    • +
    • scons: New build= option, with support for checked builds.
    • +
    • scons: New build= option, with support for checked builds.
    • +
    • trace: Fix set_index_buffer and draw_vbo tracing.
    • +
    • python/retrace: Handle set_index_buffer and draw_vbo.
    • +
    • gallivm: Use SSE4.1's ROUNDSS/ROUNDSD for scalar rounding.
    • +
    • gallivm: More comprehensive border usage logic.
    • +
    • retrace: Handle clear_render_target and clear_depth_stencil.
    • +
    • llvmpipe: Dump a few missing shader key flags.
    • +
    • llvmpipe: Fix perspective interpolation for point sprites.
    • +
    • llvmpipe: Fix sprite coord perspective interpolation of Q.
    • +
    • gallivm: Take the type signedness in consideration in round/ceil/floor.
    • +
    • gallivm: Use a faster (and less accurate) log2 in lod computation.
    • +
    • gallivm: Fast implementation of iround(log2(x))
    • +
    • gallivm: Combined ifloor & fract helper.
    • +
    • gallivm: Only apply min/max_lod when necessary.
    • +
    • gallivm: Compute lod as integer whenever possible.
    • +
    • util: Cleanup util_pack_z_stencil and friends.
    • +
    • llvmpipe: Cleanup depth-stencil clears.
    • +
    • gallivm: Vectorize the rho computation.
    • +
    • gallivm: Do not do mipfiltering when magnifying.
    • +
    • gallivm: Simplify lp_build_mipmap_level_sizes' interface.
    • +
    • gallivm: Don't compute the second mipmap level when frac(lod) == 0
    • +
    • gallivm: Use lp_build_ifloor_fract for lod computation.
    • +
    • gallivm: Clamp mipmap level and zero mip weight simultaneously.
    • +
    • gallivm: Fix copy'n'paste typo in previous commit.
    • +
    • gallivm: Implement brilinear filtering.
    • +
    • gallivm: Use the wrappers for SSE pack intrinsics.
    • +
    • gallivm: Avoid control flow for two-sided stencil test.
    • +
    • gallivm: Warn when doing inefficient integer comparisons.
    • +
    • gallivm: Move into the as much of the second level code as possible.
    • +
    • llvmpipe: First minify the texture size, then broadcast.
    • +
    • gallivm: Help for combined extraction and broadcasting.
    • +
    • gallivm: Do size computations simultanously for all dimensions (AoS).
    • +
    • llvmpipe: Prevent z > 1.0
    • +
    • llvmpipe: Fix MSVC build. Enable the new SSE2 code on non SSE3 systems.
    • +
    • gallivm: Handle code have ret correctly.
    • +
    • util: Defined M_SQRT2 when not available.
    • +
    • gallivm: Less code duplication in log computation.
    • +
    • gallivm: Special bri-linear computation path for unmodified rho.
    • +
    • gallivm: Don't generate Phis for execution mask.
    • +
    • gallivm: Use varilables instead of Phis for cubemap selection.
    • +
    • gallivm: Remove support for Phi generation.
    • +
    • gallivm: Factor out the SI->FP texture size conversion for SoA path too
    • +
    • gallivm: Simplify if/then/else implementation.
    • +
    • gallivm: Cleanup the rest of the flow module.
    • +
    • gallivm: Fix a long standing bug with nested if-then-else emission.
    • +
    • gallivm: Allow to disable bri-linear filtering with GALLIVM_DEBUG=no_brilinear runtime option
    • +
    • gallivm: Use variables instead of Phis in loops.
    • +
    • gallivm: Pass texture coords derivates as scalars.
    • +
    • llvmpipe: Remove outdated comment about stencil testing.
    • +
    • gallivm: Eliminate unsigned integer arithmetic from texture coordinates.
    • +
    • gallium: Define C99 restrict keyword where absent.
    • +
    • tgsi: Export some names for some tgsi enums.
    • +
    • gallivm: More detailed analysis of tgsi shaders.
    • +
    • llvmpipe: Use lp_tgsi_info.
    • +
    • llvmpipe: Do not dispose the execution engine.
    • +
    • llvmpipe: Fix MSVC build.
    • +
    • llmvpipe: improve mm_mullo_epi32
    • +
    • gallivm: Name anonymous union.
    • +
    • llvmpipe: Unbreak Z32_FLOAT.
    • +
    • gallivm: More accurate float -> 24bit & 32bit unorm conversion.
    • +
    • llvmpipe: Generalize the x8z24 fast path to all depth formats.
    • +
    • llvmpipe: Fix depth-stencil regression.
    • +
    • llvmpipe: Ensure z_shift and z_width is initialized.
    • +
    • gallivm: Fix SoA cubemap derivative computation.
    • +
    • llvmpipe: Fix bad refactoring.
    • +
    • llvmpipe: Initialize bld ctx via lp_build_context_init instead of ad-hoc and broken code.
    • +
    • gallivm: Comment lp_build_insert_new_block().
    • +
    • gallivm: Add a note about SSE4.1's nearest mode rounding.
    • +
    • llvmpipe: Don't test rounding of x.5 numbers.
    • +
    • gallium: Avoid using __doc__ in python scripts.
    • +
    • gallivm: always enable LLVMAddInstructionCombiningPass()
    • +
    • gallivm: Remove the EMMS opcodes.
    • +
    • mesa: Fix windows build (uint -> GLuint).
    • +
    • scons: Revamp how to specify targets to build.
    • +
    • scons: Fix MinGW cross-compilation.
    • +
    • scons: Some pipe drivers are not portable for MSVC
    • +
    • scons: Restore x11 tool behavior for backwards compatability.
    • +
    • scons: Disable python state tracker when swig is not present.
    • +
    • r600g: List recently added files in SConscript.
    • +
    • scons: Add aliases for several pipe drivers.
    • +
    • scons: i915 can't build on MSVC either.
    • +
    • scons: Propagate installation targets.
    • +
    • xorg/vmwgfx: Add missing source file to SConscript.
    • +
    • st/xorg: Add missing n to error message.
    • +
    • st/xorg: Detect libkms with scons too.
    • +
    • xorg/vmwgfx: Link libkms when available.
    • +
    • r600g: Swap the util_blitter_destroy call order.
    • +
    • gallivm: Allocate TEMP/OUT arrays only once.
    • +
    • libgl-gdi: Allow to pick softpipe/llvmpipe on runtime.
    • +
    • scons: Use inline wrap helpers more consistently.
    • +
    • svga: Use consistent hexadecimal representation on debug output.
    • +
    • scons: Alias for svga
    • +
    • wgl: Stub WGL_ARB_pbuffer support.
    • +
    • wgl: More complete WGL_ARB_pbuffer support.
    • +
    • svga: Silence debug printf.
    • +
    • scons: Move MSVS_VERSION option to common module.
    • +
    • vega: Remove extraneous ;
    • +
    • retrace: Some fixes.
    • +
    • util: C++ safe.
    • +
    • wgl: Fix double free. Remove dead code.
    • +
    • util: Plug leaks in util_destroy_gen_mipmap.
    • +
    • util: __builtin_frame_address() doesn't work on mingw.
    • +
    • util: Don't try to use imagehlp on mingw.
    • +
    • wgl: Unreference the current framebuffer after the make_current call.
    • +
    • WIN32_THREADS -> WIN32
    • +
    • mapi: Hack to avoid vgCreateFont being generated as vgCreateFontA.
    • +
    • wgl: Fix visual's buffer_mask configuration.
    • +
    • mesa: Temporary hack to prevent stack overflow on windows
    • +
    • mesa: Bump the number of bits in the register index.
    • +
    • llvmpipe: Plug fence leaks.
    • +
    + +

    Julien Cristau (1):

    +
      +
    • Makefile: don't include the same files twice in the tarball
    • +
    + +

    Keith Whitwell (89):

    +
      +
    • llvmpipe: brackets around macro arg
    • +
    • llvmpipe: remove duplicate code
    • +
    • llvmpipe: return zero from floor_pot(zero)
    • +
    • gallivm: make lp_build_sample_nop public
    • +
    • llvmpipe: add LP_PERF flag to disable various aspects of rasterization
    • +
    • llvmpipe: add DEBUG_FS to dump variant information
    • +
    • llvmpipe: use llvm for attribute interpolant calculation
    • +
    • graw: add frag-face shader
    • +
    • llvmpipe: fix flatshading in new line code
    • +
    • draw: don't apply flatshading to clipped tris with <3 verts
    • +
    • llvmpipe: handle FACING interpolants in line and point setup
    • +
    • llvmpipe: handle up to 8 planes in triangle binner
    • +
    • llvmpipe: make debug_fs_variant respect variant->nr_samplers
    • +
    • gallivm: don't apply zero lod_bias
    • +
    • llvmpipe: fail gracefully on oom in scene creation
    • +
    • llvmpipe: avoid overflow in triangle culling
    • +
    • gallivm: special case conversion 4x4f to 1x16ub
    • +
    • gallivm: round rather than truncate in new 4x4f->1x16ub conversion path
    • +
    • llvmpipe: clean up setup_tri a little
    • +
    • llvmpipe: add rast_tri_4_16 for small lines and points
    • +
    • llvmpipe: fix off-by-one in tri_16
    • +
    • llvmpipe: defer attribute interpolation until after mask and ztest
    • +
    • llvmpipe: use alloca for fs color outputs
    • +
    • llvmpipe: store zero into all alloca'd values
    • +
    • llvmpipe: dump fragment shader ir and asm when LP_DEBUG=fs
    • +
    • gallivm: specialized x8z24 depthtest path
    • +
    • gallivm: prefer blendvb for integer arguments
    • +
    • gallivm: simpler uint8->float conversions
    • +
    • llvmpipe: try to be sensible about whether to branch after mask updates
    • +
    • llvmpipe: clean up shader pre/postamble, try to catch more early-z
    • +
    • llvmpipe: simplified SSE2 swz/unswz routines
    • +
    • llvmpipe: try to do more of rast_tri_3_16 with intrinsics
    • +
    • llvmpipe: add debug helpers for epi32 etc
    • +
    • llvmpipe: try to keep plane c values small
    • +
    • llvmpipe: fix typo in last commit
    • +
    • gallium: move sse intrinsics debug helpers to u_sse.h
    • +
    • r600g: add missing file to sconscript
    • +
    • gallivm: don't branch on KILLs near end of shader
    • +
    • Revert "llvmpipe: try to keep plane c values small"
    • +
    • llvmpipe: make sure intrinsics code is guarded with PIPE_ARCH_SSE
    • +
    • llvmpipe: don't try to emit non-existent color outputs
    • +
    • r600/drm: fix segfaults in winsys create failure path
    • +
    • r600g: emit hardware linewidth
    • +
    • r600g: handle absolute modifier in shader translator
    • +
    • llvmpipe: reintroduce SET_STATE binner command
    • +
    • llvmpipe: don't pass frontfacing as a float
    • +
    • llvmpipe: slightly shrink the size of a binned triangle
    • +
    • llvmpipe: don't store plane.ei value in binned data
    • +
    • gallium: move some intrinsics helpers to u_sse.h
    • +
    • llvmpipe: do plane calculations with intrinsics
    • +
    • llvmpipe: use aligned loads/stores for plane values
    • +
    • llvmpipe: fix non-sse build after recent changes
    • +
    • llvmpipe: check shader outputs are non-null before using
    • +
    • llvmpipe: validate color outputs against key->nr_cbufs
    • +
    • llvmpipe: clean up fields in draw_llvm_variant_key
    • +
    • llvmpipe: remove setup fallback path
    • +
    • llvmpipe: fail cleanly on malloc failure in lp_setup_alloc_triangle
    • +
    • Merge remote branch 'origin/master' into lp-setup-llvm
    • +
    • llvmpipe: remove unused file
    • +
    • llvmpipe: remove unused arg from jit_setup_tri function
    • +
    • Merge branch 'llvm-cliptest-viewport'
    • +
    • draw: make sure viewport gets updated in draw llvm shader
    • +
    • llvmpipe: turn off draw offset/twoside when we can handle it
    • +
    • llvmpipe: avoid generating tri_16 for tris which extend past tile bounds
    • +
    • llvmpipe: guard against NULL task->query pointer
    • +
    • st/mesa: unbind constant buffer when not in use
    • +
    • r600g: propagate usage flags in texture transfers
    • +
    • r600g: propogate resource usage flags to winsys, use to choose bo domains
    • +
    • r600g: use a buffer in GTT as intermediate on texture up and downloads
    • +
    • r600g: remove unused flink, domain fields from r600_resource
    • +
    • r600g: set hardware pixel centers according to gl_rasterization_rules
    • +
    • evergreeng: protect against null constant buffers
    • +
    • r600g: don't call debug_get_bool_option for tiling more than once
    • +
    • evergreeng: respect linewidth state, use integer widths only
    • +
    • evergreeng: set hardware pixelcenters according to gl_rasterization_rules
    • +
    • r600g: avoid recursion with staged uploads
    • +
    • r600g: attempt to turn on DXTn formats
    • +
    • r600g: translate ARR instruction
    • +
    • r600: fix my pessimism about PIPE_TRANSFER_x flags
    • +
    • ws/r600: match bo_busy shared/fence logic in bo_wait
    • +
    • r600g: guard experimental s3tc code with R600_ENABLE_S3TC
    • +
    • r600g: do not try to use staging resource for depth textures
    • +
    • r600g: enforce minimum stride on render target texture images
    • +
    • llvmpipe: fix up twoside after recent changes
    • +
    • llvmpipe: twoside for specular color also
    • +
    • Merge branch 'lp-offset-twoside'
    • +
    • llvmpipe: raise dirty flag on transfers to bound constbuf
    • +
    • llvmpipe: remove misleading debug string
    • +
    • llvmpipe: shortcircuit some calls to set_scene_state
    • +
    + +

    Kenneth Graunke (94):

    +
      +
    • glsl: Change from has_builtin_signature to has_user_signature.
    • +
    • glsl: Don't print blank (function ...) headers for built-ins.
    • +
    • glsl: Properly handle nested structure types.
    • +
    • glsl/builtins: Fix equal and notEqual builtins.
    • +
    • glsl/builtins: Switch comparison functions to just return an expression.
    • +
    • glsl: Add comments to clarify the types of comparison binops.
    • +
    • glsl: Fix broken handling of ir_binop_equal and ir_binop_nequal.
    • +
    • glsl: "Copyright", not "Constantright"
    • +
    • i965: Fix incorrect batchbuffer size in gen6 clip state command.
    • +
    • i965: Use logical-not when emitting ir_unop_ceil.
    • +
    • glsl: Add front-end support for the "trunc" built-in.
    • +
    • glsl: Refresh autogenerated file builtin_function.cpp.
    • +
    • i965: Use RNDZ for ir_unop_trunc in the new FS.
    • +
    • i965: Correctly emit the RNDZ instruction.
    • +
    • i965: Clean up a warning in the old fragment backend.
    • +
    • glsl: Add a new ir_unop_round_even opcode for GLSL 1.30's roundEven.
    • +
    • glsl: Add front-end support for GLSL 1.30's roundEven built-in.
    • +
    • i965: Add support for ir_unop_round_even via the RNDE instruction.
    • +
    • glsl: Add support for the 1.30 round() built-in.
    • +
    • glsl: Refresh autogenerated file builtin_function.cpp.
    • +
    • glsl: Don't return NULL IR for erroneous bit-shift operators.
    • +
    • i965: Add missing "break" statement.
    • +
    • glsl: Fix copy and paste error in ast_bit_and node creation.
    • +
    • glsl: Regenerate parser files.
    • +
    • i965: Remove unused variable.
    • +
    • glsl: Remove useless ir_shader enumeration value.
    • +
    • mesa: Remove FEATURE_ARB_shading_language_120 macro.
    • +
    • glcpp: Return NEWLINE token for newlines inside multi-line comments.
    • +
    • glcpp: Refresh autogenerated lexer file.
    • +
    • glsl: Add support for GLSL 1.30's modf built-in.
    • +
    • glsl: Refresh autogenerated file builtin_function.cpp.
    • +
    • generate_builtins.py: Output large strings as arrays of characters.
    • +
    • Refresh autogenerated file builtin_function.cpp.
    • +
    • glsl: Fix constant component count in vector constructor emitting.
    • +
    • Fix build on systems where "python" is python 3.
    • +
    • i965: Add bit operation support to the fragment shader backend.
    • +
    • glsl: Remove unused ARRAY_SIZE macro.
    • +
    • glsl/builtins: Rename 'x' to 'y_over_x' in atan(float) implementation.
    • +
    • glsl/builtins: Clean up some ugly autogenerated code in atan.
    • +
    • Refresh autogenerated file builtin_function.cpp.
    • +
    • glsl: Don't print a useless space at the end of an S-Expression list.
    • +
    • ir_reader: Return a specific ir_dereference variant.
    • +
    • ir_reader: Remove useless error check.
    • +
    • ir_reader: Fix some potential NULL pointer dereferences.
    • +
    • ir_dead_functions: Actually free dead functions and signatures.
    • +
    • glsl: Remove unnecessary "unused variable" warning suppression.
    • +
    • glsl: Remove GLSL_TYPE_FUNCTION define.
    • +
    • glsl: Convert glsl_type::base_type from #define'd constants to an enum.
    • +
    • glsl: Rework reserved word/keyword handling in the lexer.
    • +
    • glsl: Add new keywords and reserved words for GLSL 1.30.
    • +
    • glsl: Add support for the 'u' and 'U' unsigned integer suffixes.
    • +
    • glsl: Refresh autogenerated lexer and parser files.
    • +
    • generate_builtins.py: Fix inconsistent use of tabs and spaces warning.
    • +
    • glsl: Implement the asinh, acosh, and atanh built-in functions.
    • +
    • glsl: Refresh autogenerated file builtin_function.cpp.
    • +
    • glsl: Add constant expression handling for asinh, acosh, and atanh.
    • +
    • glsl: Remove unused and out of date Makefile.am.
    • +
    • glsl: Rename various ir_* files to lower_* and opt_*.
    • +
    • glcpp: Define GL_FRAGMENT_PRECISION_HIGH if GLSL version >= 1.30.
    • +
    • Refresh autogenerated glcpp parser.
    • +
    • glsl: Fix constant expression handling for <, >, <=, >= on vectors.
    • +
    • glsl: Unconditionally define GL_FRAGMENT_PRECISION_HIGH in ES2 shaders.
    • +
    • Regenerate glcpp parser.
    • +
    • glsl: Reimplement the "cross" built-in without ir_binop_cross.
    • +
    • Refresh autogenerated file builtin_function.cpp.
    • +
    • glsl: Remove the ir_binop_cross opcode.
    • +
    • glsl: Refactor get_num_operands.
    • +
    • glsl: Simplify a type check by using type->is_integer().
    • +
    • glsl: Combine many instruction lowering passes into one.
    • +
    • mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.
    • +
    • glsl: Don't inline function prototypes.
    • +
    • glsl: Use do_common_optimization in the standalone compiler.
    • +
    • glsl: Add a virtual as_discard() method.
    • +
    • glsl: Refactor out cloning of function prototypes.
    • +
    • glsl: Lazily import built-in function prototypes.
    • +
    • glsl: Remove anti-built-in hacks from the print visitor.
    • +
    • glsl/linker: Free any IR discarded by optimization passes.
    • +
    • glsl: Add an optimization pass to simplify discards.
    • +
    • glsl: Add a lowering pass to move discards out of if-statements.
    • +
    • glsl: Remove "discard" support from lower_jumps.
    • +
    • glsl: Add comments to lower_jumps (from the commit message).
    • +
    • ir_print_visitor: Print out constant structure values.
    • +
    • glsl: Factor out code which emits a new function into the IR stream.
    • +
    • symbol_table: Add support for adding a symbol at top-level/global scope.
    • +
    • glsl: Properly add functions during lazy built-in prototype importing.
    • +
    • glcpp: Don't emit SPACE tokens in conditional_tokens production.
    • +
    • Refresh autogenerated glcpp parser.
    • +
    • glsl: Clean up code by adding a new is_break() function.
    • +
    • glsl: Consider the "else" branch when looking for loop breaks.
    • +
    • Remove OES_compressed_paletted_texture from the ES2 extension list.
    • +
    • glsl/builtins: Compute the correct value for smoothstep(vec, vec, vec).
    • +
    • glsl: Support if-flattening beyond a given maximum nesting depth.
    • +
    • i965: Flatten if-statements beyond depth 16 on pre-gen6.
    • +
    • i965: Internally enable GL_NV_blend_square on ES2.
    • +
    + +

    Kristian Høgsberg (16):

    +
      +
    • glx: Hold on to drawables if we're just switching to another context
    • +
    • intel: Fix GL_ARB_shading_language_120 commit
    • +
    • dri2: Make createImageFromName() take a __DRIscreen instead of __DRIcontext
    • +
    • glx: Invalidate buffers after binding a drawable
    • +
    • dri: Pass the __DRIscreen and the __DRIscreen private back to image lookup
    • +
    • glx: Only remove drawables from the hash when we actually delete them
    • +
    • gles2: Add GL_EXT_texture_format_BGRA8888 support
    • +
    • Get rid of GL/internal/glcore.h
    • +
    • gl: Remove unused GLcontextModes fields
    • +
    • Rename GLvisual and __GLcontextModes to struct gl_config
    • +
    • Drop GLframebuffer typedef and just use struct gl_framebuffer
    • +
    • Drop GLcontext typedef and use struct gl_context instead
    • +
    • Drop the "neutral" tnl module
    • +
    • Only install vtxfmt tables for OpenGL
    • +
    • i965: Don't write mrf assignment for pointsize output
    • +
    • docs: Fix MESA_drm_image typo
    • +
    + +

    Krzysztof Smiechowicz (1):

    +
      +
    • nvfx: Pair os_malloc_aligned() with os_free_aligned().
    • +
    + +

    Luca Barbieri (84):

    +
      +
    • auxiliary: fix unintended fallthrough
    • +
    • glsl: add pass to lower variable array indexing to conditional assignments
    • +
    • auxiliary: fix depth-only and stencil-only clears
    • +
    • gallium: avoid the C++ keyword "template" in sw_winsys.h
    • +
    • softpipe: make z/s test always pass if no zsbuf, instead of crashing
    • +
    • tgsi: add switch/case opcodes to tgsi_opcode_tmp.h
    • +
    • softpipe: fix whitespace
    • +
    • d3d1x: add new Direct3D 10/11 COM state tracker for Gallium
    • +
    • d3d1x: add blob and signature extraction APIs
    • +
    • d3d1x: fix compilation with recent Wine versions installed
    • +
    • d3d1x: add missing file
    • +
    • d3d1x: actually enable and fix blob apis
    • +
    • d3d1x: fix build with compilers other than GCC 4.5
    • +
    • d3d1x: add template parameters to base class ctor calls for GCC 4.4
    • +
    • d3d1x: fix GCC 4.1/4.2 build
    • +
    • d3d1x: ignore errors while building docs
    • +
    • d3d1x: attempt to fix/workaround bug #30322
    • +
    • nvfx: remove gl_PointCoord hack
    • +
    • glx: decouple dri2.c and GLX, fixing Gallium EGL and d3d1x build
    • +
    • winsys: automatically build sw winsys needed by EGL and d3d1x
    • +
    • d3d1x: don't build progs automatically
    • +
    • d3d1x: add missing memory barrier
    • +
    • d3d1x: link with CXXFLAGS
    • +
    • d3d1x: fix cf analysis
    • +
    • d3d1x: fix warning
    • +
    • d3d1x: fix segfault when hashing
    • +
    • d3d1x: destroy native_display on adapter destruction
    • +
    • d3d1x: fix GUID declarations
    • +
    • d3d1x: redesign the HWND resolver interface
    • +
    • d3d1x: fix API name
    • +
    • d3d1x: define GUIDs in the normal way
    • +
    • d3d1x: add Wine dlls (tri, tex working, but no other testing)
    • +
    • d3d1x: properly reference count the backend
    • +
    • d3d1x: fix deadlocks on non-recursive mutex
    • +
    • d3d1x: bind NULL CSOs before destroying default CSOs on context dtor
    • +
    • d3d1x: initialize the mutex
    • +
    • d3d1x: autogenerate shader enums and text from def files
    • +
    • d3d1x: s/tpf/sm4/g
    • +
    • d3d1x: normalize whitespace
    • +
    • d3d1x: remove specstrings
    • +
    • d3d1x: minifix
    • +
    • d3d1x: rename context params
    • +
    • d3d11: rename screen params
    • +
    • d3d1x: rename params in misc and objects
    • +
    • d3d1x: rename parameters in dxgi
    • +
    • d3d11: obliterate IDL parameter names
    • +
    • d3d1x: remove specstrings.h include
    • +
    • d3d1x: flush the pipe context when presenting
    • +
    • d3d1x: remove another include specstrings.h
    • +
    • d3d1x: flush properly
    • +
    • d3d1x: add missing guid.cpp
    • +
    • d3d1x: fix build without system EGL/egl.h
    • +
    • d3d1x: add autogenerated files as prerequisites, so make builds them
    • +
    • d3d1x: obliterate IDL parameter names from d3d10.idl from Wine too
    • +
    • d3d1x: add shader dumping
    • +
    • d3d1x: add untested support for geometry shader translation
    • +
    • d3d1x: don't assert on unsupported resource types
    • +
    • d3d1x: fix CheckMultisampleQualityLevels
    • +
    • d3d1x: draw to the correct buffer
    • +
    • d3d1x: fix linking of dxbc2tgsi
    • +
    • nvfx: allow setting NULL constant buffers
    • +
    • nvfx: add RGB framebuffer format support in addition to BGR
    • +
    • d3d1x: don't crash on drivers not supporting vertex or geometry sampling
    • +
    • d3d1x: assert if X visual is not among enumerated visuals
    • +
    • d3d1x: stop using GLX in demos, just use the default visual
    • +
    • d3d1x: CRLF -> LF in progs
    • +
    • mesa: make makedepend an hard requirement
    • +
    • gallium: add $(PROGS_DEPS) as dependencies for $(PROGS)
    • +
    • d3d1x: fix parallel build
    • +
    • d3d1x: add private gitignore file
    • +
    • d3d1x: fix progs linking if not all EGL platforms are enabled
    • +
    • d3d1x: link progs with CXXFLAGS
    • +
    • d3d11: advertise IDXGIDevice1, not just IDXGIDevice
    • +
    • d3d11: ignore StructureByteStride
    • +
    • d3d1x: link to libdrm for X11 platform too
    • +
    • ureg: support centroid interpolation
    • +
    • d3d1x: support centroid interpolation
    • +
    • d3d1x: properly support specifying MipLevels as 0
    • +
    • d3d1x: put proper calling convention in headers, fixes 64-bit builds
    • +
    • d3d1x: rework DXGI for occlusion testing and default width/height
    • +
    • d3d1x: fix Map
    • +
    • d3d11: fix reference counting so devices get freed
    • +
    • d3d1x: work around crash in widl
    • +
    • glsl: Unroll loops with conditional breaks anywhere (not just the end)
    • +
    + +

    Lucas Stach (1):

    +
      +
    • nvfx: fill PIPE_CAP_PRIMITIVE_RESTART and PIPE_CAP_SHADER_STENCIL_EXPORT
    • +
    + +

    Marek Olšák (100):

    +
      +
    • r300g: prevent creating multiple winsys BOs for the same handle
    • +
    • r300g/swtcl: fix CS overrun
    • +
    • st/mesa: fix assertion failure in GetTexImage for cubemaps
    • +
    • util: make calling remove_from_list multiple times in a row safe
    • +
    • r300g: fixup long-lived BO maps being incorrectly unmapped when flushing
    • +
    • r300g: make accessing map_list and buffer_handles thread-safe
    • +
    • r300g: fix a copy-paste typo for logging
    • +
    • r300g: fix the border color for every format other than PIPE_FORMAT_B8G8R8A8
    • +
    • Build r300g by default
    • +
    • util: fix util_pack_color for B4G4R4A4
    • +
    • r300g: fix macrotiling on R350
    • +
    • r300g: code cleanups
    • +
    • r300/compiler: fix projective mapping of 2D NPOT textures
    • +
    • r300/compiler: do not use copy propagation if SaturateMode is used
    • +
    • r300/compiler: fix shadow sampling with swizzled coords
    • +
    • r300g: add support for 3D NPOT textures without mipmapping
    • +
    • r300g: fix swizzling of texture border color
    • +
    • configure.ac: look for libdrm_radeon before building gallium/r300,r600
    • +
    • configure.ac: do not build xorg-r300g by default
    • +
    • Makefile: ensure Gallium's Makefile.xorg and SConscript.dri are in the tarball
    • +
    • r300g: add support for formats beginning with X, like X8R8G8B8
    • +
    • r300g: fix conditional rendering in non-wait path
    • +
    • r300g: add support for R8G8 colorbuffers
    • +
    • r300g: add support for L8A8 colorbuffers
    • +
    • update release notes for Gallium
    • +
    • r300g: fix microtiling for 16-bits-per-channel formats
    • +
    • r300g: do not print get_param errors in non-debug build
    • +
    • r300g: say no to PIPE_CAP_STREAM_OUTPUT and PIPE_CAP_PRIMITIVE_RESTART
    • +
    • mesa: allow FBO attachments of formats LUMINANCE, LUMINANCE_ALPHA, and INTENSITY
    • +
    • r300g: fix texture border for 16-bits-per-channel formats
    • +
    • st/mesa: support RGBA16 and use it for RGBA12 as well
    • +
    • r300g: add a default channel ordering of texture border for unhandled formats
    • +
    • r300g: mention ATI in the renderer string
    • +
    • r300g: rename has_hyperz -> can_hyperz
    • +
    • r300g: turn magic numbers into names in the hyperz code
    • +
    • gallium: add CAPs for indirect addressing and lower it in st/mesa when needed
    • +
    • tgsi: fill out CAPs for indirect addressing
    • +
    • i915g: fill out CAPs for indirect addressing
    • +
    • i965g: fill out CAPs for indirect addressing
    • +
    • nv50: fill out CAPs for indirect addressing
    • +
    • nvfx: fill out CAPs for indirect addressing
    • +
    • r300g: fill out CAPs for indirect addressing
    • +
    • r600g: fill out CAPs for indirect addressing
    • +
    • svga: fill out CAPs for indirect addressing
    • +
    • r300g: fix texture border color for all texture formats
    • +
    • r300g: clean up redundancy in draw functions
    • +
    • r300g: return shader caps from Draw for SWTCL vertex shaders
    • +
    • r300g: remove the hack with OPCODE_RET
    • +
    • r300g: print FS inputs uninitialized due to hardware limits to stderr
    • +
    • r300g: fix rendering with no vertex elements
    • +
    • st/mesa: enable ARB_explicit_attrib_location and EXT_separate_shader_objects
    • +
    • docs: add GL 4.1 status
    • +
    • gallium: add PIPE_SHADER_CAP_SUBROUTINES
    • +
    • st/mesa: set MaxUniformComponents
    • +
    • u_blitter: use PIPE_TRANSFER_DISCARD to prevent cpu/gpu stall
    • +
    • r300/compiler: fix rc_rewrite_depth_out for it to work with any instruction
    • +
    • r300/compiler: remove duplicate function rc_mask_to_swz
    • +
    • r300/compiler: add a function for swizzling a mask
    • +
    • r300/compiler: move util functions to radeon_compiler_util
    • +
    • u_blitter: interpolate clear color using a GENERIC varying instead of COLOR
    • +
    • st/mesa: fix texture border color for RED and RG base formats
    • +
    • util: rename u_mempool -> u_slab
    • +
    • r300g: fix texture border color once again
    • +
    • r300/compiler: implement and lower OPCODE_CLAMP
    • +
    • ir_to_mesa: Add support for conditional discards.
    • +
    • r300g: fix texture swizzling with compressed textures on r400-r500
    • +
    • r300g: disable ARB_texture_swizzle if S3TC is enabled on r3xx-only
    • +
    • r300g: fix up cubemap texture offset computation
    • +
    • r300/compiler: disable the swizzle lowering pass in vertex shaders
    • +
    • r300g: fix build
    • +
    • r300g: use internal BO handle for add_buffer and write_reloc
    • +
    • r300g: implement simple transfer_inline_write for buffers
    • +
    • mesa, st/mesa: fix gl_FragCoord with FBOs in Gallium
    • +
    • r300g: fix pointer arithmetic with void* in transfer_inline_write
    • +
    • r300g: do not remove unused constants if we are not near the limit
    • +
    • r300g: add capability bit index_bias_supported
    • +
    • r300g: one more r500_index_bias_supported leftover
    • +
    • r300g: do not use the index parameter in set_constant_buffer
    • +
    • r300g: cleanup winsys
    • +
    • r300g: optimize looping over atoms
    • +
    • st/mesa: initialize key in st_vp_varient
    • +
    • u_blitter: use util_is_format_compatible in the assert
    • +
    • r300g: cache packet dwords of 3D_LOAD_VBPNTR in a command buffer if possible
    • +
    • r300g: validate buffers only if any of bound buffers is changed
    • +
    • r300g: also revalidate the SWTCL vertex buffer after its reallocation
    • +
    • r300/compiler: don't terminate regalloc if we surpass max temps limit
    • +
    • r300/compiler: add a function to query program stats (alu, tex, temps..)
    • +
    • r300/compiler: cleanup rc_run_compiler
    • +
    • r300/compiler: do not print pair/tex/presub program stats for vertex shaders
    • +
    • r300/compiler: handle DPH and XPD in rc_compute_sources_for_writemask
    • +
    • r300/compiler: make lowering passes possibly use up to two less temps
    • +
    • r300/compiler: remove at least unused immediates if externals cannot be removed
    • +
    • r300/compiler: fix LIT in VS
    • +
    • r300/compiler: fix swizzle lowering with a presubtract source operand
    • +
    • r300g: fix rendering with a vertex attrib having a zero stride
    • +
    • r300g: finally fix the texture corruption on r3xx-r4xx
    • +
    • r300g/swtcl: re-enable LLVM
    • +
    • r300g: mark vertex arrays as dirty after a buffer_offset change
    • +
    • mesa: fix texel store functions for some float formats
    • +
    • r300/compiler: disable the rename_regs pass for loops
    • +
    + +

    Mario Kleiner (1):

    +
      +
    • mesa/r300classic: Fix dri2Invalidate/radeon_prepare_render for page flipping.
    • +
    + +

    Mathias Fröhlich (3):

    +
      +
    • r300g: Avoid returning values in a static array, fixing a potential race
    • +
    • r600g: Only compare active vertex elements
    • +
    • st/mesa: Set PIPE_TRANSFER_DISCARD for GL_MAP_INVALIDATE_RANGE/BUFFFER_BIT
    • +
    + +

    Michal Krol (10):

    +
      +
    • svga: Fix relative addressing translation for pixel shaders.
    • +
    • svga: Integer constant register file has a separate namespace.
    • +
    • tgsi/exec: Cleanup the remaining arithmetic instructions.
    • +
    • tgsi/exec: Get rid of obsolete condition codes.
    • +
    • tgsi/build: Reduce interface clutter.
    • +
    • graw/gdi: Initial commit.
    • +
    • scons: Hook-up graw-gdi target.
    • +
    • graw/gdi: Fix window dimensions.
    • +
    • os: Open file streams in binary mode.
    • +
    • graw: Export graw_save_surface_to_file().
    • +
    + +

    Nicolas Kaiser (26):

    +
      +
    • swrast: remove duplicated include
    • +
    • egl: remove duplicated include
    • +
    • gallium/rtasm: remove duplicated include
    • +
    • gallium/util: remove duplicated include
    • +
    • gallium/i915: remove duplicated include
    • +
    • gallium/llvmpipe: remove duplicated include
    • +
    • gallium/softpipe: remove duplicated include
    • +
    • gallium/st: remove duplicated includes
    • +
    • gallium/winsys: remove duplicated include
    • +
    • glx: remove duplicated include
    • +
    • dri/common: remove duplicated include
    • +
    • dri/i810: remove duplicated include
    • +
    • dri/i915: remove duplicated include
    • +
    • dri/i965: remove duplicated include
    • +
    • dri/intel: remove duplicated include
    • +
    • dri/mga: remove duplicated include
    • +
    • dri/r128: remove duplicated include
    • +
    • dri/r300: remove duplicated include
    • +
    • dri/r600: remove duplicated include
    • +
    • dri/radeon: remove duplicated includes
    • +
    • dri/savage: remove duplicated include
    • +
    • main: remove duplicated includes
    • +
    • math: remove duplicated includes
    • +
    • st: remove duplicated include
    • +
    • i965g: use Elements macro instead of manual sizeofs
    • +
    • nv50: fix always true conditional in shader optimization
    • +
    + +

    Orion Poplawski (1):

    +
      +
    • osmesa: link against libtalloc
    • +
    + +

    Owen W. Taylor (1):

    +
      +
    • r600g: Fix location for clip plane registers
    • +
    + +

    Peter Clifton (3):

    +
      +
    • intel: Fix emit_linear_blit to use DWORD aligned width blits
    • +
    • intel: Add assert check for blitting alignment.
    • +
    • meta: Mask Stencil.Clear against stencilMax in _mesa_meta_Clear
    • +
    + +

    Robert Hooker (2):

    +
      +
    • intel: Add a new B43 pci id.
    • +
    • egl_dri2: Add missing intel chip ids.
    • +
    + +

    Roland Scheidegger (16):

    +
      +
    • gallivm: fix copy&paste bug
    • +
    • gallivm: don't use URem/UDiv when calculating offsets for blocks
    • +
    • gallivm: optimize yuv decoding
    • +
    • gallivm: fix trunc/itrunc comment
    • +
    • gallivm: faster iround implementation for sse2
    • +
    • gallivm: replace sub/floor/ifloor combo with ifloor_fract
    • +
    • gallivm: optimize some tex wrap mode calculations a bit
    • +
    • gallivm: more linear tex wrap mode calculation simplification
    • +
    • gallivm: avoid unnecessary URem in linear wrap repeat case
    • +
    • gallivm: optimize soa linear clamp to edge wrap mode a bit
    • +
    • gallivm: make use of new iround code in lp_bld_conv.
    • +
    • gallivm: fix different handling of [non]normalized coords in linear soa path
    • +
    • gallivm: only use lp_build_conv 4x4f -> 1x16 ub fastpath with sse2
    • +
    • r200: fix r200 large points
    • +
    • mesa: remove unneeded DD_POINT_SIZE and DD_LINE_WIDTH tricaps
    • +
    • gallium: support for array textures and related changes
    • +
    + +

    Shuang He (1):

    +
      +
    • mesa: allow GLfixed arrays for OpenGL ES 2.0
    • +
    + +

    Stephan Schmid (1):

    +
      +
    • r600g: fix relative addressing when splitting constant accesses
    • +
    + +

    Thomas Hellstrom (21):

    +
      +
    • st/xorg: Don't try to use option values before processing options
    • +
    • xorg/vmwgfx: Make vmwarectrl work also on 64-bit servers
    • +
    • st/xorg: Add a customizer option to get rid of annoying cursor update flicker
    • +
    • xorg/vmwgfx: Don't hide HW cursors when updating them
    • +
    • st/xorg: Don't try to remove invalid fbs
    • +
    • st/xorg: Fix typo
    • +
    • st/xorg, xorg/vmwgfx: Be a bit more frendly towards cross-compiling environments
    • +
    • st/xorg: Fix compilation errors for Xservers compiled without Composite
    • +
    • st/xorg: Don't use deprecated x*alloc / xfree functions
    • +
    • xorg/vmwgfx: Don't use deprecated x*alloc / xfree functions
    • +
    • st/xorg: Fix compilation for Xservers >= 1.10
    • +
    • mesa: Make sure we have the talloc cflags when using the talloc headers
    • +
    • egl: Add an include for size_t
    • +
    • mesa: Add talloc includes for gles
    • +
    • st/egl: Fix build for include files in nonstandard places
    • +
    • svga/drm: Optionally resolve calls to powf during link-time
    • +
    • gallium/targets: Trivial crosscompiling fix
    • +
    • st/xorg: Add a function to flush pending rendering and damage
    • +
    • gallium/targets/xorg-vmwgfx: Xv fixes
    • +
    • xorg/vmwgfx: Flush even if we don't autopaint the color key
    • +
    • xorg/vmwgfx: Don't clip video to viewport
    • +
    + +

    Tilman Sauerbeck (35):

    +
      +
    • r600g: Fixed a bo leak in r600_blit_state_ps_shader().
    • +
    • r600g: Use clamped math for RCP and RSQ.
    • +
    • r600g: Formatting fixes.
    • +
    • r600g: Added DB_SHADER_CONTROL defines.
    • +
    • r600g: Only set PA_SC_EDGERULE on rv770 and greater.
    • +
    • r600g: Enable PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED.
    • +
    • r600g: Fixed the shift in S_02880C_KILL_ENABLE.
    • +
    • glsl2: Empty functions can be inlined.
    • +
    • glsl2: Fixed cloning of ir_call error instructions.
    • +
    • r600g: Added support for TGSI_SEMANTIC_FACE.
    • +
    • gallium/docs: Fixed a typo in the SCS opcode description.
    • +
    • r600g: Honour destination operand's writemask in the SCS implementation.
    • +
    • r600g: Implemented the Z and W component write for the SCS opcode.
    • +
    • python/tests: Fixed tri.py for API and TGSI syntax changes.
    • +
    • r600g: Removed debug code.
    • +
    • gallium/docs: The RET opcode may appear anywhere in a subroutine.
    • +
    • r600g: Destroy the blitter.
    • +
    • r600g: Fixed two texture surface leaks in r600_blit_uncompress_depth().
    • +
    • r600g: Cleaned up index buffer reference handling in the draw module.
    • +
    • r600g: Fixed r600_vertex_element leak.
    • +
    • r600g: Added r600_pipe_shader_destroy().
    • +
    • r600g: Also clear bc data when we're destroying a shader.
    • +
    • r600g: In radeon_bo(), call LIST_INITHEAD early.
    • +
    • r600g: Destroy the blitter.
    • +
    • r600g: Removed unused 'ptr' argument from radeon_bo().
    • +
    • r600g: Made radeon_bo_pb_map_internal() actually call radeon_bo_map().
    • +
    • r600g: Fixed unmap condition in radeon_bo_pb_destroy().
    • +
    • r600g: Made radeon_bo::map_count signed.
    • +
    • r600g: We don't support PIPE_CAP_PRIMITIVE_RESTART.
    • +
    • r600g: Delete custom_dsa_flush on shutdown.
    • +
    • r600g: Fixed two memory leaks in winsys.
    • +
    • r600g: Destroy the winsys in r600_destroy_screen().
    • +
    • st/mesa: Reset the index buffer before destroying the pipe context.
    • +
    • st/mesa: Reset the constant buffers before destroying the pipe context.
    • +
    • r600g: Removed duplicated call to tgsi_split_literal_constant().
    • +
    + +

    Timo Wiren (1):

    +
      +
    • Fix typos in comments and debug output strings.
    • +
    + +

    Tom Fogal (3):

    +
      +
    • Implement x86_64 atomics for compilers w/o intrinsics.
    • +
    • Prefer intrinsics to handrolled atomic ops.
    • +
    • Revert "Prefer intrinsics to handrolled atomic ops."
    • +
    + +

    Tom Stellard (32):

    +
      +
    • r300/compiler: Refactor the pair instruction data structures
    • +
    • r300g: Always try to build libr300compiler.a
    • +
    • r300/compiler: Fix two mistakes in the presubtract optimization pass.
    • +
    • r300/compiler: Add more helper functions for iterating through sources
    • +
    • r300/compiler: Print immediate values after "dead constants" pass
    • +
    • r300/compiler: radeon_remove_constants.c: fix indentation
    • +
    • r300/compiler: Use rc_for_all_reads_src() in "dead constants" pass
    • +
    • r300/compiler: Fix segfault in error path
    • +
    • r300/compiler: Don't use rc_error() unless the error is unrecoverable
    • +
    • r300/compiler: Don't merge instructions that write output regs and ALU result
    • +
    • r300/compiler: Create a helper function for merging presubtract sources
    • +
    • r300/compiler: Fix incorrect assumption
    • +
    • r300/compiler: Clear empty registers after constant folding
    • +
    • r300/compiler: Add a new function for more efficient dataflow analysis
    • +
    • r300g: Add new debug option for logging vertex/fragment program stats
    • +
    • r300/compiler: Use rc_get_readers_normal() for presubtract optimizations
    • +
    • r300/compiler: Don't clobber presubtract sources during optimizations
    • +
    • r300/compiler: Don't track readers into an IF block.
    • +
    • r300/compiler: Make sure presubtract sources use supported swizzles
    • +
    • r300/compiler: Fix register allocator's handling of loops
    • +
    • r300/compiler: Fix instruction scheduling within IF blocks
    • +
    • r300/compiler: Use zero as the register index for unused sources
    • +
    • r300/compiler: Ignore alpha dest register when replicating the result
    • +
    • r300/compiler: Add rc_get_readers()
    • +
    • r300/compiler: Handle BREAK and CONTINUE in rc_get_readers()
    • +
    • r300/compiler: Track readers through branches in rc_get_readers()
    • +
    • r300/compiler: Convert RGB to alpha in the scheduler
    • +
    • r300/compiler: Use presubtract operations as much as possible
    • +
    • r300/compiler: Enable rename_reg pass for r500 cards
    • +
    • r300/compiler: Add a more efficient version of rc_find_free_temporary()
    • +
    • r300/compiler: Don't allow presubtract sources to be remapped twice
    • +
    • r300/compiler: Fix black terrain in Civ4
    • +
    + +

    Victor Tseng (1):

    +
      +
    • egl/i965: include inline_wrapper_sw_helper.h
    • +
    + +

    Viktor Novotný (6):

    +
      +
    • dri/nouveau: Import headers from rules-ng-ng
    • +
    • dri/nouveau: nv04: Use rules-ng-ng headers
    • +
    • dri/nouveau: nv10: Use rules-ng-ng headers
    • +
    • dri/nouveau nv20: Use rules-ng-ng headers
    • +
    • dri/nouveau: Remove nouveau_class.h, finishing switch to rules-ng-ng headers
    • +
    • dri/nouveau: Clean up magic numbers in get_rt_format
    • +
    + +

    Vinson Lee (214):

    +
      +
    • llvmpipe: Remove unnecessary header.
    • +
    • r600g: Remove unnecessary headers.
    • +
    • mesa: Include missing header in program.h.
    • +
    • glsl: Fix 'format not a string literal and no format arguments' warning.
    • +
    • r600g: Silence uninitialized variable warning.
    • +
    • r600g: Silence uninitialized variable warning.
    • +
    • nvfx: Silence uninitialized variable warnings.
    • +
    • r600g: Silence uninitialized variable warning.
    • +
    • r600g: Silence uninitialized variable warning.
    • +
    • r600g: Silence uninitialized variable warning.
    • +
    • r600g: Silence unused variable warning.
    • +
    • nv50: Update files in SConscript to match Makefile.
    • +
    • nv50: Remove unnecessary headers.
    • +
    • nv50: Silence uninitialized variable warning.
    • +
    • nv50: Silence uninitialized variable warning.
    • +
    • nv50: Silence uninitialized variable warning.
    • +
    • gallivm: Remove unnecessary headers.
    • +
    • draw: Remove unnecessary header.
    • +
    • nv50: Silence uninitialized variable warnings.
    • +
    • nv50: Fix 'control reaches end of non-void function' warning.
    • +
    • mesa/st: Silence uninitialized variable warning.
    • +
    • gallivm: Remove unnecessary header.
    • +
    • r600g: Remove unnecessary header.
    • +
    • r600g: Remove unnecessary headers.
    • +
    • r600g: Fix implicit declaration warning.
    • +
    • r600g: Fix memory leak on error path.
    • +
    • r600g: Silence uninitialized variable warning.
    • +
    • r600g: Silence unused variable warnings.
    • +
    • mesa: bump version to 7.10
    • +
    • ir_to_mesa: Remove unused member array_indexed from struct statevar_element.
    • +
    • mesa: Silence "'valid_texture_object' defined but not used" warning.
    • +
    • x86: Silence unused variable warning on Mac OS X.
    • +
    • glsl: Fix 'control reaches end of non-void function' warning.
    • +
    • nvfx: Remove const qualifer from nvfx_vertprog_translate.
    • +
    • nvfx: Silence uninitialized variable warnings.
    • +
    • r600g: Remove unused variable.
    • +
    • nv50: Silence missing initializer warning.
    • +
    • nv50: Remove dead initialization.
    • +
    • nv50: Remove dead initialization.
    • +
    • tgsi: Remove duplicate case value.
    • +
    • glut: Define markWindowHidden for non-Windows only.
    • +
    • glut: Define eventParser for non-Windows only.
    • +
    • r300g: Silence uninitialized variable warning.
    • +
    • intel: Fix implicit declaration of function '_mesa_meta_Bitmap' warning.
    • +
    • mesa: Remove unnecessary headers.
    • +
    • r600g: Remove unnecessary header.
    • +
    • unichrome: Remove unnecessary header.
    • +
    • intel: Remove unnecessary headers.
    • +
    • r600g: Remove unused variable.
    • +
    • r600g: Disable unused variables.
    • +
    • r600g: Remove unused variable.
    • +
    • r600g: Silence 'control reaches end of non-void function' warning.
    • +
    • r600g: Remove unused variable.
    • +
    • r600g: Remove unused variable.
    • +
    • r600g: Disable unused variables.
    • +
    • intel: Remove unnecessary header.
    • +
    • st/dri: Remove unnecessary header.
    • +
    • r600g: Remove unused variable.
    • +
    • r300g: Remove unused variable.
    • +
    • r600g: Don't return a value in function returning void.
    • +
    • r600g: Remove unused variables.
    • +
    • r600g: Include p_compiler.h instead of malloc.h.
    • +
    • r600g: Silence uninitialized variable warnings.
    • +
    • scons: Add MinGW-w64 prefixes for MinGW build.
    • +
    • dri: Add GET_PROGRAM_NAME definition for Mac OS X.
    • +
    • scons: Add program/sampler.cpp to SCons build.
    • +
    • mesa: Fix printf format warning.
    • +
    • mesa: Fix printf format warning.
    • +
    • mesa: Fix printf format warning.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r600g: Update SConscript.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r600g: Update SConscript.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r600g: Update SConscript.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r600g: Fix SCons build.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r300/compiler: Remove declaration before code.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • glsl: Remove unnecessary header.
    • +
    • savage: Remove unnecessary header.
    • +
    • r600g: Remove unused variable.
    • +
    • r600g: Remove unnecessary headers.
    • +
    • r600g: Fix SCons build.
    • +
    • r600g: Remove unnecessary header.
    • +
    • gallivm: Remove unnecessary header.
    • +
    • r600g: Silence uninitialized variable warning.
    • +
    • r600g: Silence uninitialized variable warning.
    • +
    • r600g: Silence uninitialized variable warning.
    • +
    • i915: Silence unused variable warning in non-debug builds.
    • +
    • i915: Silence unused variable warning in non-debug builds.
    • +
    • i965: Silence unused variable warning on non-debug builds.
    • +
    • i965: Silence unused variable warning on non-debug builds.
    • +
    • i965: Initialize member variables.
    • +
    • r300: Silence uninitialized variable warning.
    • +
    • tdfx: Silence unused variable warning on non-debug builds.
    • +
    • gallivm: Remove unnecessary header.
    • +
    • glsl: Initialize variable in ir_derefence_array::constant_expression_value
    • +
    • mesa: Add missing header to shaderobj.h.
    • +
    • llvmpipe: Return non-zero exit code for lp_test_round failures.
    • +
    • r300/compiler: Remove unused variable.
    • +
    • st/xorg: Fix memory leak on error path.
    • +
    • llvmpipe: Initialize state variable in debug_bin function.
    • +
    • llvmpipe: Initialize variable.
    • +
    • draw: Move loop variable declaration outside for loop.
    • +
    • r600g: Ensure r600_src is initialized in tgsi_exp function.
    • +
    • glsl: Add assert for unhandled ir_shader case.
    • +
    • swrast: Print out format on unexpected failure in _swrast_DrawPixels.
    • +
    • llvmpipe: Remove unnecessary header.
    • +
    • draw: Remove unnecessary header.
    • +
    • gallivm: Silence uninitialized variable warnings.
    • +
    • gallivm: Silence uninitialized variable warnings.
    • +
    • gallivm: Silence uninitialized variable warning.
    • +
    • r300g: Silence uninitialized variable warning.
    • +
    • mesa: Remove unnecessary headers.
    • +
    • r600g: Silence uninitialized variable warnings.
    • +
    • st/mesa: Remove unnecessary header.
    • +
    • mesa: Remove unnecessary header.
    • +
    • egl: Remove unnecessary headers.
    • +
    • swrast: Print out format on unexpected failure in _swrast_ReadPixels.
    • +
    • st/mesa: Silence uninitialized variable warning.
    • +
    • savage: Remove unnecessary header.
    • +
    • st/vega: Remove unnecessary headers.
    • +
    • dri/nouveau: Silence uninitialized variable warning.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • i965: Silence uninitialized variable warning.
    • +
    • i965: Silence uninitialized variable warning.
    • +
    • mesa: Clean up header file inclusion in accum.h.
    • +
    • mesa: Clean up header file inclusion in version.h.
    • +
    • mesa: Clean up header file inclusion in api_loopback.h.
    • +
    • mesa: Clean up header file inclusion in api_validate.h.
    • +
    • mesa: Include mfeatures.h in api_loopback for FEATURE_beginend.
    • +
    • mesa: Include mfeatures.h in api_validate.c for FEATURE_* symbols.
    • +
    • mesa: Clean up header file inclusion in arrayobj.h.
    • +
    • mesa: Clean up header file inclusion in atifragshader.h.
    • +
    • mesa: Clean up header file inclusion in attrib.h.
    • +
    • mesa: Clean up header file inclusion in blend.h.
    • +
    • mesa: Clean up header file inclusion in buffers.h.
    • +
    • mesa: Clean up header file inclusion in colortab.h.
    • +
    • mesa: Clean up header file inclusion in convolve.h.
    • +
    • mesa: Clean up header file inclusion in debug.h.
    • +
    • mesa: Clean up header file inclusion in depth.h.
    • +
    • mesa: Clean up header file inclusion in depthstencil.h.
    • +
    • mesa: Clean up header file inclusion in drawpix.h.
    • +
    • mesa: Clean up header file inclusion in drawtex.h.
    • +
    • mesa: Clean up header file inclusion in enable.h.
    • +
    • mesa: Clean up header file inclusion in extensions.h.
    • +
    • graw: Add struct pipe_surface forward declaration.
    • +
    • mesa: Clean up header file inclusion in fbobject.h.
    • +
    • mesa: Clean up header file inclusion in ffvertex_prog.h.
    • +
    • mesa: Clean up header file inclusion in fog.h.
    • +
    • mesa: Clean up header file inclusion in framebuffer.h.
    • +
    • mesa: Clean up header file inclusion in hint.h.
    • +
    • mesa: Clean up header file inclusion in histogram.h.
    • +
    • mesa: Clean up header file inclusion in image.h.
    • +
    • mesa: Add missing header and forward declarations in dd.h.
    • +
    • mesa: Clean up header file inclusion in light.h.
    • +
    • mesa: Clean up header file inclusion in lines.h.
    • +
    • mesa: Clean up header file inclusion in matrix.h.
    • +
    • mesa: Clean up header file inclusion in multisample.h.
    • +
    • mesa: Clean up header file inclusion in nvprogram.h.
    • +
    • winsys/xlib: Add cygwin to SConscript.
    • +
    • mesa: Clean up header file inclusion in pixel.h.
    • +
    • mesa: Clean up header file inclusion in pixelstore.h.
    • +
    • mesa: Fix printf format warnings.
    • +
    • mesa: Clean up header file inclusion in points.h.
    • +
    • i965: Silence uninitialized variable warning.
    • +
    • glsl: Add ir_constant_expression.cpp to SConscript.
    • +
    • mesa: Add definitions for inverse hyperbolic function on MSVC.
    • +
    • glsl: Fix 'control reaches end of non-void function' warning.
    • +
    • glsl: Add lower_vector.cpp to SConscript.
    • +
    • glsl: Fix type of label 'default' in switch statement.
    • +
    • st/mesa: Remove unnecessary headers.
    • +
    • swrast: Remove unnecessary header.
    • +
    • r600: Remove unnecesary header.
    • +
    • intel: Remove unnecessary header.
    • +
    • mesa: Clean up header file inclusion in polygon.h.
    • +
    • mesa: Clean up header file inclusion in rastpos.h.
    • +
    • mesa: Clean up header file inclusion in readpix.h.
    • +
    • mesa: Clean up header file inclusion in renderbuffer.h.
    • +
    • mesa: Clean up header file inclusion in scissor.h.
    • +
    • mesa: Clean up header file inclusion in shaderapi.h.
    • +
    • mesa: Clean up header file inclusion in shared.h.
    • +
    • mesa: Clean up header file inclusion in stencil.h.
    • +
    • r600: Remove unnecessary header.
    • +
    • llvmpipe: Remove unnecessary headers.
    • +
    • mesa: Clean up header file inclusion in syncobj.h.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • r300/compiler: Move declaration before code.
    • +
    • mesa: Clean up header file inclusion in texcompress.h.
    • +
    • st/vega: Silence uninitialized variable warning.
    • +
    • mesa: Clean up header file inclusion in texcompress_s3tc.h.
    • +
    • mesa: Clean up header file inclusion in texenvprogram.h.
    • +
    • mesa: Clean up header file inclusion in texformat.h.
    • +
    • mesa: Clean up header file inclusion in texgetimage.h.
    • +
    • mesa: Clean up header file inclusion in texobj.h.
    • +
    • gallium/noop: Add prototype for noop_init_state_functions.
    • +
    • mesa: Clean up header file inclusion in texrender.h.
    • +
    • mesa: Clean up header file inclusion in transformfeedback.h.
    • +
    • mesa: Clean up header file inclusion in varray.h.
    • +
    • mesa: Clean up header file inclusion in viewport.h.
    • +
    • r200: Silence uninitialized variable warning.
    • +
    • r600g: Fix SCons build.
    • +
    • i965: Silence uninitialized variable warning.
    • +
    + +

    Xavier Chantry (8):

    +
      +
    • nv50: fix size of outputs_written array
    • +
    • nv50: apply layout_mask to tile_flags
    • +
    • nvfx: only expose one rt on nv30
    • +
    • nvfx: fb->nr_cbufs <= 1 on nv30
    • +
    • nvfx: reset nvfx->hw_zeta
    • +
    • nvfx: fixes after array textures merge
    • +
    • init ps->context with util_surfaces_get and do_get
    • +
    • gallium/trace: check bind_vertex_sampler_states and set_vertex_sampler_views
    • +
    + +

    Xiang, Haihao (10):

    +
      +
    • mesa: fix regression from b4bb6680200b5a898583392f4c831c02f41e63f7
    • +
    • i965: add support for polygon mode on Sandybridge.
    • +
    • i965: fix for flat shading on Sandybridge
    • +
    • i965: set minimum/maximum Point Width on Sandybridge
    • +
    • meta: allow nested meta operations
    • +
    • i965: support for two-sided lighting on Sandybridge
    • +
    • i965: fix register region description
    • +
    • i965: use align1 access mode for instructions with execSize=1 in VS
    • +
    • i965: don't spawn GS thread for LINELOOP on Sandybridge
    • +
    • i965: use BLT to clear buffer if possible on Sandybridge
    • +
    + +

    Zack Rusin (8):

    +
      +
    • rbug: fix rbug when contexts are being destroyed
    • +
    • llvmpipe: fix rasterization of vertical lines on pixel boundaries
    • +
    • scons: build the xorg state trackers only when env includes drm
    • +
    • gallivm: implement indirect addressing of the output registers
    • +
    • gallivm: implement indirect addressing over inputs
    • +
    • gallivm: fix storing of the addr register
    • +
    • scons: add alias for identity
    • +
    • gallium/util: add states relevant to geometry shaders
    • +
    + +

    Zhenyu Wang (40):

    +
      +
    • i965: disasm quarter and write enable instruction control on sandybridge
    • +
    • i965: new state dump for sandybridge
    • +
    • i965: enable accumulator update in PS kernel too on sandybridge
    • +
    • i965: Fix color interpolation on sandybridge
    • +
    • i965: force zero in clipper to ignore RTAIndex on sandybridge
    • +
    • i965: fix point size setting in header on sandybridge
    • +
    • i965: ff sync message change for sandybridge
    • +
    • i965: ignore quads for GS kernel on sandybridge
    • +
    • i965: add sandybridge viewport state bo into validation list
    • +
    • i965: VS use SPF mode on sandybridge for now
    • +
    • i965: fix jump count on sandybridge
    • +
    • i965: Fix sampler on sandybridge
    • +
    • i965: fix const register count for sandybridge
    • +
    • i965: Add all device ids for sandybridge
    • +
    • i965: sandybridge pipe control workaround before write cache flush
    • +
    • i965: only allow SIMD8 kernel on sandybridge now
    • +
    • i965: don't do calculation for delta_xy on sandybridge
    • +
    • i965: fix pixel w interpolation on sandybridge
    • +
    • i965: enable polygon offset on sandybridge
    • +
    • i965: fix scissor state on sandybridge
    • +
    • i965: fix point sprite on sandybridge
    • +
    • i965: fix occlusion query on sandybridge
    • +
    • i965: fallback bitmap operation on sandybridge
    • +
    • i965: Always set tiling for depth buffer on sandybridge
    • +
    • i965: fallback lineloop on sandybridge for now
    • +
    • Revert "i965: Always set tiling for depth buffer on sandybridge"
    • +
    • i965: always set tiling for fbo depth buffer on sandybridge
    • +
    • i965: Fix GS hang on Sandybridge
    • +
    • Revert "i965: fallback lineloop on sandybridge for now"
    • +
    • i965: refresh wm push constant also for BRW_NEW_FRAMENT_PROGRAM on gen6
    • +
    • i965: fix dest type of 'endif' on sandybridge
    • +
    • Revert "i965: VS use SPF mode on sandybridge for now"
    • +
    • i965: also using align1 mode for math2 on sandybridge
    • +
    • i965: Fix GS state uploading on Sandybridge
    • +
    • i965: upload WM state for _NEW_POLYGON on sandybridge
    • +
    • i965: Use MI_FLUSH_DW for blt ring flush on sandybridge
    • +
    • i965: explicit tell header present for fb write on sandybridge
    • +
    • i965: Fix occlusion query on sandybridge
    • +
    • i965: Use last vertex convention for quad provoking vertex on sandybridge
    • +
    • i965: Fix provoking vertex select in clip state for sandybridge
    • +
    + +

    Zou Nan hai (1):

    +
      +
    • i965: skip too small size mipmap
    • +
    + +

    delphi (2):

    +
      +
    • draw: added userclip planes and updated variant_key
    • +
    • draw: some changes to allow for runtime changes to userclip planes
    • +
    + +

    nobled (3):

    +
      +
    • r300g: Abort if atom allocations fail
    • +
    • r300g: Abort if draw_create() fails
    • +
    • r300g: Drop unnecessary cast
    • +
    + +

    pontus lidman (1):

    +
      +
    • mesa: check for posix_memalign() errors
    • +
    + +

    richard (2):

    +
      +
    • evergreen : fix z format setting, enable stencil.
    • +
    • 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.
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.11.1.html b/mesalib/docs/relnotes/7.11.1.html new file mode 100644 index 000000000..7579ef579 --- /dev/null +++ b/mesalib/docs/relnotes/7.11.1.html @@ -0,0 +1,396 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.11.1 Release Notes / November 17, 2011

    + +

    +Mesa 7.11.1 is a bug fix release which fixes bugs found since the 7.11 release. +

    +

    +Mesa 7.11 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +ac0181a4076770fb657c1169af43aa09  MesaLib-7.11.1.tar.gz
    +a77307102cee844ff6544ffa8fafeac1  MesaLib-7.11.1.tar.bz2
    +dfcb11516c1730f3981b55a65a835623  MesaLib-7.11.1.zip
    +2cb2b9ecb4fb7d1a6be69346ee886952  MesaGLUT-7.11.1.tar.gz
    +3f54e314290d4dacbab089839197080b  MesaGLUT-7.11.1.tar.bz2
    +5d66c7ee8c5cc2f27e1ffb037ad4172c  MesaGLUT-7.11.1.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      +
    • Bug 3165 - texImage.IsCompressed and texImage.CompressedSize issues
    • + +
    • Bug 23525 - Software rendering on QEMU guests badly broken
    • + +
    • Bug 28125 - DRI2 prevents indirect glx
    • + +
    • Bug 34628 - [ilk] skybox errors in quake4
    • + +
    • Bug 36371 - r200: piglit readPixSanity failure
    • + +
    • Bug 36669 - EmitNoMainReturn set to 1 doesn't make the GLSL compiler lower all the RET opcodes
    • + +
    • Bug 36939 - multitexturing is messed up in quake wars (regression)
    • + +
    • Bug 37907 - [swrast] SIGSEGV swrast/s_depth.c:569
    • + +
    • Bug 38163 - Gnome Shell Display Bug
    • + +
    • Bug 38625 - ast_to_hir.cpp:1761: const glsl_type* process_array_type(YYLTYPE*, const glsl_type*, ast_node*, _mesa_glsl_parse_state*): Assertion `dummy_instructions.is_empty()' failed.
    • + +
    • Bug 38729 - [softpipe] sp_quad_depth_test.c:215:convert_quad_stencil: Assertion `0' failed.
    • + +
    • Bug 38863 - [IVB]GPU hang when running 3D games like openarena
    • + +
    • Bug 39193 - [llvmpipe and r600g] glCheckFramebufferStatusEXT segfaults in Gallium when checking status on a framebuffer bound to a texture that's bound to a pixmap
    • + +
    • Bug 39651 - [glsl] Assertion failure when implicitly converting out parameters
    • + +
    • Bug 39991 - [regression]GL_PALETTE8_RGBA8_OES format of glCompressedTexImage2D will cause err GL_INVALID_ENUM with GLES1.x
    • + +
    • Bug 40022 - [i915] out-of-bounds write src/mesa/drivers/dri/i915/i915_fragprog.c:321
    • + +
    • Bug 40062 - in etqw the strogg radar is black (regression)
    • + +
    • Bug 40324 - [SNB] gpu hang in mesa 7.11
    • + +
    • Bug 40533 - i915: piglit glean/readPixSanity: DRI2SwapBuffers: BadDrawable (invalid Pixmap or Window parameter)
    • + +
    • Bug 41096 - [sandybridge-m-gt2+] GPU lockup render.IPEHR: 0x7a000002
    • + +
    • Bug 41969 - The Mesa meta save/restore code doesn't always save the active program
    • + +
    • Bug 42175 - RV730: Display errors in glxgears & WebGL
    • + +
    • Bug 42268 - [bisected] oglc pbo(negative.invalidOffsetValue) aborts on 7.11 branch
    • + + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-7.11..mesa-7.11.1
    +
    + +

    Adam Jackson (2):

    +
      +
    • drisw: Remove cargo culting that breaks GLX 1.3 ctors
    • +
    • glx: Don't enable INTEL_swap_event unconditionally
    • +
    + +

    Alex Deucher (1):

    +
      +
    • r600g: fix up vs export handling
    • +
    + +

    Ben Widawsky (1):

    +
      +
    • intel: GetBuffer fix
    • +
    + +

    Brian Paul (15):

    +
      +
    • docs: add 7.11 md5 sums
    • +
    • docs: news item for 7.11 release
    • +
    • st/mesa: Convert size assertions to conditionals in st_texture_image_copy.
    • +
    • softpipe: add missing stencil format case in convert_quad_stencil()
    • +
    • mesa: fix texstore addressing bugs for depth/stencil formats
    • +
    • mesa: add missing breaks for GL_TEXTURE_CUBE_MAP_SEAMLESS queries
    • +
    • swrast: don't try to do depth testing if there's no depth buffer
    • +
    • meta: fix/add checks for GL_EXT_framebuffer_sRGB
    • +
    • mesa: fix PACK_COLOR_5551(), PACK_COLOR_1555() macros
    • +
    • meta: fix broken sRGB mipmap generation
    • +
    • mesa: add _NEW_CURRENT_ATTRIB in _mesa_program_state_flags()
    • +
    • mesa: fix error handling for dlist image unpacking
    • +
    • mesa: generate GL_INVALID_OPERATION in glIsEnabledIndex() between Begin/End
    • +
    • mesa: fix incorrect error code in _mesa_FramebufferTexture1D/3DEXT()
    • +
    • mesa: fix format/type check in unpack_image() for bitmaps
    • +
    + +

    Carl Simonson (1):

    +
      +
    • i830: Add missing vtable entry for i830 from the hiz work.
    • +
    + +

    Carl Worth (5):

    +
      +
    • glcpp: Fix two (or more) successive applications of token pasting
    • +
    • glcpp: Test a non-function-like macro using the token paste operator
    • +
    • glcpp: Implement token pasting for non-function-like macros
    • +
    • glcpp: Raise error if defining any macro containing two consecutive underscores
    • +
    • glcpp: Add a test for #elif with an undefined macro.
    • +
    + +

    Chad Versace (5):

    +
      +
    • glsl: Add method glsl_type::can_implicitly_convert_to()
    • +
    • glsl: Fix implicit conversions in non-constructor function calls
    • +
    • glsl: Remove ir_function.cpp:type_compare()
    • +
    • glsl: Fix conversions in array constructors
    • +
    • x86-64: Fix compile error with clang
    • +
    + +

    Chia-I Wu (3):

    +
      +
    • glsl: empty declarations should be valid
    • +
    • intel: rename intel_extensions_es2.c to intel_extensions_es.c
    • +
    • intel: fix GLESv1 support
    • +
    + +

    Chris Wilson (1):

    +
      +
    • i915: out-of-bounds write in calc_live_regs()
    • +
    + +

    Christopher James Halse Rogers (1):

    +
      +
    • glx/dri2: Paper over errors in DRI2Connect when indirect
    • +
    + +

    David Reveman (1):

    +
      +
    • i915g: Fix off-by-one in scissors.
    • +
    + +

    Eric Anholt (16):

    +
      +
    • mesa: Don't skip glGetProgramEnvParam4dvARB if there was already an error.
    • +
    • mesa: Fix glGetUniform() type conversions.
    • +
    • mesa: Add support for Begin/EndConditionalRender in display lists.
    • +
    • mesa: Throw an error instead of asserting for condrender with query == 0.
    • +
    • mesa: Throw an error when starting conditional render on an active query.
    • +
    • mesa: Don't skip glGetProgramLocalParam4dvARB if there was already an error.
    • +
    • glsl: Allow ir_assignment() constructor to not specify condition.
    • +
    • glsl: Clarify error message about whole-array assignment in GLSL 1.10.
    • +
    • glsl: When assigning to a whole array, mark the array as accessed.
    • +
    • glsl: When assiging from a whole array, mark it as used.
    • +
    • i965/fs: Respect ARB_color_buffer_float clamping.
    • +
    • i965: Add missing _NEW_POLYGON flag to polygon stipple upload.
    • +
    • i965: Fix polygon stipple offset state flagging.
    • +
    • intel: Mark MESA_FORMAT_X8_Z24 as always supported.
    • +
    • mesa: Don't error on glFeedbackBuffer(size = 0, buffer = NULL)
    • +
    • glsl: Fix gl_NormalMatrix swizzle setup to match i965's invariants.
    • +
    + +

    Henri Verbeet (6):

    +
      +
    • mesa: Also set the remaining draw buffers to GL_NONE when updating just the first buffer in _mesa_drawbuffers().
    • +
    • r600g: Support the PIPE_FORMAT_R16_FLOAT colorformat.
    • +
    • mesa: Check the texture against all units in unbind_texobj_from_texunits().
    • +
    • mesa: Allow sampling from units >= MAX_TEXTURE_UNITS in shaders.
    • +
    • mesa: Use the Elements macro for the sampler index assert in validate_samplers().
    • +
    • mesa: Fix a couple of TexEnv unit limits.
    • +
    + +

    Ian Romanick (17):

    +
      +
    • mesa: Add utility function to get base format from a GL compressed format
    • +
    • mesa: Return the correct internal fmt when a generic compressed fmt was used
    • +
    • mesa: Make _mesa_get_compressed_formats match the texture compression specs
    • +
    • linker: Make linker_error set LinkStatus to false
    • +
    • linker: Make linker_{error,warning} generally available
    • +
    • mesa: Ensure that gl_shader_program::InfoLog is never NULL
    • +
    • ir_to_mesa: Use Add linker_error instead of fail_link
    • +
    • ir_to_mesa: Emit warnings instead of errors for IR that can't be lowered
    • +
    • i915: Fail without crashing if a Mesa IR program uses too many registers
    • +
    • i915: Only emit program errors when INTEL_DEBUG=wm or INTEL_DEBUG=fallbacks
    • +
    • mesa: Add GL_OES_compressed_paletted_texture formats to _mesa_is_compressed_format
    • +
    • mesa: Add GL_OES_compressed_paletted_texture formats to _mesa_base_tex_format
    • +
    • mesa: Refactor expected texture size check in cpal_get_info
    • +
    • mesa: Add _mesa_cpal_compressed_format_type
    • +
    • mesa: Refactor compressed texture error checks to work with paletted textures
    • +
    • mesa: Remove redundant compressed paletted texture error checks
    • +
    • mesa: Advertise GL_OES_compressed_paletted_texture in OpenGL ES1.x
    • +
    + +

    Jeremy Huddleston (3):

    +
      +
    • apple: Silence some debug spew
    • +
    • apple: Use the correct (OpenGL.framework) glViewport and glScissor during init
    • +
    • apple: Implement applegl_unbind_context
    • +
    + +

    José Fonseca (1):

    +
      +
    • docs: Update llvmpipe docs.
    • +
    + +

    Kenneth Graunke (12):

    +
      +
    • glsl: Avoid massive ralloc_strndup overhead in S-Expression parsing.
    • +
    • mesa: In validate_program(), initialize errMsg for safety.
    • +
    • i965/gen5+: Fix incorrect miptree layout for non-power-of-two cubemaps.
    • +
    • i965: Use proper texture alignment units for cubemaps on Gen5+.
    • +
    • i965: Fix incorrect maximum PS thread count shift on Ivybridge.
    • +
    • i965: Emit depth stalls and flushes before changing depth state on Gen6+.
    • +
    • i965/fs: Allow SIMD16 with control flow on Ivybridge.
    • +
    • i965: Allow SIMD16 color writes on Ivybridge.
    • +
    • i965: Fix inconsistent indentation in brw_eu_emit.c.
    • +
    • intel: Depth format fixes
    • +
    • i965: Apply post-sync non-zero workaround to homebrew workaround.
    • +
    • mesa/get: Move MAX_LIGHTS from GL/ES2 to GL/ES1.
    • +
    + +

    Kristian Høgsberg (1):

    +
      +
    • glx: Don't flush twice if we fallback to dri2CopySubBuffer
    • +
    + +

    Marc Pignat (1):

    +
      +
    • drisw: Fix 24bpp software rendering, take 2
    • +
    + +

    Marcin Baczyński (2):

    +
      +
    • configure: fix gcc version check
    • +
    • configure: allow C{,XX}FLAGS override
    • +
    + +

    Marcin Slusarz (3):

    +
      +
    • nouveau: fix nouveau_fence leak
    • +
    • nouveau: fix crash during fence emission
    • +
    • nouveau: fix fence hang
    • +
    + +

    Marek Olšák (19):

    +
      +
    • vbo: do not call _mesa_max_buffer_index in debug builds
    • +
    • winsys/radeon: fix space checking
    • +
    • r300/compiler: fix a warning that a variable may be uninitialized
    • +
    • r300/compiler: remove an unused-but-set variable and simplify the code
    • +
    • u_vbuf_mgr: cleanup original vs real vertex buffer arrays
    • +
    • u_vbuf_mgr: don't take per-instance attribs into acc. when computing max index
    • +
    • u_vbuf_mgr: fix max_index computation for large src_offset
    • +
    • u_vbuf_mgr: s/u_vbuf_mgr_/u_vbuf_
    • +
    • u_vbuf_mgr: remove unused flag U_VBUF_UPLOAD_FLUSHED
    • +
    • u_vbuf_mgr: rework user buffer uploads
    • +
    • u_vbuf_mgr: fix uploading with a non-zero index bias
    • +
    • configure.ac: fix xlib-based softpipe build
    • +
    • r600g: add index_bias to index buffer bounds
    • +
    • r300g: fix rendering with a non-zero index bias in draw_elements_immediate
    • +
    • Revert "r300g: fix rendering with a non-zero index bias in draw_elements_immediate"
    • +
    • pb_bufmgr_cache: flush cache when create_buffer fails and try again
    • +
    • r300g: don't return NULL in resource_from_handle if the resource is too small
    • +
    • r600g: set correct tiling flags in depth info
    • +
    • r300g: don't call u_trim_pipe_prim in r300_swtcl_draw_vbo
    • +
    + +

    Michel Dänzer (4):

    +
      +
    • st/mesa: Finalize texture on render-to-texture.
    • +
    • glx/dri2: Don't call X server for SwapBuffers when there's no back buffer.
    • +
    • gallium/util: Add macros for converting from little endian to CPU byte order.
    • +
    • r300g: Fix queries on big endian hosts.
    • +
    + +

    Neil Roberts (1):

    +
      +
    • meta: Fix saving the active program
    • +
    + +

    Paul Berry (18):

    +
      +
    • glsl: Lower unconditional return statements.
    • +
    • glsl: Refactor logic for determining whether to lower return statements.
    • +
    • glsl: lower unconditional returns and continues in loops.
    • +
    • glsl: Use foreach_list in lower_jumps.cpp
    • +
    • glsl: In lower_jumps.cpp, lower both branches of a conditional.
    • +
    • glsl: Lower break instructions when necessary at the end of a loop.
    • +
    • glsl: improve the accuracy of the radians() builtin function
    • +
    • glsl: improve the accuracy of the atan(x,y) builtin function.
    • +
    • Revert "glsl: Skip processing the first function's body in do_dead_functions()."
    • +
    • glsl: Emit function signatures at toplevel, even for built-ins.
    • +
    • glsl: Constant-fold built-in functions before outputting IR
    • +
    • glsl: Check array size is const before asserting that no IR was generated.
    • +
    • glsl: Perform implicit type conversions on function call out parameters.
    • +
    • glsl: Fix type error when lowering integer divisions
    • +
    • glsl: Rework oversize array check for gl_TexCoord.
    • +
    • glsl: Remove field array_lvalue from ir_variable.
    • +
    • glsl hierarchical visitor: Do not overwrite base_ir for parameter lists.
    • +
    • glsl: improve the accuracy of the asin() builtin function.
    • +
    + +

    Tobias Droste (1):

    +
      +
    • r300/compiler: simplify code in peephole_add_presub_add
    • +
    + +

    Tom Fogal (1):

    +
      +
    • Only use gcc visibility support with gcc4+.
    • +
    + +

    Tom Stellard (1):

    +
      +
    • r300/compiler: Fix regalloc for values with multiple writers
    • +
    + +

    Vadim Girlin (5):

    +
      +
    • st/mesa: flush bitmap cache on query and conditional render boundaries
    • +
    • r600g: use backend mask for occlusion queries
    • +
    • r600g: take into account force_add_cf in pops
    • +
    • r600g: fix check_and_set_bank_swizzle
    • +
    • r600g: fix replace_gpr_with_pv_ps
    • +
    + +

    Yuanhan Liu (17):

    +
      +
    • i965: fix the constant interp bitmask for flat mode
    • +
    • mesa: fix error handling for glEvalMesh1/2D
    • +
    • mesa: fix error handling for some glGet* functions
    • +
    • mesa: fix error handling for glTexEnv
    • +
    • mesa: fix error handling for glIsEnabled
    • +
    • mesa: fix error handling for glPixelZoom
    • +
    • mesa: fix error handling for glSelectBuffer
    • +
    • mesa: fix error handling for glMapBufferRange
    • +
    • mesa: fix error handling for glMaterial*
    • +
    • intel: fix the wrong code to detect null texture.
    • +
    • mesa: add a function to do the image data copy stuff for save_CompressedTex(Sub)Image
    • +
    • i965: setup address rounding enable bits
    • +
    • mesa: generate error if pbo offset is not aligned with the size of specified type
    • +
    • mesa: fix inverted pbo test error at _mesa_GetnCompressedTexImageARB
    • +
    • mesa: handle the pbo case for save_Bitmap
    • +
    • mesa: handle PBO access error in display list mode
    • +
    • intel: don't call unmap pbo if pbo is not mapped
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.11.2.html b/mesalib/docs/relnotes/7.11.2.html new file mode 100644 index 000000000..9b89fa38c --- /dev/null +++ b/mesalib/docs/relnotes/7.11.2.html @@ -0,0 +1,90 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.11.2 Release Notes / November 27, 2011

    + +

    +Mesa 7.11.2 is a bug fix release which fixes bugs found since the 7.11 release. +

    +

    +Mesa 7.11 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +b9e84efee3931c0acbccd1bb5a860554  MesaLib-7.11.2.tar.gz
    +0837c52698fe3252369c3fdb5195afcc  MesaLib-7.11.2.tar.bz2
    +141273c274d12e0d2bafb497fe937da3  MesaLib-7.11.2.zip
    +39ae9926794794503815ffdc069521eb  MesaGLUT-7.11.2.tar.gz
    +35ca3a0b54cb6f9d2e0e4eae8f6bb95e  MesaGLUT-7.11.2.tar.bz2
    +f8705fcff2510b6c39cd27b575c05dba  MesaGLUT-7.11.2.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      +
    • Bug 43143 - Mesa 7.11.1 fails to build at main/dlist.c:4532 with error message: "format not a string literal and no format arguments"
    • + +
    • Incorrect handling of CopyTexImage from RGBA window to LA texture.
    • + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-7.11.1..mesa-7.11.2
    +
    + +

    Brian Paul (4):

    +
      +
    • mesa: stop using ctx->Driver.CopyTexImage1D/2D() hooks
    • +
    • mesa: fix format selection for meta CopyTexSubImage()
    • +
    • docs: update news.html and relnotes.html for 7.11.1 release
    • +
    • mesa: use format string in _mesa_error() call to silence warning
    • +
    + +

    Chad Versace (3):

    +
      +
    • intel: Simplify stencil detiling arithmetic
    • +
    • intel: Fix region dimensions for stencil buffers received from DDX
    • +
    • intel: Fix separate stencil in builtin DRI2 backend
    • +
    + +

    Ian Romanick (3):

    +
      +
    • docs: Add 7.11.1 release md5sums
    • +
    • mesa: set version string to 7.11.2-devel
    • +
    • mesa: Bump version to 7.11.2 (final)
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.11.html b/mesalib/docs/relnotes/7.11.html new file mode 100644 index 000000000..721da9ca3 --- /dev/null +++ b/mesalib/docs/relnotes/7.11.html @@ -0,0 +1,353 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.11 Release Notes / July 31, 2011

    + +

    +Mesa 7.11 is a new development release. +People who are concerned with stability and reliability should stick +with a previous release or wait for Mesa 7.11.1. +

    +

    +Mesa 7.11 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +fa2c7068503133fb2453244cda11cb2a  MesaLib-7.11.tar.gz
    +ff03aca82d0560009a076a87c888cf13  MesaLib-7.11.tar.bz2
    +ede1ac0976f6f05df586093fc17d63ed  MesaLib-7.11.zip
    +b4fb81a47c5caedaefad49af7702c23d  MesaGLUT-7.11.tar.gz
    +77a9a0bbd7f8bca882aa5709b88cb071  MesaGLUT-7.11.tar.bz2
    +c19ef0c6eb61188c96ed4ccedd70717c  MesaGLUT-7.11.zip
    +
    + + +

    New features

    +
      +
    • GL_ARB_ES2_compatibility (gallium drivers) +
    • GL_ARB_color_buffer_float (gallium drivers, i965) +
    • GL_ARB_draw_buffers_blend (gallium) +
    • GL_ARB_draw_instanced extension (gallium drivers, swrast) +
    • GL_ARB_instanced_arrays extension (gallium drivers) +
    • GL_ARB_occlusion_query2 (gallium drivers, swrast) +
    • GL_ARB_robustness (all drivers) +
    • GL_ARB_sampler_objects (gallium drivers) +
    • GL_ARB_seamless_cube_map (gallium r600) +
    • GL_ARB_shader_texture_lod (gallium drivers, i965) +
    • GL_ARB_sync (gallium drivers only, intel support was in 7.6) +
    • GL_ARB_texture_compression_rgtc (gallium drivers, swrast, i965) +
    • GL_ARB_texture_float (gallium, i965) +
    • GL_EXT_packed_float (gallium r600) +
    • GL_EXT_texture_compression_latc (gallium drivers, swrast) +
    • GL_EXT_texture_compression_rgtc (gallium drivers, swrast, i965) +
    • GL_EXT_texture_filter_anisotropic (swrast) +
    • GL_EXT_texture_shared_exponent (gallium drivers, swrast) +
    • GL_EXT_texture_sRGB_decode (gallium drivers, swrast, i965) +
    • GL_EXT_texture_snorm (gallium drivers) +
    • GL_AMD_draw_buffers_blend (alias of the ARB variant) +
    • GL_AMD_seamless_cubemap_per_texture (gallium r600) +
    • GL_AMD_shader_stencil_export (alias of the ARB variant) +
    • GL_ATI_draw_buffers (all drivers) +
    • GL_ATI_texture_compression_3dc (gallium drivers, swrast) +
    • GL_ATI_texture_float (gallium, i965) +
    • GL_NV_conditional_render (i965) +
    • GL_NV_texture_barrier (gallium drivers) +
    • Enable 16-wide fragment shader execution in i965 driver. This should improve performance in many applications. +
    • Initial alpha-level support for Intel "Ivybridge" chipsets in the i965 driver. +
    + + +

    Bug fixes

    + +

    This list is likely incomplete. This list only includes bug fixes not +included in the previous release (7.10.3). Many of these are regressions that +did not exist in the 7.10 release series at all.

    + +
      +
    • Bug 25871 - nearest neighbour samples wrong texel (precision/rounding problem)
    • + +
    • Bug 29162 - mesa/darwin is severly broken
    • + +
    • Bug 30080 - [i915] piglit nodepth-test fails
    • + +
    • Bug 30217 - Possible sources of memory leaks reported by valgrind
    • + +
    • Bug 30266 - Regression, segfault in libdrm_intel when calling glBitmap
    • + +
    • Bug 31561 - [i915] intel_regions.c:289: intel_region_release: Assertion `region->map_refcount == 0' failed.
    • + +
    • Bug 31744 - [GLSL] overriding built-in function impacts another shader
    • + +
    • Bug 32308 - [llvmpipe] src/gallium/auxiliary/gallivm/lp_bld_init.c:319:gallivm_register_garbage_collector_callback: Assertion `NumCallbacks < 32' failed.
    • + +
    • Bug 32309 - [softpipe] SIGSEGV sp_state_derived.c:204
    • + +
    • Bug 32459 - [softpipe] glean depthStencil regression
    • + +
    • Bug 32460 - [softpipe] piglit texwrap 1D regression
    • + +
    • Bug 32534 - [arrandale/sandybridge] Mesa swallowing GEM ioctl failures
    • + +
    • Bug 32560 - To fix: 64-bit-portabilty-issue state_tracker/st_program.c:427
    • + +
    • Bug 32634 - [r300g, bisected] Massive corruption in Unigine Sanctuary
    • + +
    • Bug 32768 - VBO rendering using glDrawArrays causes program termination and "cs IB too big" message
    • + +
    • Bug 32804 - [swrast] glean pixelFormats regression
    • + +
    • Bug 32814 - Build error in osmesa.c due to change in _mesa_update_framebuffer_visual() signature
    • + +
    • Bug 32859 - Mesa doesn't compile under NetBSD
    • + +
    • Bug 32912 - [bisected, r300g] Unigine Sanctuary: r300_emit.c:902:r300_emit_vertex_arrays: Assertion `&buf->b.b' failed with RADEON_HYPERZ=1
    • + +
    • Bug 32945 - [RADEON:KMS:R300G] HiZ: Weird behavior with 3 pipes
    • + +
    • Bug 33046 - [bisected]glean/pixelFormats and 3 oglc cases segfault
    • + +
    • Bug 33185 - [RADEON:KMS:R300G] X crashes when kwin effects are turned on
    • + +
    • Bug 33215 - [llvmpipe] piglit fbo-drawbuffers2-blend regression
    • + +
    • Bug 33247 - [swrast] tnl/t_draw.c:471: _tnl_draw_prims: Assertion `prim[i].num_instances > 0' failed
    • + +
    • Bug 33284 - [llvmpipe] piglit fbo-drawbuffers-fragcolor fails
    • + +
    • Bug 33306 - [glsl] GLSL integer division by zero crashes GLSL compiler
    • + +
    • Bug 33353 - [softpipe] piglit fbo-srgb looks incorrect
    • + +
    • Bug 33360 - inclusion of $(TALLOC_LIBS) in src/mesa/drivers/osmesa/Makefile causes a build failure
    • + +
    • Bug 33374 - [bisect] FTBFS on commit 9767d3b5 (glapi: Fix OpenGL ES 1.1 and 2.0 interop)
    • + +
    • Bug 33508 - [glsl] GLSL compiler modulus by zero crash
    • + +
    • Bug 33555 - [softpipe] tgsi/tgsi_sse2.c:1527:emit_tex: Assertion `0' failed.
    • + +
    • Bug 33885 - [glsl] GLSL compiler allows recursion
    • + +
    • Bug 33823 - [glsl] ralloc.c:78: get_header: Assertion `info->canary == 0x5A1106' failed.
    • + +
    • Bug 33934 - 3D blitting is orders of magnitude slower than equivalent 2D blitting.
    • + +
    • Bug 33946 - Crash: Mesa checks for invalid pointer, then uses it anyway.
    • + +
    • Bug 34008 - r600g: piglit failure (regression)
    • + +
    • Bug 34009 - Automatic Mipmap Generation produces very blurry image.
    • +
    • Bug 34042 - Surfaceless eglMakeCurrent() fails if the supplied EGLContext is not a dummy context
    • + +
    • Bug 34049 - r600g: assertion failure (regression)
    • + +
    • Bug 34119 - [glsl] piglit glsl-texcoord-array regression
    • + +
    • Bug 34323 - [i915 GLSL gles2] gl_FragCoord.w not correct
    • + +
    • Bug 34346 - src/glsl relies on $PWD which can be unset
    • + +
    • Bug 34378 - st/mesa: 2a904fd6a0cb80eec6dec2bae07fd8778b04caf3 breaks sauerbraten
    • + +
    • Bug 34419 - Kwin crashes screensaver exits
    • + +
    • Bug 34463 - state_tracker/st_texture.c:370:st_texture_image_copy: Assertion `u_minify(src->width0, srcLevel) == width' failed.
    • + +
    • Bug 34468 - src/glsl/Makefile fix
    • + +
    • Bug 34541 - [ilk, wine] massive render corruption after recent patchset
    • + +
    • Bug 34589 - [pineview bisected]many cases regression
    • + +
    • Bug 34595 - [bisected piketon]oglc half_float_vertex(misc.fillmode.wireframe) regressed
    • + +
    • Bug 34597 - [bisected piketon]oglc blend-constcolor and 7 draw-buffers2 subcases regressed
    • + +
    • Bug 34603 - [bisected piketon]oglc vbo subcase basic.bufferdata regressed
    • + +
    • Bug 34604 - [bisected piketon]piglit fbo/fbo-depth-sample-compare regressed
    • + +
    • Bug 34646 - [bisected piketon]ogles2conform GL2Tests/GL/gl_FragCoord/gl_FragCoord_w_frag.test
    • + +
    • Bug 34656 - i965: Crash when running WebGL Conformance Test in firefox-4 nightly build
    • + +
    • Bug 34691 - [GLSL] matrix array member assignment with a complex subscript fails
    • + +
    • Bug 34906 - [Pineview] Some WebGL conformance tests will crash firefox
    • + +
    • Bug 34968 - Bad fps in Lightsmark benchmark
    • + +
    • Bug 35025 - [Patch] Serious compiler warnings
    • + +
    • Bug 35312 - r600g: Automatic mipmap generation doesn't work properly
    • + +
    • Bug 35373 - [[GM45] OpenGL] GL_EXT_texture_sRGB_decode broken
    • + +
    • Bug 35434 - [RADEON:KMS:R600G] etqw: broken ground textures
    • + +
    • Bug 35441 - [PATCH] Mesa does not find nouveau include files with --enable-shared-dricore
    • + +
    • Bug 35614 - [SNB] random hang on piglit case shaders/glsl-max-varyings
    • + +
    • Bug 35820 - [bisected SNB] System hangs when Gnome with compiz start up
    • + +
    • Bug 35822 - [bisected pineview] many cases related to depth and stencil failed
    • + +
    • Bug 35849 - when sampling textures from both fragment and vertex shaders the vertex texture has the incorrect texture bound
    • + +
    • Bug 35852 - [bisected pineview] oglc case pxconv-read failed
    • + +
    • Bug 35961 - src/gallium/auxiliary/util/u_draw.c:77:util_draw_max_index: Assertion `buffer_size - format_size <= buffer_size' failed.
    • + +
    • Bug 36032 - piglit fdo9833 regression
    • + +
    • Bug 36033 - main/shaderapi.c:1044: validate_samplers: Assertion `(sizeof(targetName)/sizeof(*(targetName))) == NUM_TEXTURE_TARGETS' failed.
    • + +
    • Bug 36086 - [wine] Segfault r300_resource_copy_region with some wine apps and RADEON_HYPERZ
    • + +
    • Bug 36182 - Game Trine from http://www.humblebundle.com/ needs ATI_draw_buffers
    • + +
    • Bug 36268 - [r300g, bisected] minor flickering in Unigine Sanctuary
    • + +
    • Bug 36282 - 34a5d3b9f4740601708c82093e2114356d749e65: glxgears segfaults when compiled with shared glapi
    • + +
    • Bug 36333 - can't build demos if mesa build with --enable-selinux
    • + +
    • Bug 36473 - [bisected] piglit bugs/fdo23670-depth_test failed
    • + +
    • Bug 36572 - [bisected]oglc case texenv segfaults
    • + +
    • Bug 36609 - 45920d2ecb38b14fdda5253fecce996570c22863 breaks sauerbraten on r300g
    • + +
    • Bug 36648 - [bisected SNB]piglit fbo/fbo-alphatest-nocolor failed
    • + +
    • Bug 36649 - [bisected SNB]oglc draw-buffers2 failed with 16-wide
    • + +
    • Bug 36753 - Some textures now rendered as completely black after register allocator rewrite.
    • + +
    • Bug 36821 - [bisected SNB]oglc api-texcoord causes GPU hang
    • + +
    • Bug 36914 - r600g: add rv670 flushing workaround. Causes games and some mesa demos to segfault.
    • + +
    • Bug 36917 - Rendering glitches in ETQW
    • + +
    • Bug 36939 - multitexturing is messed up in quake wars (regression)
    • + +
    • Bug 36987 - Intel GMA 4500 ARB_shader_texture_lod support
    • + +
    • Bug 37028 - Amnesia/HPL2 Demo: Strange graphical bugs on r600g
    • + +
    • Bug 37150 - sRGB textures are too bright in Starcraft 2
    • + +
    • Bug 37154 - main/texstore.c:4187: _mesa_texstore_rgb9_e5: Assertion `baseInternalFormat == 0x1907' failed.
    • + +
    • Bug 37157 - [bisected] KDE KWin crashes on start with delayed BO mapping
    • + +
    • Bug 37168 - Regression: Severe memory leak when running Second Life
    • + +
    • Bug 37366 - [i965 bisected ILK] Fragment shader discard tests occasionally fail
    • + +
    • Bug 37383 - incorrect GLSL optimization
    • + +
    • Bug 37476 - [wine] Devil May Cry 4: TXD tgsi opcode unsupported / translation from TGSI failed / missing vertex shader
    • + +
    • Bug 37743 - [bisected i965]oglc GLSLlinker subcase negative.varying.beyondMaxVaryingFloats aborted
    • + +
    • Bug 37766 - Crash in dri2InvalidateBuffers when resizing Java window with OpenGL pipeline enabled
    • + +
    • Bug 37839 - main/teximage.c:2393: _mesa_choose_texture_format: Assertion `f != MESA_FORMAT_NONE' failed.
    • + +
    • Bug 37934 - Corruption with topogun trace
    • + +
    • Bug 38015 - Some extensions enabled even when not supported by the underlying driver
    • + +
    • Bug 38134 - [bisected i965]piglit fbo/fbo-blit-d24s8 crashed
    • + +
    • Bug 38145 - r600g/evergreen: Incorrect rendering of some effects in doom3
    • + +
    • Bug 38440 - ETQW: Model in team select rendering too bright
    • + +
    • Bug 38566 - [regression] ETQW crashes with 21972c85ea734dbfcf69629c6b0b940efb42d4ba
    • + +
    • Bug 38584 - MESA_GLSL=dump causes SEGV in ir_print_visitor::unique_name
    • + +
    • Bug 38599 - THe value of WGL_PBUFFER_HEIGHT_ARB is returned as width in wglQueryPbufferARB
    • + +
    • Bug 38602 - [bisected] Wrong display after "prefer native texture formats when possible" commit
    • + +
    • Bug 38624 - program/ir_to_mesa.cpp:1440: virtual void ir_to_mesa_visitor::visit(ir_dereference_variable*): Assertion `var->location != -1' failed.
    • + +
    • Bug 38626 - vbo: Don't discount stride breaks piglit on softpipe/r600g
    • + +
    • Bug 38649 - piglit fbo-copyteximage regression
    • + +
    • Bug 38762 - [IVB bisected]3D demos like glxgears abort
    • + +
    • Bug 38771 - [[GM45] DRI] GPU hangs with current Mesa GIT when running certain OpenGL applications
    • + +
    • Bug 38842 - Various valid GLX attributes are rejected by MESA glxChooseFBConfig
    • + +
    • Bug 38971 - [bisected]oglc glsl-autointconv subcase negative.function.ambiguousMatch failed
    • + +
    • Bug 38987 - sampler allowed as non-uniform / non-function parameters
    • + +
    • Bug 39024 - [Pineview webgl] many webgl conformance cases crash the browser
    • + +
    • Bug 39083 - [regression, bisected, r600g] Wrong rendering of Bubbles3D screensaver
    • + +
    • Bug 39119 - setting SQ_LDS_RESOURCE_MGMT register to zero in other applications muddles up font rendering permanently
    • + +
    • Bug 39209 - [bisected] Wrong display after "prefer native texture formats when possible" commit - part2
    • + +
    • Bug 39219 - libgl conflict with xbmc causes lock up on xbmc exit
    • + +
    • Bug 39257 - [bisected SNB]Mesa demos engine causes GPU hang
    • + +
    • Bug 39487 - [i965] brw_wm_surface_state.c:495: brw_update_renderbuffer_surface: Assertion `brw->has_surface_tile_offset || (tile_x == 0 && tile_y == 0)' failed.
    • + +
    • Bug 39515 - FTBFS: libEGL depends on libgbm, but libEGL builds first
    • + +
    • Bug 39572 - Cogs: GPU hang
    • + +
    + + +

    Changes

    +
      +
    • The Windows MSVC project files have been removed. +They haven't been maintained in quite a while. +Building with SCons is an alternative. +
    • Removed GL_SGI_texture_color_table support from swrast driver - the only +driver that implemented it. +
    + +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-7.10..mesa-7.11
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.2.html b/mesalib/docs/relnotes/7.2.html new file mode 100644 index 000000000..4c1ae7fd8 --- /dev/null +++ b/mesalib/docs/relnotes/7.2.html @@ -0,0 +1,111 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.2 Release Notes / 20 September 2008

    + +

    +Mesa 7.2 is a stable release fixing bugs found in 7.1, which was a +new development release. +

    +

    +Mesa 7.2 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +Note that this version of Mesa does not use the GEM memory manager. +The master branch of git uses GEM. +The prototype DRI2 code that was in 7.1 has also been removed. +

    +

    +DRM version 2.3.1 should be used with Mesa 7.2 +

    + + +

    MD5 checksums

    +
    +81a2a4b7cbfce7553f7ad8d924edbe2f  MesaLib-7.2.tar.gz
    +04d379292e023df0b0266825cb0dbde5  MesaLib-7.2.tar.bz2
    +8bc497a37977a55e987a4d1fabc3d882  MesaLib-7.2.zip
    +10c762e39486df395838af1d7b57e69c  MesaDemos-7.2.tar.gz
    +22e03dc4038cd63f32c21eb60994892b  MesaDemos-7.2.tar.bz2
    +1197bc4eb3bf44e291c14d4eb2e19381  MesaDemos-7.2.zip
    +42e3c6c6d156cd9dc545dbef72407354  MesaGLUT-7.2.tar.gz
    +f67daf93e12c4a459703bbf3e4004e31  MesaGLUT-7.2.tar.bz2
    +0390567eb2c2d12fbf82e8523fd77e2b  MesaGLUT-7.2.zip
    +
    + + +

    New features

    +
      +
    • i965 driver: added support for G41 chipset (Intel) +
    + + +

    Bug fixes

    +
      +
    • Fixed display list bug involving primitives split across lists (bug 17564) +
    • Fixed some issues with glBindAttribLocation() +
    • Fixed crash in _tnl_InvalidateState() found with Amira (bug 15834) +
    • Assorted bug fixes for Ming build +
    • Fixed some vertex/pixel buffer object reference counting bugs +
    • Fixed depth/stencil bug in i915/945 driver +
    • Fixed some shader flow control bugs in i965 driver +
    • Fixed a few tdfx driver bugs which prevented driver from working +
    • Fixed multisample enable/disable bug +
    + +

    Changes

    +
      +
    • Updated SGI header files with new license terms. +
    + + + +

    To Do (someday) items

    +
      +
    • Remove the MEMCPY() and _mesa_memcpy() wrappers and just use memcpy(). +Probably do the same for malloc, calloc, etc. +The wrappers were useful in the past for memory debugging but now we +have valgrind. Not worried about SunOS 4 support anymore either... +
    • Switch to freeglut +
    • Fix linux-glide target/driver. +
    • Improved lambda and derivative calculation for frag progs. +
    + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.3.html b/mesalib/docs/relnotes/7.3.html new file mode 100644 index 000000000..7ff5ed1fa --- /dev/null +++ b/mesalib/docs/relnotes/7.3.html @@ -0,0 +1,100 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.3 Release Notes / 22 January 2009

    + +

    +Mesa 7.3 is a new development release. +Users especially concerned with stability should stick with latest +stable release: version 7.2. +

    +

    +Mesa 7.3 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +8ed03191432b22d118d88d6db497f304  MesaLib-7.3.tar.gz
    +781e7811a6ed5c97b2b8defefc8ffbc9  MesaLib-7.3.tar.bz2
    +3ccba9a1734ed6d4b3389e1535d90fbf  MesaLib-7.3.zip
    +d312e974b31043b13b61bac5fbf00b87  MesaDemos-7.3.tar.gz
    +3f0741394069bdf2329565a387396cda  MesaDemos-7.3.tar.bz2
    +4d0887fd4c66a824295cdd619f6d34cb  MesaDemos-7.3.zip
    +2d7661b66022bcb8878728f3d5bd33ab  MesaGLUT-7.3.tar.gz
    +abe8036a724c1a483bdad6b5a55ddc1a  MesaGLUT-7.3.tar.bz2
    +5f247819b47e2a7c62d07a6afe5262fb  MesaGLUT-7.3.zip
    +
    + + +

    New features

    +
      +
    • Support for GLSL 1.20 +
    • Intel DRI drivers now use GEM and DRI2 +
    + + +

    Bug fixes

    +
      +
    • Assorted GLSL bug fixes +
    • Assorted i965 driver fixes +
    • Fix for wglCreateLayerContext() in WGL/Windows driver +
    • Build fixes for OpenBSD and gcc 2.95 +
    • GLSL preprocessor handles #pragma now +
    • Fix incorrect transformation of GL_SPOT_DIRECTION +
    • Fixed several bugs (#18367 and #19625) in glXMakeContextCurrent() +
    • Assorted Windows build fixes +
    + +

    Changes

    +
      +
    • Deprecated the "XMesa" interface (include/GL/xmesa*.h files) +
    • Deprecated the "FXMesa" interface (include/GL/fxmesa.h file) +
    • Deprecated the "Allegro" interface (include/GL/amesa.h file) +
    • Removed include/GL/uglmesa.h header +
    • Removed include/GLView.h header for BeOS +
    + + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.4.1.html b/mesalib/docs/relnotes/7.4.1.html new file mode 100644 index 000000000..104f185e3 --- /dev/null +++ b/mesalib/docs/relnotes/7.4.1.html @@ -0,0 +1,86 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.4.1 Release Notes / 18 April 2009

    + +

    +Mesa 7.4.1 is a stable development release fixing bugs since the 7.4 release. +

    +

    +Mesa 7.4.1 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +0c3a72f3295a53a134c04bd7d209ea62  MesaLib-7.4.1.tar.gz
    +423260578b653818ba66c2fcbde6d7ad  MesaLib-7.4.1.tar.bz2
    +84f78b154d4bd5c3ecc42eeff2e56676  MesaLib-7.4.1.zip
    +aa0ad323e59d6d10ff33ac0dde462a60  MesaDemos-7.4.1.tar.gz
    +1e169fb6abc2b45613f1c98a82dfe690  MesaDemos-7.4.1.tar.bz2
    +294e42be2d74176596c994ec23322fcf  MesaDemos-7.4.1.zip
    +92373bfa48e7b68dddf356e86b0e5699  MesaGLUT-7.4.1.tar.gz
    +336f3824b578b072211e0beecf4f04f4  MesaGLUT-7.4.1.tar.bz2
    +20751388d8ef16b42d25d9e3d705d101  MesaGLUT-7.4.1.zip
    +
    + + +

    Bug fixes

    +
      +
    • Fixed a two-sided lighting bug in fixed-function-to-GPU code generation +
    • Fixed some Darwin issues (Jeremy Huddleston) +
    • Indexing the GLSL gl_EyePlane[] or gl_ObjectPlane[] arrays with a variable + was broken, bug 20986 +
    • Fixed incorrect texture unit bias in TXB instruction +
    • glTexParameter settings weren't always propogated to drivers +
    • Assorted vertex/fragment program bug fixes +
    • Fixed point rendering in software rasterizer +
    • Fixed potential deadlock in object hash functions +
    • Fix a couple bugs surrounding front-buffer rendering with DRI2, but this + is not quite complete. +
    • Fixed glPopAttrib() bug when restoring user clip planes +
    + + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.4.2.html b/mesalib/docs/relnotes/7.4.2.html new file mode 100644 index 000000000..770db8f29 --- /dev/null +++ b/mesalib/docs/relnotes/7.4.2.html @@ -0,0 +1,81 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.4.2 Release Notes / May 15, 2009

    + +

    +Mesa 7.4.2 is a stable development release fixing bugs since the 7.4.1 release. +

    +

    +Mesa 7.4.2 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +172f5193154dad731387f97bd44ab68f  MesaLib-7.4.2.tar.gz
    +b10a76e32bde4645cfc34ea0416d7d8b  MesaLib-7.4.2.tar.bz2
    +cc6dfc2efd424cc342b84e6bcd78ce5d  MesaLib-7.4.2.zip
    +182a7e78aa7a480b3650a5c956dbddd1  MesaDemos-7.4.2.tar.gz
    +bf559a0485667a3bfa4513a23501579b  MesaDemos-7.4.2.tar.bz2
    +5379e622b65e8c22022dba34aeb6f4f9  MesaDemos-7.4.2.zip
    +7cc43c1c35bf6a279a16e063dea3b8c5  MesaGLUT-7.4.2.tar.gz
    +e0dfc44d537904a030861e5b3c760c11  MesaGLUT-7.4.2.tar.bz2
    +4a6cf5bbbac190d6ba97448b3098b7f4  MesaGLUT-7.4.2.zip
    +
    + + +

    Bug fixes

    +
      +
    • Fixed segfault when rendering to front buffer with DRI 1. +
    • Fixed swrast texture rectangle bug when wrap mode = GL_CLAMP_TO_BORDER and + filter mode = GL_LINEAR. (bug 21461) +
    • Fixed texture object mem leak during context destruction. +
    • Fixed a state validation bug in glCopyTex[Sub]Image() +
    • Fixed some i965 GLSL bugs. +
    • Fixed an R300 driver texture object bad memory reference. +
    + + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.4.3.html b/mesalib/docs/relnotes/7.4.3.html new file mode 100644 index 000000000..ebe973012 --- /dev/null +++ b/mesalib/docs/relnotes/7.4.3.html @@ -0,0 +1,86 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.4.3 Release Notes / 19 June 2009

    + +

    +Mesa 7.4.3 is a stable development release fixing bugs since the 7.4.2 release. +

    +

    +Mesa 7.4.3 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +34c5a6c47ed51f31c4fa36e269831352  MesaLib-7.4.3.tar.gz
    +70a983ba3deaa8bd63b18bbab283f698  MesaLib-7.4.3.tar.bz2
    +34f21b3205b271d575030aa98a2dda51  MesaLib-7.4.3.zip
    +56752b7adede212e6097afb10d0c0d59  MesaDemos-7.4.3.tar.gz
    +8ffa51c4833b1e298300a005e2d7ca2a  MesaDemos-7.4.3.tar.bz2
    +0037d24d41400d6fb9800ae55b8c863f  MesaDemos-7.4.3.zip
    +20e24f6692c0c90e7e3b220f79c4108d  MesaGLUT-7.4.3.tar.gz
    +03a4beeef74fc5ef0b1d6d04710e5a8a  MesaGLUT-7.4.3.tar.bz2
    +273788230adbdb9d57371309adedcf5f  MesaGLUT-7.4.3.zip
    +
    + + +

    Bug fixes

    +
      +
    • Fixed texture object reference counting bug (bug 21756) +
    • Allow depth/stencil textures to be attached to GL_STENCIL_ATTACHMENT point + (SF bug 2793846) +
    • Added missing glGet case for GL_VERTEX_ARRAY_BINDING_APPLE +
    • Fixed some OSMesa build issues +
    • Fixed a vertex buffer object crash +
    • Fixed broken glTexImage3D() when image type = GL_BITMAP +
    • Fixed some GLSL preprocessor bugs +
    • Fixed framebuffer mem leak in i945/i965 DRI drivers +
    • Fixed texture coordinate repeat bug in swrast (bug 21872) +
    • Fixed incorrect viewport clamping (lower bound is zero, not one) +
    • GLX fix for glean's makeCurrent test case +
    + + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.4.4.html b/mesalib/docs/relnotes/7.4.4.html new file mode 100644 index 000000000..41fec5a2c --- /dev/null +++ b/mesalib/docs/relnotes/7.4.4.html @@ -0,0 +1,75 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.4.4 Release Notes / 23 June 2009

    + +

    +Mesa 7.4.4 is a stable development release fixing bugs since the 7.4.3 release. +

    +

    +Mesa 7.4.4 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +0b56fe5a88ab0c3c5b2da5068f63f416  MesaLib-7.4.4.tar.gz
    +b66528d314c574dccbe0ed963cac5e93  MesaLib-7.4.4.tar.bz2
    +2818076f3ba23fa87fdfe4602a637a18  MesaLib-7.4.4.zip
    +3e77b208386c47b18165bce5ae317e2c  MesaDemos-7.4.4.tar.gz
    +628142ec9a54cd28cc027e6ce26cff47  MesaDemos-7.4.4.tar.bz2
    +d08a30d30ab7174859aa709cba6c726d  MesaDemos-7.4.4.zip
    +e6e91ba16e274d40cf3a97ad3218af01  MesaGLUT-7.4.4.tar.gz
    +e14bbb52517e8121b31f1387515365ab  MesaGLUT-7.4.4.tar.bz2
    +f10ed20469753c2b3d68c99854f80fd4  MesaGLUT-7.4.4.zip
    +
    + + +

    Bug fixes

    +
      +
    • Fixed i965/i915 segfault in screen destruction (bug 22408) +
    + + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.4.html b/mesalib/docs/relnotes/7.4.html new file mode 100644 index 000000000..0bfe68e2a --- /dev/null +++ b/mesalib/docs/relnotes/7.4.html @@ -0,0 +1,96 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.4 Release Notes / 27 March 2009

    + +

    +Mesa 7.4 is a stable development release fixing bugs since the 7.3 release. +

    +

    +Mesa 7.4 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +ed6bd7437177307e51e16d0c7c381dfa  MesaLib-7.4.tar.gz
    +7ecddb341a2691e0dfdb02f697109834  MesaLib-7.4.tar.bz2
    +433e823f8245f9fd5f397e7b719a8e47  MesaLib-7.4.zip
    +656eee6128016fb237e01aa8dabbc703  MesaDemos-7.4.tar.gz
    +02816f10f30b1dc5e069e0f68c177c98  MesaDemos-7.4.tar.bz2
    +44a70d6db4aa4c64ecc47871b6aceee8  MesaDemos-7.4.zip
    +25f80db4f8645cd3e58e2c9af53ec341  MesaGLUT-7.4.tar.gz
    +04ec01caebde44f5b0d619f00716b368  MesaGLUT-7.4.tar.bz2
    +019dc213baecaa3cb1278847d41b8591  MesaGLUT-7.4.zip
    +
    + + +

    New features

    +
      +
    • Added MESA_GLX_FORCE_DIRECT env var for Xlib/software driver +
    • GLSL version 1.20 is returnd by the GL_SHADING_LANGUAGE_VERSION query +
    + + +

    Bug fixes

    +
      +
    • glGetActiveUniform() returned wrong size for some array types +
    • Fixed some error checking in glUniform() +
    • Fixed a potential glTexImage('proxy target') segfault +
    • Fixed bad reference counting for 1D/2D texture arrays +
    • Fixed VBO + glPush/PopClientAttrib() bug #19835 +
    • Assorted i965 driver bug fixes +
    • Fixed a Windows compilation failure in s_triangle.c +
    • Fixed a GLSL array indexing bug +
    • Fixes for building on Haiku +
    + +

    Changes

    +
      +
    • Updated GL/glxext.h to version 48 +
    • Assorted updates for building on Solaris +
    + + + +

    Driver Status

    + +
    +Driver			Status
    +----------------------	----------------------
    +DRI drivers		varies with the driver
    +XMesa/GLX (on Xlib)	implements OpenGL 2.1
    +OSMesa (off-screen)	implements OpenGL 2.1
    +Windows/Win32		implements OpenGL 2.1
    +Glide (3dfx Voodoo1/2)	implements OpenGL 1.3
    +SVGA			unsupported
    +Wind River UGL		unsupported
    +DJGPP			unsupported
    +GGI			unsupported
    +BeOS			unsupported
    +Allegro			unsupported
    +D3D			unsupported
    +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.5.1.html b/mesalib/docs/relnotes/7.5.1.html new file mode 100644 index 000000000..cf5a5691d --- /dev/null +++ b/mesalib/docs/relnotes/7.5.1.html @@ -0,0 +1,77 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.5.1 Release Notes, 3 September 2009

    + +

    +Mesa 7.5.1 is a bug-fix release fixing issues found since the 7.5 release. +

    +

    +The main new feature of Mesa 7.5.x is the +Gallium3D infrastructure. +

    +

    +Mesa 7.5.1 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +d7269e93bc7484430637d54ced250876  MesaLib-7.5.1.tar.gz
    +877d6a4b24efc2b1d02aa553f262cba8  MesaLib-7.5.1.tar.bz2
    +23f4fb757a05c8396425681234ae20e5  MesaLib-7.5.1.zip
    +5af4bd113652108f5cec5113dad813f2  MesaDemos-7.5.1.tar.gz
    +785402e3b9f0e335538fcc6bf19f6987  MesaDemos-7.5.1.tar.bz2
    +950058cc6d6106e9c7d5876a03789fe9  MesaDemos-7.5.1.zip
    +cb52ce2c93389c2711cbe8d857ec5303  MesaGLUT-7.5.1.tar.gz
    +e3a9892e056d625c5353617a7c5b7e9c  MesaGLUT-7.5.1.tar.bz2
    +da1de364df148c94b4994006191a1e69  MesaGLUT-7.5.1.zip
    +
    + + +

    New features

    +
      +
    • Added configure --with-max-width=W, --with-max-height=H options to specify + max framebuffer, viewport size. +
    + + +

    Bug fixes

    +
      +
    • Added missing GLEW library to MesaDemos tarballs. +
    • Fixed swapbuffers jerkiness in Doom3/etc in Intel drivers. +
    • Fixed front buffer rendering bug in Intel drivers. +
    • Fixed minor GLX memory leaks. +
    • Fixed some texture env / fragment program state bugs. +
    • Fixed some Gallium glBlitFramebuffer() bugs +
    • Empty glBegin/glEnd() pair could cause divide by zero (bug 23489) +
    • Fixed Gallium glBitmap() Z position bug +
    • Setting arrays of sampler uniforms did not work +
    • Selection/Feedback mode didn't handle polygon culling correctly (bug 16866) +
    • Fixed 32/64-bit cross compilation issue in gen_matypes.c +
    • Fixed glXCreateGLXPixmap() for direct rendering. +
    • Fixed Gallium glCopyPixels(GL_STENCIL_INDEX) mispositioned image bug. +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.5.2.html b/mesalib/docs/relnotes/7.5.2.html new file mode 100644 index 000000000..13389fdb4 --- /dev/null +++ b/mesalib/docs/relnotes/7.5.2.html @@ -0,0 +1,73 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.5.2 Release Notes, 28 September 2009

    + +

    +Mesa 7.5.2 is a bug-fix release fixing issues found since the 7.5.1 release. +

    +

    +The main new feature of Mesa 7.5.x is the +Gallium3D infrastructure. +

    +

    +Mesa 7.5.2 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +43a90191dd9f76cd65dcc1ac91f3be70  MesaLib-7.5.2.tar.gz
    +94e47a499f1226803869c2e37a6a8e3a  MesaLib-7.5.2.tar.bz2
    +1ecb822b567ad67a0617361d45206b67  MesaLib-7.5.2.zip
    +2718fdce7e075911d6147beb8f27104b  MesaDemos-7.5.2.tar.gz
    +4e0f5ccd58afe21eddcd94327d926e86  MesaDemos-7.5.2.tar.bz2
    +f621f8c223b278d7c8e49a012d56ca25  MesaDemos-7.5.2.zip
    +83c16c1d6bcfcc3f97aab5d2fe430b4c  MesaGLUT-7.5.2.tar.gz
    +e5d03bedae369ea3705783573bb33813  MesaGLUT-7.5.2.tar.bz2
    +e82ba28e00d653e6f437d32be8ca8481  MesaGLUT-7.5.2.zip
    +
    + + +

    New features

    +
      +
    • Detect B43 chipset in Intel driver +
    + + +

    Bug fixes

    +
      +
    • Assorted bug fixes for i965/i945 drivers +
    • Fixed Gallium glDrawPixels(GL_STENCIL_INDEX) failure. +
    • Fixed GLSL linker/preprocessor version directive issue seen in Wine + (such as bug 23946) +
    • glUseProgram() is now compiled into display lists (bug 23746). +
    • glUniform functions are now compiled into display lists +
    • Auto mipmap generation didn't work reliably with Gallium. +
    • Fixed random number usage in GLX code. +
    • Fixed invalid GL_OUT_OF_MEMORY error sometimes raised by glTexSubImage2D + when using Gallium. +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.5.html b/mesalib/docs/relnotes/7.5.html new file mode 100644 index 000000000..9e96aa329 --- /dev/null +++ b/mesalib/docs/relnotes/7.5.html @@ -0,0 +1,108 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.5 Release Notes / 17 July 2009

    + +

    +Mesa 7.5 is a new development release. +People who are concerned with stability and reliability should stick +with the 7.4.x branch or wait for Mesa 7.5.1. +

    +

    +The main new feature of Mesa 7.5 is the +Gallium3D infrastructure. +

    +

    +Mesa 7.5 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    +

    +Note that the Mesa project is no longer using odd/even version numbers +to indicate development/stable releases. +The so-called development releases have been fairly stable. +If you're especially concerned with stability you should probably look for +"point" releases such as 7.5.1 which will be a bug-fix release. +

    + + +

    MD5 checksums

    +
    +553fd956e544727f30fbe249619b6286  MesaLib-7.5.tar.gz
    +459f332551f6ebb86f384d21dd15e1f0  MesaLib-7.5.tar.bz2
    +8c02c0e17a9025250d20424ae32f5163  MesaLib-7.5.zip
    +a188da2886fa5496ea0c2cda602b2eeb  MesaDemos-7.5.tar.gz
    +398ee8801814a00e47f6c2314e3dfddc  MesaDemos-7.5.tar.bz2
    +15a0c8ae013c54335a26335e1a98d609  MesaDemos-7.5.zip
    +81010147def5a644ba14f9bbb7a49a2a  MesaGLUT-7.5.tar.gz
    +baa7a1e850b6e39bae58868fd0684004  MesaGLUT-7.5.tar.bz2
    +265228418e4423fa328f2f5b7970cf08  MesaGLUT-7.5.zip
    +
    + + +

    New features

    +
      +
    • Gallium3D - this is the new architecture for OS-independent and + API-independent 3D drivers. + Gallium3D is intended for GPUs that fully support vertex/fragment shaders. + The Gallium3D drivers currently included are: +
        +
      • softpipe - a software/reference driver +
      • i915 - Intel 915/945 driver +
      • Cell - IBM/Sony/Toshiba Cell processor driver +
      • nouveau (for NVIDIA GPUs) and R300 for (AMD/ATI R300). + PLEASE NOTE: these drivers are incomplete and still under development. + It's probably NOT worthwhile to report any bugs unless you have patches. + +
      +
    • GL_ARB_framebuffer_object extension (software drivers, i965 driver) +
    • Reworked two-sided stencil support. +This allows a driver to support all three variations of two-sided stencil +including GL_ATI_separate_stencil, GL_EXT_stencil_two_side and OpenGL 2.0 +
    • GL_EXT_vertex_array_bgra extension (software drivers, i965 driver) +
    • GL_NV_texture_env_combine4 extension (software drivers, i965/i915 drivers) +
    • GL_EXT_texture_swizzle extension (software drivers, i965 driver) +
    • Updated SPARC assembly optimizations (David S. Miller) +
    • Initial support for separate compilation units in GLSL compiler. +
    • Increased max number of generic GLSL varying variables to 16 (formerly 8). +
    • GLSL linker now detects when too many varying variables are used. +
    • Optimize-out redundant glMaterial and glShadeModel calls in display lists +
    • Fixed gl_TextureMatrix[i][j] array indexing bug in GLSL compiler. +
    + + +

    Bug fixes

    +
      +
    • Lots of i965 driver bug fixes +
    • Fixed some GLSL preprocessor bugs +
    • GLSL: continue inside of a for-loop didn't work +
    + + +

    Changes

    +
      +
    • Remove support for GL_SGIX_shadow, GL_SGIX_shadow_ambient and +GL_SGIX_depth_texture extensions. Superseded by the ARB versions. +
    • Omitted some old Mesa demos from the release tarballs, added some others. +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.6.1.html b/mesalib/docs/relnotes/7.6.1.html new file mode 100644 index 000000000..bc84f5725 --- /dev/null +++ b/mesalib/docs/relnotes/7.6.1.html @@ -0,0 +1,86 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.6.1 Release Notes, 21 December 2009

    + +

    +Mesa 7.6.1 is a bug-fix release fixing issues since version 7.6. +

    +

    +Mesa 7.6.1 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +e80fabad2e3eb7990adae773d6aeacba  MesaLib-7.6.1.tar.gz
    +7db4617e9e10ad3aca1b64339fd71b7d  MesaLib-7.6.1.tar.bz2
    +dd3275dbf9833480d2e92d0c69b22abd  MesaLib-7.6.1.zip
    +f7fdcfe3c0f363e571c60f02f74368fb  MesaDemos-7.6.1.tar.gz
    +a4226f06732a02556fcf6be290b86dff  MesaDemos-7.6.1.tar.bz2
    +849425f356bd940726cebedfa79de176  MesaDemos-7.6.1.zip
    +d40cc7c5e337a85b674e27a8e494f52f  MesaGLUT-7.6.1.tar.gz
    +ca9aecb91f05b1da9fd7d5eeb19d47d7  MesaGLUT-7.6.1.tar.bz2
    +23fad8398004c977a1d8953079b72ca6  MesaGLUT-7.6.1.zip
    +
    + + +

    New features

    +
      +
    • Upgraded GL/glext.h to version 56, GL/glxext.h to version 25, + GL/wglext.h to version 17 +
    • New 3D driver, r600, for Radeon R6xx, R7xx hardware +
    + + +

    Bug fixes

    +
      +
    • Fixed crash caused by glXCopyContext() and glXDestroyContext(), bug 24217 +
    • glXQueryContext(GLX_RENDER_TYPE) returned wrong values (bug 24211) +
    • GLSL sqrt(0) returned unpredictable results +
    • Fixed default texture binding bug when a bound texture was deleted. +
    • r300: Work around an issue with very large fragment programs on R500. +
    • Fake glXQueryDrawable() didn't return good values (bug 24320) +
    • Fixed AUX buffer breakage (bug 24426). +
    • Fixed locale-dependent float parsing bug in GLSL compiler (bug 24531) +
    • Fixed Gallium Cell driver compilation failure. +
    • Fixed glGetTexLevelParameter(GL_TEXTURE_INTERNAL_FORMAT) query so that + it returns the actual compressed format chosen. +
    • Fixed glBitmap bugs in Intel drivers. +
    • Fixed a number of Microsoft Visual Studio compilation problems. +
    • Fixed clipping / provoking vertex bugs in i965 driver. +
    • Assorted build fixes for AIX. +
    • Endianness fixes for the DRI swrast driver (bug 22767).
    • +
    • Point sprite fixes for i915/945 driver. +
    • Fixed assorted memory leaks (usually on error paths) +
    • Fixed some GLSL compiler bugs (ex: 25579) +
    • Assorted build fixes for BlueGene +
    + +

    Changes

    +
      +
    • Removed old VC6, VC7 project files for Windows +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.6.html b/mesalib/docs/relnotes/7.6.html new file mode 100644 index 000000000..86ad4a848 --- /dev/null +++ b/mesalib/docs/relnotes/7.6.html @@ -0,0 +1,91 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.6 Release Notes, 28 September 2009

    + +

    +Mesa 7.6 is a new development release. +People who are concerned with stability and reliability should stick +with a previous release or wait for Mesa 7.6.1. +

    +

    +Mesa 7.6 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +5ffa7d7abf8973f57a1bc4f813e6dade  MesaLib-7.6.tar.gz
    +8c75f90cd0303cfac9e4b6d54f6759ca  MesaLib-7.6.tar.bz2
    +27fcfd69708599c978cb34ba5cd363e1  MesaLib-7.6.zip
    +e7befb3ae604f591806194a4da445628  MesaDemos-7.6.tar.gz
    +0ede7adf217951acd90dbe4551210c07  MesaDemos-7.6.tar.bz2
    +ed9298409cf6613bc0964525ca4afc8a  MesaDemos-7.6.zip
    +666955668e44ff14acf7d15dc78407d3  MesaGLUT-7.6.tar.gz
    +b8b59706f827d18d1b784a0ff98b4dc2  MesaGLUT-7.6.tar.bz2
    +c49c19c2bbef4f3b7f1389974dff25f4  MesaGLUT-7.6.zip
    +
    + + +

    New features

    +
      +
    • OpenVG front-end (state tracker for Gallium). +This was written by Zack Rusin at Tungsten Graphics. +
    • GL_ARB_vertex_array_object and GL_APPLE_vertex_array_object extensions + (supported in Gallium drivers, Intel DRI drivers, and software drivers)
    • +
    • GL_ARB_copy_buffer extension + (supported in Gallium drivers, Intel DRI drivers, and software drivers)
    • +
    • GL_ARB_map_buffer_range extension + (supported in Gallium drivers, Intel DRI drivers, and software drivers)
    • +
    • GL_ARB_seamless_cube_map extension + (supported in software drivers and i965 drivers)
    • +
    • GL_ARB_vertex_array_bgra (ARB synonym for GL_EXT_vertex_array_bgra)
    • +
    • GL_ARB_sync (supported in software drivers and Intel DRI drivers)
    • +
    • GL_EXT_provoking_vertex extension (supported in Gallium, i915, i965, and software drivers) +
    • Rewritten radeon/r200/r300 driver using a buffer manager +
    • radeon/r200/r300 GL_EXT_framebuffer_object support when used with + kernel memory manager +
    • radeon/r200/r300 support for GL_ARB_occlusion_query
    • +
    • r300 driver supports OpenGL 1.5
    • +
    • r300 driver support for GL_EXT_vertex_array_bgra, GL_EXT_texture_sRGB +
    • i915/945 driver support for GL_ARB_point_sprite, GL_EXT_stencil_two_side + and GL_ATI_separate_stencil extensions +
    • Rewritten assembler for GL_ARB_vertex_program / + GL_ARB_fragment_program.
    • +
    • Added configure --with-max-width=W, --with-max-height=H options to specify + max framebuffer, viewport size. +
    • Initial version of Gallium llvmpipe driver. This is a new driver based + on LLVM which makes exensive use of run-time code generation. This is + an "alpha" stage driver. See the src/gallium/drivers/llvmpipe/README + file for more information. +
    + + +

    Bug fixes

    +
      +
    • i965 DRI driver fixes, including support for "unlimited" size constant + buffers (GLSL uniforms) +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.7.1.html b/mesalib/docs/relnotes/7.7.1.html new file mode 100644 index 000000000..3a295a895 --- /dev/null +++ b/mesalib/docs/relnotes/7.7.1.html @@ -0,0 +1,66 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.7.1 Release Notes / March 28, 2010

    + +

    +Mesa 7.7.1 is a bug-fix release. +

    +

    +Mesa 7.7.1 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +3ab0638cfa7ce8157337a229cf0db2c4  MesaLib-7.7.1.tar.gz
    +46664d99e03f1e3ac078a7fea02af115  MesaLib-7.7.1.tar.bz2
    +4e73ba8abb59aff79485eb95d7cefff7  MesaLib-7.7.1.zip
    +bf1b108983995f7a712cf3343df1c918  MesaDemos-7.7.1.tar.gz
    +aeb39645d80d656e0adebaa09e5bcd03  MesaDemos-7.7.1.tar.bz2
    +01c49b7454fd292244eaf8bdc6ed8cf0  MesaDemos-7.7.1.zip
    +37ec6386693dcb6dc770d1efd63a7a93  MesaGLUT-7.7.1.tar.gz
    +1e16c85282f843791a21f7bc7b6a1ca8  MesaGLUT-7.7.1.tar.bz2
    +d352c9e36a8e4d1059f4abc017b131e0  MesaGLUT-7.7.1.zip
    +
    + + +

    Bug fixes

    +
      +
    • Assorted fixes to VMware SVGA gallium driver. +
    • Fixed broken blending to multiple color buffers in swrast driver. +
    • Allocate constants more tightly in GL_ARB_vertex/fragment parser. +
    • Fixed mipmap generation bug caused by invalid viewport state. +
    • Gallium SSE codegen for XPD didn't always work. +
    • Fixed Windows build. +
    • Fixed broken glMultiDrawElements(). +
    • Silence bogus GL errors generated in glxinfo. +
    • Fixed several render to texture bugs. +
    • Assorted bug fixes in Mesa/Gallium state tracker including + glCopy/DrawPixels() to FBOs. +
    • Assorted fixes to Gallium drivers. +
    • Fixed broken glPush/PopClientAttrib() for vertex arrays in GLX code. +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.7.html b/mesalib/docs/relnotes/7.7.html new file mode 100644 index 000000000..46ee7c2a8 --- /dev/null +++ b/mesalib/docs/relnotes/7.7.html @@ -0,0 +1,77 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.7 Release Notes / 21 December 2009

    + +

    +Mesa 7.7 is a new development release. +People who are concerned with stability and reliability should stick +with a previous release or wait for Mesa 7.7.1. +

    +

    +Mesa 7.7 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +395c9516edf1ad54b0934d8db15557bf  MesaLib-7.7.tar.gz
    +e3fa64a1508bc23dd9de9dd2cea7cfb1  MesaLib-7.7.tar.bz2
    +e54903eb5e49c3969821fa16b32da245  MesaLib-7.7.zip
    +53b5b6f78e55de170d43c98cb6aaab7e  MesaDemos-7.7.tar.gz
    +6fd616b27b9826d0faa23e08e05d9435  MesaDemos-7.7.tar.bz2
    +240fe06159ad73d5e22c27033b66c80a  MesaDemos-7.7.zip
    +9fe11a904b2a9d8cd06cc52bc330b716  MesaGLUT-7.7.tar.gz
    +e8dceed05a59a2d3c2619d7d734587e3  MesaGLUT-7.7.tar.bz2
    +96af041d435349ee23ead4667ec36363  MesaGLUT-7.7.zip
    +
    + + +

    New features

    +
      +
    • VMware "SVGA" Gallium driver. This is a Gallium3D driver which targets the + VMware virtual graphics device. It allows Linux OpenGL guest applications + to utilize the 3D graphics hardware of the host operating system. +
    • GL_ARB_draw_elements_base_vertex (supported in Intel i965 and software drivers)
    • +
    • GL_ARB_depth_clamp (supported in Intel i965 DRI and software drivers)
    • +
    • GL_NV_depth_clamp (supported in Intel i965 DRI and software drivers)
    • +
    • GL_ARB_provoking_vertex (same as GL_EXT_provoking_vertex)
    • +
    • Wavefront .obj file loader/viewer demo (progs/demos/objviewer) +
    + + +

    Bug fixes

    +
      +
    • Many assorted i965 driver fixes. +
    • Many r300-gallium driver fixes; this driver is now considered unstable-quality instead of experimental-quality. +
    + + +

    Changes

    +
      +
    • New Mesa texture/surface format infrastructure +
    • Removed some unused Mesa device driver hooks +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.8.1.html b/mesalib/docs/relnotes/7.8.1.html new file mode 100644 index 000000000..72317ca20 --- /dev/null +++ b/mesalib/docs/relnotes/7.8.1.html @@ -0,0 +1,70 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.8.1 Release Notes / April 5, 2010

    + +

    +Mesa 7.8.1 fixes a couple critical bugs in the recent Mesa 7.8 release. Even +though this is a bug fix release, given its proximity to the 7.8 release, a +new development release, it should also be considered new development release. +People who are concerned with stability and reliability should stick +with a previous release, such as 7.7.1, or wait for Mesa 7.8.2. +

    +

    +Mesa 7.8.1 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +62e8e47cbd63741b4bbe634dcdc8a56a  MesaLib-7.8.1.tar.gz
    +25ec15f8e41fde6d206118cc786dbac4  MesaLib-7.8.1.tar.bz2
    +22b1153010ffdf513836ea9931159e80  MesaLib-7.8.1.zip
    +c9c0a830923d3820807a08c09d521b3e  MesaDemos-7.8.1.tar.gz
    +9ef47f911869657c6bf2f43ebce86b61  MesaDemos-7.8.1.tar.bz2
    +93720605eb3f784f9bcc289a4dd2ff52  MesaDemos-7.8.1.zip
    +ed1d0b1e960afe6a3768eab747cbdbd3  MesaGLUT-7.8.1.tar.gz
    +6bae516a44c6d26ff3152c960ab648e7  MesaGLUT-7.8.1.tar.bz2
    +ba306f603ea73c30ee0e7efa14dc5581  MesaGLUT-7.8.1.zip
    +
    + + +

    New features

    +

    None.

    + + +

    Bug fixes

    +
      +
    • Fix incorrect enums for GLX_INTEL_swap_event by updating glxext.h to + version 27 from OpenGL.org.
    • +
    • Fix compilation errors on non-GLX_DIRECT_RENDERING builds.
    • +
    • Various fixes for building Mesa on OS X.
    • +
    • Pass GLX drawable ID to dri2InvalidateBuffers. Fixes bug #27190.
    • +
    + + +

    Changes

    +

    None.

    + +
    + + diff --git a/mesalib/docs/relnotes/7.8.2.html b/mesalib/docs/relnotes/7.8.2.html new file mode 100644 index 000000000..ab18402d9 --- /dev/null +++ b/mesalib/docs/relnotes/7.8.2.html @@ -0,0 +1,152 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.8.2 Release Notes / June 17, 2010

    + +

    +Mesa 7.8.2 is a bug fix release which fixes bugs found since the 7.8.1 release. +

    +

    +Mesa 7.8.2 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +c89b63d253605ed40e8ac370d25a833c  MesaLib-7.8.2.tar.gz
    +6be2d343a0089bfd395ce02aaf8adb57  MesaLib-7.8.2.tar.bz2
    +a04ad3b06ac5ff3969a003fa7bbf7d5b  MesaLib-7.8.2.zip
    +7c213f92efeb471f0331670d5079d4c0  MesaDemos-7.8.2.tar.gz
    +757d9e2e06f48b1a52848be9b0307ced  MesaDemos-7.8.2.tar.bz2
    +8d0e5cfe68b8ebf90265d350ae2c48b1  MesaDemos-7.8.2.zip
    +b74482e3f44f35ed395c4aada4fd8240  MesaGLUT-7.8.2.tar.gz
    +a471807b65e49c325808ba4551be93ed  MesaGLUT-7.8.2.tar.bz2
    +9f190268c42be582ef66e47365ee61e3  MesaGLUT-7.8.2.zip
    +
    + + +

    New features

    +

    None.

    + + +

    Changes

    +
      +
    • Upgraded glext.h to version 61, and upgraded glxext.h +
    + + +

    Bug fixes

    +
      +
    • Fixed Gallium glDrawPixels(GL_DEPTH_COMPONENT). +
    • Fixed Gallium Cell driver to buildable, runable state +
    • Fixed bad error checking for glFramebufferRenderbuffer(attachment=GL_DEPTH_STENCIL_ATTACHMENT). +
    • Fixed incorrect Z coordinate handling in "meta" glDraw/CopyPixels. + Bug + #23670.
    • + +
    • Assorted i965 driver fixes. + Including but not limited to: +
        +
      • Fix scissoring when width or height is + 0. Bug + #27643. +
      • Fix bit allocation for number of color regions for + ARB_draw_buffers.
      • +
      • Set the correct provoking vertex for clipped first-mode + trifans. Bug + #24470.
      • +
      • Use R16G16B16A16_FLOAT for 3-component half-float.
      • +
      • Fix assertion for surface tile offset usage on Ironlake.
      • +
      • Fix cube map layouts on Ironlake.
      • +
      • When an RB gets a new region, clear the old from the state + cache. Bug + #24119.
      • +
      • Reject shaders with uninlined function calls instead of hanging.
      • +
      +
    • + +
    • Assorted i915 driver fixes. Including but not limited to: +
        +
      • Fixed texture LOD clamping in i915 driver. + Bug + #24846.
      • +
      • Fix off-by-one for drawing rectangle. + Bug + #27408.
      • +
      +
    • + +
    • Fixed hangs in etracer on 830 and 845 + chipsets. Bug + #26557.
    • +
    • Fixed tiling of small textures on all Intel drivers.
    • +
    • Fixed crash in Savage driver when using _mesa_CopyTexImage2D. + Bug + #27652.
    • + +
    • Assorted GLX fixes. Including but not limited to: +
        +
      • Fixed __glXInitializeVisualConfigFromTags's handling of + unrecognized fbconfig tags.
      • +
      • Fixed regression with GLX_USE_GL. +
      • Fixed config chooser logic for 'mask' matching.
      • +
      • Report swap events correctly in direct rendered case (DRI2)
      • +
      • Fixed build with dri2proto which doesn't define + X_DRI2SwapInterval.
      • +
      • Get GLX_SCREEN first in __glXQueryContextInfo. + Bug + #14245.
      • +
      +
    • + +
    • Assorted GLSL fixes. Including but not limited to: +
        +
      • Change variable declared assertion into conditional in GLSL + compiler. Bug + #27921.
      • +
      • Fix instruction indexing + bugs. Bug + #27566.
      • +
      • Updated uniform location / offset encoding to be more like + other implementations.
      • +
      • Don't overwrite a driver's shader infolog with generic failure + message.
      • +
      +
    • + +
    • Fixed OSMesa build for 16 and 32-bit color channel depth. +
    • Fixed OSMesa build with hidden symbol visibility. libOSMesa no longer links to libGL. + Bug + #28305. +
    • Fixed handling of multiple render targets in fixed-function + texture envrionmnent programs.
    • +
    • Fixed conversion errors in signed_rgba8888[rev] texel + fetch.
    • +
    • Don't set srcLevel on GL_TEXTURE_RECTANGLE_ARB targets.
    • +
    • Various build fixes for OpenBSD.
    • +
    • Various build fixes for OS X.
    • +
    • Various build fixes for GCC 3.3.
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.8.3.html b/mesalib/docs/relnotes/7.8.3.html new file mode 100644 index 000000000..ad885f2ef --- /dev/null +++ b/mesalib/docs/relnotes/7.8.3.html @@ -0,0 +1,95 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.8.3 Release Notes / (date tbd)

    + +

    +Mesa 7.8.3 is a bug fix release which fixes bugs found since the 7.8.2 release. +

    +

    +Mesa 7.8.3 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +x  MesaLib-7.8.3.tar.gz
    +x  MesaLib-7.8.3.tar.bz2
    +x  MesaLib-7.8.3.zip
    +x  MesaDemos-7.8.3.tar.gz
    +x  MesaDemos-7.8.3.tar.bz2
    +x  MesaDemos-7.8.3.zip
    +x  MesaGLUT-7.8.3.tar.gz
    +x  MesaGLUT-7.8.3.tar.bz2
    +x  MesaGLUT-7.8.3.zip
    +
    + + +

    New features

    +

    None.

    + + +

    Changes

    +
      +
    • The radeon driver should use less memory when searching for a valid mip +image.
    • +
    + + +

    Bug fixes

    +
      +
    • Fix unsupported FB with D24S8 (bug + 29116)
    • +
    • Fix ReadPixels crash when reading depth/stencil from an FBO
    • +
    • Fixed a bug rendering to 16-bit buffers using swrast.
    • +
    • Fixed a state tracker/TGSI bug that caused crashes when using Windows' + memory debugging features.
    • +
    • Fixed an issue rendering to 32-bit channels with swrast (bug + 29487)
    • +
    • GLSL: fix indirect gl_TextureMatrix addressing (bug + 28967)
    • +
    • GLSL: fix for bug + 27216
    • +
    • GLSL: fix zw fragcoord entries in some cases (bug + 29183)
    • +
    • Fix texture env generation in some cases (bug + 28169)
    • +
    • osmesa: a fix for calling OSMesaMakeCurrent twice was applied (bug + 10966
    • +
    • A bug was fixed which could cause Mesa to ignore the + MESA_EXTENSION_OVERRIDE environment variable.
    • +
    • A bug related to specular highlights on backfaces was fixed.
    • +
    • A radeon-specific issue with glCopyTex(Sub)Image was + corrected.
    • +
    • radeon/wine: flush command stream in more cases, fixing wine d3d9 + tests.
    • +
    • r600: fix sin+cos normalization.
    • +
    • r600: (properly) ignore GL_COORD_REPLACE when point sprites are + disabled.
    • +
    • radeon: avoid flushing when the context is not current.
    • +
    • r300c: a bug affecting unaligned BOs was fixed.
    • +
    • r300c: a hardlock caused by ARB_half_float_vertex incorrectly advertised on some chipsets.
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.8.html b/mesalib/docs/relnotes/7.8.html new file mode 100644 index 000000000..d8cc3e9a9 --- /dev/null +++ b/mesalib/docs/relnotes/7.8.html @@ -0,0 +1,77 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.8 Release Notes / March 28, 2010

    + +

    +Mesa 7.8 is a new development release. +People who are concerned with stability and reliability should stick +with a previous release or wait for Mesa 7.8.1. +

    +

    +Mesa 7.8 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +5fcfde5383eccb3e9fd665f08a0ea59b  MesaLib-7.8.tar.gz
    +85cb891eecb89aae4fdd3499cccd934b  MesaLib-7.8.tar.bz2
    +754f39593006effc1c8ec3c27c2f1296  MesaLib-7.8.zip
    +c3869c29fa6c3dbdd763f7428d271e12  MesaDemos-7.8.tar.gz
    +9fe8ec184c7f78691e43c4c0a7f97d56  MesaDemos-7.8.tar.bz2
    +063a96947f7b83d4ad789c6cf291b184  MesaDemos-7.8.zip
    +5f4246756b7daaddb4fb3f970cad1e28  MesaGLUT-7.8.tar.gz
    +ca7048a4aa7a437dcc84cc2c7d731336  MesaGLUT-7.8.tar.bz2
    +b54581aeb79b585b158d6a32f94feff2  MesaGLUT-7.8.zip
    +
    + + +

    New features

    +
      +
    • GL_NV_conditional_render extension (swrast driver only) +
    • GL_EXT_draw_buffers2 extension (swrast and i965 driver only) +
    • GL_ARB_fragment_coord_conventions extension (for swrast, i965, and Gallium drivers) +
    • GL_EXT_texture_array extension (swrast driver only) +
    • GL_APPLE_object_purgeable extension (swrast and i945/i965 DRI drivers) +
    • Much improved support for EGL in Mesa +
    • New state trackers for OpenGL ES 1.1 and 2.0 +
    • Dedicated documentation for Gallium +
    + + +

    Bug fixes

    +
      +
    • Massive improvements to the Gallium driver for R300-R500 Radeons; this + driver is now moderately stable but not terribly performant. +
    + + +

    Changes

    +
      +
    • Removed support for color-index rendering
    • +
    • Removed support for GCC versions earlier than 3.3.0.
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.9.1.html b/mesalib/docs/relnotes/7.9.1.html new file mode 100644 index 000000000..7a9835e1b --- /dev/null +++ b/mesalib/docs/relnotes/7.9.1.html @@ -0,0 +1,411 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.9.1 Release Notes / January 7, 2011

    + +

    +Mesa 7.9.1 is a bug fix release which fixes bugs found since the 7.9 release. +

    +

    +Mesa 7.9.1 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +78422843ea875ad4eac35b9b8584032b  MesaLib-7.9.1.tar.gz
    +07dc6cfb5928840b8b9df5bd1b3ae434  MesaLib-7.9.1.tar.bz2
    +c8eaea5b3c3d6dee784bd8c2db91c80f  MesaLib-7.9.1.zip
    +ee9ecae4ca56fbb2d14dc15e3a0a7640  MesaGLUT-7.9.1.tar.gz
    +41fc477d524e7dc5c84da8ef22422bea  MesaGLUT-7.9.1.tar.bz2
    +90b287229afdf19317aa989d19462e7a  MesaGLUT-7.9.1.zip
    +
    + + +

    New features

    +

    None.

    + +

    Bug fixes

    +

    This list is likely incomplete.

    +
      +
    • Bug 28800 - [r300c, r300g] Texture corruption with World of Warcraft
    • + +
    • Bug 29420 - Amnesia / HPL2 RendererFeatTest - not rendering correctly
    • + +
    • Bug 29946 - [swrast] piglit valgrind glsl-array-bounds-04 fails
    • + +
    • Bug 30261 - [GLSL 1.20] allowing inconsistent invariant declaration between two vertex shaders
    • + +
    • Bug 30632 - [softpipe] state_tracker/st_manager.c:489: st_context_notify_invalid_framebuffer: Assertion `stfb && stfb->iface == stfbi' failed.
    • + +
    • Bug 30694 - wincopy will crash on Gallium drivers when going to front buffer
    • + +
    • Bug 30787 - Invalid asm shader does not generate draw-time error when used with GLSL shader
    • + +
    • Bug 30993 - getFramebufferAttachmentParameteriv wrongly generates error
    • + +
    • Bug 31101 - [glsl2] abort() in ir_validate::visit_enter(ir_assignment *ir)
    • + +
    • Bug 31193 - [regression] aa43176e break water reflections
    • + +
    • Bug 31194 - The mesa meta save/restore code doesn't ref the current GLSL program
    • + +
    • Bug 31371 - glslparsertest: ir.cpp:358: ir_constant::ir_constant(const glsl_type*, const ir_constant_data*): Assertion `(type->base_type >= 0) && (type->base_type <= 3)' failed.
    • + +
    • Bug 31439 - Crash in glBufferSubData() with size == 0
    • + +
    • Bug 31495 - [i965 gles2c bisected] OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed
    • + +
    • Bug 31514 - isBuffer returns true for unbound buffers
    • + +
    • Bug 31560 - [tdfx] tdfx_tex.c:702: error: 'const struct gl_color_table' has no member named 'Format'
    • + +
    • Bug 31617 - Radeon/Compiz: 'failed to attach dri2 front buffer', error case not handled
    • + +
    • Bug 31648 - [GLSL] array-struct-array gets assertion: `(size >= 1) && (size <= 4)' failed.
    • + +
    • Bug 31650 - [GLSL] varying gl_TexCoord fails to be re-declared to different size in the second shader
    • + +
    • Bug 31673 - GL_FRAGMENT_PRECISION_HIGH preprocessor macro undefined in GLSL ES
    • + +
    • Bug 31690 - i915 shader compiler fails to flatten if in Aquarium webgl demo.
    • + +
    • Bug 31832 - [i915] Bad renderbuffer format: 21
    • + +
    • Bug 31841 - [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !
    • + +
    • Bug 31894 - Writing to gl_PointSize with GLES2 corrupts other varyings
    • + +
    • Bug 31909 - [i965] brw_fs.cpp:1461: void fs_visitor::emit_bool_to_cond_code(ir_rvalue*): Assertion `expr->operands[i]->type->is_scalar()' failed.
    • + +
    • Bug 31934 - [gallium] Mapping empty buffer object causes SIGSEGV
    • + +
    • Bug 31983 - [i915 gles2] "if (expression with builtin/varying variables) discard" breaks linkage
    • + +
    • Bug 31985 - [GLSL 1.20] initialized uniform array considered as "unsized"
    • + +
    • Bug 31987 - [gles2] if input a wrong pname(GL_NONE) to glGetBoolean, it will not case GL_INVALID_ENUM
    • + +
    • Bug 32035 - [GLSL bisected] comparing unsized array gets segfault
    • + +
    • Bug 32070 - llvmpipe renders stencil demo incorrectly
    • + +
    • Bug 32273 - assertion fails when starting vdrift 2010 release with shaders enabled
    • + +
    • Bug 32287 - [bisected GLSL] float-int failure
    • + +
    • Bug 32311 - [965 bisected] Array look-ups broken on GM45
    • + +
    • Bug 32520 - [gles2] glBlendFunc(GL_ZERO, GL_DST_COLOR) will result in GL_INVALID_ENUM
    • + +
    • Bug 32825 - egl_glx driver completely broken in 7.9 branch [fix in master]
    • +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-7.9..mesa-7.9.1
    +
    + +

    Alex Deucher (5):

    +
      +
    • r100: revalidate after radeon_update_renderbuffers
    • +
    • r600c: add missing radeon_prepare_render() call on evergreen
    • +
    • r600c: properly align mipmaps to group size
    • +
    • gallium/egl: fix r300 vs r600 loading
    • +
    • r600c: fix some opcodes on evergreen
    • +
    + +

    Aras Pranckevicius (2):

    +
      +
    • glsl: fix crash in loop analysis when some controls can't be determined
    • +
    • glsl: fix matrix type check in ir_algebraic
    • +
    + +

    Brian Paul (27):

    +
      +
    • swrast: fix choose_depth_texture_level() to respect mipmap filtering state
    • +
    • st/mesa: replace assertion w/ conditional in framebuffer invalidation
    • +
    • egl/i965: include inline_wrapper_sw_helper.h
    • +
    • mesa: Add missing else in do_row_3D
    • +
    • mesa: add missing formats in _mesa_format_to_type_and_comps()
    • +
    • mesa: handle more pixel types in mipmap generation code
    • +
    • mesa: make glIsBuffer() return false for never bound buffers
    • +
    • mesa: fix glDeleteBuffers() regression
    • +
    • swrast: init alpha value to 1.0 in opt_sample_rgb_2d()
    • +
    • meta: Mask Stencil.Clear against stencilMax in _mesa_meta_Clear
    • +
    • st/mesa: fix mapping of zero-sized buffer objects
    • +
    • mesa: check for posix_memalign() errors
    • +
    • llvmpipe: fix broken stencil writemask
    • +
    • mesa: fix GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME query
    • +
    • mesa: return GL_FRAMEBUFFER_DEFAULT as FBO attachment type
    • +
    • mesa: make glGet*(GL_NONE) generate GL_INVALID_ENUM
    • +
    • mesa: test for cube map completeness in glGenerateMipmap()
    • +
    • tnl: Initialize gl_program_machine memory in run_vp.
    • +
    • tnl: a better way to initialize the gl_program_machine memory
    • +
    • mesa, st/mesa: disable GL_ARB_geometry_shader4
    • +
    • glsl: fix off by one in register index assertion
    • +
    • st/mesa: fix mipmap generation bug
    • +
    • glsl: new glsl_strtod() wrapper to fix decimal point interpretation
    • +
    • mesa: no-op glBufferSubData() on size==0
    • +
    • tdfx: s/Format/_BaseFormat/
    • +
    • st/mesa: fix renderbuffer pointer check in st_Clear()
    • +
    • mesa: Bump the number of bits in the register index.
    • +
    + +

    Chad Versace (5):

    +
      +
    • glsl: Fix lexer rule for ^=
    • +
    • glsl: Fix ast-to-hir for ARB_fragment_coord_conventions
    • +
    • glsl: Fix ir_expression::constant_expression_value()
    • +
    • glsl: Fix erroneous cast in ast_jump_statement::hir()
    • +
    • glsl: Fix linker bug in cross_validate_globals()
    • +
    + +

    Chia-I Wu (10):

    +
      +
    • targets/egl: Fix linking with libdrm.
    • +
    • st/vega: Fix version check in context creation.
    • +
    • st/egl: Do not finish a fence that is NULL.
    • +
    • egl: Fix a false negative check in _eglCheckMakeCurrent.
    • +
    • st/mesa: Unreference the sampler view in st_bind_surface.
    • +
    • egl_dri2: Fix __DRI_DRI2 version 1 support.
    • +
    • st/vega: Do not wait NULL fences.
    • +
    • mesa: Do not advertise GL_OES_texture_3D.
    • +
    • egl_glx: Fix borken driver.
    • +
    • egl: Check extensions.
    • +
    + +

    Daniel Lichtenberger (1):

    +
      +
    • radeon: fix potential segfault in renderbuffer update
    • +
    + +

    Daniel Vetter (1):

    +
      +
    • r200: revalidate after radeon_update_renderbuffers
    • +
    + +

    Dave Airlie (1):

    +
      +
    • r300g: fixup rs690 tiling stride alignment calculations.
    • +
    + +

    Eric Anholt (13):

    +
      +
    • intel: Allow CopyTexSubImage to InternalFormat 3/4 textures, like RGB/RGBA.
    • +
    • glsl: Free the loop state context when we free the loop state.
    • +
    • i965: Allow OPCODE_SWZ to put immediates in the first arg.
    • +
    • i965: Add support for rendering to SARGB8 FBOs.
    • +
    • glsl: Add a helper constructor for expressions that works out result type.
    • +
    • glsl: Fix structure and array comparisions.
    • +
    • glsl: Quiet unreachable no-return-from-function warning.
    • +
    • glsl: Mark the array access for whole-array comparisons.
    • +
    • glsl: Fix flipped return of has_value() for array constants.
    • +
    • mesa: Add getters for the rest of the supported draw buffers.
    • +
    • mesa: Add getters for ARB_copy_buffer's attachment points.
    • +
    • i965: Correct the dp_read message descriptor setup on g4x.
    • +
    • glsl: Correct the marking of InputsRead/OutputsWritten on in/out matrices.
    • +
    + +

    Fabian Bieler (1):

    +
      +
    • glsl: fix lowering conditional returns in subroutines
    • +
    + +

    Francisco Jerez (3):

    +
      +
    • meta: Don't leak alpha function/reference value changes.
    • +
    • meta: Fix incorrect rendering of the bitmap alpha component.
    • +
    • meta: Don't try to disable cube maps if the driver doesn't expose the extension.
    • +
    + +

    Henri Verbeet (2):

    +
      +
    • r600: Evergreen has two extra frac_bits for the sampler LOD state.
    • +
    • st/mesa: Handle wrapped depth buffers in st_copy_texsubimage().
    • +
    + +

    Ian Romanick (33):

    +
      +
    • Add 7.9 md5sums
    • +
    • docs: Import 7.8.x release notes from 7.8 branch.
    • +
    • docs: download.html does not need to be updated for each release
    • +
    • docs: Update mailing lines from sf.net to freedesktop.org
    • +
    • docs: added news item for 7.9 release
    • +
    • mesa: Validate assembly shaders when GLSL shaders are used
    • +
    • linker: Reject shaders that have unresolved function calls
    • +
    • mesa: Refactor validation of shader targets
    • +
    • glsl: Slightly change the semantic of _LinkedShaders
    • +
    • linker: Improve handling of unread/unwritten shader inputs/outputs
    • +
    • glsl: Commit lexer files changed by previous cherry picking
    • +
    • mesa: Make metaops use program refcounts instead of names.
    • +
    • glsl: Fix incorrect gl_type of sampler2DArray and sampler1DArrayShadow
    • +
    • mesa: Allow query of MAX_SAMPLES with EXT_framebuffer_multisample
    • +
    • glsl: better handling of linker failures
    • +
    • mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.
    • +
    • i915: Disallow alpha, red, RG, and sRGB as render targets
    • +
    • glsl/linker: Free any IR discarded by optimization passes.
    • +
    • glsl: Add an optimization pass to simplify discards.
    • +
    • glsl: Add a lowering pass to move discards out of if-statements.
    • +
    • i915: Correctly generate unconditional KIL instructions
    • +
    • glsl: Add unary ir_expression constructor
    • +
    • glsl: Ensure that equality comparisons don't return a NULL IR tree
    • +
    • glcpp: Commit changes in generated files cause by previous commit
    • +
    • glsl: Inherrit type of declared variable from initializer
    • +
    • glsl: Inherrit type of declared variable from initializer after processing assignment
    • +
    • linker: Ensure that unsized arrays have a size after linking
    • +
    • linker: Fix regressions caused by previous commit
    • +
    • linker: Allow built-in arrays to have different sizes between shader stages
    • +
    • ir_to_mesa: Don't generate swizzles for record derefs of non-scalar/vectors
    • +
    • Refresh autogenerated file builtin_function.cpp.
    • +
    • docs: Initial set of release notes for 7.9.1
    • +
    • mesa: set version string to 7.9.1
    • +
    + +

    Julien Cristau (1):

    +
      +
    • Makefile: don't include the same files twice in the tarball
    • +
    + +

    Kenneth Graunke (19):

    +
      +
    • glcpp: Return NEWLINE token for newlines inside multi-line comments.
    • +
    • generate_builtins.py: Output large strings as arrays of characters.
    • +
    • glsl: Fix constant component count in vector constructor emitting.
    • +
    • ir_dead_functions: Actually free dead functions and signatures.
    • +
    • glcpp: Define GL_FRAGMENT_PRECISION_HIGH if GLSL version >= 1.30.
    • +
    • glsl: Unconditionally define GL_FRAGMENT_PRECISION_HIGH in ES2 shaders.
    • +
    • glsl: Fix constant expression handling for <, >, <=, >= on vectors.
    • +
    • glsl: Use do_common_optimization in the standalone compiler.
    • +
    • glsl: Don't inline function prototypes.
    • +
    • glsl: Add a virtual as_discard() method.
    • +
    • glsl: Remove "discard" support from lower_jumps.
    • +
    • glsl: Refactor get_num_operands.
    • +
    • glcpp: Don't emit SPACE tokens in conditional_tokens production.
    • +
    • glsl: Clean up code by adding a new is_break() function.
    • +
    • glsl: Consider the "else" branch when looking for loop breaks.
    • +
    • Remove OES_compressed_paletted_texture from the ES2 extension list.
    • +
    • glsl/builtins: Compute the correct value for smoothstep(vec, vec, vec).
    • +
    • Fix build on systems where "python" is python 3.
    • +
    • i965: Internally enable GL_NV_blend_square on ES2.
    • +
    + +

    Kristian Høgsberg (1):

    +
      +
    • i965: Don't write mrf assignment for pointsize output
    • +
    + +

    Luca Barbieri (1):

    +
      +
    • glsl: Unroll loops with conditional breaks anywhere (not just the end)
    • +
    + +

    Marek Olšák (17):

    +
      +
    • r300g: fix microtiling for 16-bits-per-channel formats
    • +
    • r300g: fix texture border for 16-bits-per-channel formats
    • +
    • r300g: add a default channel ordering of texture border for unhandled formats
    • +
    • r300g: fix texture border color for all texture formats
    • +
    • r300g: fix rendering with no vertex elements
    • +
    • r300/compiler: fix rc_rewrite_depth_out for it to work with any instruction
    • +
    • r300g: fix texture border color once again
    • +
    • r300g: fix texture swizzling with compressed textures on r400-r500
    • +
    • r300g: disable ARB_texture_swizzle if S3TC is enabled on r3xx-only
    • +
    • mesa, st/mesa: fix gl_FragCoord with FBOs in Gallium
    • +
    • st/mesa: initialize key in st_vp_varient
    • +
    • r300/compiler: fix swizzle lowering with a presubtract source operand
    • +
    • r300g: fix rendering with a vertex attrib having a zero stride
    • +
    • ir_to_mesa: Add support for conditional discards.
    • +
    • r300g: finally fix the texture corruption on r3xx-r4xx
    • +
    • mesa: fix texel store functions for some float formats
    • +
    • r300/compiler: disable the rename_regs pass for loops
    • +
    + +

    Mario Kleiner (1):

    +
      +
    • mesa/r300classic: Fix dri2Invalidate/radeon_prepare_render for page flipping.
    • +
    + +

    Peter Clifton (1):

    +
      +
    • intel: Fix emit_linear_blit to use DWORD aligned width blits
    • +
    + +

    Robert Hooker (2):

    +
      +
    • intel: Add a new B43 pci id.
    • +
    • egl_dri2: Add missing intel chip ids.
    • +
    + +

    Roland Scheidegger (1):

    +
      +
    • r200: fix r200 large points
    • +
    + +

    Thomas Hellstrom (17):

    +
      +
    • st/xorg: Don't try to use option values before processing options
    • +
    • xorg/vmwgfx: Make vmwarectrl work also on 64-bit servers
    • +
    • st/xorg: Add a customizer option to get rid of annoying cursor update flicker
    • +
    • xorg/vmwgfx: Don't hide HW cursors when updating them
    • +
    • st/xorg: Don't try to remove invalid fbs
    • +
    • st/xorg: Fix typo
    • +
    • st/xorg, xorg/vmwgfx: Be a bit more frendly towards cross-compiling environments
    • +
    • st/xorg: Fix compilation errors for Xservers compiled without Composite
    • +
    • st/xorg: Don't use deprecated x*alloc / xfree functions
    • +
    • xorg/vmwgfx: Don't use deprecated x*alloc / xfree functions
    • +
    • st/xorg: Fix compilation for Xservers >= 1.10
    • +
    • mesa: Make sure we have the talloc cflags when using the talloc headers
    • +
    • egl: Add an include for size_t
    • +
    • mesa: Add talloc includes for gles
    • +
    • st/egl: Fix build for include files in nonstandard places
    • +
    • svga/drm: Optionally resolve calls to powf during link-time
    • +
    • gallium/targets: Trivial crosscompiling fix
    • +
    + +

    Tom Stellard (7):

    +
      +
    • r300/compiler: Make sure presubtract sources use supported swizzles
    • +
    • r300/compiler: Fix register allocator's handling of loops
    • +
    • r300/compiler: Fix instruction scheduling within IF blocks
    • +
    • r300/compiler: Use zero as the register index for unused sources
    • +
    • r300/compiler: Ignore alpha dest register when replicating the result
    • +
    • r300/compiler: Use correct swizzles for all presubtract sources
    • +
    • r300/compiler: Don't allow presubtract sources to be remapped twice
    • +
    + +

    Vinson Lee (1):

    +
      +
    • glsl: Fix 'control reaches end of non-void function' warning.
    • +
    + +

    richard (1):

    +
      +
    • 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.
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.9.2.html b/mesalib/docs/relnotes/7.9.2.html new file mode 100644 index 000000000..c98d7f821 --- /dev/null +++ b/mesalib/docs/relnotes/7.9.2.html @@ -0,0 +1,340 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.9.2 Release Notes / March 2, 2011

    + +

    +Mesa 7.9.2 is a bug fix release which fixes bugs found since the 7.9.1 release. +

    +

    +Mesa 7.9.2 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +eb4ab8c1a03386def3ea34b1358e9cda  MesaLib-7.9.2.tar.gz
    +8f6d1474912787ce13bd35f3bae9938a  MesaLib-7.9.2.tar.bz2
    +427a81dd43ac97603768dc5c6af3df26  MesaLib-7.9.2.zip
    +aacb8f4db997e346db40c6066942140a  MesaGLUT-7.9.2.tar.gz
    +18abe6cff4fad8ad4752c7b7ab548e5d  MesaGLUT-7.9.2.tar.bz2
    +3189e5732d636c71baf3d8bc23ce7b11  MesaGLUT-7.9.2.zip
    +
    + + +

    New features

    +

    None.

    + +

    Bug fixes

    +

    This list is likely incomplete.

    +
      +
    • Fix an off-by-one bug in a vsplit assertion.
    • +
    • Fix incorrect handling of layout qualifier +with in, out, attribute, and varying.
    • + +
    • Fix an i965 GPU hang in GLSL shaders that contain an unconditional discard statement.
    • + +
    • Fix an i965 shader bug where the negative absolute value was generated instead of the absolute value of a negation.
    • + +
    • Fix numerous issues handling precision qualifiers in GLSL ES.
    • + +
    • Fixed a few GLX protocol encoder bugs (Julien Cristau)
    • + +
    • Assorted Gallium llvmpipe driver bug fixes
    • + +
    • Assorted Mesa/Gallium state tracker bug fixes
    • + +
    • Bug 26795 - gl_FragCoord off by one in Gallium drivers.
    • + +
    • Bug 29164 - [GLSL 1.20] invariant variable shouldn't be used before declaration
    • + +
    • Bug 29823 - GetUniform[if]v busted
    • + +
    • Bug 29927 - [glsl2] fail to compile shader with constructor for array of struct type
    • + +
    • Bug 30156 - [i965] After updating to Mesa 7.9, Civilization IV starts to show garbage
    • + +
    • Bug 31923 - [GLSL 1.20] allowing inconsistent centroid declaration between two vertex shaders
    • + +
    • Bug 31925 - [GLSL 1.20] "#pragma STDGL invariant(all)" fail
    • + +
    • Bug 32214 - [gles2]no link error happens when missing vertex shader or frag shader
    • + +
    • Bug 32375 - [gl gles2] Not able to get the attribute by function glGetVertexAttribfv
    • + +
    • Bug 32541 - Segmentation Fault while running an HDR (high dynamic range) rendering demo
    • + +
    • Bug 32569 - [gles2] glGetShaderPrecisionFormat not implemented yet
    • + +
    • Bug 32695 - [glsl] SIGSEGV glcpp/glcpp-parse.y:833
    • + +
    • Bug 32831 - [glsl] division by zero crashes GLSL compiler
    • + +
    • Bug 32910 - Keywords 'in' and 'out' not handled properly for GLSL 1.20 shaders
    • + +
    • Bug 33219 -[GLSL bisected] implicit sized array triggers segfault in ir_to_mesa_visitor::copy_propagate
    • + +
    • Bug 33306 - GLSL integer division by zero crashes GLSL compiler
    • + +
    • Bug 33308 -[glsl] ast_to_hir.cpp:3016: virtual ir_rvalue* ast_jump_statement::hir(exec_list*, _mesa_glsl_parse_state*): Assertion `ret != __null' failed.
    • + +
    • Bug 33316 - uniform array will be allocate one line more and initialize it when it was freed will abort
    • + +
    • Bug 33386 - Dubious assembler in read_rgba_span_x86.S
    • + +
    • Bug 33388 - Dubious assembler in xform4.S
    • + +
    • Bug 33433 - Error in x86-64 API dispatch code.
    • + +
    • Bug 33507 - [glsl] GLSL preprocessor modulus by zero crash
    • + +
    • Bug 33508 - [glsl] GLSL compiler modulus by zero crash
    • + +
    • Bug 33916 - Compiler accepts reserved operators % and %=
    • + +
    • Bug 34047 - Assert in _tnl_import_array() when using GLfixed vertex datatypes with GLESv2
    • + +
    • Bug 34114 - Sun Studio build fails due to standard library functions not being in global namespace
    • + +
    • Bug 34198 - [GLSL] implicit sized array with index 0 used gets assertion
    • + +
    • Ubuntu bug 691653 - compiz crashes when using alt-tab (the radeon driver kills it)
    • + +
    • Meego bug 13005 - Graphics GLSL issue lead to camera preview fail on Pinetrail
    • + + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-7.9.1..mesa-7.9.2
    +
    + +

    Alberto Milone (1):

    +
      +
    • r600c: add evergreen ARL support.
    • +
    + +

    Brian Paul (19):

    +
      +
    • draw: Fix an off-by-one bug in a vsplit assertion.
    • +
    • mesa: fix a few format table mistakes, assertions
    • +
    • mesa: fix num_draw_buffers==0 in fixed-function fragment program generation
    • +
    • mesa: don't assert in GetIntegerIndexed, etc
    • +
    • mesa: check for dummy renderbuffer in _mesa_FramebufferRenderbufferEXT()
    • +
    • llvmpipe: make sure binning is active when we begin/end a query
    • +
    • st/mesa: fix incorrect fragcoord.x translation
    • +
    • softpipe: fix off-by-one error in setup_fragcoord_coeff()
    • +
    • cso: fix loop bound in cso_set_vertex_samplers()
    • +
    • st/mesa: set renderbuffer _BaseFormat in a few places
    • +
    • st/mesa: fix the default case in st_format_datatype()
    • +
    • st/mesa: need to translate clear color according to surface's base format
    • +
    • docs: update 7.9.2 release notes with Brian's cherry-picks
    • +
    • docs: add links to 7.9.1 and 7.9.2 release notes
    • +
    • mesa: include compiler.h for ASSERT macro
    • +
    • glsl: add ir_shader case in switch stmt to silence warning
    • +
    • glsl2: fix signed/unsigned comparison warning
    • +
    • mesa: implement glGetShaderPrecisionFormat()
    • +
    • docs: updated environment variable list
    • +
    + +

    Bryce Harrington (1):

    +
      +
    • r300g: Null pointer check for buffer deref in gallium winsys
    • +
    + +

    Chad Versace (14):

    +
      +
    • glsl: At link-time, check that globals have matching centroid qualifiers
    • +
    • glcpp: Fix segfault when validating macro redefinitions
    • +
    • glsl: Fix parser rule for type_specifier
    • +
    • glsl: Change default value of ast_type_specifier::precision
    • +
    • glsl: Add semantic checks for precision qualifiers
    • +
    • glsl: Add support for default precision statements
    • +
    • glsl: Remove redundant semantic check in parser
    • +
    • glsl: Fix semantic checks on precision qualifiers
    • +
    • glsl: Fix segfault due to missing printf argument
    • +
    • glsl: Mark 'in' variables at global scope as read-only
    • +
    • glcpp: Raise error when modulus is zero
    • +
    • glsl: Set operators '%' and '%=' to be reserved when GLSL < 1.30
    • +
    • glsl: Reinstate constant-folding for division by zero
    • +
    • tnl: Add support for datatype GL_FIXED in vertex arrays
    • +
    + +

    Chia-I Wu (1):

    +
      +
    • mesa: Add glDepthRangef and glClearDepthf to APIspec.xml.
    • +
    + +

    Chris Wilson (1):

    +
      +
    • intel: Check for unsupported texture when finishing using as a render target
    • +
    + +

    Cyril Brulebois (1):

    +
      +
    • Point to bugs.freedesktop.org rather than bugzilla.freedesktop.org
    • +
    + +

    Dave Airlie (2):

    +
      +
    • radeon/r200: fix fbo-clearmipmap + gen-teximage
    • +
    • radeon: avoid segfault on 3D textures.
    • +
    + +

    Dimitry Andric (4):

    +
      +
    • mesa: s/movzx/movzbl/
    • +
    • mesa: s/movzxw/movzwl/ in read_rgba_span_x86.S
    • +
    • glapi: adding @ char before type specifier in glapi_x86.S
    • +
    • glapi: add @GOTPCREL relocation type
    • +
    + +

    Eric Anholt (11):

    +
      +
    • i965: Avoid double-negation of immediate values in the VS.
    • +
    • docs: Add a relnote for the Civ IV on i965.
    • +
    • i965/vs: When MOVing to produce ABS, strip negate of the operand.
    • +
    • glsl: Fix the lowering of variable array indexing to not lose write_masks.
    • +
    • intel: Make renderbuffer tiling choice match texture tiling choice.
    • +
    • glapi: Add entrypoints and enums for GL_ARB_ES2_compatibility.
    • +
    • mesa: Add extension enable bit for GL_ARB_ES2_compatibility.
    • +
    • mesa: Add actual support for glReleaseShaderCompiler from ES2.
    • +
    • mesa: Add support for glDepthRangef and glClearDepthf.
    • +
    • mesa: Add getters for ARB_ES2_compatibility MAX_*_VECTORS.
    • +
    • mesa: Add getter for GL_SHADER_COMPILER with ARB_ES2_compatibility.
    • +
    + +

    Ian Romanick (42):

    +
      +
    • docs: Add 7.9.1 md5sums
    • +
    • glsl: Support the 'invariant(all)' pragma
    • +
    • glcpp: Generate an error for division by zero
    • +
    • glsl: Add version_string containing properly formatted GLSL version
    • +
    • glsl & glcpp: Refresh autogenerated lexer and parser files.
    • +
    • glsl: Disallow 'in' and 'out' on globals in GLSL 1.20
    • +
    • glsl: Track variable usage, use that to enforce semantics
    • +
    • glsl: Allow 'in' and 'out' when 'layout' is also available
    • +
    • docs: Initial set of release notes for 7.9.2
    • +
    • mesa: bump version to 7.9.2-devel
    • +
    • docs: Update 7.9.2 release notes
    • +
    • i965: Make OPCODE_KIL_NV do its work in a temp, not the null reg!
    • +
    • glsl: Refresh autogenerated lexer and parser files.
    • +
    • glsl: Don't assert when the value returned by a function has no rvalue
    • +
    • linker: Set sizes for non-global arrays as well
    • +
    • linker: Propagate max_array_access while linking functions
    • +
    • docs: Update 7.9.2 release notes
    • +
    • Use C-style system headers in C++ code to avoid issues with std:: namespace
    • +
    • mesa: glGetUniform only returns a single element of an array
    • +
    • linker: Generate link errors when ES shaders are missing stages
    • +
    • mesa: Fix error checks in GetVertexAttrib functions
    • +
    • docs: Update 7.9.2 release notes
    • +
    • mesa: Remove unsupported OES extensions
    • +
    • glapi: Regenerate for GL_ARB_ES2_compatibility.
    • +
    • mesa: Connect glGetShaderPrecisionFormat into the dispatch table
    • +
    • i965: Set correct values for range/precision of fragment shader types
    • +
    • i915: Set correct values for range/precision of fragment shader types
    • +
    • intel: Fix typeos from 3d028024 and 790ff232
    • +
    • glsl: Ensure that all GLSL versions are supported in the stand-alone compiler
    • +
    • glsl: Reject shader versions not supported by the implementation
    • +
    • mesa: Initial size for secondary color array is 3
    • +
    • glcpp: Regenerate files from recent cherry picks
    • +
    • glsl: Finish out the reduce/reduce error fixes
    • +
    • glsl: Regenerate compiler files from cherry picks
    • +
    • linker: Fix off-by-one error implicit array sizing
    • +
    • i915: Only mark a register as available if all components are written
    • +
    • i915: Calculate partial result to temp register first
    • +
    • i915: Force lowering of all types of indirect array accesses in the FS
    • +
    • docs: Update 7.9.2 release notes for recent cherry picks
    • +
    • docs: Clean up bug fixes list
    • +
    • intel: Remove driver date and related bits from renderer string
    • +
    • mesa: set version string to 7.9.2 (final)
    • +
    + +

    Jian Zhao (1):

    +
      +
    • mesa: fix an error in uniform arrays in row calculating.
    • +
    + +

    Julien Cristau (3):

    +
      +
    • glx: fix request lengths
    • +
    • glx: fix GLXChangeDrawableAttributesSGIX request
    • +
    • glx: fix length of GLXGetFBConfigsSGIX
    • +
    + +

    Keith Packard (1):

    +
      +
    • glsl: Eliminate reduce/reduce conflicts in glsl grammar
    • +
    + +

    Kenneth Graunke (12):

    +
      +
    • glsl: Expose a public glsl_type::void_type const pointer.
    • +
    • glsl: Don't bother unsetting a destructor that was never set.
    • +
    • glsl, i965: Remove unnecessary talloc includes.
    • +
    • glcpp: Remove use of talloc reference counting.
    • +
    • ralloc: Add a fake implementation of ralloc based on talloc.
    • +
    • Convert everything from the talloc API to the ralloc API.
    • +
    • ralloc: a new MIT-licensed recursive memory allocator.
    • +
    • Remove talloc from the make and automake build systems.
    • +
    • Remove talloc from the SCons build system.
    • +
    • Remove the talloc sources from the Mesa repository.
    • +
    • glsl: Fix use of uninitialized values in _mesa_glsl_parse_state ctor.
    • +
    • glsl: Use reralloc instead of plain realloc.
    • +
    + +

    Marek Olšák (3):

    +
      +
    • docs: fix messed up names with special characters in relnotes-7.9.1
    • +
    • mesa: fix texture3D mipmap generation for UNSIGNED_BYTE_3_3_2
    • +
    • st/dri: Track drawable context bindings
    • +
    + +

    Paulo Zanoni (1):

    +
      +
    • dri_util: fail driCreateNewScreen if InitScreen is NULL
    • +
    + +

    Sam Hocevar (2):

    +
      +
    • docs: add glsl info
    • +
    • docs: fix glsl_compiler name
    • +
    + +

    Vinson Lee (1):

    +
      +
    • ralloc: Add missing va_end following va_copy.
    • +
    + +

    nobled (1):

    +
      +
    • glx: Put null check before use
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/7.9.html b/mesalib/docs/relnotes/7.9.html new file mode 100644 index 000000000..1e6baba7a --- /dev/null +++ b/mesalib/docs/relnotes/7.9.html @@ -0,0 +1,144 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 7.9 Release Notes / October 4, 2010

    + +

    +Mesa 7.9 is a new development release. +People who are concerned with stability and reliability should stick +with a previous release or wait for Mesa 7.9.1. +

    +

    +Mesa 7.9 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +ed65ab425b25895c7f473d0a5e6e64f8  MesaLib-7.9.tar.gz
    +82c740c49d572baa6da2b1a1eee90bca  MesaLib-7.9.tar.bz2
    +cd2b6ecec759b0457475e94bbb38fedb  MesaLib-7.9.zip
    +7b54af9fb9b1f6a1a65db2520f50848f  MesaGLUT-7.9.tar.gz
    +20d07419d1929f833fdb36bced290ad5  MesaGLUT-7.9.tar.bz2
    +62a7edecd7c92675cd6029b05217eb0a  MesaGLUT-7.9.zip
    +
    + + +

    New features

    +
      +
    • New, improved GLSL compiler written by Intel. + See the Shading Language page for + more information. +
    • New, very experimental Gallium driver for R600-R700 Radeons. +
    • Support for AMD Evergreen-based Radeons (HD 5xxx) +
    • GL_EXT_timer_query extension (i965 driver and softpipe only) +
    • GL_EXT_framebuffer_multisample extension (intel drivers, MAX_SAMPLES = 1) +
    • GL_ARB_texture_swizzle extension (alias of GL_EXT_texture_swizzle) +
    • GL_ARB_draw_elements_base_vertex, GL_ARB_fragment_program_shadow, + GL_ARB_window_pos, GL_EXT_gpu_program_parameters, + GL_ATI_texture_env_combine3, GL_MESA_pack_invert, and GL_OES_EGL_image + extensions in Gallium drivers +
    • GL_ARB_depth_clamp and GL_NV_depth_clamp extensions (in nv50 and r600 + Gallium drivers) +
    • GL_ARB_half_float_vertex extension (in nvfx, r300, r600, softpipe, + and llvmpipe Gallium drivers) +
    • GL_EXT_draw_buffers2 (in nv50, r600, softpipe, and llvmpipe Gallium + drivers) +
    • GL_EXT_texture_swizzle (in nvfx, r300, r600, softpipe, and llvmpipe + Gallium drivers) +
    • GL_ATI_texture_mirror_once (in nvfx, nv50, r300, r600, softpipe, and + llvmpipe Gallium drivers) +
    • GL_NV_conditional_render (in r300 Gallium driver) +
    • Initial "signs of life" support for Sandybridge hardware in i965 DRI + driver. +
    + + +

    Bug fixes

    +

    This list is likely incomplete.

    +
      +
    • Massive improvements to the Gallium driver for R300-R500 Radeons; this + driver is now considered stable for use as a DRI (OpenGL) driver. +
    • Bug 10908 - GLSL: gl_FogParamaters gl_Fog built-in uniform not functioning
    • +
    • Bug 13753 - Numerous bugs in GLSL uniform handling
    • +
    • Bug 16854 - GLSL function call at global scope causes SEGV
    • +
    • Bug 16856 - GLSL indexing of unsized array results in assertion failure
    • +
    • Bug 18659 - Crash in shader/slang/slang_codegen.c _slang_gen_function_call_name()
    • +
    • Bug 19089 - [GLSL] glsl1/shadow2D() cases fail
    • +
    • Bug 22622 - [GM965 GLSL] noise*() cause GPU lockup
    • +
    • Bug 23743 - For loop from 0 to 0 not optimized out
    • +
    • Bug 24553 - shader compilation times explode when using more () pairs
    • +
    • Bug 25664 - [GLSL] re-declaring an empty array fails to compile
    • +
    • Bug 25769 - [GLSL] "float" can be implicitly converted to "int"
    • +
    • Bug 25808 - [GLSL] const variable is modified successfully
    • +
    • Bug 25826 - [GLSL] declaring an unsized array then re-declaring with a size fails
    • +
    • Bug 25827 - [GLSL] vector constructor accepts too many arguments successfully
    • +
    • Bug 25829 - [GLSL] allowing non-void function without returning value
    • +
    • Bug 25830 - [GLSL] allowing non-constant-expression as const declaration initializer
    • +
    • Bug 25877 - [GLSL 1.10] implicit conversion from "int" to "float" should not be allowed
    • +
    • Bug 25878 - [GLSL] sampler is converted to int successfully
    • +
    • Bug 25994 - [GM45][GLSL] 'return' statement in vertex shader unsupported
    • +
    • Bug 25999 - [GLSL] embedded structure constructor fails to compile
    • +
    • Bug 26000 - [GLSL] allowing different parameter qualifier between the function definition and declaration
    • +
    • Bug 26001 - [GLSL 1.10] constructing matrix from matrix succeeds
    • +
    • Bug 26224 - [GLSL] Cannot get location of a uniform struct member
    • +
    • Bug 26990 - [GLSL] variable declaration in "while" fails to compile
    • +
    • Bug 27004 - [GLSL] allowing macro redefinition
    • +
    • Bug 27060 - [965] piglit glsl-fs-raytrace failure due to lack of function calls.
    • +
    • Bug 27216 - Assignment with a function call in an if statement causes an assertion failure
    • +
    • Bug 27261 - GLSL Compiler fails on the following vertex shader
    • +
    • Bug 27265 - GLSL Compiler doesnt link the attached vertex shader
    • +
    • Bug 27388 - [i965] piglit glsl-vs-arrays failure
    • +
    • Bug 27403 - GLSL struct causing "Invalid src register file ..." error
    • +
    • Bug 27914 - GLSL compiler uses MUL+ADD where it could use MAD
    • +
    • Bug 28055 - glsl-texcoord-array fails GLSL compilation
    • +
    • Bug 28374 - SIGSEGV shader/slang/slang_typeinfo.c:534
    • +
    • Bug 28748 - [i965] uninlined function calls support
    • +
    • Bug 28833 - piglit/shaders/glsl-texcoord-array fail
    • +
    • Bug 28834 - Add support for system fpclassify to GL_OES_query_matrix function for OpenBSD / NetBSD
    • +
    • Bug 28837 - varying vec4 index support
    • +
    • Bug 28845 - The GLU tesselator code has some warnings
    • +
    • Bug 28889 - [regression] wine game crash
    • +
    • Bug 28894 - slang build fails if absolute path contains spaces
    • +
    • Bug 28913 - [GLSL] allowing two version statements
    • +
    • Bug 28931 - Floating Point Exception in Warzone2100 Trunk version
    • +
    • Bug 28966 - [r300g] Dynamic branching 3 demo does not run
    • +
    • Bug 28967 - slang/slang_emit.c:350: storage_to_src_reg: Assertion `index >= 0' failed.
    • +
    • Bug 29013 - [r300g] translate_rgb_op: unknown opcode ILLEGAL OPCODE
    • +
    • Bug 29020 - [r300g] Wine d3d9 tests hardlock
    • +
    • Bug 29910 - Mesa advertises bogus GL_ARB_shading_language_120
    • +
    • Bug 30196 - [GLSL] gl_TextureMatrix{Inverse,Transpose,InverseTranspose} unsupported
    • +
    + + +

    Changes

    +
      +
    • The Mesa demo/test programs have been moved into a separate git +repository. +
    • GL/glext.h file upgraded to version 64 +
    • GL/glxext.h file upgraded to version 32 +
    • GL/wglext.h file upgraded to version 22 +
    + +
    + + diff --git a/mesalib/docs/relnotes/8.0.1.html b/mesalib/docs/relnotes/8.0.1.html new file mode 100644 index 000000000..3cf61adb6 --- /dev/null +++ b/mesalib/docs/relnotes/8.0.1.html @@ -0,0 +1,158 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 8.0.1 Release Notes / February 16, 2012

    + +

    +Mesa 8.0.1 is a bug fix release which fixes bugs found since the 8.0 release. +

    +

    +Mesa 8.0 implements the OpenGL 3.0 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.0. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +4855c2d93bd2ebd43f384bdcc92c9a27  MesaLib-8.0.1.tar.gz
    +24eeebf66971809d8f40775a379b36c9  MesaLib-8.0.1.tar.bz2
    +54e745d14dac5717f7f65b4e2d5c1df2  MesaLib-8.0.1.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      + +
    • Bug 28924 - [ILK] piglit tex-border-1 fail
    • + +
    • Bug 40864 - [bisected pineview] oglc pxconv-gettex(basic.allCases) fails on pineview
    • + +
    • Bug 43327 - [bisected SNB] HiZ make many oglc cases regressed
    • + +
    • Bug 44333 - [bisected] Color distortion with xbmc mediaplayer
    • + +
    • Bug 44927 - [SNB IVB regression] gl-117 abort when click
    • + +
    • Bug 45221 - [bisected IVB] glean/fbo regression in stencil-only case
    • + +
    • Bug 45877 - main/image.c:1597: _mesa_convert_colors: Assertion `dstType == 0x1406' failed.
    • + +
    • Bug 45578 - main/image.c:1659: _mesa_convert_colors: Assertion `dstType == 0x1403' failed.
    • + +
    • Bug 45872 - [bisected PNV] oglc mustpass(basic.stipple) regressed on pineview
    • + +
    • Bug 45876 - [PNV]oglc texenv(basic.allCases) regressed on pineview
    • + +
    • Bug 45917 - [PNV] Regression in Piglit test general/two-sided-lighting-separate-specular
    • + +
    • Bug 45943 - [r300g] r300_emit.c:365:r300_emit_aa_state: Assertion `(aa-d>dest)->cs_buf' failed.
    • + + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-8.0..mesa-8.0.1
    +
    + +

    Alex Deucher (2):

    +
      +
    • r600g: fix tex tile_type offset for cayman
    • +
    • r600g: 128 bit formats require tile_type = 1 on cayman
    • +
    + +

    Anuj Phogat (2):

    +
      +
    • meta: Add pixel store/pack operations in decompress_texture_image
    • +
    • meta: Avoid FBO resizing/reallocating in decompress_texture_image
    • +
    + +

    Brian Paul (6):

    +
      +
    • docs: add news item for 8.0 release
    • +
    • docs: update info about supported systems, GPUs, APIs
    • +
    • docs: add VMware link
    • +
    • docs: remove link to the GLSL compiler page
    • +
    • mesa: fix proxy texture target initialization
    • +
    • swrast: fix span color type selection
    • +
    + +

    Chad Versace (2):

    +
      +
    • i965: Rewrite the HiZ op
    • +
    • i965: Remove file i965/junk, accidentally added in 7b36c68
    • +
    + +

    Dave Airlie (1):

    +
      +
    • st/mesa: only resolve if number of samples is > 1
    • +
    + +

    Eric Anholt (3):

    +
      +
    • i965: Fix HiZ change compiler warning.
    • +
    • i965: Report the failure message when failing to compile the fragment shader.
    • +
    • i965/fs: Enable register spilling on gen7 too.
    • +
    + +

    Ian Romanick (4):

    +
      +
    • docs: Add 8.0 MD5 checksums
    • +
    • glapi: Include GLES2 headers for ES2 extension functions
    • +
    • swrast: Only avoid empty _TexEnvPrograms
    • +
    • mesa: Bump version number to 8.0.1
    • +
    + +

    Kenneth Graunke (4):

    +
      +
    • i965: Fix border color on Ironlake.
    • +
    • i965/fs: Add a new fs_inst::regs_written function.
    • +
    • i965/fs: Take # of components into account in try_rewrite_rhs_to_dst.
    • +
    • i965: Emit Ivybridge VS workaround flushes.
    • +
    + +

    Mathias Fröhlich (1):

    +
      +
    • state_stracker: Fix access to uninitialized memory.
    • +
    + +

    Paul Berry (1):

    +
      +
    • i915: Fix type of "specoffset" variable.
    • +
    + +

    Simon Farnsworth (1):

    +
      +
    • r600g: Use a fake reloc to sleep for fences
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/8.0.2.html b/mesalib/docs/relnotes/8.0.2.html new file mode 100644 index 000000000..9bb43a72b --- /dev/null +++ b/mesalib/docs/relnotes/8.0.2.html @@ -0,0 +1,164 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 8.0.2 Release Notes / March 21, 2012

    + +

    +Mesa 8.0.2 is a bug fix release which fixes bugs found since the 8.0.1 release. +

    +

    +Mesa 8.0.2 implements the OpenGL 3.0 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.0. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +70eb3dc74fbfcd72f6776268ee1db52e  MesaLib-8.0.2.tar.gz
    +a368104e5700707048dc3e8691a9a7a1  MesaLib-8.0.2.tar.bz2
    +d5e5cdb85d2afdbcd1c0623d3ed1c54d  MesaLib-8.0.2.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      + +
    • Bug 38720 - [SNB] Trine triggers a GPU hang
    • + +
    • Bug 40059 - [SNB] hang in "Amnesia: The Dark Descent" demo
    • + +
    • Bug 45216 - [SNB] GPU hang in OilRush
    • + +
    • Bug 46631 - It's really hard to hit the fast path for the fallback glReadPixels code
    • + +
    • Bug 46679 - glReadPixels on a luminance texture returns the wrong values
    • + +
    • Bug 46311 - Missing support of point size in Mesa core
    • + +
    • Bug 46665 - [PNV] webgl conformance case max texture fails
    • + +
    • Bug 45975 - [Gen4 + ILK] render with pointcoord will fail to render
    • + +
    • Bug 46666 - [PNV] webgl conformance case NPOT case fails with TEXTURE_MIN_FILTER set to LINEAR
    • + + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-8.0.1..mesa-8.0.2
    +
    + +

    Brian Paul (7):

    +
      +
    • svga: add null vs pointer check in update_need_pipeline()
    • +
    • util: add mutex lock in u_debug_memory.c code
    • +
    • mesa: add _mesa_rebase_rgba_float/uint() functions
    • +
    • mesa: use _mesa_rebase_rgba_float/uint() in glReadPixels code
    • +
    • mesa: use _mesa_rebase_rgba_float/uint() in glGetTexImage code
    • +
    • mesa: fix GL_LUMINANCE handling in glGetTexImage
    • +
    • docs: add links to 8.0.1 release notes
    • +
    + +

    Daniel Vetter (1):

    +
      +
    • i965: fixup W-tile offset computation to take swizzling into account
    • +
    + +

    Dylan Noblesmith (1):

    +
      +
    • mesa: add back glGetnUniform*v() overflow error reporting
    • +
    + +

    Ian Romanick (1):

    +
      +
    • docs: Add 8.0.1 release md5sums
    • +
    + +

    Jakob Bornecrantz (3):

    +
      +
    • mesa: Include mesa ES mapi generated files
    • +
    • mesa: Bump version number to 8.0.2
    • +
    • docs: Add 8.0.2 release notes
    • +
    + +

    Jeremy Huddleston (3):

    +
      +
    • darwin: config file cleanups
    • +
    • darwin: Build create_context.c
    • +
    • darwin: Link against libxcb
    • +
    + +

    José Fonseca (1):

    +
      +
    • svga: Clamp advertised PIPE_SHADER_CAP_MAX_TEMPS to SVGA3D_TEMPREG_MAX.
    • +
    + +

    Kenneth Graunke (2):

    +
      +
    • i965: Only set Last Render Target Select on the last FB write.
    • +
    • i965: Fix Gen6+ dynamic state upper bound on older kernels.
    • +
    + +

    Marek Olšák (1):

    +
      +
    • gallium/rtasm: properly detect SSE and SSE2
    • +
    + +

    Neil Roberts (1):

    +
      +
    • mesa: Don't disable fast path for normalized types
    • +
    + +

    Tom Stellard (1):

    +
      +
    • r300/compiler: Fix bug when lowering KILP on r300 cards
    • +
    + +

    Yuanhan Liu (6):

    +
      +
    • mesa: let GL3 buf obj queries not depend on opengl major version
    • +
    • tnl: let _TNL_ATTRIB_POINTSIZE do not depend on ctx->VertexProgram._Enabled
    • +
    • i915: fix wrong rendering of gl_PointSize on Pineview
    • +
    • i915: move the FALLBACK_DRAW_OFFSET check outside the drawing rect check
    • +
    • i965: handle gl_PointCoord for Gen4 and Gen5 platforms
    • +
    • i915: fallback for NPOT cubemap texture
    • +
    + +

    Zack Rusin (3):

    +
      +
    • svga: fix a crash happening before setting fragment shaders.
    • +
    • svga: Fix stencil op mapping
    • +
    • svga: fix the rasterizer state resets
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/8.0.3.html b/mesalib/docs/relnotes/8.0.3.html new file mode 100644 index 000000000..0586e2829 --- /dev/null +++ b/mesalib/docs/relnotes/8.0.3.html @@ -0,0 +1,324 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 8.0.3 Release Notes / May 18, 2012

    + +

    +Mesa 8.0.3 is a bug fix release which fixes bugs found since the 8.0.2 release. +

    +

    +Mesa 8.0.3 implements the OpenGL 3.0 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.0. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +b7210a6d6e4584bd852ab29294ce717e  MesaLib-8.0.3.tar.gz
    +cc5ee15e306b8c15da6a478923797171  MesaLib-8.0.3.tar.bz2
    +32773634a0f7e70a680505a81426eccf  MesaLib-8.0.3.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      + +
    • Bug 28138 - [G45] Regnum Online, sparkling in in-game rendering
    • + +
    • Bug 30102 - glean depthStencil test fails BadLength with indirect non-swrast rendering
    • + +
    • Bug 40361 - Glitches on X3100 after upgrade to 7.11
    • + +
    • Bug 41152 - [glsl] Shader backend in Regnum Online does not work
    • + +
    • Bug 41216 - [bisected pineview]oglc filtercubemin(basic.sizedRGBA) fails
    • + +
    • Bug 41372 - i830_state.c PBO crash
    • + +
    • Bug 41495 - i830: intel_get_vb_max / intel_batchbuffer_space mismatch.
    • + +
    • Bug 44701 - Regnum online textures flickering
    • + +
    • Bug 44961 - [bisected i965] oglc sRGB(Mipmap.1D_textures) regressed
    • + +
    • Bug 44970 - [i965]oglc max_values(negative.textureSize.textureCube) segfaults
    • + +
    • Bug 45214 - Textures disappearing or missing in RegnumOnline OpenGL game
    • + +
    • Bug 45558 - cannot render on a drawable of size equal the max framebuffer size
    • + +
    • Bug 45921 - [r300g, bisected] Multiple piglit regressions after glsl_to_tgsi changes
    • + +
    • Bug 46303 - [SNB] segfault in intel_miptree_release()
    • + +
    • Bug 46739 - [snb-m-gt2+] compiz crashed with SIGSEGV in intel_miptree_release()
    • + +
    • Bug 46834 - small performance when playing flightgear (swrast fallback through GTT mapping)
    • + +
    • Bug 47126 - tests/fbo/fbo-array.c:109: create_array_fbo: Assertion `glGetError() == 0' failed.
    • + +
    • Bug 48218 - brw_fs_schedule_instructions.cpp segfault due to accessing not allocated last_mrf_write[16]
    • + +
    • Bug 48545 - LLVMpipe glReadPixels Firefox hits the slow path (WebGL rendering)
    • + +
    • Bug 49124 - swrast/s_texfetch.c:1156: set_fetch_functions: Assertion `texImage->FetchTexel' failed.
    • + + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-8.0.2..mesa-8.0.3
    +
    + +

    Alban Browaeys (1):

    +
      +
    • dri/i915: Fix off-by-one in i830 clip region size.
    • +
    + +

    Alex Deucher (2):

    +
      +
    • r200: fix fog coordinate emit
    • +
    • radeon: fix fog coordinate emit
    • +
    + +

    Alexander von Gluck (4):

    +
      +
    • llvmpipe: fix symbol conflict on Haiku
    • +
    • svga: fix typedef conflicts on Haiku
    • +
    • mesa: Don't use newlocale on Haiku
    • +
    • glsl: Don't use newlocale on Haiku
    • +
    + +

    Anuj Phogat (4):

    +
      +
    • mesa: fix issues with texture border and array textures
    • +
    • mesa: Fix valid texture target test in _mesa_GetTexLevelParameteriv()
    • +
    • mesa: Fix the cause of piglit test fbo-array failure
    • +
    • intel: Fix a case when mapping large texture fails
    • +
    + +

    Brian Paul (17):

    +
      +
    • mesa: add a couple fast-paths to fast_read_rgba_pixels_memcpy()
    • +
    • mesa/gdi: remove wmesa_set_renderbuffer_funcs() function
    • +
    • mesa/gdi: remove clear_color() function
    • +
    • mesa: bump version to 8.0.2 in configs/default
    • +
    • swrast: include s_fragprog.h to silence warnings
    • +
    • mesa: remove LSB-first pixel packing check in glReadPixels
    • +
    • mesa: fix error in _mesa_format_matches_format_and_type() for RGB888
    • +
    • mesa: add BGR888 code in _mesa_format_matches_format_and_type()
    • +
    • vbo: fix node_attrsz[] usage in vbo_bind_vertex_list()
    • +
    • mesa: add missing texture integer test in glTexSubImage()
    • +
    • mesa: add missing return after _mesa_error() in update_array()
    • +
    • glsl: propagate MaxUnrollIterations to the optimizer's loop unroller
    • +
    • st/mesa: set MaxUnrollIterations = 255
    • +
    • st/mesa: no-op glCopyPixels if source region is out of bounds
    • +
    • mesa: do more teximage error checking for generic compressed formats
    • +
    • mesa: fix/add error check in _mesa_ColorMaterial()
    • +
    • mesa: fix glMaterial / dlist bug
    • +
    + +

    Chad Versace (3):

    +
      +
    • glsl: Fix Android build
    • +
    • main: Fix memory leak in _mesa_make_extension_string()
    • +
    • intel: Disable ARB_framebuffer_object in ES contexts
    • +
    + +

    Chris Wilson (1):

    +
      +
    • i830: Compute initial number of vertices from remaining batch space
    • +
    + +

    Dave Airlie (4):

    +
      +
    • mesa/format_unpack: add LUMINANCE 8/16 UINT/INT
    • +
    • glx/drisw: avoid segfaults when we fail to get visual
    • +
    • drisw: fix image stride calculation for 16-bit.
    • +
    • intel: fix TFP at 16-bpp
    • +
    + +

    Dylan Noblesmith (7):

    +
      +
    • intel: fix null dereference processing HiZ buffer
    • +
    • util: fix undefined behavior
    • +
    • util: fix uninitialized table
    • +
    • egl: fix uninitialized values
    • +
    • st/vega: fix uninitialized values
    • +
    • egl-static: fix printf warning
    • +
    • i965: fix typo
    • +
    + +

    Eric Anholt (19):

    +
      +
    • i965/fs: Jump from discard statements to the end of the program when done.
    • +
    • intel: Fix rendering from textures after RenderTexture().
    • +
    • mesa: Fix handling of glCopyBufferSubData() for src == dst.
    • +
    • i965/fs: Move GL_CLAMP handling to coordinate setup.
    • +
    • i965/fs: Implement GL_CLAMP behavior on texture rectangles on gen6+.
    • +
    • mesa: Fix push/pop of multisample coverage invert.
    • +
    • mesa: Include the multisample enables under GL_MULTISAMPLE_BIT attrib as well.
    • +
    • mesa: Fix display list handling for GL_ARB_draw_instanced.
    • +
    • mesa: Fix display lists for draw_elements_base_vertex with draw_instanced.
    • +
    • mesa: Add missing error check for first < 0 in glDrawArraysInstanced().
    • +
    • i915: Fix piglit fbo-nodepth-test on i830.
    • +
    • intel: Return success when asked to allocate a 0-width/height renderbuffer.
    • +
    • mesa: Throw error on glGetActiveUniform inside Begin/End.
    • +
    • i965/vs: Fix up swizzle for dereference_array of matrices.
    • +
    • glsl: Fix indentation of switch code.
    • +
    • glsl: Let the constructor figure out the types of switch-related expressions.
    • +
    • glsl: Reject non-scalar switch expressions.
    • +
    • glsl: Fix assertion failure on handling switch on uint expressions.
    • +
    • mesa: Check for framebuffer completeness before looking at the rb.
    • +
    + +

    Eugeni Dodonov (1):

    +
      +
    • intel: add PCI IDs for Ivy Bridge GT2 server variant
    • +
    + +

    Han Shen(沈涵) (1):

    +
      +
    • bin/mklib: remove '-m32' for arm linux
    • +
    + +

    Ian Romanick (1):

    +
      +
    • mesa: Bump version number to 8.0.3
    • +
    + +

    Jakob Bornecrantz (1):

    +
      +
    • docs: Add 8.0.2 md5sums
    • +
    + +

    Jeremy Huddleston (7):

    +
      +
    • darwin: Eliminate a pthread mutex leak
    • +
    • darwin: Fix an error message
    • +
    • darwin: Make reported errors more user-friendly
    • +
    • darwin: Use ASL for logging
    • +
    • darwin: Unlock our mutex before destroying it
    • +
    • darwin: Eliminate a possible race condition while destroying a surface
    • +
    • darwin: Address a build failure on Leopard and earlier OS versions
    • +
    + +

    Jon TURNEY (1):

    +
      +
    • Have __glImageSize handle format GL_DEPTH_STENCIL_NV the same way as the server does
    • +
    + +

    Jonas Maebe (2):

    +
      +
    • glapi: Correct size of allocated _glapi_table struct
    • +
    • apple: Fix a use after free
    • +
    + +

    Jordan Justen (1):

    +
      +
    • mesa: Add primitive restart support to glArrayElement
    • +
    + +

    Kenneth Graunke (12):

    +
      +
    • i965: Actually upload sampler state pointers for the VS unit on Gen6.
    • +
    • i965/fs: Fix FB writes that tried to use the non-existent m16 register.
    • +
    • vbo: Remove pedantic warning about 'end' beind out of bounds.
    • +
    • vbo: Ignore invalid element ranges which are outside VBO bounds.
    • +
    • vbo: Rework checking of 'end' against _MaxElement.
    • +
    • vbo: Eliminate short-circuiting in invalid-start case.
    • +
    • i965: Fix GPU hangs in the dummy fragment shader.
    • +
    • i965: Make the dummy fragment shader work in SIMD16 mode.
    • +
    • drirc: Add force_glsl_extensions_warn workaround for Unigine Heaven.
    • +
    • i965: Avoid explicit accumulator operands in SIMD16 mode on Gen7.
    • +
    • intel: Remove pointless software fallback for glBitmap on Gen6.
    • +
    • glsl: Fix broken constant expression handling for <, <=, >, and >=.
    • +
    + +

    Kurt Roeckx (2):

    +
      +
    • i915: Compute maximum number of verts using the actual batchbuffer size.
    • +
    • i915: Fix i830 polygon stipple from PBOs.
    • +
    + +

    Marek Olšák (5):

    +
      +
    • r300g/swtcl: don't print an error when getting ClipVertex
    • +
    • r300g/swtcl: don't enter u_vbuf_mgr
    • +
    • r300g/swtcl: don't expose shader subroutine support
    • +
    • r300g/swtcl: fix polygon offset
    • +
    • r300g/swtcl: fix crash when back color is present in vertex shader
    • +
    + +

    Mathias Fröhlich (1):

    +
      +
    • glsl: Avoid excessive loop unrolling.
    • +
    + +

    Matt Turner (1):

    +
      +
    • Remove -ffast-math from default CFLAGS
    • +
    + +

    Paul Berry (1):

    +
      +
    • i915: Initialize swrast_texture_image structure fields.
    • +
    + +

    Roland Scheidegger (1):

    +
      +
    • mesa: check_index_bounds off-by-one fix
    • +
    + +

    Tom Stellard (2):

    +
      +
    • r300/compiler: Clear loop registers in vertex shaders w/o loops
    • +
    • r300/compiler: Copy all instruction attributes during local transfoms
    • +
    + +

    Vinson Lee (5):

    +
      +
    • mesa: Fix memory leak in _mesa_get_uniform_location.
    • +
    • linker: Fix memory leak in count_uniform_size::visit_field.
    • +
    • swrast: Fix memory leaks in blit_linear.
    • +
    • ir_to_mesa: Fix uninitialized member in add_uniform_to_shader.
    • +
    • mesa: Fix memory leak in generate_mipmap_compressed.
    • +
    + +

    Yuanhan Liu (2):

    +
      +
    • i915: set SPRITE_POINT_ENABLE bit correctly
    • +
    • i965: fix wrong cube/3D texture layout
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/8.0.4.html b/mesalib/docs/relnotes/8.0.4.html new file mode 100644 index 000000000..00b31520d --- /dev/null +++ b/mesalib/docs/relnotes/8.0.4.html @@ -0,0 +1,209 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 8.0.4 Release Notes / July 10, 2012

    + +

    +Mesa 8.0.4 is a bug fix release which fixes bugs found since the 8.0.2 release. +

    +

    +Mesa 8.0.4 implements the OpenGL 3.0 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.0. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +02b96082d2f1ad72e7385f4022afafb9  MesaLib-8.0.4.tar.gz
    +d546f988adfdf986cff45b1efa2d8a46  MesaLib-8.0.4.tar.bz2
    +1f0fdabe6e8019d4de6c16e20e74d163  MesaLib-8.0.4.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      + +
    • Bug 45967 - piglit getteximage-invalid-format-for-packed-type regression
    • + +
    • Bug 47742 - [softpipe] piglit fbo-generatemipmap-array regression
    • + +
    • Bug 48141 - [vmwgfx] src/gallium/auxiliary/util/u_inlines.h:256:pipe_buffer_map_range: Assertion `offset + length <= buffer->width0' failed.
    • + +
    • Bug 48472 - GPU Lockup while running demo (rzr - the scene is dead) in wine
    • + +
    • Bug 50033 - src/mesa/state_tracker/st_cb_fbo.c:379:st_render_texture: Assertion `strb->rtt_level <= strb->texture->last_level' failed.
    • + +
    • Bug 50621 - Mesa fails its test suite with a buffer overflow.
    • + +
    • Bug 50298 - [ILK IVB bisected]Ogles2conform GL/sin/sin_float_vert_xvary.test regressed
    • + +
    • Bug 51574 - ir_loop_jump constructor assigns member variable to itself
    • + + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-8.0.3..mesa-8.0.4
    +
    + +

    Andreas Betz (1):

    +
      +
    • vega: fix 565 color unpacking bug
    • +
    + +

    Antoine Labour (2):

    +
      +
    • meta: Cleanup the resources we allocate.
    • +
    • mesa: Free uniforms correclty.
    • +
    + +

    Brian Paul (22):

    +
      +
    • docs: add link to 8.0.3 release notes
    • +
    • mesa: fix Z32_FLOAT -> uint conversion functions
    • +
    • draw: fix primitive restart bug by using the index buffer offset
    • +
    • st/mesa: fix glDrawPixels(GL_DEPTH_COMPONENT) color output
    • +
    • svga: fix synchronization bug between sampler views and surfaces
    • +
    • mesa: new _mesa_error_check_format_and_type() function
    • +
    • mesa: add missing GL_UNSIGNED_INT_10F_11F_11F_REV case
    • +
    • mesa: fix missing return value in getteximage_error_check()
    • +
    • st/mesa: pass GL_MAP_INVALIDATE_RANGE_BIT to gallium drivers
    • +
    • svga: add 0.5 in float->int conversion of sample min/max lod
    • +
    • svga: fix min/max lod clamping
    • +
    • svga: change PIPE_CAPF_MAX_TEXTURE_LOD_BIAS from 16.0 to 15.0
    • +
    • st/mesa: add fallback pipe formats for (compressed) R, RG formats
    • +
    • st/mesa: copy num_immediates field when copying the immediates array
    • +
    • svga: move svga_texture() casts/calls in svga_surface_copy()
    • +
    • svga: reset vertex buffer offset in svga_release_user_upl_buffers()
    • +
    • st/mesa: don't set PIPE_BIND_DISPLAY_TARGET for user-created renderbuffers
    • +
    • st/mesa: use private pipe_sampler_view in decompress_with_blit()
    • +
    • st/mesa: add null pointer check in st_texture_image_map()
    • +
    • st/mesa: fix mipmap image size computation w.r.t. texture arrays
    • +
    • draw: fix missing immediates bug in polygon stipple code
    • +
    • st/mesa: fix max_offset computation for base vertex
    • +
    + +

    Christoph Bumiller (1):

    +
      +
    • nv50: handle NEG,ABS modifiers for short RCP encoding
    • +
    + +

    Dylan Noblesmith (1):

    +
      +
    • mesa: require GL_MAX_SAMPLES >= 4 for GL 3.0
    • +
    + +

    Eric Anholt (1):

    +
      +
    • i965/vs: Fix texelFetchOffset()
    • +
    + +

    Ian Romanick (5):

    +
      +
    • docs: Add 8.0.3 release md5sums
    • +
    • glx/tests: Fix off-by-one error in allocating extension string buffer
    • +
    • glsl: Remove spurious printf messages
    • +
    • glsl: Fix pi/2 constant in acos built-in function
    • +
    • mesa: Bump version number to 8.0.4
    • +
    + +

    José Fonseca (2):

    +
      +
    • mesa: Avoid void acinclude.m4 Android.common.mk Android.mk autogen.sh bin common.py configs configure.ac docs doxygen include Makefile scons SConstruct src tests arithmetic.
    • +
    • draw: Ensure that prepare is always run after LLVM garbagge collection.
    • +
    + +

    Kenneth Graunke (15):

    +
      +
    • mesa: Check for a negative "size" parameter in glCopyBufferSubData().
    • +
    • i965: Fix brw_swap_cmod() for LE/GE comparisons.
    • +
    • glsl: Remove unused ir_loop_jump::loop pointer.
    • +
    • ralloc: Fix ralloc_parent() of memory allocated out of the NULL context.
    • +
    • mesa: Restore depth texture state on glPopAttrib(GL_TEXTURE_BIT).
    • +
    • glsl/builtins: Fix textureGrad() for Array samplers.
    • +
    • mesa: Unbind ARB_copy_buffer and transform feedback buffers on delete.
    • +
    • mesa: Support BindBuffer{Base,Offset,Range} with a buffer of 0.
    • +
    • mesa: Unbind ARB_transform_feedback2 binding points on Delete too.
    • +
    • meta: Fix GL_RENDERBUFFER binding in decompress_texture_image().
    • +
    • i965/fs: Fix texelFetchOffset() on pre-Gen7.
    • +
    • i965/vs: Fix texelFetchOffset() on pre-Gen7.
    • +
    • i965/fs: Fix user-defined FS outputs with less than four components.
    • +
    • glsl: Hook up loop_variable_state destructor to plug a memory leak.
    • +
    • glsl: Don't trust loop analysis in the presence of function calls.
    • +
    + +

    Kurt Roeckx (1):

    +
      +
    • i830: Fix crash for GL_STENCIL_TEST in i830Enable()
    • +
    + +

    Lukas Rössler (1):

    +
      +
    • glu: fix two Clang warnings
    • +
    + +

    Marek Olšák (2):

    +
      +
    • mesa: allow exposing GL3 without EXT_texture_integer
    • +
    • st/mesa: don't do srgb->linear conversion in decompress_with_blit
    • +
    + +

    Paul Seidler (1):

    +
      +
    • tests: include mesa headers
    • +
    + +

    Stéphane Marchesin (3):

    +
      +
    • glx: Handle a null reply in QueryVersion.
    • +
    • i915g: Don't invert signalled/unsignalled fences
    • +
    • i915g: Don't avoid flushing when we have a pending fence.
    • +
    + +

    Thomas Gstädtner (1):

    +
      +
    • gallium/targets: pass ldflags parameter to MKLIB
    • +
    + +

    Vadim Girlin (2):

    +
      +
    • st/mesa: set stObj->lastLevel in guess_and_alloc_texture
    • +
    • r600g: check gpr count limit
    • +
    + +

    Vinson Lee (1):

    +
      +
    • st/mesa: Fix uninitialized members in glsl_to_tgsi_visitor constructor.
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/8.0.5.html b/mesalib/docs/relnotes/8.0.5.html new file mode 100644 index 000000000..f8aeae8d8 --- /dev/null +++ b/mesalib/docs/relnotes/8.0.5.html @@ -0,0 +1,264 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 8.0.5 Release Notes / October 24, 2012

    + +

    +Mesa 8.0.5 is a bug fix release which fixes bugs found since the 8.0.4 release. +

    +

    +Mesa 8.0.5 implements the OpenGL 3.0 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.0. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +cda5d101f43b8784fa60bdeaca4056f2  MesaLib-8.0.5.tar.gz
    +01305591073a76b65267f69f27d635a3  MesaLib-8.0.5.tar.bz2
    +97f11c00cac8fb98aa0131990086dc8e  MesaLib-8.0.5.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      + +
    • Bug 44912 - [bisected] WebGL conformance/textures/texture-mips tests fails
    • + +
    • Bug 46644 - Sandybridge Mobile: ARBfp TXP with coords from fragment.color doesn't apply W divide
    • + +
    • Bug 46784 - MAD using multiply written register fails
    • + +
    • Bug 47375 - Blender crash on startup after upgrade to mesa 8.0.1
    • + +
    • Bug 48120 - GL_EXT_texture_sRGB_decode still broken
    • + +
    • Bug 48628 - [bisected ILK]Oglc fogexp(basic.allCases) regressed
    • + +
    • Bug 49772 - [SNB]Oglc depth-stencil(basic.read.ds) regressed
    • + +
    • Bug 52129 - [Bisected ILK]Piglit spec_ARB_shader_texture_lod_execution_glsl-fs-shadow2DGradARB-01 regressed
    • + +
    • Bug 52382 - [ivb gt1] Severe image corruption and GPU Hang, too many PS threads
    • + +
    • Bug 52563 - build failure - struct radeon_renderbuffer has no member named Base
    • + +
    • Bug 53311 - [Bisected IVB]Oglc transform_feedback(advanced.transformFeedback.points) Invalid argument
    • + +
    • Bug 53314 - [llvmpipe] src/gallium/drivers/llvmpipe/lp_texture.c:920:llvmpipe_get_texture_tile_layout: Assertion `x < lpr->tiles_per_row[level]' failed.
    • + +
    • Bug 53316 - [llvmpipe] src/gallium/drivers/llvmpipe/lp_texture.c:601:llvmpipe_get_transfer: Assertion `resource' failed.
    • + +
    • Bug 53317 - [llvmpipe] SIGSEGV src/gallium/auxiliary/gallivm/lp_bld_sample.c:99
    • + +
    • Bug 53318 - [softpipe] sp_state_shader.c:194:softpipe_delete_fs_state: Assertion `var != softpipe->fs_variant' failed.
    • + +
    • Bug 53319 - [softpipe] sp_texture.c:322:softpipe_get_transfer: Assertion `level <= resource->last_level' failed.
    • + +
    • Bug 53618 - [Bisected i915]Piglit glx_GLX_ARB_create_context_NULL_attribute_list Aborted
    • + +
    • Bug 53972 - Black Mirror III: too dark
    • + +
    • Bug 54183 - [Bisected ILK regression]many piglit/oglc/ogles2 cases Segmentation fault
    • + +
    • Bug 54193 - output_components uninitialized in fs_visitor::emit_fb_writes()
    • + +
    • Bug 54301 - [Bisected ILK regression]Piglit glx_GLX_ARB_create_context_forward-compatible_flag_with_3.0 Segmentation fault
    • + +
    • Bug 56211 - src/mesa/state_tracker/st_cb_texture.c:1123:copy_image_data_to_texture: Assertion `u_minify(stImage->pt->height0, src_level) == stImage->base.Height' failed.
    • + + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-8.0.4..mesa-8.0.5
    +
    + +

    Alex Deucher (3):

    +
      +
    • r600g: 8.0.x support for Trinity
    • +
    • r600g: add new Sumo, Palm, BTC pci ids
    • +
    • r600g: add additional evergreen pci ids
    • +
    + +

    Andreas Boll (4):

    +
      +
    • docs/relnotes-8.0.4: fix html markup
    • +
    • mesa: fix html in shortlog_mesa.sh script
    • +
    • mesa: add get-pick-list.sh script into bin/
    • +
    • mesa: Bump version number to 8.0.5
    • +
    + +

    Brian Paul (18):

    +
      +
    • mesa: use _mesa_is_user_fbo() and _mesa_is_winsys_fbo() functions
    • +
    • intel: use _mesa_is_winsys/user_fbo() helpers
    • +
    • st/egl: fix uninitialized pointer bug
    • +
    • mesa: added Ian's shortlog_mesa.sh script in bin/
    • +
    • mesa: loosen small matrix determinant check
    • +
    • xlib: add X error handler around XGetImage() call
    • +
    • radeon: set swrast_renderbuffer::ColorType field when mapping renderbuffers
    • +
    • svga: fix invalid memory reference in needs_to_create_zero()
    • +
    • meta: fix glDrawPixels fallback test, stencil drawing
    • +
    • radeon: fix Base/base typo
    • +
    • st/mesa: fix glCopyTexSubImage crash
    • +
    • gallivm: fix crash in lp_sampler_static_state()
    • +
    • st/mesa: fix renderbuffer validation bug
    • +
    • softpipe: fix softpipe_delete_fs_state() failed assertion
    • +
    • mesa: raise GL_INVALID_OPERATION in glGenerateMipmap for missing base image
    • +
    • st/mesa: s/CALLOC/calloc/ to fix allocation bug
    • +
    • mesa: do internal format error checking for glTexStorage()
    • +
    • mesa: fix incorrect error for glCompressedSubTexImage
    • +
    + +

    Chad Versace (3):

    +
      +
    • mesa: Don't advertise GLES extensions in GL contexts
    • +
    • i830: Fix stack corruption
    • +
    • swrast: Fix implicit declaration warnings
    • +
    + +

    Chris Forbes (1):

    +
      +
    • mesa: fix dropped && in glGetStringi()
    • +
    + +

    Christoph Bumiller (1):

    +
      +
    • st/mesa: call update_renderbuffer_surface for sRGB renderbuffers, too
    • +
    + +

    Eric Anholt (9):

    +
      +
    • i965/gen7: Reduce GT1 WM thread count according to updated BSpec.
    • +
    • i965/fs: Invalidate live intervals in passes that remove an instruction.
    • +
    • i965: Fix bug in the old FS backend's projtex() calculation.
    • +
    • i965: Add support for GL_SKIP_DECODE_EXT on other SRGB formats.
    • +
    • i965/vs: Convert EdgeFlagPointer values appropriately for the VS on gen4.
    • +
    • i965: Fix accumulator_contains() test to also reject swizzles of the dst.
    • +
    • mesa: Fix glPopAttrib() behavior on GL_FRAMEBUFFER_SRGB.
    • +
    • mesa: In conditional rendering fallback, check the query status.
    • +
    • i965: Drop the confusing saturate argument to math instruction setup.
    • +
    + +

    Ian Romanick (8):

    +
      +
    • docs: Add 8.0.4 release md5sums
    • +
    • Revert "i965: Avoid unnecessary recompiles for shaders that don't use dFdy()."
    • +
    • i965: Fix regression in depth texture rendering on pre-SNB
    • +
    • dri2: Fix bug in attribute handling for non-desktop OpenGL contexts
    • +
    • mesa: Generate an error when glCopyTexImage border is invalid
    • +
    • mesa/es: Validate glTexImage border in Mesa code rather than the ES wrapper
    • +
    • mesa: Allow glGetTexParameter of GL_TEXTURE_SRGB_DECODE_EXT
    • +
    • dri_util: Use calloc to allocate __DRIcontext
    • +
    + +

    Jonas Maebe (1):

    +
      +
    • darwin: do not create double-buffered offscreen pixel formats
    • +
    + +

    Jordan Justen (1):

    +
      +
    • intel: move error on create context to proper path
    • +
    + +

    José Fonseca (1):

    +
      +
    • mesa: disable MSVC global optimization in pack.c
    • +
    + +

    Kenneth Graunke (8):

    +
      +
    • mesa: Use GLdouble for depthMax in final unpack conversions.
    • +
    • i965/fs: Initialize output_components[] by filling it with zeros.
    • +
    • mesa: Prevent repeated glDeleteShader() from blowing away our refcounts.
    • +
    • i965: Support MESA_FORMAT_SIGNED_RGBA_16.
    • +
    • glsl: Fix #pragma invariant(all) language version check.
    • +
    • i965/vs: Don't clobber sampler message MRFs with subexpressions.
    • +
    • intel: Move finish_batch() call before MI_BATCH_BUFFER_END and padding.
    • +
    • i965/fs: Don't use brw->fragment_program in calculate_urb_setup().
    • +
    + +

    Maarten Lankhorst (1):

    +
      +
    • winsys/radeon: Remove unnecessary pipe_thread_destroy in radeon_drm_cs_destroy
    • +
    + +

    Marek Olšák (6):

    +
      +
    • mesa: remove assertions that do not allow compressed 2D_ARRAY textures
    • +
    • r300g: fix colormask with non-BGRA formats
    • +
    • r600g: fix RSQ of negative value on Cayman
    • +
    • r600g: fix EXP on Cayman
    • +
    • r600g: fix instance divisor on Cayman
    • +
    • gallium/u_blit: set dst format from pipe_resource, not pipe_surface
    • +
    + +

    Michel Dänzer (2):

    +
      +
    • st/mesa: Fix source miptree level for copying data to finalized miptree.
    • +
    • st/mesa: Fix assertions for copying texture image to finalized miptree.
    • +
    + +

    Niels Ole Salscheider (1):

    +
      +
    • st/mesa: index can be negative in the PROGRAM_CONSTANT case
    • +
    + +

    Paul Berry (5):

    +
      +
    • i965: Compute dFdy() correctly for FBOs.
    • +
    • mesa: Add UsesDFdy to struct gl_fragment_program.
    • +
    • i965: Avoid unnecessary recompiles for shaders that don't use dFdy().
    • +
    • i965/Gen6: Work around GPU hangs due to misaligned depth coordinate offsets.
    • +
    • i965/Gen7: Work around GPU hangs due to misaligned depth coordinate offsets.
    • +
    + +

    Stéphane Marchesin (1):

    +
      +
    • glsl/linker: Avoid buffer over-run in parcel_out_uniform_storage::visit_field
    • +
    + +

    Tapani Pälli (2):

    +
      +
    • xmlconfig: use __progname when building for Android
    • +
    • android: do not expose single buffered eglconfigs
    • +
    + +

    Vadim Girlin (1):

    +
      +
    • winsys/radeon: fix relocs caching
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/8.0.html b/mesalib/docs/relnotes/8.0.html new file mode 100644 index 000000000..d19ed3c95 --- /dev/null +++ b/mesalib/docs/relnotes/8.0.html @@ -0,0 +1,87 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 8.0 Release Notes / February 9, 2012

    + +

    +Mesa 8.0 is a new development release. +People who are concerned with stability and reliability should stick +with a previous release or wait for Mesa 8.0.1. +

    +

    +Mesa 8.0 implements the OpenGL 3.0 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.0. +

    +

    +See the Compiling/Installing page for prerequisites +for DRI hardware acceleration. +

    + + +

    MD5 checksums

    +
    +3516fea6c28ce4a0fa9759e4894729a1  MesaLib-8.0.tar.gz
    +1a5668fe72651a670611164cefc703b2  MesaLib-8.0.tar.bz2
    +66f5a01a85530a91472a3acceb556db8  MesaLib-8.0.zip
    +
    + + +

    New features

    +
      +
    • GL_ARB_ES2_compatibility (r300g, r600g) +
    • GL_ARB_depth_buffer_float (r600g) +
    • GL_ARB_vertex_type_2_10_10_10_rev (r600g) +
    • GL_ARB_texture_storage (gallium drivers and swrast) +
    • GL_EXT_packed_float (i965) +
    • GL_EXT_texture_array (r600g, i965) +
    • GL_EXT_texture_shared_exponent (i965) +
    • GL_NV_fog_distance (all gallium drivers, nouveau classic) +
    • GL_NV_primitive_restart (r600g) +
    • GL_OES_EGL_image_external (gallium drivers) +
    • GL_OES_compressed_ETC1_RGB8_texture (softpipe, llvmpipe) +
    • ARB_texture_rgb10_a2ui (softpipe, r600g) +
    • Many updates to the VMware svga Gallium driver +
    + + +

    Bug fixes

    + + +

    Changes

    +
      +
    • Removed all DRI drivers that did not support DRI2. Specifically, + i810, mach64, mga, r128, savage, sis, tdfx, and unichrome were + removed.
    • +
    • Removed support for BeOS.
    • +
    • Removed the obsolete (and unmaintained) Windows "gldirect" and + "ICD" drivers.
    • +
    • Removed the linux-fbdev software driver.
    • +
    • Removed all remnants of paletted texture support. As required by + desktop OpenGL, GL_COLOR_INDEX data can still be uploaded + to a color (e.g., RGBA) texture. However, the data cannot be stored + internally as color-index.
    • +
    • Removed support for GL_APPLE_client_storage extension.
    • +
    • Removed the classic Mesa r300 and r600 drivers, which are superseded + by the gallium drivers for this hardware.
    • +
    • Removed the dead Gallium i965, cell and failover drivers, which were + either broken and with nobody in sight to fix the situation or + deprecated.
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/9.0.1.html b/mesalib/docs/relnotes/9.0.1.html new file mode 100644 index 000000000..cf8156d2d --- /dev/null +++ b/mesalib/docs/relnotes/9.0.1.html @@ -0,0 +1,167 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 9.0.1 Release Notes / November 16th, 2012

    + +

    +Mesa 9.0.1 is a bug fix release which fixes bugs found since the 9.0 release. +

    +

    +Mesa 9.0 implements the OpenGL 3.1 API, but the version reported by +glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / +glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.1. OpenGL +3.1 is only available if requested at context creation +because GL_ARB_compatibility is not supported. +

    + +

    MD5 checksums

    +
    +97d6554c05ea7449398afe3a0ede7018  MesaLib-9.0.1.tar.bz2
    +fd0fd5a6e56bc3dd210c80e42baef975  MesaLib-9.0.1.tar.gz
    +c2683d957acd530a00f747f50317186f  MesaLib-9.0.1.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      +
    • Bug 44912 - [bisected] WebGL conformance/textures/texture-mips tests fails
    • + +
    • Bug 55856 - kwin with gles window content is not updating (gen4)
    • + +
    • Bug 56057 - INTEL_swap_event not correctly listed
    • + +
    • Bug 56211 - src/mesa/state_tracker/st_cb_texture.c:1123:copy_image_data_to_texture: Assertion `u_minify(stImage->pt->height0, src_level) == stImage->base.Height' failed.
    • + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-9.0..mesa-9.0.1
    +
    + +

    Adam Jackson (1):

    +
      +
    • glx: Add GLXBadProfileARB to the error string list
    • +
    + +

    Andreas Boll (7):

    +
      +
    • docs: add news item for 9.0 release
    • +
    • mesa: add get-pick-list.sh script into bin/
    • +
    • mesa: add initial .cherry-ignore file for the 9.0 branch
    • +
    • mesa: use .cherry-ignore in the get-pick-list.sh script
    • +
    • build: add config.sub and config.guess to tarballs target
    • +
    • build: add missing Makefile.in files to tarballs target
    • +
    • build: add missing files to tarballs target
    • +
    + +

    Brian Paul (2):

    +
      +
    • mesa: don't call TexImage driver hooks for zero-sized images
    • +
    • mesa: fix error check for zero-sized compressed subtexture
    • +
    + +

    Fredrik Höglund (1):

    +
      +
    • egl_dri2/x11: Fix eglPostSubBufferNV()
    • +
    + +

    Ian Romanick (5):

    +
      +
    • docs: Add 9.0 release md5sums
    • +
    • i965: Fix regression in depth texture rendering on pre-SNB
    • +
    • glx: Set sRGBCapable to a default value
    • +
    • docs: Add 9.0.1 release notes
    • +
    • mesa: Bump version to 9.0.1
    • +
    + +

    Imre Deak (7):

    +
      +
    • mesa: glGet: fix indentation of _mesa_init_get_hash
    • +
    • mesa: glGet: fix indentation of find_value
    • +
    • mesa: glGet: fix indentation of print_table_stats
    • +
    • mesa: glGet: fix API check for EGL_image_external enums
    • +
    • glapi: rename/move GL_POLYGON_OFFSET_BIAS to its extension section
    • +
    • mesa: glGet: fix parameter lookup for apps using multiple APIs
    • +
    • glget: fix make check for glGet GL_POLYGON_OFFSET_BIAS
    • +
    + +

    Jonas Ådahl (1):

    +
      +
    • wayland: Destroy frame callback when destroying surface
    • +
    + +

    Kenneth Graunke (1):

    +
      +
    • glsl: Allow ir_if in the linker's move_non_declarations function.
    • +
    + +

    Kristian Høgsberg (5):

    +
      +
    • gbm: Reject buffers that are not wl_drm buffers in gbm_bo_import()
    • +
    • gbm: Use the kms dumb ioctls for cursor instead of libkms
    • +
    • egl/wayland: Update to Wayland 0.99 API
    • +
    • wayland: Remove 0.85 compatibility #ifdefs
    • +
    • wayland: Drop support for ill-defined, unused wl_egl_pixmap
    • +
    + +

    Marcin Slusarz (1):

    +
      +
    • nouveau: use pre-calculated stride for resource_get_handle
    • +
    + +

    Matt Turner (4):

    +
      +
    • egl: Return EGL_BAD_MATCH for invalid profile attributes
    • +
    • Re-add HAVE_PTHREADS preprocessor macro
    • +
    • build: Ship install-sh in the tarball
    • +
    • ralloc: Annotate printf functions with PRINTFLIKE(...)
    • +
    + +

    Michel Dänzer (2):

    +
      +
    • st/mesa: Fix source miptree level for copying data to finalized miptree.
    • +
    • st/mesa: Fix assertions for copying texture image to finalized miptree.
    • +
    + +

    Owen W. Taylor (1):

    +
      +
    • glx: Fix listing of INTEL_swap_event in glXQueryExtensionsString()
    • +
    + +

    Quentin Glidic (1):

    +
      +
    • intel: Add missing #include <time.h>
    • +
    + +

    Tomeu Vizoso (1):

    +
      +
    • mesa/es: Define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT enum for all GLs
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/9.0.2.html b/mesalib/docs/relnotes/9.0.2.html new file mode 100644 index 000000000..affc23d8b --- /dev/null +++ b/mesalib/docs/relnotes/9.0.2.html @@ -0,0 +1,290 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 9.0.2 Release Notes / January 22th, 2013

    + +

    +Mesa 9.0.2 is a bug fix release which fixes bugs found since the 9.0.1 release. +

    +

    +Mesa 9.0 implements the OpenGL 3.1 API, but the version reported by +glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / +glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.1. OpenGL +3.1 is only available if requested at context creation +because GL_ARB_compatibility is not supported. +

    + +

    MD5 checksums

    +
    +5ae216ca9fecfa349f14ecb83aa3f124  MesaLib-9.0.2.tar.gz
    +dc45d1192203e418163e0017640e1cfc  MesaLib-9.0.2.tar.bz2
    +93d40ec77d656dd04b561ba203ffbb91  MesaLib-9.0.2.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      +
    • Bug 22576 - [KMS] mesa demo spectex broken on rv280
    • + +
    • Bug 26809 - KMS/R200: Bad shading in NWN since Mesa rewrite
    • + +
    • Bug 45877 - [bisected regression] Oglc fbo(negative.invalidParams3) Segmentation fault
    • + +
    • Bug 54402 - st_glsl_to_tgsi.cpp:4006:dst_register: Assertion `index < VERT_RESULT_MAX' failed
    • + +
    • Bug 55175 - Memoryleak with glPopAttrib only on Intel GM45
    • + +
    • Bug 56442 - glcpp accepts junk after #else/#elif/#endif tokens
    • + +
    • Bug 56706 - EGL sets error to EGL_SUCCESS when DRI driver fails to create context
    • + +
    • Bug 57622 - Webgl conformance shader-with-non-reserved-words crash.
    • + +
    • Bug 57842 - r200: Culling is broken when rendering to an FBO
    • + +
    • Bug 57984 - r300g: blend sfactor=GL_DST_COLOR fails with FBOs
    • + +
    • Bug 58545 - [llvmpipe] src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c:75:analyse_src: Assertion `src->Index < (sizeof(ctx->imm)/sizeof((ctx->imm)[0]))' failed.
    • + +
    • Bug 59383 - src/glsl/tests/Makefile.am missing $(top_srcdir)/include
    • + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-9.0.1..mesa-9.0.2
    +
    + +

    Abdiel Janulgue (1):

    +
      +
    • mesa: Fix a crash in update_texture_state() for external texture type
    • +
    + +

    Adam Jackson (4):

    +
      +
    • glcpp: Fix visibility CFLAGS in automake
    • +
    • glcpp: Typo fix.
    • +
    • galahad, noop: Fix visibility CFLAGS in automake
    • +
    • r300g: Fix visibility CFLAGS in automake
    • +
    + +

    Alex Deucher (2):

    +
      +
    • radeonsi: add some new SI pci ids
    • +
    • radeonsi: add a new SI pci id
    • +
    + +

    Ander Conselvan de Oliveira (2):

    +
      +
    • egl/wayland: Don't invalidate drawable on swap buffers
    • +
    • egl/wayland: Dispatch the event queue before get_buffers
    • +
    • egl/wayland: Destroy the pending buffer callback with the egl surface
    • +
    + +

    Andreas Boll (9):

    +
      +
    • docs: fix release date of 9.0.1
    • +
    • docs: add news item for 9.0.1 release
    • +
    • Add .dirstamp to toplevel .gitignore
    • +
    • build: use git ls-files for adding all Makefile.in into the release tarball
    • +
    • build: Fix GLES linkage without libglapi
    • +
    • Revert "r600g: try to fix streamout for the cases where BURST_COUNT > 0"
    • +
    • mesa: update .cherry-ignore list
    • +
    • mesa: Bump version to 9.0.2
    • +
    • docs: Add 9.0.2 release notes
    • +
    + +

    Anuj Phogat (2):

    +
      +
    • mesa: Generate invalid operation in glGenerateMipMap for integer textures
    • +
    • meta: Remove redundant code in _mesa_meta_GenerateMipmap
    • +
    + +

    Ben Skeggs (3):

    +
      +
    • nvc0: fix missing permanent bo reference on poly cache
    • +
    • nvc0: point vertex runout at a valid address
    • +
    • nv50: point vertex runout at a valid address
    • +
    + +

    Brian Paul (5):

    +
      +
    • svga: don't use uninitialized framebuffer state
    • +
    • st/mesa: replace REALLOC() with realloc()
    • +
    • st/mesa: free TGSI tokens with ureg_free_tokens()
    • +
    • util: added pipe_surface_release() function
    • +
    • gallivm: support more immediates in lp_build_tgsi_info()
    • +
    + +

    Bryan Cain (1):

    +
      +
    • glsl_to_tgsi: set correct register type for array and structure elements
    • +
    + +

    Chad Versace (2):

    +
      +
    • i965: Validate requested GLES context version in brwCreateContext
    • +
    • egl/dri2: Set error code when dri2CreateContextAttribs fails
    • +
    + +

    Chris Fester (1):

    +
      +
    • util: null-out the node's prev/next pointers in list_del()
    • +
    + +

    Christoph Bumiller (5):

    +
      +
    • nv50/ir/tgsi: fix srcMask for TXP with SHADOW1D
    • +
    • nvc0: add missing call to map edge flag in push_vbo
    • +
    • nv50/ir: wrap assertion using typeid in #ifndef NDEBUG
    • +
    • nouveau: fix undefined behaviour when testing sample_count
    • +
    • nv50/ir: restore use of long immediate encodings
    • +
    + +

    Dave Airlie (5):

    +
      +
    • r600g: fix lod bias/explicit lod with cube maps.
    • +
    • glsl_to_tgsi: fix dst register for texturing fetches.
    • +
    • glsl: fix cut-n-paste error in error handling. (v2)
    • +
    • glsl: initialise killed_all field.
    • +
    • glsl: fix uninitialised variable from constructor
    • +
    + +

    Eric Anholt (4):

    +
      +
    • mesa: Fix the core GL genned-name handling for glBindBufferBase()/Range().
    • +
    • mesa: Fix core GL genned-name handling for glBeginQuery().
    • +
    • mesa: Fix segfault on reading from a missing color read buffer.
    • +
    • i965/gen4: Fix memory leak each time compile_gs_prog() is called.
    • +
    + +

    Ian Romanick (2):

    +
      +
    • docs: Add 9.0.1 release md5sums
    • +
    • glsl: Don't add structure fields to the symbol table
    • +
    + +

    Johannes Obermayr (4):

    +
      +
    • clover: Install CL headers.
    • +
    • gallium/auxiliary: Add -fno-rtti to CXXFLAGS on LLVM >= 3.2.
    • +
    • clover: Adapt libclc's INCLUDEDIR and LIBEXECDIR to make use of the new introduced libclc.pc.
    • +
    • tests: AM_CPPFLAGS must include $(top_srcdir) instead of $(top_builddir).
    • +
    + +

    Jonas Ådahl (1):

    +
      +
    • wayland: Don't cancel a roundtrip when any event is received
    • +
    + +

    José Fonseca (1):

    +
      +
    • llvmpipe: Obey back writemask.
    • +
    + +

    Kenneth Graunke (8):

    +
      +
    • i965/vs: Fix unit mismatch in scratch base_offset parameter.
    • +
    • i965/vs: Implement register spilling.
    • +
    • mesa: Don't flatten IF statements by default.
    • +
    • glcpp: Don't use infinite lookhead for #define differentiation.
    • +
    • i965/vs: Don't lose the MRF writemask when doing compute-to-MRF.
    • +
    • i965/vs: Preserve the type when copy propagating into an instruction.
    • +
    • mesa: Fix glGetVertexAttribI[u]iv now that we have real integer attribs.
    • +
    • i965: Fix AA Line Distance Mode in 3DSTATE_SF on Ivybridge.
    • +
    + +

    Kristian Høgsberg (1):

    +
      +
    • egl/wayland: Add invalidate back in eglSwapBuffers()
    • +
    + +

    Maarten Lankhorst (2):

    +
      +
    • makefiles: use configured name for -ldrm* where possible
    • +
    • automake: strip LLVM_CXXFLAGS and LLVM_CPPFLAGS too
    • +
    + +

    Marek Olšák (17):

    +
      +
    • st/mesa: fix integer texture border color for some formats (v2)
    • +
    • r300g: fix texture border color for sRGB formats
    • +
    • mesa: bump MAX_VARYING to 32
    • +
    • draw: fix assertion failure in draw_emit_vertex_attr
    • +
    • vbo: fix glVertexAttribI* functions
    • +
    • mesa: add MaxNumLevels to gl_texture_image, remove MaxLog2
    • +
    • mesa: fix error checking of TexStorage(levels) for array and rect textures
    • +
    • st/mesa: fix guessing the base level size
    • +
    • st/mesa: fix computation of last_level during texture creation
    • +
    • st/mesa: fix computation of last_level in GenerateMipmap
    • +
    • r600g: fix streamout on RS780 and RS880
    • +
    • r600g: advertise 32 streamout vec4 outputs
    • +
    • r600g: fix broken streamout if streamout_begin caused a context flush
    • +
    • mesa: fix BlitFramebuffer between linear and sRGB formats
    • +
    • r600g: try to fix streamout for the cases where BURST_COUNT > 0
    • +
    • r600g: always use a tiled resource as the destination of MSAA resolve
    • +
    • mesa: add MaxNumLevels to gl_texture_image, remove MaxLog2
    • +
    + +

    Mario Kleiner (1):

    +
      +
    • mesa: Don't glPopAttrib() GL_POINT_SPRITE_COORD_ORIGIN on < OpenGL-2.0
    • +
    + +

    Matt Turner (1):

    +
      +
    • glcpp: Reject garbage after #else and #endif tokens
    • +
    + +

    Stefan Dösinger (1):

    +
      +
    • r300: Don't disable destination read if the src blend factor needs it
    • +
    + +

    Tapani Pälli (1):

    +
      +
    • android: generate matching remap_helper to dispatch table
    • +
    + +

    Tom Stellard (1):

    +
      +
    • r600g: Use LOOP_START_DX10 for loops
    • +
    + +

    Vinson Lee (1):

    +
      +
    • i915: Fix wrong sizeof argument in i915_update_tex_unit.
    • +
    + +

    smoki (2):

    +
      +
    • r200: fix broken tcl lighting
    • +
    • radeon/r200: Fix tcl culling
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/9.0.3.html b/mesalib/docs/relnotes/9.0.3.html new file mode 100644 index 000000000..95a6b7936 --- /dev/null +++ b/mesalib/docs/relnotes/9.0.3.html @@ -0,0 +1,247 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 9.0.3 Release Notes / February 21th, 2013

    + +

    +Mesa 9.0.3 is a bug fix release which fixes bugs found since the 9.0.2 release. +

    +

    +Mesa 9.0 implements the OpenGL 3.1 API, but the version reported by +glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / +glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.1. OpenGL +3.1 is only available if requested at context creation +because GL_ARB_compatibility is not supported. +

    + +

    MD5 checksums

    +
    +168384ac0101f4600a15edd3561acdc7  MesaLib-9.0.3.tar.gz
    +d7515cc5116c72ac63d735655bd63689  MesaLib-9.0.3.tar.bz2
    +a2e1c794572440fd0d839a7d7dfea00c  MesaLib-9.0.3.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      +
    • Bug 25201 - Pink artifacts on objects in the distance in ETQW/Quake 4
    • + +
    • Bug 31598 - configure: Doesn't check for python libxml2
    • + +
    • Bug 40404 - [softpipe] piglit glsl-max-varyings regression
    • + +
    • Bug 47220 - [bisected] Oglc pxconv-gettex(basic.allCases) regressed
    • + +
    • Bug 48629 - [bisected i965]Oglc shad-compiler(advanced.TestLessThani) regressed
    • + +
    • Bug 54240 - [swrast] piglit fbo-generatemipmap-filtering regression
    • + +
    • Bug 56920 - [sandybridge][uxa] graphics very glitchy and always flickering
    • + +
    • Bug 57166 - [GM45] Chrome experiment "Stars" crash: brw_fs_emit.cpp:708: brw_reg brw_reg_from_fs_reg(fs_reg*): Assertion „!"not reached"“ failed.
    • + +
    • Bug 57746 - build test failure: nouveau_fbo.c:198:3: error: too few arguments to function 'nouveau_renderbuffer_del'
    • + +
    • Bug 57754 - [swrast] Mesa 9.1-devel implementation error: Unable to delete renderbuffer, no context
    • + +
    • Bug 58680 - [IVB] Graphical glitches in 0 A.D
    • + +
    • Bug 58972 - [softpipe] util/u_tile.c:795:pipe_put_tile_z: Assertion `0' failed.
    • + +
    • Bug 59364 - [bisected] Mesa build fails: clientattrib.c:33:22: fatal error: indirect.h: No such file or directory
    • + +
    • Bug 59700 - [ILK/SNB/IVB Bisected]Oglc vertexshader(advanced.TestLightsTwoSided) causes GPU hung
    • + +
    • Bug 59873 - [swrast] piglit ext_framebuffer_multisample-interpolation 0 centroid-edges regression
    • + +
    • Bug 60052 - [Bisected]Piglit glx_extension_string_sanity fail
    • + +
    • Bug 60172 - Planeshift: triangles where grass would be
    • + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-9.0.2..mesa-9.0.3
    +
    + +

    Adam Jackson (1):

    +
      +
    • r200: Fix probable thinko in r200EmitArrays
    • +
    + +

    Andreas Boll (7):

    +
      +
    • docs: Add 9.0.2 release md5sums
    • +
    • docs: add news item for 9.0.2 release
    • +
    • configure.ac: Allow OpenGL ES1 and ES2 only with enabled OpenGL
    • +
    • build: require python module libxml2
    • +
    • cherry-ignore: Ignore candidates for the 9.1 branch.
    • +
    • mesa: Bump version to 9.0.3
    • +
    • docs: Add 9.0.3 release notes
    • +
    + +

    Anuj Phogat (1):

    +
      +
    • mesa: Fix GL_LUMINANCE handling for textures in glGetTexImage
    • +
    + +

    Brian Paul (29):

    +
      +
    • st/glx: accept GLX_SAMPLE_BUFFERS/SAMPLES_ARB == 0
    • +
    • draw: set precalc_flat flag for AA lines too
    • +
    • softpipe: fix up FS variant unbinding / deletion
    • +
    • softpipe: fix unreliable FS variant binding bug
    • +
    • xlib: handle _mesa_initialize_visual()'s return value
    • +
    • xlib: allow GLX_DONT_CARE for glXChooseFBConfig() attribute values
    • +
    • st/glx: allow GLX_DONT_CARE for glXChooseFBConfig() attribute values
    • +
    • util: fix addressing bug in pipe_put_tile_z() for PIPE_FORMAT_Z32_FLOAT
    • +
    • util: add get/put_tile_z() support for PIPE_FORMAT_Z32_FLOAT_S8X24_UINT
    • +
    • mesa: use GLbitfield64 when copying program inputs
    • +
    • svga: add NULL pointer check in svga_create_sampler_state()
    • +
    • vbo: add a null pointer check to handle OOM instead of crashing
    • +
    • osmesa: use _mesa_generate_mipmap() for mipmap generation, not meta
    • +
    • xlib: use _mesa_generate_mipmap() for mipmap generation, not meta
    • +
    • st/mesa: set ctx->Const.MaxSamples = 0, not 1
    • +
    • mesa: fix-up and use _mesa_delete_renderbuffer()
    • +
    • mesa: pass context parameter to gl_renderbuffer::Delete()
    • +
    • st/mesa: fix context use-after-free problem in st_renderbuffer_delete()
    • +
    • dri_glx: fix use after free report
    • +
    • mesa: remove warning message in _mesa_reference_renderbuffer_()
    • +
    • st/mesa: add null pointer check in st_renderbuffer_delete()
    • +
    • util: add some defensive coding in u_upload_alloc()
    • +
    • st/mesa: do proper error checking for u_upload_alloc() calls
    • +
    • util: add new error checking code in vbuf helper
    • +
    • mesa: don't enable GL_EXT_framebuffer_multisample for software drivers
    • +
    • st/mesa: only enable GL_EXT_framebuffer_multisample if GL_MAX_SAMPLES >= 2
    • +
    • mesa: don't expose IBM_rasterpos_clip in a core context
    • +
    • svga: fix sRGB rendering
    • +
    • nouveau: Fix build.
    • +
    + +

    Chad Versace (1):

    +
      +
    • i965/disasm: Fix horizontal stride of dest registers
    • +
    + +

    Eric Anholt (5):

    +
      +
    • i965/fs: Fix the gen6-specific if handling for 80ecb8f15b9ad7d6edc
    • +
    • i965/fs: Don't generate saturates over existing variable values.
    • +
    • i965: Actually add support for GL_ANY_SAMPLES_PASSED from GL_ARB_oq2.
    • +
    • i965/vs: Try again when we've successfully spilled a reg.
    • +
    • i965/gen7: Set up all samplers even if samplers are sparsely used.
    • +
    + +

    Frank Henigman (1):

    +
      +
    • mesa: add bounds checking for uniform array access
    • +
    + +

    Jerome Glisse (1):

    +
      +
    • r600g: add cs memory usage accounting and limit it v3 (backport for mesa 9.0)
    • +
    + +

    Jordan Justen (1):

    +
      +
    • unpack: support unpacking MESA_FORMAT_ARGB2101010
    • +
    + +

    José Fonseca (2):

    +
      +
    • mesa/st: Don't use 4bits for GL_UNSIGNED_BYTE_3_3_2(_REV)
    • +
    • draw: Properly limit vertex buffer fetches on draw arrays.
    • +
    + +

    Kenneth Graunke (19):

    +
      +
    • i965: Fix primitive restart on Haswell.
    • +
    • i965: Refactor texture swizzle generation into a helper.
    • +
    • i965: Do texture swizzling in hardware on Haswell.
    • +
    • i965: Lower textureGrad() with samplerCubeShadow.
    • +
    • i965: Use Haswell's sample_d_c for textureGrad with shadow samplers.
    • +
    • i965: Add chipset limits for Haswell GT1/GT2.
    • +
    • cherry-ignore: Ignore i965 guardband bug fixes.
    • +
    • i965: Add missing _NEW_BUFFERS dirty bit in Gen7 SBE state.
    • +
    • i965/vs: Create a 'lod_type' temporary for ir->lod_info.lod->type.
    • +
    • i965/vs: Set LOD to 0 for ordinary texture() calls.
    • +
    • i965/vs: Store texturing results into a vec4 temporary.
    • +
    • cherry-ignore: Ignore candidates for the 9.1 branch.
    • +
    • mesa: Disable GL_NV_primitive_restart extension in core contexts.
    • +
    • glsl: Track UBO block names in the symbol table.
    • +
    • build: Fix build on systems where /usr/bin/python isn't python 2.
    • +
    • i965: Refactor Gen6+ SF attribute override code.
    • +
    • i965: Compute the maximum SF source attribute.
    • +
    • i965: Fix the SF Vertex URB Read Length calculation for Sandybridge.
    • +
    • i965: Fix the SF Vertex URB Read Length calculation for Gen7 platforms.
    • +
    + +

    Marek Olšák (3):

    +
      +
    • r600g: fix int->bool conversion in fence_signalled
    • +
    • gallium/u_upload_mgr: fix a serious memory leak
    • +
    • r300g: fix blending with blend color and RGBA formats
    • +
    + +

    Matt Turner (3):

    +
      +
    • mesa: Return 0 for XFB_VARYING_MAX_LENGTH if no varyings
    • +
    • mesa: Set transform feedback's default buffer mode to INTERLEAVED_ATTRIBS
    • +
    • mesa/uniform_query: Don't write to *params if there is an error
    • +
    + +

    Michel Dänzer (1):

    +
      +
    • configure.ac: GLX cannot work without OpenGL
    • +
    + +

    Paul Berry (1):

    +
      +
    • mesa: Allow glReadBuffer(GL_NONE) for winsys framebuffers.
    • +
    + +

    Roland Scheidegger (1):

    +
      +
    • softpipe: fix using optimized filter function
    • +
    + +

    Stefan Dösinger (3):

    +
      +
    • meta: Disable GL_FRAGMENT_SHADER_ATI in MESA_META_SHADER
    • +
    • radeon: Initialize swrast before setting limits
    • +
    • r200: Initialize swrast before setting limits
    • +
    + +

    Zack Rusin (2):

    +
      +
    • glx: only advertise GLX_INTEL_swap_event if it's supported
    • +
    • DRI2: Don't disable GLX_INTEL_swap_event unconditionally
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/9.0.html b/mesalib/docs/relnotes/9.0.html new file mode 100644 index 000000000..1810ad4c6 --- /dev/null +++ b/mesalib/docs/relnotes/9.0.html @@ -0,0 +1,99 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 9.0 Release Notes / October 8, 2012

    + +

    +Mesa 9.0 is a new development release. +People who are concerned with stability and reliability should stick +with a previous release or wait for Mesa 9.0.1. +

    +

    +Mesa 9.0 implements the OpenGL 3.1 API, but the version reported by +glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / +glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.1. OpenGL +3.1 is only available if requested at context creation +because GL_ARB_compatibility is not supported. +

    + + +

    MD5 checksums

    +
    +be4cd34c6599a7cb9d254b05c48bdb1f  MesaLib-9.0.tar.gz
    +60e557ce407be3732711da484ab3db6c  MesaLib-9.0.tar.bz2
    +16b128544cd3f7e237927bb9f8aab7ce  MesaLib-9.0.zip
    +
    + + +

    New features

    + +

    +Note: some of the new features are only available with certain drivers. +

    + +
      +
    • Added new Gallium3D - nv30 driver
    • +
    • Added new Gallium3D - radeonsi driver
    • +
    • Added OpenCL state tracker Clover
    • +
    • Completed VDPAU state tracker (video decoding support is currently limited to MPEG1 and MPEG2)
    • +
    • GL_ARB_base_instance
    • +
    • GL_ARB_blend_func_extended
    • +
    • GL_ARB_debug_output
    • +
    • GL_ARB_invalidate_subdata - Currently a "no-op" implementation. This +extension is always enabled in all drivers.
    • +
    • GL_ARB_shader_bit_encoding
    • +
    • GL_ARB_texture_buffer_object
    • +
    • GL_ARB_timer_query
    • +
    • GL_ARB_transform_feedback3
    • +
    • GL_ARB_transform_feedback_instanced
    • +
    • GL_ARB_uniform_buffer_object
    • +
    • GL_EXT_unpack_subimage for ES 2.0
    • +
    • GL_EXT_read_format_bgra for ES 1.1 and 2.0
    • +
    • GL_EXT_texture_rg for ES 2.x
    • +
    • GL_NV_read_buffer for ES 2.0
    • +
    • GLX_ARB_create_context_robustness
    • +
    • EGL_KHR_create_context
    • +
    • EGL_KHR_surfaceless_context - This replaces the +EGL_KHR_surfaceless_{gles1,gles2,opengl} extensions that were never approved +by Khronos.
    • +
    • EGL_EXT_create_context_robustness
    • +
    + + +

    Bug fixes

    + +

    TBD -- This list is likely incomplete.

    + + +

    Changes

    + +
      +
    • +The legacy/static Makefile system (ex: 'make linux-dri') has been removed. +
      +The two supported build methods are now autoconf/automake and SCons. +
    • +
    • Removed support for GL_ARB_shadow_ambient extension
    • +
    • Removed Gallium3D - nvfx driver (use nv30 instead)
    • +
    • +libGLU has been moved into its own repository, found at http://cgit.freedesktop.org/mesa/glu/ +
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/9.1.1.html b/mesalib/docs/relnotes/9.1.1.html new file mode 100644 index 000000000..5c1707436 --- /dev/null +++ b/mesalib/docs/relnotes/9.1.1.html @@ -0,0 +1,235 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 9.1.1 Release Notes / March 19th, 2013

    + +

    +Mesa 9.1.1 is a bug fix release which fixes bugs found since the 9.1 release. +

    +

    +Mesa 9.1 implements the OpenGL 3.1 API, but the version reported by +glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / +glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.1. OpenGL +3.1 is only available if requested at context creation +because GL_ARB_compatibility is not supported. +

    + +

    MD5 checksums

    +
    +6508d9882d8dce7106717f365632700c  MesaLib-9.1.1.tar.gz
    +6ea2bdc3b7ecfb4257b39814b4182580  MesaLib-9.1.1.tar.bz2
    +3434c0eb47849a08c53cd32833d10d13  MesaLib-9.1.1.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      +
    • Bug 30232 - [GM45] mesa demos spriteblast render incorrectly
    • + +
    • Bug 32429 - [gles2] Ironlake: gl_PointCoord takes no effect for point sprites
    • + +
    • Bug 38086 - Mesa 7.11-devel implementation error: Unexpected program target in destroy_program_variants_cb()
    • + +
    • Bug 57121 - [snb] corrupted GLSL built-in function results when using Uniform Buffer contents as arguments
    • + +
    • Bug 58042 - [bisected] Garbled UI in Team Fortress 2 and Counter-Strike: Source
    • + +
    • Bug 58960 - Texture flicker with fragment shader
    • + +
    • Bug 59495 - [i965 Bisected]Oglc fbblit(advanced.blitFb-3d-cube.mirror.both) fails
    • + +
    • Bug 59783 - [IVB bisected] 3DMMES2.0 Taiji performance reduced by ~13% with gnome-session enable compositing
    • + +
    • Bug 60121 - build - libvdpau_softpipe fails at runtime.
    • + +
    • Bug 60143 - gbm_dri_bo_create fails to initialize bo->base.base.format
    • + +
    • Bug 60802 - Corruption with DMA ring on cayman
    • + +
    • Bug 60848 - [bisected] r600g: add htile support cause gpu lockup in Dishonored wine.
    • + +
    • Bug 60938 - [softpipe] piglit interpolation-noperspective-gl_BackColor-flat-fixed regression
    • + +
    • Bug 61012 - alloc_layout_array tx * ty assertion failure when making pbuffer current
    • + +
    • Bug 61026 - Segfault in glBitmap when called with PBO source
    • + + +
    + + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-9.1..mesa-9.1.1
    +
    + + +

    Adam Sampson (1):

    +
      +
    • autotools: oprofilejit should be included in the list of LLVM components required
    • +
    + +

    Alex Deucher (2):

    +
      +
    • r600g: add Richland APU pci ids
    • +
    • r600g: Use blitter rather than DMA for 128bpp on cayman (v3)
    • +
    + +

    Andreas Boll (2):

    +
      +
    • docs: Add 9.1 release md5sums
    • +
    • docs: add news item for 9.1 release
    • +
    + +

    Anuj Phogat (1):

    +
      +
    • meta: Allocate texture before initializing texture coordinates
    • +
    + +

    Brian Paul (11):

    +
      +
    • docs: remove stray 'date' text
    • +
    • docs: insert links to the 9.0.3 release
    • +
    • draw: fix non-perspective interpolation in interp()
    • +
    • st/mesa: implement glBitmap unpacking from a PBO, for the cache path
    • +
    • st/xlib: initialize the drawable size in create_xmesa_buffer()
    • +
    • st/mesa: fix trimming of GL_QUAD_STRIP
    • +
    • st/mesa: check for dummy programs in destroy_program_variants()
    • +
    • st/mesa: fix polygon offset state translation logic
    • +
    • draw: fix broken polygon offset stage
    • +
    • llvmpipe: add missing checks for polygon offset point/line modes
    • +
    • svga: always link with C++
    • +
    + +

    Daniel van Vugt (1):

    +
      +
    • gbm: Remember to init format on gbm_dri_bo_create.
    • +
    + +

    Eric Anholt (7):

    +
      +
    • i965/fs: Do a general SEND dependency workaround for the original 965.
    • +
    • i965/fs: Fix copy propagation with smearing.
    • +
    • i965/fs: Delay setup of uniform loads until after pre-regalloc scheduling.
    • +
    • i965/fs: Only do CSE when the dst types match.
    • +
    • i965/fs: Fix broken math on values loaded from uniform buffers on gen6.
    • +
    • mesa: Fix setup of ctx->Point.PointSprite for GLES2.
    • +
    • i965: Fix the W value of deprecated pointcoords on pre-gen6.
    • +
    + +

    Frank Henigman (1):

    +
      +
    • i965: Link i965_dri.so with C++ linker.
    • +
    + +

    Ian Romanick (3):

    +
      +
    • mesa: Add previously picked commit to .cherry-ignore
    • +
    • mesa: Modify candidate search string
    • +
    • egl: Allow 24-bit visuals for 32-bit RGBA8888 configs
    • +
    + +

    Jakub Bogusz (1):

    +
      +
    • vdpau-softpipe: Build correct source file - vl_winsys_xsp.c
    • +
    + +

    Jerome Glisse (1):

    +
      +
    • r600g: workaround hyperz lockup on evergreen
    • +
    + +

    John Kåre Alsaker (1):

    +
      +
    • llvmpipe: Fix creation of shared and scanout textures.
    • +
    + +

    Jordan Justen (1):

    +
      +
    • attrib: push/pop FRAGMENT_PROGRAM_ARB state
    • +
    + +

    José Fonseca (3):

    +
      +
    • scons: Allows choosing VS 10 or 11.
    • +
    • scons: Define _ALLOW_KEYWORD_MACROS on MSVC builds.
    • +
    • scons: Warn when using MSVS versions prior to 2012.
    • +
    + +

    Keith Kriewall (1):

    +
      +
    • scons: Fix Windows build with LLVM 3.2
    • +
    + +

    Kenneth Graunke (1):

    +
      +
    • i965: Fix Crystal Well PCI IDs.
    • +
    + +

    Marek Olšák (5):

    +
      +
    • r600g: use async DMA with a non-zero src offset
    • +
    • r600g: flush and invalidate htile cache when appropriate
    • +
    • gallium/util: add helper code for 1D integer range
    • +
    • r600g: always map uninitialized buffer range as unsynchronized
    • +
    • r600g: pad the DMA CS to a multiple of 8 dwords
    • +
    + +

    Martin Andersson (1):

    +
      +
    • winsys/radeon: Only add bo to hash table when creating flink
    • +
    + +

    Matt Turner (1):

    +
      +
    • mesa: Allow ETC2/EAC formats with ARB_ES3_compatibility.
    • +
    + +

    Michel Dänzer (3):

    +
      +
    • radeonsi: Fix up and enable flat shading.
    • +
    • r600g/Cayman: Fix blending using destination alpha factor but non-alpha dest
    • +
    • radeonsi: Fix off-by-one for maximum vertex element index in some cases
    • +
    + +

    Tapani Pälli (2):

    +
      +
    • mesa: add missing case in _mesa_GetTexParameterfv()
    • +
    • mesa/es: NULL check in EGLImageTargetTexture2DOES
    • +
    + +

    Vadim Girlin (1):

    +
      +
    • r600g: fix check_and_set_bank_swizzle for cayman
    • +
    + +

    Vincent Lejeune (2):

    +
      +
    • r600g/llvm: Add support for UBO
    • +
    • r600g: Check comp_mask before merging export instructions
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/9.1.2.html b/mesalib/docs/relnotes/9.1.2.html new file mode 100644 index 000000000..885457af2 --- /dev/null +++ b/mesalib/docs/relnotes/9.1.2.html @@ -0,0 +1,237 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 9.1.2 Release Notes / April 30th, 2013

    + +

    +Mesa 9.1.2 is a bug fix release which fixes bugs found since the 9.1.1 release. +

    +

    +Mesa 9.1 implements the OpenGL 3.1 API, but the version reported by +glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / +glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.1. OpenGL +3.1 is only available if requested at context creation +because GL_ARB_compatibility is not supported. +

    + +

    MD5 checksums

    +
    +df2aab86ff4a510ce5b0d074caa0a59f  MesaLib-9.1.2.tar.bz2
    +415c2bc3a9eb571aafbfa474ebf5a2e0  MesaLib-9.1.2.tar.gz
    +b1ae5a4d9255953980bc9254f5323420  MesaLib-9.1.2.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      + +
    • Bug 44567 - [965gm] green artifacts when using GLSL in XBMC
    • + +
    • Bug 59238 - many new symbols in libxatracker after recent automake work
    • + +
    • Bug 59445 - [SNB/IVB/HSW Bisected]Oglc draw-buffers2(advanced.blending.none) segfault
    • + +
    • Bug 59495 - [i965 Bisected]Oglc fbblit(advanced.blitFb-3d-cube.mirror.both) fails
    • + +
    • Bug 60503 - [r300g] Unigine Heaven 3.0: all objects are black
    • + +
    • Bug 60510 - Firefox 18.0.2 Crash On Nvidia GeForce2
    • + +
    • Bug 61197 - [SNB Bisected] kwin_gles screen corruption
    • + +
    • Bug 61317 - [IVB] corrupt rendering with UBOs
    • + +
    • Bug 61395 - glEdgeFlag can't be set to false
    • + +
    • Bug 61947 - nullpointer dereference causes xorg-server segfault when nouveau DRI driver is loaded
    • + +
    • Bug 62357 - llvmpipe: Fragment Shader with "return" in main causes back output
    • + +
    • Bug 62434 - [bisected] 3284.073] (EE) AIGLX error: dlopen of /usr/lib/xorg/modules/dri/r600_dri.so failed (/usr/lib/libllvmradeon9.2.0.so: undefined symbol: lp_build_tgsi_intrinsic)
    • + +
    • Debian bug #349437 - mesa - FTBFS: error: 'IEEE_ONE' undeclared
    • + +
    • Redhat bug #918661 - crash in routine Avogadro UI manipulation
    • + +
    + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-9.1.1..mesa-9.1.2
    +
    + +

    Adam Jackson (2):

    +
      +
    • glx: Build with VISIBILITY_CFLAGS in automake
    • +
    • linux: Don't emit a .note.ABI-tag section anymore (#26663)
    • +
    + +

    Alan Hourihane (3):

    +
      +
    • Add missing GL_TEXTURE_CUBE_MAP entry in _mesa_legal_texture_dimensions
    • +
    • Unreference sampler object when it's currently bound to texture unit.
    • +
    • mesa: fix glGetInteger*(GL_SAMPLER_BINDING).
    • +
    + +

    Alex Deucher (1):

    +
      +
    • r600g: disable hyperz by default on 9.1
    • +
    + +

    Andreas Boll (5):

    +
      +
    • radeon/llvm: Link against libgallium.la to fix an undefined symbol
    • +
    • mesa: use ieee fp on s390 and m68k
    • +
    • build: Enable x86 assembler on Hurd.
    • +
    • osmesa: fix out-of-tree build
    • +
    • gallium/egl: fix out-of-tree build
    • +
    + +

    Anuj Phogat (1):

    +
      +
    • mesa: Fix FB blitting in case of zero size src or dst rect
    • +
    + +

    Brian Paul (4):

    +
      +
    • mesa: flush current state when querying GL_EDGE_FLAG
    • +
    • vbo: fix crash found with shared display lists
    • +
    • llvmpipe: tweak CMD_BLOCK_MAX and LP_SCENE_MAX_SIZE
    • +
    • llvmpipe: add some scene limit sanity check assertions
    • +
    + +

    Carl Worth (1):

    +
      +
    • i965: Avoid segfault in gen6_upload_state
    • +
    + +

    Chris Forbes (1):

    +
      +
    • i965/vs: Fix Gen4/5 VUE map inconsistency with gl_ClipVertex
    • +
    + +

    Christoph Bumiller (4):

    +
      +
    • nv50: fix 3D render target setup
    • +
    • nv50,nvc0: disable DEPTH_RANGE_NEAR/FAR clipping during blit
    • +
    • nv50,nvc0: fix 3d blits, restore viewport after blit
    • +
    • nvc0: fix for 2d engine R source formats writing RRR1 and not R001
    • +
    + +

    Eric Anholt (5):

    +
      +
    • i965/fs: Fix register allocation for uniform pull constants in 16-wide.
    • +
    • i965/fs: Fix broken rendering in large shaders with UBO loads.
    • +
    • i965/fs: Also do the gen4 SEND dependency workaround against other SENDs.
    • +
    • i965: Add definitions for gen7+ data cache messages.
    • +
    • mesa: Disable validate_ir_tree() on release builds.
    • +
    + +

    Ian Romanick (5):

    +
      +
    • docs: Add 9.1.1 release md5sums
    • +
    • mesa: Add previously picked commit to .cherry-ignore
    • +
    • glsl: Add missing bool case in glsl_type::get_scalar_type
    • +
    • mesa: Note that patch dbf94d1 should't actually get picked to the 9.1 branch
    • +
    • mesa: Bump version to 9.1.2
    • +
    + +

    Jan de Groot (1):

    +
      +
    • dri/nouveau: fix crash in nouveau_flush
    • +
    + +

    José Fonseca (3):

    +
      +
    • autotools: Add missing top-level include dir.
    • +
    • mesa,gallium,egl,mapi: One definition of C99 inline/__func__ to rule them all.
    • +
    • include: Fix build with VS 11 (i.e, 2012).
    • +
    + +

    Kenneth Graunke (4):

    +
      +
    • i965: Fix INTEL_DEBUG=shader_time for Haswell.
    • +
    • i965: Specialize SURFACE_STATE creation for shader time.
    • +
    • i965: Make INTEL_DEBUG=shader_time use the RAW surface format.
    • +
    • i965: Don't use texture swizzling to force alpha to 1.0 if unnecessary.
    • +
    + +

    Maarten Lankhorst (2):

    +
      +
    • gallium/build: Fix visibility CFLAGS in automake
    • +
    • radeon/llvm: Do not link against libgallium when building statically.
    • +
    + +

    Marcin Slusarz (1):

    +
      +
    • dri/nouveau: NV17_3D class is not available for NV1a chipset
    • +
    + +

    Marek Olšák (3):

    +
      +
    • mesa: don't allocate a texture if width or height is 0 in CopyTexImage
    • +
    • gallium/tgsi: fix valgrind warning
    • +
    • mesa: handle HALF_FLOAT like FLOAT in get_tex_rgba
    • +
    + +

    Martin Andersson (1):

    +
      +
    • r600g: Use virtual address for PIPE_QUERY_SO* in r600_emit_query_end
    • +
    + +

    Matt Turner (3):

    +
      +
    • configure.ac: Don't check for X11 unconditionally.
    • +
    • configure.ac: Remove stale comment about --x-* arguments.
    • +
    • mesa: Implement TEXTURE_IMMUTABLE_LEVELS for ES 3.0.
    • +
    + +

    Michel Dänzer (1):

    +
      +
    • radeonsi: Emit pixel shader state even when only the vertex shader changed
    • +
    + +

    Paul Berry (1):

    +
      +
    • i965: Apply depthstencil alignment workaround when doing fast clears.
    • +
    + +

    Roland Scheidegger (1):

    +
      +
    • gallivm: fix return opcode handling in main function of a shader
    • +
    + +

    Tapani Pälli (1):

    +
      +
    • intel: Fix regression in intel_create_image_from_name stride handling
    • +
    + +

    Tom Stellard (1):

    +
      +
    • r300g: Fix bug in OMOD optimization
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/9.1.3.html b/mesalib/docs/relnotes/9.1.3.html new file mode 100644 index 000000000..049bf0f07 --- /dev/null +++ b/mesalib/docs/relnotes/9.1.3.html @@ -0,0 +1,230 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 9.1.3 Release Notes / May 21st, 2013

    + +

    +Mesa 9.1.3 is a bug fix release which fixes bugs found since the 9.1.1 release. +

    +

    +Mesa 9.1 implements the OpenGL 3.1 API, but the version reported by +glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / +glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.1. OpenGL +3.1 is only available if requested at context creation +because GL_ARB_compatibility is not supported. +

    + +

    MD5 checksums

    +
    +952ccd03547ed72333b64e1746cf8ada  MesaLib-9.1.3.tar.bz2
    +26d2f1aa8e9db388d51fcbd163c61fb7  MesaLib-9.1.3.tar.gz
    +7017b7bdf0ebfd39a5c46cee7cf6b567  MesaLib-9.1.3.zip
    +
    + +

    New features

    +

    None.

    + +

    Bug fixes

    + +

    This list is likely incomplete.

    + +
      + +
    • Bug 39251 - Second Life viewers from release 2.7.4.235167 to the last 3.4.0.264911 crash on start.
    • + +
    • Bug 47478 - [wine] GLX_DONT_CARE does not work for GLX_DRAWABLE_TYPE or GLX_RENDER_TYPE
    • + +
    • Bug 56416 - [SNB bisected] SNB hang with rc6 and hiz on glxgears (and other GL apps) immediately after xinit.
    • + +
    • Bug 57436 - [GLSL1.40 IVB/HSW]Piglit spec/glsl-1.40/compiler_built-in-functions/inverse-mat2.frag fails
    • + +
    • Bug 61554 - [ivb] Mesa 9.1 performance regression on KWin's Lanczos shader
    • + +
    • Bug 61773 - abort is an incredibly not-smart way to handle IR validation
    • + +
    • Bug 62868 - solaris build broken with missing ffsll
    • + +
    • Bug 62999 - glXChooseFBConfig with GLX_DRAWABLE_TYPE, GLX_DONT_CARE fails
    • + +
    • Bug 63078 - EGL X11 Regression: Maximum swap interval is 0 (worked with 9.0)
    • + +
    • Bug 63447 - [i965 Bisected]Ogles1conform/Ogles2conform/Ogles3conform cases segfault
    • + +
    • Bug 64662 - [SNB 9.1 Bisected]Ogles2conform GL2ExtensionTests/depth_texture_cube_map/depth_texture_cube_map.test fail
    • + +
    + +

    Changes

    +

    The full set of changes can be viewed by using the following GIT command:

    + +
    +  git log mesa-9.1.2..mesa-9.1.3
    +
    + +

    Alex Deucher (2):

    +
      +
    • r600g: add new richland pci ids
    • +
    • radeonsi: add new SI pci ids
    • +
    + +

    Alexander Monakov (1):

    +
      +
    • Honor GLX_DONT_CARE in MATCH_MASK
    • +
    + +

    Andreas Boll (2):

    +
      +
    • mesa: Add a script to generate the list of fixed bugs
    • +
    • mesa: add usage examples to get-pick-list and shortlog scripts
    • +
    + +

    Aras Pranckevicius (1):

    +
      +
    • GLSL: fix lower_jumps to report progress properly
    • +
    + +

    Brian Paul (3):

    +
      +
    • mesa: remove platform checks around __builtin_ffs, __builtin_ffsll
    • +
    • gallium/u_blitter: fix is_blit_generic_supported() stencil checking
    • +
    • mesa: enable GL_ARB_texture_float if TEXTURE_FLOAT_ENABLED is defined
    • +
    + +

    Chad Versace (2):

    +
      +
    • egl/dri2: Fix min/max swap interval of configs
    • +
    • intel: Allocate hiz in intel_renderbuffer_move_to_temp()
    • +
    + +

    Chris Forbes (2):

    +
      +
    • i965/fs: Don't try to use bogus interpolation modes pre-Gen6.
    • +
    • mesa: don't memcmp() off the end of a cache key.
    • +
    + +

    Dave Airlie (2):

    +
      +
    • st/mesa: fix UBO offsets.
    • +
    • ralloc: don't write to memory in case of alloc fail.
    • +
    + +

    Eric Anholt (11):

    +
      +
    • i965/fs: Remove creation of a MOV instruction that's never used.
    • +
    • i965/fs: Move varying uniform offset compuation into the helper func.
    • +
    • i965: Make the constant surface interface take a normal byte size.
    • +
    • i965/fs: Avoid inappropriate optimization with regs_written > 1.
    • +
    • i965/fs: Do CSE on gen7's varying-index pull constant loads.
    • +
    • i965/fs: Clean up the setup of gen4 simd16 message destinations.
    • +
    • i965/gen7: Skip resetting SOL offsets at batch start with HW contexts.
    • +
    • i965/gen6: Reduce updates of transform feedback offsets with HW contexts.
    • +
    • i965: Fix SNB GPU hangs when a blorp batch is the first thing to execute.
    • +
    • i965: Fix hangs on HSW since the gen6 blorp fix.
    • +
    • i965: Disable write masking when setting up texturing m0.
    • +
    + +

    Haixia Shi (1):

    +
      +
    • ACTIVE_UNIFORM_MAX_LENGTH should include 3 extra characters for arrays.
    • +
    + +

    Ian Romanick (11):

    +
      +
    • docs: Add 9.1.2 release md5sums
    • +
    • mesa: Note that patch 0967c36 shouldn't actually get picked to the 9.1 branch
    • +
    • mesa: NULL check the pointer before trying to dereference it
    • +
    • egl/dri2: NULL check value returned by dri2_create_surface
    • +
    • mesa: Don't leak shared state when context initialization fails
    • +
    • mesa: Don't leak gl_context::BeginEnd at context destruction
    • +
    • mesa/swrast: Refactor no-memory error checking in blit_linear
    • +
    • mesa/swrast: Move free calls outside the attachment loop
    • +
    • intel: Don't dereference a NULL pointer of calloc fails
    • +
    • mesa: Note that a824692 is already back ported
    • +
    • mesa: Bump version to 9.1.3
    • +
    + +

    José Fonseca (1):

    +
      +
    • winsys/sw/xlib: Prevent shared memory segment leakage.
    • +
    + +

    Kenneth Graunke (9):

    +
      +
    • mesa: Add new ctx->Stencil._WriteEnabled derived state flag.
    • +
    • i965: Fix stencil write enable flag in 3DSTATE_DEPTH_BUFFER on Gen7+.
    • +
    • mesa: Fix unpack function for ETC2_SRGB8_PUNCHTHROUGH_ALPHA1.
    • +
    • mesa: Add an unpack function for ARGB2101010_UINT.
    • +
    • mesa: Add unpack functions for R/RG/RGB [U]INT8/16/32 formats.
    • +
    • mesa: Add unpack functions for A/I/L/LA [U]INT8/16/32 formats.
    • +
    • glsl: Ignore redundant prototypes after a function's been defined.
    • +
    • i965: Lower textureGrad() for samplerCubeShadow.
    • +
    • i965/vs: Fix textureGrad() with shadow samplers on Haswell.
    • +
    + +

    Maarten Lankhorst (1):

    +
      +
    • nvc0: Fix fd leak in nvc0_create_decoder
    • +
    + +

    Marek Olšák (5):

    +
      +
    • radeonsi: add more cases for copying unsupported formats to resource_copy_region
    • +
    • mesa: fix glGet queries depending on derived framebuffer state (v2)
    • +
    • gallium/u_blitter: implement buffer clearing
    • +
    • r600g: initialize CMASK and HTILE with the GPU using streamout
    • +
    • st/mesa: depth-stencil-alpha state also depends on _NEW_BUFFERS
    • +
    + +

    Martin Andersson (1):

    +
      +
    • r600g: Fix UMAD on Cayman
    • +
    + +

    Michel Dänzer (1):

    +
      +
    • radeonsi: Handle arbitrary 2-byte formats in resource_copy_region
    • +
    + +

    Paul Berry (7):

    +
      +
    • glsl: Fix array indexing when constant folding built-in functions.
    • +
    • i965: Reduce code duplication in handling of depth, stencil, and HiZ.
    • +
    • glsl/linker: fix varying packing for non-flat integer varyings.
    • +
    • glsl: Document lower_packed_varyings' "flat" requirement with an assert.
    • +
    • glsl/linker: Adapt flat varying handling in preparation for geometry shaders.
    • +
    • glsl/linker: Reduce scope of non-flat integer varying fix.
    • +
    • intel: Do a depth resolve before copying images between miptrees.
    • +
    + +

    Ralf Jung (1):

    +
      +
    • egl/x11: Fix initialisation of swap_interval
    • +
    + +

    Roland Scheidegger (1):

    +
      +
    • gallivm: fix small but severe bug in handling multiple lod level strides
    • +
    + +

    Vadim Girlin (1):

    +
      +
    • gallium: handle drirc disable_glsl_line_continuations option
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/9.1.html b/mesalib/docs/relnotes/9.1.html new file mode 100644 index 000000000..6ecb7c000 --- /dev/null +++ b/mesalib/docs/relnotes/9.1.html @@ -0,0 +1,83 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 9.1 Release Notes / February 22, 2013

    + +

    +Mesa 9.1 is a new development release. +People who are concerned with stability and reliability should stick +with a previous release or wait for Mesa 9.1.1. +

    +

    +Mesa 9.1 implements the OpenGL 3.1 API, but the version reported by +glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / +glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.1. OpenGL +3.1 is only available if requested at context creation +because GL_ARB_compatibility is not supported. +

    + + +

    MD5 checksums

    +
    +86d40f3056f89949368764bf84aff55e  MesaLib-9.1.tar.gz
    +d3891e02215422e120271d976ff1947e  MesaLib-9.1.tar.bz2
    +01645f28f53351c23b0beb6c688911d8  MesaLib-9.1.zip
    +
    + + +

    New features

    + +

    +Note: some of the new features are only available with certain drivers. +

    + +
      +
    • GL_ANGLE_texture_compression_dxt3
    • +
    • GL_ANGLE_texture_compression_dxt5
    • +
    • GL_ARB_ES3_compatibility
    • +
    • GL_ARB_internalformat_query
    • +
    • GL_ARB_map_buffer_alignment
    • +
    • GL_ARB_shading_language_packing
    • +
    • GL_ARB_texture_buffer_object_rgb32
    • +
    • GL_ARB_texture_cube_map_array
    • +
    • GL_EXT_color_buffer_float
    • +
    • GL_OES_depth_texture_cube_map
    • +
    • OpenGL 3.1 core profile support on Radeon HD2000 up to HD6000 series
    • +
    • Multisample anti-aliasing support on Radeon X1000 series
    • +
    • OpenGL ES 3.0 support on Intel HD Graphics 2000, 2500, 3000, and 4000
    • +
    + + +

    Bug fixes

    + +

    TBD -- This list is likely incomplete.

    + + +

    Changes

    + +
      +
    • Removed VAAPI state tracker (unmaintained and broken)
    • +
    • Removed i965's broken hardware implementation of GL_NV_vertex_program
    • +
    • Removed swrast support for GL_NV_vertex_program
    • +
    • Removed swrast support for GL_NV_fragment_program
    • +
    • Removed OpenVMS support (unmaintained and broken)
    • +
    • Removed makedepend build dependency
    • +
    + +
    + + diff --git a/mesalib/docs/relnotes/9.2.html b/mesalib/docs/relnotes/9.2.html new file mode 100644 index 000000000..0dcc9605d --- /dev/null +++ b/mesalib/docs/relnotes/9.2.html @@ -0,0 +1,70 @@ + + + + + Mesa Release Notes + + + + +
    +

    The Mesa 3D Graphics Library

    +
    + + +
    + +

    Mesa 9.2 Release Notes / (date TBD)

    + +

    +Mesa 9.2 is a new development release. +People who are concerned with stability and reliability should stick +with a previous release or wait for Mesa 9.2.1. +

    +

    +Mesa 9.2 implements the OpenGL 3.1 API, but the version reported by +glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / +glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 3.1. OpenGL +3.1 is only available if requested at context creation +because GL_ARB_compatibility is not supported. +

    + + +

    MD5 checksums

    +
    +tbd
    +
    + + +

    New features

    + +

    +Note: some of the new features are only available with certain drivers. +

    + +
      +
    • GL_ARB_texture_buffer_range
    • +
    • GL_ARB_texture_multisample
    • +
    • GL_ARB_texture_storage_multisample
    • +
    • GL_ARB_texture_query_lod
    • +
    • Added new freedreno gallium driver
    • +
    • OSMesa interface for gallium llvmpipe/softpipe drivers
    • +
    • Gallium Heads-Up Display (HUD) feature for performance monitoring
    • +
    + + +

    Bug fixes

    + +

    TBD -- This list is likely incomplete.

    + + +

    Changes

    + +
      +
    • Removed d3d1x state tracker (unused, unmaintained and broken)
    • +
    + +
    + + diff --git a/mesalib/docs/specs/MESA_agp_offset.spec b/mesalib/docs/specs/MESA_agp_offset.spec new file mode 100644 index 000000000..06e1d902e --- /dev/null +++ b/mesalib/docs/specs/MESA_agp_offset.spec @@ -0,0 +1,95 @@ +Name + + MESA_agp_offset + +Name Strings + + GLX_MESA_agp_offset + +Contact + + Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com) + Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com) + +Status + + Shipping (Mesa 4.0.4 and later. Only implemented in particular + XFree86/DRI drivers.) + +Version + + 1.0 + +Number + + TBD + +Dependencies + + OpenGL 1.0 or later is required + GLX_NV_vertex_array_range is required. + This extensions is written against the OpenGL 1.4 Specification. + +Overview + + This extensions provides a way to convert pointers in an AGP memory + region into byte offsets into the AGP aperture. + Note, this extension depends on GLX_NV_vertex_array_range, for which + no real specification exists. See GL_NV_vertex_array_range for more + information. + +IP Status + + None + +Issues + + None + +New Procedures and Functions + + unsigned int glXGetAGPOffsetMESA( const void *pointer ) + +New Tokens + + None + +Additions to the OpenGL 1.4 Specification + + None + +Additions to Chapter 3 the GLX 1.4 Specification (Functions and Errors) + + Add a new section, 3.6 as follows: + + 3.6 AGP Memory Access + + On "PC" computers, AGP memory can be allocated with glXAllocateMemoryNV + and freed with glXFreeMemoryNV. Sometimes it's useful to know where a + block of AGP memory is located with respect to the start of the AGP + aperture. The function + + GLuint glXGetAGPOffsetMESA( const GLvoid *pointer ) + + Returns the offset of the given memory block from the start of AGP + memory in basic machine units (i.e. bytes). If pointer is invalid + the value ~0 will be returned. + +GLX Protocol + + None. This is a client side-only extension. + +Errors + + glXGetAGPOffsetMESA will return ~0 if the pointer does not point to + an AGP memory region. + +New State + + None + +Revision History + + 20 September 2002 - Initial draft + 2 October 2002 - finished GLX chapter 3 additions + 27 July 2004 - use unsigned int instead of GLuint, void instead of GLvoid diff --git a/mesalib/docs/specs/MESA_copy_sub_buffer.spec b/mesalib/docs/specs/MESA_copy_sub_buffer.spec new file mode 100644 index 000000000..752a014b3 --- /dev/null +++ b/mesalib/docs/specs/MESA_copy_sub_buffer.spec @@ -0,0 +1,96 @@ +Name + + MESA_copy_sub_buffer + +Name Strings + + GLX_MESA_copy_sub_buffer + +Contact + + Brian Paul (brian.paul 'at' tungstengraphics.com) + +Status + + Shipping since Mesa 2.6 in February, 1998. + +Version + + Last Modified Date: 12 January 2009 + +Number + + 215 + +Dependencies + + OpenGL 1.0 or later is required. + GLX 1.0 or later is required. + +Overview + + The glxCopySubBufferMESA() function copies a rectangular region + of the back color buffer to the front color buffer. This can be + used to quickly repaint 3D windows in response to expose events + when the back color buffer cannot be damaged by other windows. + +IP Status + + Open-source; freely implementable. + +Issues + + None. + +New Procedures and Functions + + void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable, + int x, int y, int width, int height ); + +New Tokens + + None. + +Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors) + + Add to section 3.3.10 Double Buffering: + + The function + + void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable, + int x, int y, int width, int height ); + + may be used to copy a rectangular region of the back color buffer to + the front color buffer. This can be used to quickly repaint 3D windows + in response to expose events when the back color buffer cannot be + damaged by other windows. + + and indicates the lower-left corner of the region to copy and + and indicate the size in pixels. Coordinate (0,0) + corresponds to the lower-left pixel of the window, like glReadPixels. + + If dpy and drawable are the display and drawable for the calling + thread's current context, glXCopySubBufferMESA performs an + implicit glFlush before it returns. Subsequent OpenGL commands + may be issued immediately after calling glXCopySubBufferMESA, but + are not executed until the copy is completed. + +GLX Protocol + + None at this time. The extension is implemented in terms of ordinary + Xlib protocol inside of Mesa. + +Errors + + None. + +New State + + None. + +Revision History + + 12 January 2009 Ian Romanick - Added language about implicit flush + and command completion. + 8 June 2000 Brian Paul - initial specification + diff --git a/mesalib/docs/specs/MESA_drm_image.spec b/mesalib/docs/specs/MESA_drm_image.spec new file mode 100644 index 000000000..1150a4c43 --- /dev/null +++ b/mesalib/docs/specs/MESA_drm_image.spec @@ -0,0 +1,153 @@ +Name + + MESA_drm_image + +Name Strings + + EGL_MESA_drm_image + +Contact + + Kristian Høgsberg + +Status + + Proposal + +Version + + Version 2, August 25, 2010 + +Number + + EGL Extension #not assigned + +Dependencies + + Requires EGL 1.4 or later. This extension is written against the + wording of the EGL 1.4 specification. + + EGL_KHR_base_image is required. + +Overview + + This extension provides entry points for integrating EGLImage with the + Linux DRM mode setting and memory management drivers. The extension + lets applications create EGLImages without a client API resource and + lets the application get the DRM buffer handles. + +IP Status + + Open-source; freely implementable. + +New Procedures and Functions + + EGLImageKHR eglCreateDRMImageMESA(EGLDisplay dpy, + const EGLint *attrib_list); + + EGLBoolean eglExportDRMImageMESA(EGLDisplay dpy, + EGLImageKHR image, + EGLint *name, + EGLint *handle, + EGLint *stride); + +New Tokens + + Accepted in the parameter of eglCreateDRMImageMESA: + + EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 + EGL_DRM_BUFFER_USE_MESA 0x31D1 + + Accepted as values for the EGL_IMAGE_FORMAT_MESA attribute: + + EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2 + + Bits accepted in EGL_DRM_BUFFER_USE_MESA: + + EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x0001 + EGL_DRM_BUFFER_USE_SHARE_MESA 0x0002 + EGL_DRM_BUFFER_USE_CURSOR_MESA 0x0004 + + Accepted in the parameter of eglCreateImageKHR: + + EGL_DRM_BUFFER_MESA 0x31D3 + + Use when importing drm buffer: + + EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 + EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 + +Additions to the EGL 1.4 Specification: + + To create a DRM EGLImage, call + + EGLImageKHR eglCreateDRMImageMESA(EGLDisplay dpy, + const EGLint *attrib_list); + + In the attribute list, pass EGL_WIDTH, EGL_HEIGHT and format and + use in the attrib list using EGL_DRM_BUFFER_FORMAT_MESA and + EGL_DRM_BUFFER_USE_MESA. The only format specified by this + extension is EGL_DRM_BUFFER_FORMAT_ARGB32_MESA, where each pixel + is a CPU-endian, 32-bit quantity, with alpha in the upper 8 bits, + then red, then green, then blue. The bit values accepted by + EGL_DRM_BUFFER_USE_MESA are EGL_DRM_BUFFER_USE_SCANOUT_MESA, + EGL_DRM_BUFFER_USE_SHARE_MESA and EGL_DRM_BUFFER_USE_CURSOR_MESA. + EGL_DRM_BUFFER_USE_SCANOUT_MESA requests that the created EGLImage + should be usable as a scanout buffer with the DRM kernel + modesetting API. EGL_DRM_BUFFER_USE_SHARE_MESA requests that the + EGLImage can be shared with other processes by passing the + underlying DRM buffer name. EGL_DRM_BUFFER_USE_CURSOR_MESA + requests that the image must be usable as a cursor with KMS. When + EGL_DRM_BUFFER_USE_CURSOR_MESA is set, width and height must both + be 64. + + To create a process local handle or a global DRM name for a + buffer, call + + EGLBoolean eglExportDRMImageMESA(EGLDisplay dpy, + EGLImageKHR image, + EGLint *name, + EGLint *handle, + EGLint *stride); + + If is non-NULL, a global name is assigned to the image and + written to , the handle (local to the DRM file descriptor, + for use with DRM kernel modesetting API) is written to if + non-NULL and the stride (in bytes) is written to , if + non-NULL. + + Import a shared buffer by calling eglCreateImageKHR with + EGL_DRM_BUFFER_MESA as the target, using EGL_WIDTH, EGL_HEIGHT, + EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_STRIDE_MESA + in the attrib list. + +Issues + + 1. Why don't we use eglCreateImageKHR with a target that + indicates that we want to create an EGLImage from scratch? + + RESOLVED: The eglCreateImageKHR entry point is reserved for + creating an EGLImage from an already existing client API + resource. This is fine when we're creating the EGLImage from + an existing DRM buffer name, it doesn't seem right to overload + the function to also allocate the underlying resource. + + 2. Why don't we use an eglQueryImageMESA type functions for + querying the DRM EGLImage attributes (name, handle, and stride)? + + RESOLVED: The eglQueryImage function has been proposed often, + but it goes against the EGLImage design. EGLImages are opaque + handles to a 2D array of pixels, which can be passed between + client APIs. By referencing an EGLImage in a client API, the + EGLImage target (a texture, a renderbuffer or such) can be + used to query the attributes of the EGLImage. We don't have a + full client API for creating and querying DRM buffers, though, + so we use a new EGL extension entry point instead. + +Revision History + + Version 1, June 3, 2010 + Initial draft (Kristian Høgsberg) + Version 2, August 25, 2010 + Flesh out the extension a bit, add final EGL tokens, capture + some of the original discussion in the issues section. diff --git a/mesalib/docs/specs/MESA_multithread_makecurrent.spec b/mesalib/docs/specs/MESA_multithread_makecurrent.spec new file mode 100644 index 000000000..5065c2fc0 --- /dev/null +++ b/mesalib/docs/specs/MESA_multithread_makecurrent.spec @@ -0,0 +1,158 @@ +Name + + MESA_multithread_makecurrent + +Name Strings + + GLX_MESA_multithread_makecurrent + +Contact + + Eric Anholt (eric@anholt.net) + +Status + + Not shipping. + +Version + + Last Modified Date: 21 February 2011 + +Number + + TBD + +Dependencies + + OpenGL 1.0 or later is required. + GLX 1.3 or later is required. + +Overview + + The GLX context setup encourages multithreaded applications to + create a context per thread which each operate on their own + objects in parallel, and leaves synchronization for write access + to shared objects up to the application. + + For some applications, maintaining per-thread contexts and + ensuring that the glFlush happens in one thread before another + thread starts working on that object is difficult. For them, + using the same context across multiple threads and protecting its + usage with a mutex is both higher performance and easier to + implement. This extension gives those applications that option by + relaxing the context binding requirements. + + This new behavior matches the requirements of AGL, while providing + a feature not specified in WGL. + +IP Status + + Open-source; freely implementable. + +Issues + + None. + +New Procedures and Functions + + None. + +New Tokens + + None. + +Changes to Chapter 2 of the GLX 1.3 Specification (Functions and Errors) + + Replace the following sentence from section 2.2 Rendering Contexts: + In addition, a rendering context can be current for only one + thread at a time. + with: + In addition, an indirect rendering context can be current for + only one thread at a time. A direct rendering context may be + current to multiple threads, with synchronization of access to + the context thruogh the GL managed by the application through + mutexes. + +Changes to Chapter 3 of the GLX 1.3 Specification (Functions and Errors) + + Replace the following sentence from section 3.3.7 Rendering Contexts: + If ctx is current to some other thread, then + glXMakeContextCurrent will generate a BadAccess error. + with: + If ctx is an indirect context current to some other thread, + then glXMakeContextCurrent will generate a BadAccess error. + + Replace the following sentence from section 3.5 Rendering Contexts: + If ctx is current to some other thread, then + glXMakeCurrent will generate a BadAccess error. + with: + If ctx is an indirect context current to some other thread, + then glXMakeCurrent will generate a BadAccess error. + +GLX Protocol + + None. The GLX extension only extends to direct rendering contexts. + +Errors + + None. + +New State + + None. + +Issues + + (1) What happens if the app binds a context/drawable in multiple + threads, then binds a different context/thread in one of them? + + As with binding a new context from the current thread, the old + context's refcount is reduced and the new context's refcount is + increased. + + (2) What happens if the app binds a context/drawable in multiple + threads, then binds None/None in one of them? + + The GLX context is unreferenced from that thread, and the other + threads retain their GLX context binding. + + (3) What happens if the app binds a context/drawable in 7 threads, + then destroys the context in one of them? + + As with GLX context destruction previously, the XID is destroyed + but the context remains usable by threads that have the context + current. + + (4) What happens if the app binds a new drawable/readable with + glXMakeCurrent() when it is already bound to another thread? + + The context becomes bound to the new drawable/readable, and + further rendering in either thread will use the new + drawable/readable. + + (5) What requirements should be placed on the user managing contexts + from multiple threads? + + The intention is to allow multithreaded access to the GL at the + minimal performance cost, so requiring that the GL do general + synchronization (beyond that already required by context sharing) + is not an option, and synchronizing of GL's access to the GL + context between multiple threads is left to the application to do + across GL calls. However, it would be unfortunate for a library + doing multithread_makecurrent to require that other libraries + share in synchronization for binding of their own contexts, so the + refcounting of the contexts is required to be threadsafe. + + (6) Does this apply to indirect contexts? + + This was ignored in the initial revision of the spec. Behavior + for indirect contexts is left as-is. + +Revision History + + 20 November 2009 Eric Anholt - initial specification + 22 November 2009 Eric Anholt - added issues from Ian Romanick. + 3 February 2011 Eric Anholt - updated with resolution to issues 1-3 + 3 February 2011 Eric Anholt - added issue 4, 5 + 21 February 2011 Eric Anholt - Include glXMakeCurrent() sentence + along with glXMakeContextCurrent() for removal. diff --git a/mesalib/docs/specs/MESA_pack_invert.spec b/mesalib/docs/specs/MESA_pack_invert.spec new file mode 100644 index 000000000..33fb3c7bf --- /dev/null +++ b/mesalib/docs/specs/MESA_pack_invert.spec @@ -0,0 +1,138 @@ +Name + + MESA_pack_invert + +Name Strings + + GL_MESA_pack_invert + +Contact + + Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com) + Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com) + +Status + + Shipping (Mesa 4.0.4 and later) + +Version + + 1.0 + +Number + + TBD + +Dependencies + + OpenGL 1.0 or later is required + This extensions is written against the OpenGL 1.4 Specification. + +Overview + + This extension adds a new pixel storage parameter to indicate that + images are to be packed in top-to-bottom order instead of OpenGL's + conventional bottom-to-top order. Only pixel packing can be + inverted (i.e. for glReadPixels, glGetTexImage, glGetConvolutionFilter, + etc). + + Almost all known image file formats store images in top-to-bottom + order. As it is, OpenGL reads images from the frame buffer in + bottom-to-top order. Thus, images usually have to be inverted before + writing them to a file with image I/O libraries. This extension + allows images to be read such that inverting isn't needed. + +IP Status + + None + +Issues + + 1. Should we also define UNPACK_INVERT_MESA for glDrawPixels, etc? + + Resolved: No, we're only concerned with pixel packing. There are other + solutions for inverting images when using glDrawPixels (negative Y pixel + zoom) or glTexImage (invert the vertex T coordinates). It would be easy + enough to define a complementary extension for pixel packing in the + future if needed. + +New Procedures and Functions + + None + +New Tokens + + Accepted by the parameter of PixelStorei and PixelStoref + and the parameter of GetIntegerv, GetFloatv, GetDoublev + and GetBooleanv: + + PACK_INVERT_MESA 0x8758 + +Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation) + + None + +Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization) + + None + +Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment +Operations and the Frame Buffer) + + Add the following entry to table 4.4 (PixelStore parameters) on page 182: + + Parameter Name Type Initial Value Valid Range + --------------------------------------------------------- + PACK_INVERT_MESA boolean FALSE TRUE/FALSE + + In the section labeled "Placement in Client Memory" on page 184 + insert the following text into the paragraph before the sentence + that starts with "If the format is RED, GREEN, BLUE...": + + "The parameter PACK_INVERT_MESA controls whether the image is packed + in bottom-to-top order (the default) or top-to-bottom order. Equation + 3.8 is modified as follows: + + ... the first element of the Nth row is indicated by + + p + Nk, if PACK_INVERT_MESA is false + p + k * (H - 1) - Nk, if PACK_INVERT_MESA is true, where H is the + image height + " + +Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions) + + None + +Additions to Chapter 6 of the OpenGL 1.4 Specification (State and +State Requests) + + None + +Additions to Appendix A of the OpenGL 1.4 Specification (Invariance) + + None + +Additions to the AGL/GLX/WGL Specifications + + None + +GLX Protocol + + None + +Errors + + None + +New State + + Add the following entry to table 6.20 (Pixels) on page 235: + + Get Value Type Get Cmd Initial Value Description Sec Attribute + -------------------------------------------------------------------------------------------------- + PACK_INVERT_MESA boolean GetBoolean FALSE Value of PACK_INVERT_MESA 4.3.2 pixel-store + +Revision History + + 21 September 2002 - Initial draft diff --git a/mesalib/docs/specs/MESA_pixmap_colormap.spec b/mesalib/docs/specs/MESA_pixmap_colormap.spec new file mode 100644 index 000000000..fb0b441cc --- /dev/null +++ b/mesalib/docs/specs/MESA_pixmap_colormap.spec @@ -0,0 +1,90 @@ +Name + + MESA_pixmap_colormap + +Name Strings + + GLX_MESA_pixmap_colormap + +Contact + + Brian Paul (brian.paul 'at' tungstengraphics.com) + +Status + + Shipping since Mesa 1.2.8 in May, 1996. + +Version + + Last Modified Date: 8 June 2000 + +Number + + 216 + +Dependencies + + OpenGL 1.0 or later is required. + GLX 1.0 or later is required. + +Overview + + Since Mesa allows RGB rendering into drawables with PseudoColor, + StaticColor, GrayScale and StaticGray visuals, Mesa needs a colormap + in order to compute pixel values during rendering. + + The colormap associated with a window can be queried with normal + Xlib functions but there is no colormap associated with pixmaps. + + The glXCreateGLXPixmapMESA function is an alternative to glXCreateGLXPixmap + which allows specification of a colormap. + +IP Status + + Open-source; freely implementable. + +Issues + + None. + +New Procedures and Functions + + GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual, + Pixmap pixmap, Colormap cmap ); + +New Tokens + + None. + +Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors) + + Add to section 3.4.2 Off Screen Rendering + + The Mesa implementation of GLX allows RGB rendering into X windows and + pixmaps of any visual class, not just TrueColor or DirectColor. In order + to compute pixel values from RGB values Mesa requires a colormap. + + The function + + GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual, + Pixmap pixmap, Colormap cmap ); + + allows one to create a GLXPixmap with a specific colormap. The image + rendered into the pixmap may then be copied to a window (which uses the + same colormap and visual) with the expected results. + +GLX Protocol + + None since this is a client-side extension. + +Errors + + None. + +New State + + None. + +Revision History + + 8 June 2000 - initial specification diff --git a/mesalib/docs/specs/MESA_release_buffers.spec b/mesalib/docs/specs/MESA_release_buffers.spec new file mode 100644 index 000000000..52d1e5a9c --- /dev/null +++ b/mesalib/docs/specs/MESA_release_buffers.spec @@ -0,0 +1,85 @@ +Name + + MESA_release_buffers + +Name Strings + + GLX_MESA_release_buffers + +Contact + + Brian Paul (brian.paul 'at' tungstengraphics.com) + +Status + + Shipping since Mesa 2.0 in October, 1996. + +Version + + Last Modified Date: 8 June 2000 + +Number + + 217 + +Dependencies + + OpenGL 1.0 or later is required. + GLX 1.0 or later is required. + +Overview + + Mesa's implementation of GLX is entirely implemented on the client side. + Therefore, Mesa cannot immediately detect when an X window or pixmap is + destroyed in order to free any ancillary data associated with the window + or pixmap. + + The glxMesaReleaseBuffers() function can be used to explicitly indicate + when the back color buffer, depth buffer, stencil buffer, and/or accumu- + lation buffer associated with a drawable can be freed. + +IP Status + + Open-source; freely implementable. + +Issues + + None. + +New Procedures and Functions + + Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d ); + +New Tokens + + None. + +Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors) + + The function + + Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d ); + + causes all software ancillary buffers (back buffer, depth, stencil, + accum, etc) associated with the named drawable to be immediately + deallocated. True is returned if is a valid Mesa GLX drawable, + else False is returned. After calling glXReleaseBuffersMESA, the + drawable should no longer be used for GL rendering. Results of + attempting to do so are undefined. + + +GLX Protocol + + None, since this is a client-side operation. + +Errors + + None. + +New State + + None. + +Revision History + + 8 June 2000 - initial specification diff --git a/mesalib/docs/specs/MESA_resize_buffers.spec b/mesalib/docs/specs/MESA_resize_buffers.spec new file mode 100644 index 000000000..dabc7c421 --- /dev/null +++ b/mesalib/docs/specs/MESA_resize_buffers.spec @@ -0,0 +1,81 @@ +Name + + MESA_resize_buffers + +Name Strings + + GL_MESA_resize_buffers + +Contact + + Brian Paul (brian.paul 'at' tungstengraphics.com) + +Status + + Shipping (since Mesa version 2.2) + +Version + + +Number + + 196 + +Dependencies + + Mesa 2.2 or later is required. + +Overview + + Mesa is often used as a client library with no integration with + the computer's window system (an X server, for example). And since + Mesa does not have an event loop nor window system callbacks, it + cannot properly respond to window system events. In particular, + Mesa cannot automatically detect when a window has been resized. + + Mesa's glViewport command queries the current window size and updates + its internal data structors accordingly. This normally works fine + since most applications call glViewport in response to window size + changes. + + In some situations, however, the application may not call glViewport + when a window size changes but would still like Mesa to adjust to + the new window size. This extension exports a new function to solve + this problem. + +New Procedures and Functions + + void glResizeBuffersMESA( void ) + +New Tokens + + none + +Additions to the OpenGL Specification (no particular section) + + The glResizeBuffersMESA command may be called when the client + determines that a window has been resized. Calling + glResizeBuffersMESA causes Mesa to query the current window size + and adjust its internal data structures. This may include + reallocating depth, stencil, alpha and accumulation buffers. + +Additions to the AGL/GLX/WGL Specifications + + None + +Errors + + INVALID_OPERATION is generated if glResizeBuffersMESA is called between + Begin and End. + +New State + + None. + +New Implementation Dependent State + + None. + +Revision History + + * Revision 1.0 - Initial specification diff --git a/mesalib/docs/specs/MESA_set_3dfx_mode.spec b/mesalib/docs/specs/MESA_set_3dfx_mode.spec new file mode 100644 index 000000000..06d97ca02 --- /dev/null +++ b/mesalib/docs/specs/MESA_set_3dfx_mode.spec @@ -0,0 +1,85 @@ +Name + + MESA_set_3dfx_mode + +Name Strings + + GLX_MESA_set_3dfx_mode + +Contact + + Brian Paul (brian.paul 'at' tungstengraphics.com) + +Status + + Shipping since Mesa 2.6 in February, 1998. + +Version + + Last Modified Date: 8 June 2000 + +Number + + 218 + +Dependencies + + OpenGL 1.0 or later is required. + GLX 1.0 or later is required. + +Overview + + The Mesa Glide driver allows full-screen rendering or rendering into + an X window. The glXSet3DfxModeMESA() function allows an application + to switch between full-screen and windowed rendering. + +IP Status + + Open-source; freely implementable. + +Issues + + None. + +New Procedures and Functions + + GLboolean glXSet3DfxModeMESA( GLint mode ); + +New Tokens + + GLX_3DFX_WINDOW_MODE_MESA 0x1 + GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 + +Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors) + + The Mesa Glide device driver allows either rendering in full-screen + mode or rendering into an X window. An application can switch between + full-screen and window rendering with the command: + + GLboolean glXSet3DfxModeMESA( GLint mode ); + + may either be GLX_3DFX_WINDOW_MODE_MESA to indicate window + rendering or GLX_3DFX_FULLSCREEN_MODE_MESA to indicate full-screen mode. + + GL_TRUE is returned if is valid and the operation completed + normally. GL_FALSE is returned if is invalid or if the Glide + driver is not being used. + + Note that only one drawable and context can be created at any given + time with the Mesa Glide driver. + +GLX Protocol + + None since this is a client-side extension. + +Errors + + None. + +New State + + None. + +Revision History + + 8 June 2000 - initial specification diff --git a/mesalib/docs/specs/MESA_shader_debug.spec b/mesalib/docs/specs/MESA_shader_debug.spec new file mode 100644 index 000000000..fab92abc7 --- /dev/null +++ b/mesalib/docs/specs/MESA_shader_debug.spec @@ -0,0 +1,264 @@ +Name + + MESA_shader_debug + +Name Strings + + GL_MESA_shader_debug + +Contact + + Brian Paul (brian.paul 'at' tungstengraphics.com) + Michal Krol (mjkrol 'at' gmail.com) + +Status + + Obsolete. + +Version + + Last Modified Date: July 30, 2006 + Author Revision: 0.2 + +Number + + TBD + +Dependencies + + OpenGL 1.0 is required. + + The ARB_shader_objects extension is required. + + The ARB_shading_language_100 extension is required. + + The extension is written against the OpenGL 1.5 specification. + + The extension is written against the OpenGL Shading Language 1.10 + Specification. + +Overview + + This extension introduces a debug object that can be attached to + a program object to enable debugging. Vertex and/or fragment shader, + during execution, issue diagnostic function calls that are logged + to the debug object's log. A separate debug log for each shader type + is maintained. A debug object can be attached, detached and queried + at any time outside the Begin/End pair. Multiple debug objects can + be attached to a single program object. + +IP Status + + None + +Issues + + None + +New Procedures and Functions + + handleARB CreateDebugObjectMESA(void) + void ClearDebugLogMESA(handleARB obj, enum logType, enum shaderType) + void GetDebugLogMESA(handleARB obj, enum logType, enum shaderType, + sizei maxLength, sizei *length, + charARB *debugLog) + sizei GetDebugLogLengthMESA(handleARB obj, enum logType, + enum shaderType) + +New Types + + None + +New Tokens + + Returned by the parameter of GetObjectParameter{fi}vARB: + + DEBUG_OBJECT_MESA 0x8759 + + Accepted by the argument of ClearDebugLogMESA, + GetDebugLogLengthMESA and GetDebugLogMESA: + + DEBUG_PRINT_MESA 0x875A + DEBUG_ASSERT_MESA 0x875B + +Additions to Chapter 2 of the OpenGL 1.5 Specification +(OpenGL Operation) + + None + +Additions to Chapter 3 of the OpenGL 1.5 Specification (Rasterization) + + None + +Additions to Chapter 4 of the OpenGL 1.5 Specification (Per-Fragment +Operations and the Frame Buffer) + + None + +Additions to Chapter 5 of the OpenGL 1.5 Specification +(Special Functions) + + None + +Additions to Chapter 6 of the OpenGL 1.5 Specification (State and State +Requests) + + None + +Additions to Appendix A of the OpenGL 1.5 Specification (Invariance) + + None + +Additions to Chapter 1 of the OpenGL Shading Language 1.10 Specification +(Introduction) + + None + +Additions to Chapter 2 of the OpenGL Shading Language 1.10 Specification +(Overview of OpenGL Shading) + + None + +Additions to Chapter 3 of the OpenGL Shading Language 1.10 Specification +(Basics) + + None + +Additions to Chapter 4 of the OpenGL Shading Language 1.10 Specification +(Variables and Types) + + None + +Additions to Chapter 5 of the OpenGL Shading Language 1.10 Specification +(Operators and Expressions) + + None + +Additions to Chapter 6 of the OpenGL Shading Language 1.10 Specification +(Statements and Structure) + + None + +Additions to Chapter 7 of the OpenGL Shading Language 1.10 Specification +(Built-in Variables) + + None + +Additions to Chapter 8 of the OpenGL Shading Language 1.10 Specification +(Built-in Functions) + + Add a new section 8.10 "Debug Functions": + + Debug functions are available to both fragment and vertex shaders. + They are used to track the execution of a shader by logging + passed-in arguments to the debug object's log. Those values can be + retrieved by the application for inspection after shader execution + is complete. + + The text, if any, produced by any of these functions is appended + to each debug object that is attached to the program object. + There are different debug log types + + Add a new section 8.10.1 "Print Function": + + The following printMESA prototypes are available. + + void printMESA(const float value) + void printMESA(const int value) + void printMESA(const bool value) + void printMESA(const vec2 value) + void printMESA(const vec3 value) + void printMESA(const vec4 value) + void printMESA(const ivec2 value) + void printMESA(const ivec3 value) + void printMESA(const ivec4 value) + void printMESA(const bvec2 value) + void printMESA(const bvec3 value) + void printMESA(const bvec4 value) + void printMESA(const mat2 value) + void printMESA(const mat3 value) + void printMESA(const mat4 value) + void printMESA(const sampler1D value) + void printMESA(const sampler2D value) + void printMESA(const sampler3D value) + void printMESA(const samplerCube value) + void printMESA(const sampler1DShadow value) + void printMESA(const sampler2DShadow value) + + The printMESA function writes the argument to the "debug + print log" (XXX DEBUG_PRINT_MESA?). Each component is written in + text format (XXX format!) and is delimited by a white space (XXX 1 + or more?). + + Add a new section 8.10.2 "Assert Function": + + The following assertMESA prototypes are available. + + void assertMESA(const bool condition) + void assertMESA(const bool condition, const int cookie) + void assertMESA(const bool condition, const int cookie, + const int file, const int line) + + The assertMESA function checks if the argument is + true or false. If it is true, nothing happens. If it is false, + a diagnostic message is written to the "debug assert log". + The message contains the argument , , and + implementation dependent double-quoted string, each of this + delimited by a white space. If the argument is not present, + it is meant as if it was of value 0. If the arguments and + are not present, they are meant as if they were of values + __FILE__ and __LINE__, respectively. The following three calls + produce the same output, assuming they were issued from the same + file and line. + + assertMESA (false); + assertMESA (false, 0); + assertMESA (false, 0, __FILE__, __LINE__); + + The diagnostic message examples follow. + + 1 89 0 "" + 1 45 333 "all (lessThanEqual (fragColor, vec4 (1.0)))" + 1 66 1 "assertion failed in file 1, line 66, cookie 1" + +Additions to Chapter 9 of the OpenGL Shading Language 1.10 Specification +(Shading Language Grammar) + + None + +Additions to Chapter 10 of the OpenGL Shading Language 1.10 +Specification (Issues) + + None + +Additions to the AGL/EGL/GLX/WGL Specifications + + None + +GLX Protocol + + None + +Errors + + TBD + +New State + + TBD + +New Implementation Dependent State + + TBD + +Sample Code + + TBD + +Revision History + + 29 May 2006 + Initial draft. (Michal Krol) + 30 July 2006 + Add Overview, New Procedures and Functions, New Tokens sections. + Add sections 8.10.1, 8.10.2 to GLSL spec. diff --git a/mesalib/docs/specs/MESA_swap_control.spec b/mesalib/docs/specs/MESA_swap_control.spec new file mode 100644 index 000000000..a002563c9 --- /dev/null +++ b/mesalib/docs/specs/MESA_swap_control.spec @@ -0,0 +1,129 @@ +Name + + MESA_swap_control + +Name Strings + + GLX_MESA_swap_control + +Contact + + Ian Romanick, IBM, idr at us.ibm.com + +Status + + Deployed in DRI drivers post-XFree86 4.3. + +Version + + Date: 5/1/2003 Revision: 1.1 + +Number + + ??? + +Dependencies + + None + + Based on GLX_SGI_swap_control version 1.9 and WGL_EXT_swap_control + version 1.5. + +Overview + + This extension allows an application to specify a minimum periodicity + of color buffer swaps, measured in video frame periods. + +Issues + + * Should implementations that export GLX_MESA_swap_control also export + GL_EXT_swap_control for compatibility with WGL_EXT_swap_control? + + UNRESOLVED. + +New Procedures and Functions + + int glXSwapIntervalMESA(unsigned int interval) + int glXGetSwapIntervalMESA(void) + +New Tokens + + None + +Additions to Chapter 2 of the 1.4 GL Specification (OpenGL Operation) + + None + +Additions to Chapter 3 of the 1.4 GL Specification (Rasterization) + + None + +Additions to Chapter 4 of the 1.4 GL Specification (Per-Fragment Operations +and the Framebuffer) + + None + +Additions to Chapter 5 of the 1.4 GL Specification (Special Functions) + + None + +Additions to Chapter 6 of the 1.4 GL Specification (State and State Requests) + + None + +Additions to the GLX 1.3 Specification + + [Add the following to Section 3.3.10 of the GLX Specification (Double + Buffering)] + + glXSwapIntervalMESA specifies the minimum number of video frame periods + per buffer swap. (e.g. a value of two means that the color buffers + will be swapped at most every other video frame.) A return value + of zero indicates success; otherwise an error occurred. The interval + takes effect when glXSwapBuffers is first called subsequent to the + glXSwapIntervalMESA call. + + A video frame period is the time required by the monitor to display a + full frame of video data. In the case of an interlaced monitor, + this is typically the time required to display both the even and odd + fields of a frame of video data. + + If is set to a value of 0, buffer swaps are not synchro- + nized to a video frame. The value is silently clamped to + the maximum implementation-dependent value supported before being + stored. + + The swap interval is not part of the render context state. It cannot + be pushed or popped. The current swap interval for the window + associated with the current context can be obtained by calling + glXGetSwapIntervalMESA. The default swap interval is 0. + + On XFree86, setting the environment variable LIBGL_THROTTLE_REFRESH sets + the swap interval to 1. + +Errors + + glXSwapIntervalMESA returns GLX_BAD_CONTEXT if there is no current + GLXContext or if the current context is not a direct rendering context. + +GLX Protocol + + None. This extension only extends to direct rendering contexts. + +New State + + Get Value Get Command Type Initial Value + --------- ----------- ---- ------------- + [swap interval] GetSwapInterval Z+ 0 + +New Implementation Dependent State + + None + + +Revision History + + 1.1, 5/1/03 Added the issues section and contact information. + Changed the default swap interval to 0. + 1.0, 3/17/03 Initial version based on GLX_SGI_swap_control and + WGL_EXT_swap_control. diff --git a/mesalib/docs/specs/MESA_swap_frame_usage.spec b/mesalib/docs/specs/MESA_swap_frame_usage.spec new file mode 100644 index 000000000..5023eadd8 --- /dev/null +++ b/mesalib/docs/specs/MESA_swap_frame_usage.spec @@ -0,0 +1,201 @@ +Name + + MESA_swap_frame_usage + +Name Strings + + GLX_MESA_swap_frame_usage + +Contact + + Ian Romanick, IBM, idr at us.ibm.com + +Status + + Deployed in DRI drivers post-XFree86 4.3. + +Version + + Date: 5/1/2003 Revision: 1.1 + +Number + + ??? + +Dependencies + + GLX_SGI_swap_control affects the definition of this extension. + GLX_MESA_swap_control affects the definition of this extension. + GLX_OML_sync_control affects the definition of this extension. + + Based on WGL_I3D_swap_frame_usage version 1.3. + +Overview + + This extension allows an application to determine what portion of the + swap period has elapsed since the last swap operation completed. The + "usage" value is a floating point value on the range [0,max] which is + calculated as follows: + + td + percent = ---- + tf + + where td is the time measured from the last completed buffer swap (or + call to enable the statistic) to when the next buffer swap completes, tf + is the entire time for a frame which may be multiple screen refreshes + depending on the swap interval as set by the GLX_SGI_swap_control or + GLX_OML_sync_control extensions. + + The value, percent, indicates the amount of time spent between the + completion of the two swaps. If the value is in the range [0,1], the + buffer swap occurred within the time period required to maintain a + constant frame rate. If the value is in the range (1,max], a constant + frame rate was not achieved. The value indicates the number of frames + required to draw. + + This definition of "percent" differs slightly from + WGL_I3D_swap_frame_usage. In WGL_I3D_swap_frame_usage, the measurement + is taken from the completion of one swap to the issuance of the next. + This representation may not be as useful as measuring between + completions, as a significant amount of time may pass between the + issuance of a swap and the swap actually occurring. + + There is also a mechanism to determine whether a frame swap was + missed. + +New Procedures and Functions + + int glXGetFrameUsageMESA(Display *dpy, + GLXDrawable drawable, + float *usage) + + int glXBeginFrameTrackingMESA(Display *dpy, + GLXDrawable drawable) + + int glXEndFrameTrackingMESA(Display *dpy, + GLXDrawable drawable) + + int glXQueryFrameTrackingMESA(Display *dpy, + GLXDrawable drawable, + int64_t *swapCount, + int64_t *missedFrames, + float *lastMissedUsage) + +New Tokens + + None + +Additions to Chapter 2 of the 1.4 GL Specification (OpenGL Operation) + + None + +Additions to Chapter 3 of the 1.4 GL Specification (Rasterization) + + None + +Additions to Chapter 4 of the 1.4 GL Specification (Per-Fragment Operations +and the Framebuffer) + + None + +Additions to Chapter 5 of the 1.4 GL Specification (Special Functions) + + None + +Additions to Chapter 6 of the 1.4 GL Specification (State and State Requests) + + None + +Additions to the GLX 1.3 Specification + + The frame usage is measured as the percentage of the swap period elapsed + between two buffer-swap operations being committed. In unextended GLX the + swap period is the vertical refresh time. If SGI_swap_control or + MESA_swap_control are supported, the swap period is the vertical refresh + time multiplied by the swap interval (or one if the swap interval is set + to zero). + + If OML_sync_control is supported, the swap period is the vertical + refresh time multiplied by the divisor parameter to + glXSwapBuffersMscOML. The frame usage in this case is less than 1.0 if + the swap is committed before target_msc, and is greater than or equal to + 1.0 otherwise. The actual usage value is based on the divisor and is + never less than 0.0. + + int glXBeginFrameTrackingMESA(Display *dpy, + GLXDrawable drawable, + float *usage) + + glXGetFrameUsageMESA returns a floating-point value in + that represents the current swap usage, as defined above. + + Missed frame swaps can be tracked by calling the following function: + + int glXBeginFrameTrackingMESA(Display *dpy, + GLXDrawable drawable) + + glXBeginFrameTrackingMESA resets a "missed frame" count and + synchronizes with the next frame vertical sync before it returns. + If a swap is missed based in the rate control specified by the + set by glXSwapIntervalSGI or the default swap of once + per frame, the missed frame count is incremented. + + The current missed frame count and total number of swaps since + the last call to glXBeginFrameTrackingMESA can be obtained by + calling the following function: + + int glXQueryFrameTrackingMESA(Display *dpy, + GLXDrawable drawable, + int64_t *swapCount, + int64_t *missedFrames, + float *lastMissedUsage) + + The location pointed to by will be updated with the + number of swaps that have been committed. This value may not match the + number of swaps that have been requested since swaps may be + queued by the implementation. This function can be called at any + time and does not synchronize to vertical blank. + + The location pointed to by will contain the number + swaps that missed the specified frame. The frame usage for the + last missed frame is returned in the location pointed to by + . + + Frame tracking is disabled by calling the function + + int glXEndFrameTrackingMESA(Display *dpy, + GLXDrawable drawable) + + This function will not return until all swaps have occurred. The + application can call glXQueryFrameTrackingMESA for a final swap and + missed frame count. + + If these functions are successful, zero is returned. If the context + associated with dpy and drawable is not a direct context, + GLX_BAD_CONTEXT is returned. + +Errors + + If the function succeeds, zero is returned. If the function + fails, one of the following error codes is returned: + + GLX_BAD_CONTEXT The current rendering context is not a direct + context. + +GLX Protocol + + None. This extension only extends to direct rendering contexts. + +New State + + None + +New Implementation Dependent State + + None + +Revision History + + 1.1, 5/1/03 Added contact information. + 1.0, 3/17/03 Initial version based on WGL_I3D_swap_frame_usage. diff --git a/mesalib/docs/specs/MESA_texture_array.spec b/mesalib/docs/specs/MESA_texture_array.spec new file mode 100644 index 000000000..b146821f7 --- /dev/null +++ b/mesalib/docs/specs/MESA_texture_array.spec @@ -0,0 +1,804 @@ +Name + + MESA_texture_array + +Name Strings + + GL_MESA_texture_array + +Contact + + Ian Romanick, IBM (idr 'at' us.ibm.com) + +IP Status + + No known IP issues. + +Status + + Shipping in Mesa 7.1 + +Version + + +Number + + TBD + +Dependencies + + OpenGL 1.2 or GL_EXT_texture3D is required. + + Support for ARB_fragment_program is assumed, but not required. + + Support for ARB_fragment_program_shadow is assumed, but not required. + + Support for EXT_framebuffer_object is assumed, but not required. + + Written based on the wording of the OpenGL 2.0 specification and + ARB_fragment_program_shadow but not dependent on them. + +Overview + + There are a number of circumstances where an application may wish to + blend two textures out of a larger set of textures. Moreover, in some + cases the selected textures may vary on a per-fragment basis within + a polygon. Several examples include: + + 1. High dynamic range textures. The application stores several + different "exposures" of an image as different textures. On a + per-fragment basis, the application selects which exposures are + used. + + 2. A terrain engine where the altitude of a point determines the + texture applied to it. If the transition is from beach sand to + grass to rocks to snow, the application will store each texture + in a different texture map, and dynamically select which two + textures to blend at run-time. + + 3. Storing short video clips in textures. Each depth slice is a + single frame of video. + + Several solutions to this problem have been proposed, but they either + involve using a separate texture unit for each texture map or using 3D + textures without mipmaps. Both of these options have major drawbacks. + + This extension provides a third alternative that eliminates the major + drawbacks of both previous methods. A new texture target, + TEXTURE_2D_ARRAY, is added that functions identically to TEXTURE_3D in + all aspects except the sizes of the non-base level images. In + traditional 3D texturing, the size of the N+1 LOD is half the size + of the N LOD in all three dimensions. For the TEXTURE_2D_ARRAY target, + the height and width of the N+1 LOD is halved, but the depth is the + same for all levels of detail. The texture then becomes an array of + 2D textures. The per-fragment texel is selected by the R texture + coordinate. + + References: + + http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011557 + http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=000516 + http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011903 + http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm + +New Procedures and Functions + + All functions come directly from EXT_texture_array. + + void FramebufferTextureLayerEXT(enum target, enum attachment, + uint texture, int level, int layer); + +New Tokens + + All token names and values come directly from EXT_texture_array. + + Accepted by the parameter of Enable, Disable, and IsEnabled, by + the parameter of GetBooleanv, GetIntegerv, GetFloatv, and + GetDoublev, and by the parameter of TexImage3D, GetTexImage, + GetTexLevelParameteriv, GetTexLevelParameterfv, GetTexParameteriv, and + GetTexParameterfv: + + TEXTURE_1D_ARRAY_EXT 0x8C18 + TEXTURE_2D_ARRAY_EXT 0x8C1A + + Accepted by the parameter of TexImage2D, TexSubImage2D, + CopyTexImage2D, CopyTexSubImage2D, CompressedTexImage2D, + CompressedTexSubImage2D, GetTexLevelParameteriv, and + GetTexLevelParameterfv: + + TEXTURE_1D_ARRAY_EXT + PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 + + Accepted by the parameter of TexImage3D, TexSubImage3D, + CopyTexSubImage3D, CompressedTexImage3D, CompressedTexSubImage3D, + GetTexLevelParameteriv, and GetTexLevelParameterfv: + + TEXTURE_2D_ARRAY_EXT + PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B + + Accepted by the parameter of GetBooleanv, GetIntegerv, + GetFloatv, and GetDoublev + + TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C + TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D + MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF + + Accepted by the parameter of TexParameterf, TexParameteri, + TexParameterfv, and TexParameteriv when the parameter is + TEXTURE_COMPARE_MODE_ARB: + + COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E + + (Note: COMPARE_REF_DEPTH_TO_TEXTURE_EXT is simply an alias for the + existing COMPARE_R_TO_TEXTURE token in OpenGL 2.0; the alternate name + reflects the fact that the R coordinate is not always used.) + + Accepted by the parameter of TexImage3D and + CompressedTexImage3D, and by the parameter of + CompressedTexSubImage3D: + + COMPRESSED_RGB_S3TC_DXT1_EXT + COMPRESSED_RGBA_S3TC_DXT1_EXT + COMPRESSED_RGBA_S3TC_DXT3_EXT + COMPRESSED_RGBA_S3TC_DXT5_EXT + + Accepted by the parameter of + GetFramebufferAttachmentParameterivEXT: + + FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 + + (Note: FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER is simply an alias for the + FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT token provided in + EXT_framebuffer_object. This extension generalizes the notion of + "" to include layers of an array texture.) + +Additions to Chapter 2 of the OpenGL 2.0 Specification (OpenGL Operation) + + None + +Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization) + + -- Section 3.8.1 "Texture Image Specification" + + Change the first paragraph (page 150) to say (spec changes identical to + EXT_texture_array): + + "The command + + void TexImage3D(enum target, int level, int internalformat, + sizei width, sizei height, sizei depth, int border, + enum format, enum type, void *data); + + is used to specify a three-dimensional texture image. target must be one + one of TEXTURE_3D for a three-dimensional texture or + TEXTURE_2D_ARRAY_EXT for an two-dimensional array texture. + Additionally, target may be either PROXY_TEXTURE_3D for a + three-dimensional proxy texture, or PROXY_TEXTURE_2D_ARRAY_EXT for a + two-dimensional proxy array texture." + + Change the fourth paragraph on page 151 to say (spec changes identical + to EXT_texture_array): + + "Textures with a base internal format of DEPTH_COMPONENT are supported + by texture image specification commands only if target is TEXTURE_1D, + TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, TEXTURE_2D_ARRAY_EXT, + PROXY_TEXTURE_1D, PROXY_TEXTURE_2D, PROXY_TEXTURE_1D_ARRAY_EXT, or + PROXY_TEXTURE_2D_ARRAY_EXT. Using this format in conjunction with any + other target will result in an INVALID_OPERATION error." + + + Change the fourth paragraph on page 156 to say (spec changes identical + to EXT_texture_array): + + "The command + + void TexImage2D(enum target, int level, + int internalformat, sizei width, sizei height, + int border, enum format, enum type, void *data); + + is used to specify a two-dimensional texture image. target must be one + of TEXTURE_2D for a two-dimensional texture, TEXTURE_1D_ARRAY_EXT for a + one-dimensional array texture, or one of TEXTURE_CUBE_MAP_POSITIVE_X, + TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE_MAP_POSITIVE_Y, + TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, or + TEXTURE_CUBE_MAP_NEGATIVE_Z for a cube map texture. Additionally, + target may be either PROXY_TEXTURE_2D for a two-dimensional proxy + texture, PROXY_TEXTURE_1D_ARRAY_EXT for a one-dimensional proxy array + texture, or PROXY TEXTURE_CUBE_MAP for a cube map proxy texture in the + special case discussed in section 3.8.11. The other parameters match + the corresponding parameters of TexImage3D. + + For the purposes of decoding the texture image, TexImage2D is + equivalent to calling TexImage3D with corresponding arguments and depth + of 1, except that + + * The border depth, d_b, is zero, and the depth of the image is + always 1 regardless of the value of border. + + * The border height, h_b, is zero if is + TEXTURE_1D_ARRAY_EXT, and otherwise. + + * Convolution will be performed on the image (possibly changing its + width and height) if SEPARABLE 2D or CONVOLUTION 2D is enabled. + + * UNPACK SKIP IMAGES is ignored." + + -- Section 3.8.2 "Alternate Texture Image Specification Commands" + + Change the second paragraph (page 159) (spec changes identical + to EXT_texture_array): + + "The command + + void CopyTexImage2D(enum target, int level, + enum internalformat, int x, int y, sizei width, + sizei height, int border); + + defines a two-dimensional texture image in exactly the manner of + TexImage2D, except that the image data are taken from the framebuffer + rather than from client memory. Currently, target must be one of + TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, TEXTURE_CUBE_MAP_POSITIVE_X, + TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE MAP_POSITIVE_Y, + TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, or + TEXTURE_CUBE_MAP_NEGATIVE_Z. + + + Change the last paragraph on page 160 to say (spec changes identical + to EXT_texture_array): + + "Currently the target arguments of TexSubImage1D and CopyTexSubImage1D + must be TEXTURE_1D, the target arguments of TexSubImage2D and + CopyTexSubImage2D must be one of TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, + TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_NEGATIVE_X, + TEXTURE_CUBE_MAP_POSITIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Y, + TEXTURE_CUBE_MAP_POSITIVE_Z, or TEXTURE_CUBE_MAP_NEGATIVE_Z, and the + target arguments of TexSubImage3D and CopyTexSubImage3D must be + TEXTURE_3D or TEXTURE_2D_ARRAY_EXT. ..." + + + -- Section 3.8.4 "Texture Parameters" + + Change the first paragraph (page 166) to say: + + "Various parameters control how the texel array is treated when + specified or changed, and when applied to a fragment. Each parameter is + set by calling + + void TexParameter{if}(enum target, enum pname, T param); + void TexParameter{if}v(enum target, enum pname, T params); + + target is the target, either TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, + TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT." + + + -- Section 3.8.8 "Texture Minification" in the section "Scale Factor and Level of Detail" + + Change the first paragraph (page 172) to say: + + "Let s(x,y) be the function that associates an s texture coordinate + with each set of window coordinates (x,y) that lie within a primitive; + define t(x,y) and r(x,y) analogously. Let u(x,y) = w_t * s(x,y), + v(x,y) = h_t * t(x,y), and w(x,y) = d_t * r(x,y), where w_t, h_t, + and d_t are as defined by equations 3.15, 3.16, and 3.17 with + w_s, h_s, and d_s equal to the width, height, and depth of the + image array whose level is level_base. For a one-dimensional + texture or a one-dimensional array texture, define v(x,y) = 0 and + w(x,y) = 0; for a two-dimensional texture or a two-dimensional array + texture, define w(x,y) = 0..." + + -- Section 3.8.8 "Texture Minification" in the section "Mipmapping" + + Change the third paragraph (page 174) to say: + + "For a two-dimensional texture, two-dimensional array texture, or + cube map texture," + + Change the fourth paragraph (page 174) to say: + + "And for a one-dimensional texture or a one-dimensional array texture," + + After the first paragraph (page 175) add: + + "For one-dimensional array textures, h_b and d_b are treated as 1, + regardless of the actual values, when performing mipmap calculations. + For two-dimensional array textures, d_b is always treated as one, + regardless of the actual value, when performing mipmap calculations." + + -- Section 3.8.8 "Automatic Mipmap Generation" in the section "Mipmapping" + + Change the third paragraph (page 176) to say (spec changes identical + to EXT_texture_array): + + "The contents of the derived arrays are computed by repeated, filtered + reduction of the level_base array. For one- and two-dimensional array + textures, each layer is filtered independently. ..." + + -- Section 3.8.8 "Manual Mipmap Generation" in the section "Mipmapping" + + Change first paragraph to say (spec changes identical to + EXT_texture_array): + + "Mipmaps can be generated manually with the command + + void GenerateMipmapEXT(enum target); + + where is one of TEXTURE_1D, TEXTURE_2D, TEXTURE_CUBE_MAP, + TEXTURE_3D, TEXTURE_1D_ARRAY, or TEXTURE_2D_ARRAY. Mipmap generation + affects the texture image attached to . ..." + + -- Section 3.8.10 "Texture Completeness" + + Change the second paragraph (page 177) to say (spec changes identical + to EXT_texture_array): + + "For one-, two-, or three-dimensional textures and one- or + two-dimensional array textures, a texture is complete if the following + conditions all hold true:" + + -- Section 3.8.11 "Texture State and Proxy State" + + Change the second and third paragraphs (page 179) to say (spec changes + identical to EXT_texture_array): + + "In addition to image arrays for one-, two-, and three-dimensional + textures, one- and two-dimensional array textures, and the six image + arrays for the cube map texture, partially instantiated image arrays + are maintained for one-, two-, and three-dimensional textures and one- + and two-dimensional array textures. Additionally, a single proxy image + array is maintained for the cube map texture. Each proxy image array + includes width, height, depth, border width, and internal format state + values, as well as state for the red, green, blue, alpha, luminance, + and intensity component resolutions. Proxy image arrays do not include + image data, nor do they include texture properties. When TexImage3D is + executed with target specified as PROXY_TEXTURE_3D, the + three-dimensional proxy state values of the specified level-of-detail + are recomputed and updated. If the image array would not be supported + by TexImage3D called with target set to TEXTURE 3D, no error is + generated, but the proxy width, height, depth, border width, and + component resolutions are set to zero. If the image array would be + supported by such a call to TexImage3D, the proxy state values are set + exactly as though the actual image array were being specified. No pixel + data are transferred or processed in either case. + + Proxy arrays for one- and two-dimensional textures and one- and + two-dimensional array textures are operated on in the same way when + TexImage1D is executed with target specified as PROXY_TEXTURE_1D, + TexImage2D is executed with target specified as PROXY_TEXTURE_2D or + PROXY_TEXTURE_1D_ARRAY_EXT, or TexImage3D is executed with target + specified as PROXY_TETXURE_2D_ARRAY_EXT." + + -- Section 3.8.12 "Texture Objects" + + Change section (page 180) to say (spec changes identical to + EXT_texture_array): + + "In addition to the default textures TEXTURE_1D, TEXTURE_2D, + TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and TEXTURE_2D_EXT, + named one-, two-, and three-dimensional, cube map, and one- and + two-dimensional array texture objects can be created and operated upon. + The name space for texture objects is the unsigned integers, with zero + reserved by the GL. + + A texture object is created by binding an unused name to TEXTURE_1D, + TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or + TEXTURE_2D_ARRAY_EXT. The binding is effected by calling + + void BindTexture(enum target, uint texture); + + with set to the desired texture target and set to + the unused name. The resulting texture object is a new state vector, + comprising all the state values listed in section 3.8.11, set to the + same initial values. If the new texture object is bound to TEXTURE_1D, + TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or + TEXTURE_2D_ARRAY_EXT, it is and remains a one-, two-, + three-dimensional, cube map, one- or two-dimensional array texture + respectively until it is deleted. + + BindTexture may also be used to bind an existing texture object to + either TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, + TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT. The error + INVALID_OPERATION is generated if an attempt is made to bind a texture + object of different dimensionality than the specified target. If the + bind is successful no change is made to the state of the bound texture + object, and any previous binding to target is broken. + + While a texture object is bound, GL operations on the target to which + it is bound affect the bound object, and queries of the target to which + it is bound return state from the bound object. If texture mapping of + the dimensionality of the target to which a texture object is bound is + enabled, the state of the bound texture object directs the texturing + operation. + + In the initial state, TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, + TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and TEXTURE_2D_ARRAY_EXT have + one-, two-, three-dimensional, cube map, and one- and two-dimensional + array texture state vectors respectively associated with them. In order + that access to these initial textures not be lost, they are treated as + texture objects all of whose names are 0. The initial one-, two-, + three-dimensional, cube map, one- and two-dimensional array textures + are therefore operated upon, queried, and applied as TEXTURE_1D, + TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and + TEXTURE_2D_ARRAY_EXT respectively while 0 is bound to the corresponding + targets. + + Change second paragraph on page 181 to say (spec changes identical to + EXT_texture_array): + + "... If a texture that is currently bound to one of the targets + TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, + TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT is deleted, it is as + though BindTexture had been executed with the same target and texture + zero. ..." + + Change second paragraph on page 182 to say (spec changes identical to + EXT_texture_array): + + "The texture object name space, including the initial one-, two-, and + three dimensional, cube map, and one- and two-dimensional array texture + objects, is shared among all texture units. ..." + + + -- Section 3.8.14 "Depth Texture Comparison Modes" in "Texture Comparison Modes" + + Change second through fourth paragraphs (page 188) to say: + + "Let D_t be the depth texture value, in the range [0, 1]. For + texture lookups from one- and two-dimensional, rectangle, and + one-dimensional array targets, let R be the interpolated + texture coordinate, clamped to the range [0, 1]. For texture lookups + from two-dimensional array texture targets, let R be the interpolated + texture coordinate, clamped to the range [0, 1]. Then the + effective texture value L_t, I_t, or A_t is computed as follows: + + If the value of TEXTURE_COMPARE_MODE is NONE, then + + r = Dt + + If the value of TEXTURE_COMPARE_MODE is + COMPARE_REF_DEPTH_TO_TEXTURE_EXT), then r depends on the texture + comparison function as shown in table 3.27." + + -- Section 3.8.15 "Texture Application" + + Change the first paragraph (page 189) to say: + + "Texturing is enabled or disabled using the generic Enable and Disable + commands, respectively, with the symbolic constants TEXTURE_1D, + TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or + TEXTURE_2D_ARRAY_EXT to enable one-, two-, three-dimensional, cube + map, one-dimensional array, or two-dimensional array texture, + respectively. If both two- and one-dimensional textures are enabled, + the two-dimensional texture is used. If the three-dimensional and + either of the two- or one-dimensional textures is enabled, the + three-dimensional texture is used. If the cube map texture and any of + the three-, two-, or one-dimensional textures is enabled, then cube map + texturing is used. If one-dimensional array texture is enabled and any + of cube map, three-, two-, or one-dimensional textures is enabled, + one-dimensional array texturing is used. If two-dimensional array + texture is enabled and any of cube map, three-, two-, one-dimensional + textures or one-dimensional array texture is enabled, two-dimensional + array texturing is used..." + + -- Section 3.11.2 of ARB_fragment_program (Fragment Program Grammar and Restrictions): + + (mostly add to existing grammar rules) + + ::= "MESA_texture_array" + + ::= "1D" + | "2D" + | "3D" + | "CUBE" + | "RECT" + | (if program option is present) + | (if program option is present) + + ::= "ARRAY1D" + | "ARRAY2D" + + ::= "SHADOW1D" + | "SHADOW2D" + | "SHADOWRECT" + | (if program option is present) + + ::= "SHADOWARRAY1D" + | "SHADOWARRAY2D" + + + -- Add Section 3.11.4.5.4 "Texture Stack Option" + + "If a fragment program specifies the "MESA_texture_array" program + option, the rule is modified to add the texture targets + ARRAY1D and ARRAY2D (See Section 3.11.2)." + + -- Section 3.11.6 "Fragment Program Texture Instruction Set" + + (replace 1st and 2nd paragraphs with the following paragraphs) + + "The first three texture instructions described below specify the + mapping of 4-tuple input vectors to 4-tuple output vectors. + The sampling of the texture works as described in section 3.8, + except that texture environments and texture functions are not + applicable, and the texture enables hierarchy is replaced by explicit + references to the desired texture target (i.e., 1D, 2D, 3D, cube map, + rectangle, ARRAY1D, ARRAY2D). These texture instructions specify + how the 4-tuple is mapped into the coordinates used for sampling. The + following function is used to describe the texture sampling in the + descriptions below: + + vec4 TextureSample(vec4 coord, float lodBias, int texImageUnit, + enum texTarget); + + Note that not all four components of the texture coordinates + are used by all texture targets. Component usage for each + is defined in table X. + + coordinates used + texTarget Texture Type s t r layer shadow + ---------------- --------------------- ----- ----- ------ + 1D TEXTURE_1D x - - - - + 2D TEXTURE_2D x y - - - + 3D TEXTURE_3D x y z - - + CUBE TEXTURE_CUBE_MAP x y z - - + RECT TEXTURE_RECTANGLE_ARB x y - - - + ARRAY1D TEXTURE_1D_ARRAY_EXT x - - y - + ARRAY2D TEXTURE_2D_ARRAY_EXT x y - z - + SHADOW1D TEXTURE_1D x - - - z + SHADOW2D TEXTURE_2D x y - - z + SHADOWRECT TEXTURE_RECTANGLE_ARB x y - - z + SHADOWARRAY1D TEXTURE_1D_ARRAY_EXT x - - y z + SHADOWARRAY2D TEXTURE_2D_ARRAY_EXT x y - z w + + Table X: Texture types accessed for each of the , and + coordinate mappings. The "coordinates used" column indicate the + input values used for each coordinate of the texture lookup, the + layer selector for array textures, and the reference value for + texture comparisons." + + -- Section 3.11.6.2 "TXP: Project coordinate and map to color" + + Add to the end of the section: + + "A program will fail to load if the TXP instruction is used in + conjunction with the SHADOWARRAY2D target." + +Additions to Chapter 4 of the OpenGL 2.0 Specification (Per-Fragment Operations) + + -- Section 4.4.2.3 "Attaching Texture Images to a Framebuffer" + + Add to the end of the section (spec changes identical to + EXT_texture_array): + + "The command + + void FramebufferTextureLayerEXT(enum target, enum attachment, + uint texture, int level, int layer); + + operates identically to FramebufferTexture3DEXT, except that it + attaches a single layer of a three-dimensional texture or a one- or + two-dimensional array texture. is an integer indicating the + layer number, and is treated identically to the parameter in + FramebufferTexture3DEXT. The error INVALID_VALUE is generated if + is negative. The error INVALID_OPERATION is generated if + is non-zero and is not the name of a three dimensional + texture or one- or two-dimensional array texture. Unlike + FramebufferTexture3D, no parameter is accepted. + + If is non-zero and the command does not result in an error, + the framebuffer attachment state corresponding to is + updated as in the other FramebufferTexture commands, except that + FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT is set to ." + + -- Section 4.4.4.1 "Framebuffer Attachment Completeness" + + Add to the end of the list of completeness rules (spec changes + identical to EXT_texture_array): + + "* If FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT is TEXTURE and + FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT names a one- or + two-dimensional array texture, then + FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT must be smaller than the + number of layers in the texture." + +Additions to Chapter 5 of the OpenGL 2.0 Specification (Special Functions) + + -- Section 5.4 "Display Lists" + + Change the first paragraph on page 242 to say (spec changes + identical to EXT_texture_array): + + "TexImage3D, TexImage2D, TexImage1D, Histogram, and ColorTable are + executed immediately when called with the corresponding proxy arguments + PROXY_TEXTURE_3D or PROXY_TEXTURE_2D_ARRAY_EXT; PROXY_TEXTURE_2D, + PROXY_TEXTURE_CUBE_MAP, or PROXY_TEXTURE_1D_ARRAY_EXT; + PROXY_TEXTURE_1D; PROXY_HISTOGRAM; and PROXY_COLOR_TABLE, + PROXY_POST_CONVOLUTION_COLOR_TABLE, or + PROXY_POST_COLOR_MATRIX_COLOR_TABLE." + +Additions to Chapter 6 of the OpenGL 2.0 Specification (State and State Requests) + + -- Section 6.1.3 "Enumerated Queries" + + Add after the line beginning "If the value of + FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT is TEXTURE" (spec changes + identical to EXT_texture_array): + + "If is FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT and the + texture object named FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT is a + three-dimensional texture or a one- or two-dimensional array texture, + then will contain the number of texture layer attached to the + attachment point. Otherwise, will contain the value zero." + + -- Section 6.1.4 "Texture Queries" + + Change the first three paragraphs (page 248) to say (spec changes + identical to EXT_texture_array): + + "The command + + void GetTexImage(enum tex, int lod, enum format, + enum type, void *img); + + is used to obtain texture images. It is somewhat different from the + other get commands; tex is a symbolic value indicating which texture + (or texture face in the case of a cube map texture target name) is to + be obtained. TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_1D_ARRAY_EXT, + and TEXTURE_2D_ARRAY_EXT indicate a one-, two-, or three-dimensional + texture, or one- or two-dimensional array texture, respectively. + TEXTURE_CUBE_MAP_POSITIVE_X, ... + + GetTexImage obtains... from the first image to the last for + three-dimensional textures. One- and two-dimensional array textures + are treated as two- and three-dimensional images, respectively, where + the layers are treated as rows or images. These groups are then... + + For three-dimensional and two-dimensional array textures, pixel storage + operations are applied as if the image were two-dimensional, except + that the additional pixel storage state values PACK_IMAGE_HEIGHT and + PACK_SKIP_IMAGES are applied. ..." + +Additions to Appendix A of the OpenGL 2.0 Specification (Invariance) + + None + +Additions to the AGL/GLX/WGL Specifications + + None + +GLX Protocol + + None + +Dependencies on ARB_fragment_program + + If ARB_fragment_program is not supported, the changes to section 3.11 + should be ignored. + +Dependencies on EXT_framebuffer_object + + If EXT_framebuffer_object is not supported, the changes to section + 3.8.8 ("Manual Mipmap Generation"), 4.4.2.3, and 6.1.3 should be ignored. + +Dependencies on EXT_texture_compression_s3tc and NV_texture_compression_vtc + + (Identical dependency as EXT_texture_array.) + + S3TC texture compression is supported for two-dimensional array textures. + When is TEXTURE_2D_ARRAY_EXT, each layer is stored independently + as a compressed two-dimensional textures. When specifying or querying + compressed images using one of the S3TC formats, the images are provided + and/or returned as a series of two-dimensional textures stored + consecutively in memory, with the layer closest to zero specified first. + For array textures, images are not arranged in 4x4x4 or 4x4x2 blocks as in + the three-dimensional compression format provided in the + EXT_texture_compression_vtc extension. Pixel store parameters, including + those specific to three-dimensional images, are ignored when compressed + image data are provided or returned, as in the + EXT_texture_compression_s3tc extension. + + S3TC compression is not supported for one-dimensional texture targets in + EXT_texture_compression_s3tc, and is not supported for one-dimensional + array textures in this extension. If compressed one-dimensional arrays + are needed, use a two-dimensional texture with a height of one. + + This extension allows the use of the four S3TC internal format types in + TexImage3D, CompressedTexImage3D, and CompressedTexSubImage3D calls. + +Errors + + None + +New State + + (add to table 6.15, p. 276) + + Initial + Get Value Type Get Command Value Description Sec. Attribute + ---------------------------- ----- ----------- ----- -------------------- ------ --------- + TEXTURE_BINDING_1D_ARRAY_EXT 2*xZ+ GetIntegerv 0 texture object bound 3.8.12 texture + to TEXTURE_1D_ARRAY + TEXTURE_BINDING_2D_ARRAY_EXT 2*xZ+ GetIntegerv 0 texture object bound 3.8.12 texture + to TEXTURE_2D_ARRAY + + +New Implementation Dependent State + + (add to Table 6.32, p. 293) + + Minimum + Get Value Type Get Command Value Description Sec. Attribute + ---------------------------- ---- ----------- ------- ------------------ ----- --------- + MAX_TEXTURE_ARRAY_LAYERS_EXT Z+ GetIntegerv 64 maximum number of 3.8.1 - + layers for texture + arrays + +Issues + + (1) Is "texture stack" a good name for this functionality? + + NO. The name is changed to "array texture" to match the + nomenclature used by GL_EXT_texture_array. + + (2) Should the R texture coordinate be treated as normalized or + un-normalized? If it were un-normalized, floor(R) could be thought + of as a direct index into the array texture. This may be more + convenient for applications. + + RESOLVED. All texture coordinates are normalized. The issue of + un-normalized texture coordinates has been discussed in the ARB + before and should be left for a layered extension. + + RE-RESOLVED. The R coordinate is un-normalized. Accessing an array + using [0, layers-1] coordinates is much more natural. + + (3) How does LOD selection work for stacked textures? + + RESOLVED. For 2D array textures the R coordinate is ignored, and + the LOD selection equations for 2D textures are used. For 1D + array textures the T coordinate is ignored, and the LOD selection + equations for 1D textures are used. The expected usage is in a + fragment program with an explicit LOD selection. + + (4) What is the maximum size of a 2D array texture? Is it the same + as for a 3D texture, or should a new query be added? How about for 1D + array textures? + + RESOLVED. A new query is added. + + (5) How are array textures exposed in GLSL? + + RESOLVED. Use GL_EXT_texture_array. + + (6) Should a 1D array texture also be exposed? + + RESOLVED. For orthogonality, yes. + + (7) How are stacked textures attached to framebuffer objects? + + RESOLVED. Layers of both one- and two-dimensional array textures + are attached using FreambufferTextureLayerEXT. Once attached, the + array texture layer behaves exactly as either a one- or + two-dimensional texture. + + (8) How is this extension related to GL_EXT_texture_array? + + This extension adapats GL_MESAX_texture_stack to the notation, + indexing, and FBO access of GL_EXT_texture_array. This extension + replaces the GLSL support of GL_EXT_texture_array with + GL_ARB_fragment_program support. + + Assembly program support is also provided by GL_NV_gpu_program4. + GL_NV_gpu_program4 also adds support for other features that are + specific to Nvidia hardware, while this extension adds only support + for array textures. + + Much of text of this extension that has changed since + GL_MESAX_texture_stack comes directly from either + GL_EXT_texture_array or GL_NV_gpu_program4. + +Revision History + + ||2005/11/15||0.1||idr||Initial draft MESAX version.|| + ||2005/12/07||0.2||idr||Added framebuffer object interactions.|| + ||2005/12/12||0.3||idr||Updated fragment program interactions.|| + ||2007/05/16||0.4||idr||Converted to MESA_texture_array. Brought in line with EXT_texture_array and NV_gpu_program4.|| diff --git a/mesalib/docs/specs/MESA_texture_signed_rgba.spec b/mesalib/docs/specs/MESA_texture_signed_rgba.spec new file mode 100644 index 000000000..e3a6b59af --- /dev/null +++ b/mesalib/docs/specs/MESA_texture_signed_rgba.spec @@ -0,0 +1,214 @@ +Name + + MESA_texture_signed_rgba + +Name Strings + + GL_MESA_texture_signed_rgba + +Contact + + + +Notice + + + +IP Status + + No known IP issues + +Status + + + +Version + + 0.3, 2009-03-24 + +Number + + Not assigned ? + +Dependencies + + Written based on the wording of the OpenGL 2.0 specification. + + This extension trivially interacts with ARB_texture_float. + This extension shares some language with ARB_texture_compression_rgtc + but does not depend on it. + +Overview + + OpenGL prior to 3.1 does not support any signed texture formats. + ARB_texture_compression_rgtc introduces some compressed red and + red_green signed formats but no uncompressed ones, which might + still be useful. NV_texture_shader adds signed texture formats, + but also a lot of functionality which has been superseded by fragment + shaders. + It is usually possible to get the same functionality + using a unsigned format by doing scale and bias in a shader, but this + is undesirable since modern hardware has direct support for this. + This extension adds a signed 4-channel texture format by backporting + the relevant features from OpenGL 3.1, as a means to support this in + OpenGL implementations only supporting older versions. + +Issues + + 1) What should this extension be called? + + RESOLVED: MESA_texture_signed_rgba seems reasonable. + The rgba part is there because only 4 channel format is supported. + + + 2) Should the full set of signed formats (alpha, luminance, rgb, etc.) + be supported? + + RESOLVED: NO. To keep this extension simple, only add the most + universal format, rgba. alpha/luminance can't be trivially supported + since OpenGL 3.1 does not support them any longer, and there is some + implied dependency on ARB_texture_rg for red/red_green formats so + avoid all this. Likewise, only 8 bits per channel is supported. + + + 3) Should this extension use new enums for the texture formats? + + RESOLVED: NO. Same enums as those used in OpenGL 3.1. + + + 4) How are signed integer values mapped to floating-point values? + + RESOLVED: Same as described in issue 5) of + ARB_texture_compression_rgtc (quote): + A signed 8-bit two's complement value X is computed to + a floating-point value Xf with the formula: + + { X / 127.0, X > -128 + Xf = { + { -1.0, X == -128 + + This conversion means -1, 0, and +1 are all exactly representable, + however -128 and -127 both map to -1.0. Mapping -128 to -1.0 + avoids the numerical awkwardness of have a representable value + slightly more negative than -1.0. + + This conversion is intentionally NOT the "byte" conversion listed + in Table 2.9 for component conversions. That conversion says: + + Xf = (2*X + 1) / 255.0 + + The Table 2.9 conversion is incapable of exactly representing + zero. + + (Difference to ARB_texture_compression_rgtc): + This is the same mapping as OpenGL 3.1 uses. + This is also different to what NV_texture_shader used. + The above mapping should be considered the reference, but there + is some leeway so other mappings are allowed for implementations which + cannot do this. Particularly the mapping given in NV_texture_shader or + the standard OpenGL byte/float mapping is considered acceptable too, as + might be a mapping which represents -1.0 by -128, 0.0 by 0 and 1.0 by + 127 (that is, uses different scale factors for negative and positive + numbers). + Also, it is ok to store incoming GL_BYTE user data as-is, without + converting to GL_FLOAT (using the standard OpenGL float/byte mapping) + and converting back (using the mapping described here). + Other than those subtle issues there are no other non-standard + conversions used, so when using for instance CopyTexImage2D with + a framebuffer clamped to [0,1] all converted numbers will be in the range + [0, 127] (and not scaled and biased). + + + 5) How will signed components resulting from RGBA8_SNORM texture + fetches interact with fragment coloring? + + RESOLVED: Same as described in issue 6) of + ARB_texture_compression_rgtc (quote): + The specification language for this extension is silent + about clamping behavior leaving this to the core specification + and other extensions. The clamping or lack of clamping is left + to the core specification and other extensions. + + For assembly program extensions supporting texture fetches + (ARB_fragment_program, NV_fragment_program, NV_vertex_program3, + etc.) or the OpenGL Shading Language, these signed formats will + appear as expected with unclamped signed components as a result + of a texture fetch instruction. + + If ARB_color_buffer_float is supported, its clamping controls + will apply. + + NV_texture_shader extension, if supported, adds support for + fixed-point textures with signed components and relaxed the + fixed-function texture environment clamping appropriately. If the + NV_texture_shader extension is supported, its specified behavior + for the texture environment applies where intermediate values + are clamped to [-1,1] unless stated otherwise as in the case + of explicitly clamped to [0,1] for GL_COMBINE. or clamping the + linear interpolation weight to [0,1] for GL_DECAL and GL_BLEND. + + Otherwise, the conventional core texture environment clamps + incoming, intermediate, and output color components to [0,1]. + + This implies that the conventional texture environment + functionality of unextended OpenGL 1.5 or OpenGL 2.0 without + using GLSL (and with none of the extensions referred to above) + is unable to make proper use of the signed texture formats added + by this extension because the conventional texture environment + requires texture source colors to be clamped to [0,1]. Texture + filtering of these signed formats would be still signed, but + negative values generated post-filtering would be clamped to + zero by the core texture environment functionality. The + expectation is clearly that this extension would be co-implemented + with one of the previously referred to extensions or used with + GLSL for the new signed formats to be useful. + + + 6) Should the RGBA_SNORM tokens also be accepted by CopyTexImage + functions? + + RESOLVED: YES. + + + 7) What to do with GetTexParameter if ARB_texture_float is supported, + in particular what datatype should this return for TEXTURE_RED_TYPE_ARB, + TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB, TEXTURE_ALPHA_TYPE_ARB? + + RESOLVED: ARB_texture_float states type is either NONE, + UNSIGNED_NORMALIZED_ARB, or FLOAT. This extension adds a new enum, + SIGNED_NORMALIZED, which will be returned accordingly. This is the + same behaviour as in OpenGL 3.1. + + +New Tokens + + + Accepted by the parameter of + TexImage1D, TexImage2D, TexImage3D, CopyTexImage1D, and CopyTexImage2D: + + RGBA_SNORM 0x8F93 + RGBA8_SNORM 0x8F97 + + Returned by the parameter of GetTexLevelParameter: + + SIGNED_NORMALIZED 0x8F9C + + +Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization): + + -- Section 3.8.1, Texture Image Specification + + Add to Table 3.16 (page 154): Sized internal formats + + Sized Base R G B A L I D + Internal Format Internal Format bits bits bits bits bits bits bits + --------------- --------------- ---- ---- ---- ---- ---- ---- ---- + RGBA8_SNORM RGBA 8 8 8 8 0 0 0 + + +Dependencies on ARB_texture_float extension: + + If ARB_texture_float is supported, GetTexParameter queries with + of TEXTURE_RED_TYPE_ARB, TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB or + TEXTURE_ALPHA_TYPE_ARB return SIGNED_NORMALIZED if + the base internal format is RGBA_SNORM. diff --git a/mesalib/docs/specs/MESA_window_pos.spec b/mesalib/docs/specs/MESA_window_pos.spec new file mode 100644 index 000000000..9e81e9c4d --- /dev/null +++ b/mesalib/docs/specs/MESA_window_pos.spec @@ -0,0 +1,126 @@ +Name + + MESA_window_pos + +Name Strings + + GL_MESA_window_pos + +Contact + + Brian Paul, brian.paul 'at' tungstengraphics.com + +Status + + Shipping (since Mesa version 1.2.8) + +Version + + +Number + + 197 + +Dependencies + + OpenGL 1.0 is required. + The extension is written against the OpenGL 1.2 Specification + +Overview + + In order to set the current raster position to a specific window + coordinate with the RasterPos command, the modelview matrix, projection + matrix and viewport must be set very carefully. Furthermore, if the + desired window coordinate is outside of the window's bounds one must + rely on a subtle side-effect of the Bitmap command in order to circumvent + frustum clipping. + + This extension provides a set of functions to directly set the + current raster position, bypassing the modelview matrix, the + projection matrix and the viewport to window mapping. Furthermore, + clip testing is not performed. + + This greatly simplifies the process of setting the current raster + position to a specific window coordinate prior to calling DrawPixels, + CopyPixels or Bitmap. + +New Procedures and Functions + + void WindowPos2dMESA(double x, double y) + void WindowPos2fMESA(float x, float y) + void WindowPos2iMESA(int x, int y) + void WindowPos2sMESA(short x, short y) + void WindowPos2ivMESA(const int *p) + void WindowPos2svMESA(const short *p) + void WindowPos2fvMESA(const float *p) + void WindowPos2dvMESA(const double *p) + void WindowPos3iMESA(int x, int y, int z) + void WindowPos3sMESA(short x, short y, short z) + void WindowPos3fMESA(float x, float y, float z) + void WindowPos3dMESA(double x, double y, double z) + void WindowPos3ivMESA(const int *p) + void WindowPos3svMESA(const short *p) + void WindowPos3fvMESA(const float *p) + void WindowPos3dvMESA(const double *p) + void WindowPos4iMESA(int x, int y, int z, int w) + void WindowPos4sMESA(short x, short y, short z, short w) + void WindowPos4fMESA(float x, float y, float z, float w) + void WindowPos4dMESA(double x, double y, double z, double ) + void WindowPos4ivMESA(const int *p) + void WindowPos4svMESA(const short *p) + void WindowPos4fvMESA(const float *p) + void WindowPos4dvMESA(const double *p) + +New Tokens + + none + +Additions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation) + + - (2.12, p. 41) Insert after third paragraph: + + Alternately, the current raster position may be set by one of the + WindowPosMESA commands: + + void WindowPos{234}{sidf}MESA( T coords ); + void WindowPos{234}{sidf}vMESA( T coords ); + + WindosPos4MESA takes four values indicating x, y, z, and w. + WindowPos3MESA (or WindowPos2MESA) is analaguos, but sets only + x, y, and z with w implicitly set to 1 (or only x and y with z + implicitly set to 0 and w implicitly set to 1). + + WindowPosMESA operates like RasterPos except that the current modelview + matrix, projection matrix and viewport parameters are ignored and the + clip test operation always passes. The current raster position values + are directly set to the parameters passed to WindowPosMESA. The current + color, color index and texture coordinate update the current raster + position's associated data. + +Additions to the AGL/GLX/WGL Specifications + + None + +GLX Protocol + + Not specified at this time. However, a protocol message very similar + to that of RasterPos is expected. + +Errors + + INVALID_OPERATION is generated if WindowPosMESA is called between + Begin and End. + +New State + + None. + +New Implementation Dependent State + + None. + +Revision History + + * Revision 1.0 - Initial specification + * Revision 1.1 - Minor clean-up (7 Jan 2000, Brian Paul) + diff --git a/mesalib/docs/specs/MESA_ycbcr_texture.spec b/mesalib/docs/specs/MESA_ycbcr_texture.spec new file mode 100644 index 000000000..6a730e81c --- /dev/null +++ b/mesalib/docs/specs/MESA_ycbcr_texture.spec @@ -0,0 +1,204 @@ +Name + + MESA_ycbcr_texture + +Name Strings + + GL_MESA_ycbcr_texture + +Contact + + Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com) + Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com) + +Status + + Shipping (Mesa 4.0.4 and later) + +Version + + 1.0 + +Number + + TBD + +Dependencies + + OpenGL 1.0 or later is required + This extension is written against the OpenGL 1.4 Specification. + NV_texture_rectangle effects the definition of this extension. + +Overview + + This extension supports texture images stored in the YCbCr format. + There is no support for converting YCbCr images to RGB or vice versa + during pixel transfer. The texture's YCbCr colors are converted to + RGB during texture sampling, after-which, all the usual per-fragment + operations take place. Only 2D texture images are supported (not + glDrawPixels, glReadPixels, etc). + + A YCbCr pixel (texel) is a 16-bit unsigned short with two components. + The first component is luminance (Y). For pixels in even-numbered + image columns, the second component is Cb. For pixels in odd-numbered + image columns, the second component is Cr. If one were to convert the + data to RGB one would need to examine two pixels from columns N and N+1 + (where N is even) to deduce the RGB color. + +IP Status + + None + +Issues + + None + +New Procedures and Functions + + None + +New Tokens + + Accepted by the and parameters of + TexImage2D and TexSubImage2D: + + YCBCR_MESA 0x8757 + + Accepted by the parameter of TexImage2D and TexSubImage2D: + + UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */ + UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */ + +Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation) + + None + +Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization) + + In section 3.6.4, Rasterization of Pixel Rectangles, on page 101, + add the following to Table 3.8 (Packed pixel formats): + + type Parameter GL Data Number of Matching + Token Name Type Components Pixel Formats + -------------- ------- ---------- ------------- + UNSIGNED_SHORT_8_8_MESA ushort 2 YCBCR_MESA + UNSIGNED_SHORT_8_8_REV_MESA ushort 2 YCBCR_MESA + + + In section 3.6.4, Rasterization of Pixel Rectangles, on page 102, + add the following to Table 3.10 (UNSIGNED_SHORT formats): + + UNSIGNED_SHORT_8_8_MESA: + + 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + +-------------------------------+-------------------------------+ + | 1st | 2nd | + +-------------------------------+-------------------------------+ + + UNSIGNED_SHORT_8_8_REV_MESA: + + 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + +-------------------------------+-------------------------------+ + | 2nd | 1st | + +-------------------------------+-------------------------------+ + + + In section 3.6.4, Rasterization of Pixel Rectangles, on page 104, + add the following to Table 3.12 (Packed pixel field assignments): + + First Second Third Fourth + Format Element Element Element Element + ------ ------- ------- ------- ------- + YCBCR_MESA luminance chroma + + + In section 3.8.1, Texture Image Specification, on page 125, add + another item to the list of TexImage2D and TexImage3D equivalence + exceptions: + + * The value of internalformat and format may be YCBCR_MESA to + indicate that the image data is in YCbCr format. type must + be either UNSIGNED_SHORT_8_8_MESA or UNSIGNED_SHORT_8_8_REV_MESA + as seen in tables 3.8 and 3.10. Table 3.12 describes the mapping + between Y and Cb/Cr to the components. + If NV_texture_rectangle is supported target may also be + TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV. + All pixel transfer operations are bypassed. The texture is stored as + YCbCr, not RGB. Queries of the texture's red, green and blue component + sizes will return zero. The YCbCr colors are converted to RGB during + texture sampling using an implementation dependent conversion. + + + In section 3.8.1, Texture Image Specification, on page 126, add + another item to the list of TexImage1D and TexImage2D equivalence + exceptions: + + * The value of internalformat and format can not be YCBCR_MESA. + + + In section 3.8.2, Alternate Texture Image Specification Commands, on + page 129, insert this paragraph after the first full paragraph on the + page: + + "If the internal storage format of the image being updated by + TexSubImage2D is YCBCR_MESA then format must be YCBCR_MESA. + The error INVALID_OPERATION will be generated otherwise." + + +Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment +Operations and the Frame Buffer) + + None + +Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions) + + None + +Additions to Chapter 6 of the OpenGL 1.4 Specification (State and +State Requests) + + None + +Additions to Appendix A of the OpenGL 1.4 Specification (Invariance) + + None + +Additions to the AGL/GLX/WGL Specifications + + None + +GLX Protocol + + None + +Errors + + INVALID_ENUM is generated by TexImage2D if is + MESA_YCBCR but is not MESA_YCBCR. + + INVALID_ENUM is generated by TexImage2D if is MESA_YCBCR but + is not MESA_YCBCR. + + INVALID_VALUE is generated by TexImage2D if is MESA_YCBCR and + is MESA_YCBCR and is not zero. + + INVALID_OPERATION is generated by TexSubImage2D if the internal image + format is YCBCR_MESA and is not YCBCR_MESA. + + INVALID_OPERATION is generated by CopyTexSubImage2D if the internal + image is YCBCR_MESA. + +New State + + Edit table 6.16 on page 231: change the type of TEXTURE_INTERNAL_FORMAT + from n x Z42 to n x Z43 to indicate that internal format may also be + YCBCR_MESA. + +Revision History + + 20 September 2002 - Initial draft + 29 April 2003 - minor updates + 3 September 2003 - further clarify when YCbCr->RGB conversion takes place + 19 September 2003 - a few more updates prior to submitting to extension + registry. + 3 April 2004 - fix assorted inaccuracies diff --git a/mesalib/docs/specs/WL_bind_wayland_display.spec b/mesalib/docs/specs/WL_bind_wayland_display.spec new file mode 100644 index 000000000..02bd6ea21 --- /dev/null +++ b/mesalib/docs/specs/WL_bind_wayland_display.spec @@ -0,0 +1,175 @@ +Name + + WL_bind_wayland_display + +Name Strings + + EGL_WL_bind_wayland_display + +Contact + + Kristian Høgsberg + Benjamin Franzke + +Status + + Proposal + +Version + + Version 1, March 1, 2011 + +Number + + EGL Extension #not assigned + +Dependencies + + Requires EGL 1.4 or later. This extension is written against the + wording of the EGL 1.4 specification. + + EGL_KHR_base_image is required. + +Overview + + This extension provides entry points for binding and unbinding the + wl_display of a Wayland compositor to an EGLDisplay. Binding a + wl_display means that the EGL implementation should provide one or + more interfaces in the Wayland protocol to allow clients to create + wl_buffer objects. On the server side, this extension also + provides a new target for eglCreateImageKHR, to create an EGLImage + from a wl_buffer + + Adding an implementation specific wayland interface, allows the + EGL implementation to define specific wayland requests and events, + needed for buffer sharing in an EGL wayland platform. + +IP Status + + Open-source; freely implementable. + +New Procedures and Functions + + EGLBoolean eglBindWaylandDisplayWL(EGLDisplay dpy, + struct wl_display *display); + + EGLBoolean eglUnbindWaylandDisplayWL(EGLDisplay dpy, + struct wl_display *display); + + EGLBoolean eglQueryWaylandBufferWL(EGLDisplay dpy, + struct wl_buffer *buffer, + EGLint attribute, EGLint *value); + +New Tokens + + Accepted as in eglCreateImageKHR + + EGL_WAYLAND_BUFFER_WL 0x31D5 + + Accepted in the parameter of eglCreateImageKHR: + + EGL_WAYLAND_PLANE_WL 0x31D6 + + Possible values for EGL_TEXTURE_FORMAT: + + EGL_TEXTURE_Y_U_V_WL 0x31D7 + EGL_TEXTURE_Y_UV_WL 0x31D8 + EGL_TEXTURE_Y_XUXV_WL 0x31D9 + + +Additions to the EGL 1.4 Specification: + + To bind a server side wl_display to an EGLDisplay, call + + EGLBoolean eglBindWaylandDisplayWL(EGLDisplay dpy, + struct wl_display *display); + + To unbind a server side wl_display from an EGLDisplay, call + + EGLBoolean eglUnbindWaylandDisplayWL(EGLDisplay dpy, + struct wl_display *display); + + eglBindWaylandDisplayWL returns EGL_FALSE when there is already a + wl_display bound to EGLDisplay otherwise EGL_TRUE. + + eglUnbindWaylandDisplayWL returns EGL_FALSE when there is no + wl_display bound to the EGLDisplay currently otherwise EGL_TRUE. + + A wl_buffer can have several planes, typically in case of planar + YUV formats. Depending on the exact YUV format in use, the + compositor will have to create one or more EGLImages for the + various planes. The eglQueryWaylandBufferWL function should be + used to first query the wl_buffer texture format using + EGL_TEXTURE_FORMAT as the attribute. If the wl_buffer object is + not an EGL wl_buffer (wl_shm and other wayland extensions can + create wl_buffer objects of different types), this query will + return EGL_FALSE. In that case the wl_buffer can not be used with + EGL and the compositor should have another way to get the buffer + contents. + + If eglQueryWaylandBufferWL succeeds, the returned value will be + one of EGL_TEXTURE_RGB, EGL_TEXTURE_RGBA, EGL_TEXTURE_Y_U_V_WL, + EGL_TEXTURE_Y_UV_WL, EGL_TEXTURE_Y_XUXV_WL. The value returned + describes how many EGLImages must be used, which components will + be sampled from each EGLImage and how they map to rgba components + in the shader. The naming conventions separates planes by _ and + within each plane, the order or R, G, B, A, Y, U, and V indicates + how those components map to the rgba value returned by the + sampler. X indicates that the corresponding component in the rgba + value isn't used. + + RGB and RGBA buffer types: + + EGL_TEXTURE_RGB + One plane, samples RGB from the texture to rgb in the + shader. Alpha channel is not valid. + + EGL_TEXTURE_RGBA + One plane, samples RGBA from the texture to rgba in the + shader. + + YUV buffer types: + + EGL_TEXTURE_Y_U_V_WL + Three planes, samples Y from the first plane to r in + the shader, U from the second plane to r, and V from + the third plane to r. + + EGL_TEXTURE_Y_UV_WL + Two planes, samples Y from the first plane to r in + the shader, U and V from the second plane to rg. + + EGL_TEXTURE_Y_XUXV_WL + Two planes, samples Y from the first plane to r in + the shader, U and V from the second plane to g and a. + + After querying the wl_buffer layout, create EGLImages for the + planes by calling eglCreateImageKHR with wl_buffer as + EGLClientBuffer, EGL_WAYLAND_BUFFER_WL as the target, NULL + context. If no attributes are given, an EGLImage will be created + for the first plane. For multi-planar buffers, specify the plane + to create the EGLImage for by using the EGL_WAYLAND_PLANE_WL + attribute. The value of the attribute is the index of the plane, + as defined by the buffer format. Writing to an EGLImage created + from a wl_buffer in any way (such as glTexImage2D, binding the + EGLImage as a renderbuffer etc) will result in undefined behavior. + + Further, eglQueryWaylandBufferWL accepts attributes EGL_WIDTH and + EGL_HEIGHT to query the width and height of the wl_buffer. + +Issues + +Revision History + + Version 1, March 1, 2011 + Initial draft (Benjamin Franzke) + Version 2, July 5, 2012 + Add EGL_WAYLAND_PLANE_WL attribute to allow creating an EGLImage + for different planes of planar buffer. (Kristian Høgsberg) + Version 3, July 10, 2012 + Add eglQueryWaylandBufferWL and the various buffer + formats. (Kristian Høgsberg) + Version 4, July 19, 2012 + Use EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGB, and EGL_TEXTURE_RGBA, + and just define the new YUV texture formats. Add support for + EGL_WIDTH and EGL_HEIGHT in the query attributes (Kristian Høgsberg) diff --git a/mesalib/docs/specs/enums.txt b/mesalib/docs/specs/enums.txt new file mode 100644 index 000000000..b37768e20 --- /dev/null +++ b/mesalib/docs/specs/enums.txt @@ -0,0 +1,57 @@ + +See the OpenGL ARB enum registry at http://www.opengl.org/registry/api/enum.spec + +Blocks allocated to Mesa: + 0x8750-0x875F + 0x8BB0-0x8BBF + + +GL_MESA_packed_depth_stencil + GL_DEPTH_STENCIL_MESA 0x8750 + GL_UNSIGNED_INT_24_8_MESA 0x8751 + GL_UNSIGNED_INT_8_24_REV_MESA 0x8752 + GL_UNSIGNED_SHORT_15_1_MESA 0x8753 + GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754 + +GL_MESA_trace.spec: + GL_TRACE_ALL_BITS_MESA 0xFFFF + GL_TRACE_OPERATIONS_BIT_MESA 0x0001 + GL_TRACE_PRIMITIVES_BIT_MESA 0x0002 + GL_TRACE_ARRAYS_BIT_MESA 0x0004 + GL_TRACE_TEXTURES_BIT_MESA 0x0008 + GL_TRACE_PIXELS_BIT_MESA 0x0010 + GL_TRACE_ERRORS_BIT_MESA 0x0020 + GL_TRACE_MASK_MESA 0x8755 + GL_TRACE_NAME_MESA 0x8756 + +MESA_ycbcr_texture.spec: + GL_YCBCR_MESA 0x8757 + GL_UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */ + GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */ + +GL_MESA_pack_invert.spec + GL_PACK_INVERT_MESA 0x8758 + +GL_MESA_shader_debug.spec: (obsolete) + GL_DEBUG_OBJECT_MESA 0x8759 + GL_DEBUG_PRINT_MESA 0x875A + GL_DEBUG_ASSERT_MESA 0x875B + +GL_MESA_program_debug.spec: (obsolete) + GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x???? + GL_VERTEX_PROGRAM_CALLBACK_MESA 0x???? + GL_FRAGMENT_PROGRAM_POSITION_MESA 0x???? + GL_VERTEX_PROGRAM_POSITION_MESA 0x???? + GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x???? + GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x???? + GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x???? + GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x???? + +GL_MESAX_texture_stack: + GL_TEXTURE_1D_STACK_MESAX 0x8759 + GL_TEXTURE_2D_STACK_MESAX 0x875A + GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B + GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C + GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D + GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E + diff --git a/mesalib/docs/versions.html b/mesalib/docs/versions.html index 0047ee0fd..30c1817e1 100644 --- a/mesalib/docs/versions.html +++ b/mesalib/docs/versions.html @@ -1403,8 +1403,8 @@ New:
  • demo of per-pixel lighting with a fragment program (demos/fplight.c)
  • new version (18) of glext.h header
  • new spriteblast.c demo of GL_ARB_point_sprite -
  • faster glDrawPixels in X11 driver in some cases (see RELNOTES-5.1) -
  • faster glCopyPixels in X11 driver in some cases (see RELNOTES-5.1) +
  • faster glDrawPixels in X11 driver in some cases (see relnotes/5.1) +
  • faster glCopyPixels in X11 driver in some cases (see relnotes/5.1)
Bug fixes:
    diff --git a/mesalib/docs/viewperf.html b/mesalib/docs/viewperf.html index 3bbe1978a..23c6028d2 100644 --- a/mesalib/docs/viewperf.html +++ b/mesalib/docs/viewperf.html @@ -232,6 +232,36 @@ glClear is called so clearing the depth buffer would be a no-op anyway.

    +

    Proe-05 test 6

    + +

    +This test draws an engine model with a two-pass algorithm. +The first pass is drawn with polygon stipple enabled. +The second pass is drawn without polygon stipple but with blending +and GL_DEPTH_FUNC=GL_LEQUAL. +If either of the two passes happen to use a software fallback of some +sort, the Z values of fragments may be different between the two passes. +This leads to incorrect rendering. +

    + +

    +For example, the VMware SVGA gallium driver uses a special semi-fallback path +for drawing with polygon stipple. +Since the two passes are rendered with different vertex transformation +implementations, the rendering doesn't appear as expected. +Setting the SVGA_FORCE_SWTNL environment variable to 1 will force the +driver to use the software vertex path all the time and clears up this issue. +

    + +

    +According to the OpenGL invariance rules, there's no guarantee that +the pixels produced by these two rendering states will match. +To achieve invariance, both passes should enable polygon stipple and +blending with appropriate patterns/modes to ensure the same fragments +are produced in both passes. +

    + + diff --git a/mesalib/docs/xlibdriver.html b/mesalib/docs/xlibdriver.html index 6b7b02903..ce1ff3b13 100644 --- a/mesalib/docs/xlibdriver.html +++ b/mesalib/docs/xlibdriver.html @@ -221,7 +221,7 @@ See the xdemos/glxpixmap.c file for an example of how to use this extension.

    -GLX_MESA_pixmap_colormap specification +GLX_MESA_pixmap_colormap specification

    @@ -250,7 +250,7 @@ just before an X window is destroyed. For example: XDestroyWindow( dpy, window );

    -GLX_MESA_release_buffers specification +GLX_MESA_release_buffers specification

    This extension was added in Mesa 2.0. @@ -263,7 +263,7 @@ like glXSwapBuffers() but only copies a sub-region of the window instead of the whole window.

    -GLX_MESA_copy_sub_buffer specification +GLX_MESA_copy_sub_buffer specification

    This extension was added in Mesa 2.6 diff --git a/mesalib/include/EGL/eglext.h b/mesalib/include/EGL/eglext.h index b2b5a8038..1d6817838 100644 --- a/mesalib/include/EGL/eglext.h +++ b/mesalib/include/EGL/eglext.h @@ -6,7 +6,7 @@ extern "C" { #endif /* -** Copyright (c) 2007-2012 The Khronos Group Inc. +** Copyright (c) 2007-2013 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the @@ -34,8 +34,8 @@ extern "C" { /* Header file version number */ /* Current version at http://www.khronos.org/registry/egl/ */ -/* $Revision: 19987 $ on $Date: 2012-12-13 16:46:46 -0800 (Thu, 13 Dec 2012) $ */ -#define EGL_EGLEXT_VERSION 14 +/* $Revision: 21254 $ on $Date: 2013-04-25 03:11:55 -0700 (Thu, 25 Apr 2013) $ */ +#define EGL_EGLEXT_VERSION 16 #ifndef EGL_KHR_config_attribs #define EGL_KHR_config_attribs 1 @@ -532,6 +532,45 @@ typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC)(EGLDisplay dpy, #define EGL_BUFFER_AGE_EXT 0x313D #endif +#ifndef EGL_EXT_image_dma_buf_import +#define EGL_EXT_image_dma_buf_import 1 +#define EGL_LINUX_DMA_BUF_EXT 0x3270 +#define EGL_LINUX_DRM_FOURCC_EXT 0x3271 +#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272 +#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273 +#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274 +#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275 +#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276 +#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277 +#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278 +#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279 +#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A +#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B +#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C +#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D +#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E +#define EGL_ITU_REC601_EXT 0x327F +#define EGL_ITU_REC709_EXT 0x3280 +#define EGL_ITU_REC2020_EXT 0x3281 +#define EGL_YUV_FULL_RANGE_EXT 0x3282 +#define EGL_YUV_NARROW_RANGE_EXT 0x3283 +#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284 +#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285 +#endif + +#ifndef EGL_ARM_pixmap_multisample_discard +#define EGL_ARM_pixmap_multisample_discard 1 +#define EGL_DISCARD_SAMPLES_ARM 0x3286 +#endif + +#ifndef EGL_EXT_swap_buffers_with_damage +#define EGL_EXT_swap_buffers_with_damage 1 +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT( EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); +#endif /* EGL_EGLEXT_PROTOTYPES */ +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC)(EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); +#endif + #include #ifdef __cplusplus diff --git a/mesalib/include/GL/gl.h b/mesalib/include/GL/gl.h index e9dd921fa..975cfe87f 100644 --- a/mesalib/include/GL/gl.h +++ b/mesalib/include/GL/gl.h @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/mesalib/include/GL/glx.h b/mesalib/include/GL/glx.h index acbd9e2c9..7c8635cc7 100644 --- a/mesalib/include/GL/glx.h +++ b/mesalib/include/GL/glx.h @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/mesalib/include/GL/glx_mangle.h b/mesalib/include/GL/glx_mangle.h index fa664a7f5..240de495f 100644 --- a/mesalib/include/GL/glx_mangle.h +++ b/mesalib/include/GL/glx_mangle.h @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/mesalib/include/GL/osmesa.h b/mesalib/include/GL/osmesa.h index 304655e7c..571ef4ada 100644 --- a/mesalib/include/GL/osmesa.h +++ b/mesalib/include/GL/osmesa.h @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/mesalib/scons/crossmingw.py b/mesalib/scons/crossmingw.py index 23c56c0a2..1287e0ec8 100644 --- a/mesalib/scons/crossmingw.py +++ b/mesalib/scons/crossmingw.py @@ -130,40 +130,6 @@ SCons.Tool.SourceFileScanner.add_scanner('.rc', SCons.Defaults.CScan) -def compile_without_gstabs(env, sources, c_file): - '''This is a hack used to compile some source files without the - -gstabs option. - - It seems that some versions of mingw32's gcc (4.4.2 at least) die - when compiling large files with the -gstabs option. -gstabs is - related to debug symbols and can be omitted from the effected - files. - - This function compiles the given c_file without -gstabs, removes - the c_file from the sources list, then appends the new .o file to - sources. Then return the new sources list. - ''' - - # Modify CCFLAGS to not have -gstabs option: - env2 = env.Clone() - flags = str(env2['CCFLAGS']) - flags = flags.replace("-gstabs", "") - env2['CCFLAGS'] = SCons.Util.CLVar(flags) - - # Build the special-case files: - obj_file = env2.SharedObject(c_file) - - # Replace ".cpp" or ".c" with ".o" - o_file = c_file.replace(".cpp", ".o") - o_file = o_file.replace(".c", ".o") - - # Replace the .c files with the specially-compiled .o file - sources.remove(c_file) - sources.append(o_file) - - return sources - - def generate(env): mingw_prefix = find(env) @@ -221,13 +187,5 @@ def generate(env): env['LIBPREFIXES'] = [ 'lib', '' ] env['LIBSUFFIXES'] = [ '.a', '.lib' ] - # MinGW x86 port of gdb does not handle well dwarf debug info which is the - # default in recent gcc versions. The x64 port gdb from mingw-w64 seems to - # handle it fine though, so stick with the default there. - if env['machine'] != 'x86_64': - env.AppendUnique(CCFLAGS = ['-gstabs']) - - env.AddMethod(compile_without_gstabs, 'compile_without_gstabs') - def exists(env): return find(env) diff --git a/mesalib/scons/gallium.py b/mesalib/scons/gallium.py index 57b5b418f..2e341e99f 100644 --- a/mesalib/scons/gallium.py +++ b/mesalib/scons/gallium.py @@ -152,7 +152,7 @@ def generate(env): platform = env['platform'] x86 = env['machine'] == 'x86' ppc = env['machine'] == 'ppc' - gcc = env['gcc'] + gcc_compat = env['gcc'] or env['clang'] msvc = env['msvc'] suncc = env['suncc'] icc = env['icc'] @@ -279,7 +279,7 @@ def generate(env): ('_WIN32_WINNT', '0x0601'), ('WINVER', '0x0601'), ] - if gcc: + if gcc_compat: cppdefines += [('__MSVCRT_VERSION__', '0x0700')] if msvc: cppdefines += [ @@ -309,19 +309,20 @@ def generate(env): cflags = [] # C cxxflags = [] # C++ ccflags = [] # C & C++ - if gcc: + if gcc_compat: ccversion = env['CCVERSION'] if env['build'] == 'debug': ccflags += ['-O0'] - elif ccversion.startswith('4.2.'): + elif env['gcc'] and ccversion.startswith('4.2.'): # gcc 4.2.x optimizer is broken print "warning: gcc 4.2.x optimizer is broken -- disabling optimizations" ccflags += ['-O0'] else: ccflags += ['-O3'] - # gcc's builtin memcmp is slower than glibc's - # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052 - ccflags += ['-fno-builtin-memcmp'] + if env['gcc']: + # gcc's builtin memcmp is slower than glibc's + # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052 + ccflags += ['-fno-builtin-memcmp'] # Work around aliasing bugs - developers should comment this out ccflags += ['-fno-strict-aliasing'] ccflags += ['-g'] @@ -329,8 +330,9 @@ def generate(env): # See http://code.google.com/p/jrfonseca/wiki/Gprof2Dot#Which_options_should_I_pass_to_gcc_when_compiling_for_profiling? ccflags += [ '-fno-omit-frame-pointer', - '-fno-optimize-sibling-calls', ] + if env['gcc']: + ccflags += ['-fno-optimize-sibling-calls'] if env['machine'] == 'x86': ccflags += [ '-m32', @@ -448,7 +450,7 @@ def generate(env): env.Append(SHCCFLAGS = ['/LD']) # Assembler options - if gcc: + if gcc_compat: if env['machine'] == 'x86': env.Append(ASFLAGS = ['-m32']) if env['machine'] == 'x86_64': @@ -457,7 +459,7 @@ def generate(env): # Linker options linkflags = [] shlinkflags = [] - if gcc: + if gcc_compat: if env['machine'] == 'x86': linkflags += ['-m32'] if env['machine'] == 'x86_64': @@ -495,7 +497,7 @@ def generate(env): env.Append(SHLINKFLAGS = shlinkflags) # We have C++ in several libraries, so always link with the C++ compiler - if env['gcc'] or env['clang']: + if gcc_compat: env['LINK'] = env['CXX'] # Default libs @@ -533,7 +535,6 @@ def generate(env): env.PkgCheckModules('XF86VIDMODE', ['xxf86vm']) env.PkgCheckModules('DRM', ['libdrm >= 2.4.24']) env.PkgCheckModules('DRM_INTEL', ['libdrm_intel >= 2.4.30']) - env.PkgCheckModules('DRM_RADEON', ['libdrm_radeon >= 2.4.42']) env.PkgCheckModules('XORG', ['xorg-server >= 1.6.0']) env.PkgCheckModules('KMS', ['libkms >= 2.4.24']) env.PkgCheckModules('UDEV', ['libudev > 150']) diff --git a/mesalib/src/Makefile.am b/mesalib/src/Makefile.am index d6a7946ef..b3dc44d6f 100644 --- a/mesalib/src/Makefile.am +++ b/mesalib/src/Makefile.am @@ -1,4 +1,53 @@ -SUBDIRS=$(SRC_DIRS) +# Copyright © 2013 Intel Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. -all-local: - $(MKDIR_P) $(top_builddir)/$(LIB_DIR) +SUBDIRS = gtest mapi + +if NEED_OPENGL_COMMON +SUBDIRS += glsl mesa +endif + +if HAVE_DRI_GLX +SUBDIRS += glx +endif + +if HAVE_GBM +SUBDIRS += gbm +endif + +if HAVE_EGL +SUBDIRS += egl +endif + +if HAVE_GALLIUM +SUBDIRS += \ + gallium/auxiliary \ + gallium/drivers \ + gallium/state_trackers \ + gallium/winsys \ + gallium/targets + +if HAVE_GALLIUM_TESTS +SUBDIRS += \ + gallium/tests/trivial \ + gallium/tests/unit +endif +endif diff --git a/mesalib/src/gallium/Android.mk b/mesalib/src/gallium/Android.mk index 1d002d053..4e5acc86f 100644 --- a/mesalib/src/gallium/Android.mk +++ b/mesalib/src/gallium/Android.mk @@ -39,6 +39,11 @@ ifneq ($(filter i915g, $(MESA_GPU_DRIVERS)),) SUBDIRS += winsys/i915/drm drivers/i915 endif +# ilo +ifneq ($(filter ilo, $(MESA_GPU_DRIVERS)),) +SUBDIRS += winsys/intel/drm drivers/ilo +endif + # nouveau ifneq ($(filter nouveau, $(MESA_GPU_DRIVERS)),) SUBDIRS += \ diff --git a/mesalib/src/gallium/Makefile.am b/mesalib/src/gallium/Makefile.am deleted file mode 100644 index e7cff8920..000000000 --- a/mesalib/src/gallium/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright © 2012 Intel Corporation -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice (including the next -# paragraph) shall be included in all copies or substantial portions of the -# Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -SUBDIRS = $(GALLIUM_DIRS) diff --git a/mesalib/src/gallium/SConscript b/mesalib/src/gallium/SConscript index f281f4c65..ca75f37f9 100644 --- a/mesalib/src/gallium/SConscript +++ b/mesalib/src/gallium/SConscript @@ -27,28 +27,6 @@ if not env['msvc']: 'drivers/i915/SConscript', ]) -if env['drm']: - # These drivers depend on drm headers - if env['drm_radeon']: - SConscript([ - 'drivers/r300/SConscript', - 'drivers/r600/SConscript', - ]) - if env['llvm']: - SConscript([ - 'drivers/radeonsi/SConscript', - ]) - # XXX: nouveau drivers have a tight dependency on libdrm, so to enable - # we need some version logic before we enable them. Also, ATM there is - # no nouveau target in scons - # if env['drm_nouveau']: - # SConscript([ - # 'drivers/nouveau/SConscript', - # 'drivers/nv50/SConscript', - # 'drivers/nvc0/SConscript', - # 'drivers/nvfx/SConscript', - # ]) - # # State trackers # @@ -96,6 +74,11 @@ if not env['msvc']: 'winsys/i915/sw/SConscript', ]) +if env['platform'] == 'haiku': + SConscript([ + 'winsys/sw/hgl/SConscript', + ]) + if env['dri']: SConscript([ 'winsys/sw/dri/SConscript', @@ -110,11 +93,6 @@ if env['dri']: 'winsys/i915/drm/SConscript', ]) - if env['drm_radeon']: - SConscript([ - 'winsys/radeon/drm/SConscript', - ]) - # # Targets # @@ -141,32 +119,25 @@ if not env['embedded']: 'targets/libgl-gdi/SConscript', ]) + if env['platform'] == 'haiku': + SConscript([ + 'targets/haiku-softpipe/SConscript', + ]) + if env['dri']: SConscript([ 'targets/SConscript.dri', 'targets/dri-swrast/SConscript', 'targets/dri-vmwgfx/SConscript', - #'targets/dri-nouveau/SConscript', ]) if env['drm_intel']: SConscript([ 'targets/dri-i915/SConscript', ]) - if env['drm_radeon']: - SConscript([ - 'targets/dri-r300/SConscript', - 'targets/dri-r600/SConscript', - ]) - if env['llvm']: - SConscript([ - 'targets/dri-radeonsi/SConscript', - ]) if env['xorg'] and env['drm']: SConscript([ #'targets/xorg-i915/SConscript', - #'targets/xorg-nouveau/SConscript', - #'targets/xorg-radeon/SConscript', ]) diff --git a/mesalib/src/gallium/auxiliary/Makefile.sources b/mesalib/src/gallium/auxiliary/Makefile.sources index 79def2177..20ff5ba73 100644 --- a/mesalib/src/gallium/auxiliary/Makefile.sources +++ b/mesalib/src/gallium/auxiliary/Makefile.sources @@ -23,6 +23,7 @@ C_SOURCES := \ draw/draw_pipe_vbuf.c \ draw/draw_pipe_wide_line.c \ draw/draw_pipe_wide_point.c \ + draw/draw_prim_assembler.c \ draw/draw_pt.c \ draw/draw_pt_emit.c \ draw/draw_pt_fetch.c \ diff --git a/mesalib/src/gallium/auxiliary/SConscript b/mesalib/src/gallium/auxiliary/SConscript index bfd5ec34c..31dfed316 100644 --- a/mesalib/src/gallium/auxiliary/SConscript +++ b/mesalib/src/gallium/auxiliary/SConscript @@ -51,10 +51,6 @@ if env['llvm']: 'GALLIVM_CPP_SOURCES' ]) - if env['toolchain'] == 'crossmingw': - # compile lp_bld_misc.cpp without -gstabs option - source = env.compile_without_gstabs(source, "gallivm/lp_bld_misc.cpp") - gallium = env.ConvenienceLibrary( target = 'gallium', source = source, diff --git a/mesalib/src/gallium/auxiliary/hud/hud_context.c b/mesalib/src/gallium/auxiliary/hud/hud_context.c index 983f05756..de032b6ba 100644 --- a/mesalib/src/gallium/auxiliary/hud/hud_context.c +++ b/mesalib/src/gallium/auxiliary/hud/hud_context.c @@ -90,10 +90,6 @@ struct hud_context { unsigned max_num_vertices; unsigned num_vertices; } text, bg, whitelines; - - struct { - boolean query_pipeline_statistics; - } cap; }; @@ -467,7 +463,7 @@ hud_draw(struct hud_context *hud, struct pipe_resource *tex) cso_set_constant_buffer(cso, PIPE_SHADER_VERTEX, 0, &hud->constbuf); /* prepare vertex buffers */ - hud_alloc_vertices(hud, &hud->bg, 4 * 64, 2 * sizeof(float)); + hud_alloc_vertices(hud, &hud->bg, 4 * 128, 2 * sizeof(float)); hud_alloc_vertices(hud, &hud->whitelines, 4 * 256, 2 * sizeof(float)); hud_alloc_vertices(hud, &hud->text, 4 * 512, 4 * sizeof(float)); @@ -695,6 +691,12 @@ has_streamout(struct pipe_screen *screen) return screen->get_param(screen, PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS) != 0; } +static boolean +has_pipeline_stats_query(struct pipe_screen *screen) +{ + return screen->get_param(screen, PIPE_CAP_QUERY_PIPELINE_STATISTICS) != 0; +} + static void hud_parse_env_var(struct hud_context *hud, const char *env) { @@ -728,7 +730,8 @@ hud_parse_env_var(struct hud_context *hud, const char *env) return; } - /* add a graph */ + /* Add a graph. */ + /* IF YOU CHANGE THIS, UPDATE print_help! */ if (strcmp(name, "fps") == 0) { hud_fps_graph_install(pane); } @@ -748,8 +751,11 @@ hud_parse_env_var(struct hud_context *hud, const char *env) hud_pipe_query_install(pane, hud->pipe, "primitives-generated", PIPE_QUERY_PRIMITIVES_GENERATED, 0, 0, FALSE); } - else if (strncmp(name, "pipeline-statistics-", 20) == 0) { - if (hud->cap.query_pipeline_statistics) { + else { + boolean processed = FALSE; + + /* pipeline statistics queries */ + if (has_pipeline_stats_query(hud->pipe->screen)) { static const char *pipeline_statistics_names[] = { "ia-vertices", @@ -765,22 +771,21 @@ hud_parse_env_var(struct hud_context *hud, const char *env) "cs-invocations" }; for (i = 0; i < Elements(pipeline_statistics_names); ++i) - if (strcmp(&name[20], pipeline_statistics_names[i]) == 0) + if (strcmp(name, pipeline_statistics_names[i]) == 0) break; - if (i < Elements(pipeline_statistics_names)) - hud_pipe_query_install(pane, hud->pipe, &name[20], + if (i < Elements(pipeline_statistics_names)) { + hud_pipe_query_install(pane, hud->pipe, name, PIPE_QUERY_PIPELINE_STATISTICS, i, 0, FALSE); - else - fprintf(stderr, "gallium_hud: invalid pipeline-statistics-*\n"); - } else { - fprintf(stderr, "gallium_hud: PIPE_QUERY_PIPELINE_STATISTICS " - "not supported by the driver\n"); + processed = TRUE; + } } - } - else { - if (!hud_driver_query_install(pane, hud->pipe, name)){ - fprintf(stderr, "gallium_hud: unknown driver query '%s'\n", name); + + /* driver queries */ + if (!processed) { + if (!hud_driver_query_install(pane, hud->pipe, name)){ + fprintf(stderr, "gallium_hud: unknown driver query '%s'\n", name); + } } } @@ -877,10 +882,24 @@ print_help(struct pipe_screen *screen) printf(" cpu%i\n", i); if (has_occlusion_query(screen)) - puts(" pixels-rendered"); + puts(" samples-passed"); if (has_streamout(screen)) puts(" primitives-generated"); + if (has_pipeline_stats_query(screen)) { + puts(" ia-vertices"); + puts(" ia-primitives"); + puts(" vs-invocations"); + puts(" gs-invocations"); + puts(" gs-primitives"); + puts(" clipper-invocations"); + puts(" clipper-primitives-generated"); + puts(" ps-invocations"); + puts(" hs-invocations"); + puts(" ds-invocations"); + puts(" cs-invocations"); + } + if (screen->get_driver_query_info){ struct pipe_driver_query_info info; num_queries = screen->get_driver_query_info(screen, 0, NULL); @@ -971,7 +990,8 @@ hud_create(struct pipe_context *pipe, struct cso_context *cso) } /* rasterizer */ - hud->rasterizer.gl_rasterization_rules = 1; + hud->rasterizer.half_pixel_center = 1; + hud->rasterizer.bottom_edge_rule = 1; hud->rasterizer.depth_clip = 1; hud->rasterizer.line_width = 1; hud->rasterizer.line_last_pixel = 1; @@ -1045,9 +1065,6 @@ hud_create(struct pipe_context *pipe, struct cso_context *cso) LIST_INITHEAD(&hud->pane_list); - hud->cap.query_pipeline_statistics = - pipe->screen->get_param(pipe->screen, PIPE_CAP_QUERY_PIPELINE_STATISTICS); - hud_parse_env_var(hud, env); return hud; } diff --git a/mesalib/src/gallium/auxiliary/hud/hud_fps.c b/mesalib/src/gallium/auxiliary/hud/hud_fps.c index 71cdfd04e..80381f547 100644 --- a/mesalib/src/gallium/auxiliary/hud/hud_fps.c +++ b/mesalib/src/gallium/auxiliary/hud/hud_fps.c @@ -47,7 +47,8 @@ query_fps(struct hud_graph *gr) if (info->last_time) { if (info->last_time + gr->pane->period <= now) { - double fps = info->frames * 1000000 / (double)(now - info->last_time); + double fps = (uint64_t)info->frames * 1000000 / + (double)(now - info->last_time); info->frames = 0; info->last_time = now; diff --git a/mesalib/src/gallium/auxiliary/util/u_blit.c b/mesalib/src/gallium/auxiliary/util/u_blit.c index 9fe15b810..cda66d157 100644 --- a/mesalib/src/gallium/auxiliary/util/u_blit.c +++ b/mesalib/src/gallium/auxiliary/util/u_blit.c @@ -118,7 +118,8 @@ util_create_blit(struct pipe_context *pipe, struct cso_context *cso) /* rasterizer */ ctx->rasterizer.cull_face = PIPE_FACE_NONE; - ctx->rasterizer.gl_rasterization_rules = 1; + ctx->rasterizer.half_pixel_center = 1; + ctx->rasterizer.bottom_edge_rule = 1; ctx->rasterizer.depth_clip = 1; /* samplers */ diff --git a/mesalib/src/gallium/auxiliary/util/u_blitter.c b/mesalib/src/gallium/auxiliary/util/u_blitter.c index 2a4a13e9f..8c871fdf9 100644 --- a/mesalib/src/gallium/auxiliary/util/u_blitter.c +++ b/mesalib/src/gallium/auxiliary/util/u_blitter.c @@ -100,7 +100,7 @@ struct blitter_context_priv void *velem_state; void *velem_uint_state; void *velem_sint_state; - void *velem_state_readbuf; + void *velem_state_readbuf[4]; /**< X, XY, XYZ, XYZW */ /* Sampler state. */ void *sampler_state; @@ -239,7 +239,8 @@ struct blitter_context *util_blitter_create(struct pipe_context *pipe) /* rasterizer state */ memset(&rs_state, 0, sizeof(rs_state)); rs_state.cull_face = PIPE_FACE_NONE; - rs_state.gl_rasterization_rules = 1; + rs_state.half_pixel_center = 1; + rs_state.bottom_edge_rule = 1; rs_state.flatshade = 1; rs_state.depth_clip = 1; ctx->rs_state = pipe->create_rasterizer_state(pipe, &rs_state); @@ -285,9 +286,19 @@ struct blitter_context *util_blitter_create(struct pipe_context *pipe) } if (ctx->has_stream_out) { - velem[0].src_format = PIPE_FORMAT_R32_UINT; - velem[0].vertex_buffer_index = ctx->base.vb_slot; - ctx->velem_state_readbuf = pipe->create_vertex_elements_state(pipe, 1, &velem[0]); + static enum pipe_format formats[4] = { + PIPE_FORMAT_R32_UINT, + PIPE_FORMAT_R32G32_UINT, + PIPE_FORMAT_R32G32B32_UINT, + PIPE_FORMAT_R32G32B32A32_UINT + }; + + for (i = 0; i < 4; i++) { + velem[0].src_format = formats[i]; + velem[0].vertex_buffer_index = ctx->base.vb_slot; + ctx->velem_state_readbuf[i] = + pipe->create_vertex_elements_state(pipe, 1, &velem[0]); + } } /* fragment shaders are created on-demand */ @@ -352,8 +363,11 @@ void util_blitter_destroy(struct blitter_context *blitter) pipe->delete_vertex_elements_state(pipe, ctx->velem_sint_state); pipe->delete_vertex_elements_state(pipe, ctx->velem_uint_state); } - if (ctx->velem_state_readbuf) - pipe->delete_vertex_elements_state(pipe, ctx->velem_state_readbuf); + for (i = 0; i < 4; i++) { + if (ctx->velem_state_readbuf[i]) { + pipe->delete_vertex_elements_state(pipe, ctx->velem_state_readbuf[i]); + } + } for (i = 0; i < PIPE_MAX_TEXTURE_TYPES; i++) { if (ctx->fs_texfetch_col[i]) @@ -490,7 +504,7 @@ static void blitter_restore_fragment_states(struct blitter_context_priv *ctx) /* XXX check whether these are saved and whether they need to be restored * (depending on the operation) */ pipe->set_stencil_ref(pipe, &ctx->base.saved_stencil_ref); - pipe->set_viewport_state(pipe, &ctx->base.saved_viewport); + pipe->set_viewport_states(pipe, 0, 1, &ctx->base.saved_viewport); } static void blitter_check_saved_fb_state(struct blitter_context_priv *ctx) @@ -585,7 +599,7 @@ static void blitter_set_rectangle(struct blitter_context_priv *ctx, ctx->viewport.translate[1] = 0.5f * ctx->dst_height; ctx->viewport.translate[2] = 0.0f; ctx->viewport.translate[3] = 0.0f; - ctx->base.pipe->set_viewport_state(ctx->base.pipe, &ctx->viewport); + ctx->base.pipe->set_viewport_states(ctx->base.pipe, 0, 1, &ctx->viewport); } static void blitter_set_clear_color(struct blitter_context_priv *ctx, @@ -1387,7 +1401,7 @@ void util_blitter_blit_generic(struct blitter_context *blitter, pipe->bind_vertex_elements_state(pipe, ctx->velem_state); if (scissor) { - pipe->set_scissor_state(pipe, scissor); + pipe->set_scissor_states(pipe, 0, 1, scissor); } blitter_set_common_draw_rect_state(ctx, scissor != NULL); @@ -1482,7 +1496,7 @@ void util_blitter_blit_generic(struct blitter_context *blitter, blitter_restore_textures(ctx); blitter_restore_fb_state(ctx); if (scissor) { - pipe->set_scissor_state(pipe, &ctx->base.saved_scissor); + pipe->set_scissor_states(pipe, 0, 1, &ctx->base.saved_scissor); } blitter_restore_render_cond(ctx); blitter_unset_running_flag(ctx); @@ -1739,7 +1753,7 @@ void util_blitter_copy_buffer(struct blitter_context *blitter, vb.stride = 4; pipe->set_vertex_buffers(pipe, ctx->base.vb_slot, 1, &vb); - pipe->bind_vertex_elements_state(pipe, ctx->velem_state_readbuf); + pipe->bind_vertex_elements_state(pipe, ctx->velem_state_readbuf[0]); pipe->bind_vs_state(pipe, ctx->vs_pos_only); if (ctx->has_geometry_shader) pipe->bind_gs_state(pipe, NULL); @@ -1756,6 +1770,66 @@ void util_blitter_copy_buffer(struct blitter_context *blitter, pipe_so_target_reference(&so_target, NULL); } +void util_blitter_clear_buffer(struct blitter_context *blitter, + struct pipe_resource *dst, + unsigned offset, unsigned size, + unsigned num_channels, + const union pipe_color_union *clear_value) +{ + struct blitter_context_priv *ctx = (struct blitter_context_priv*)blitter; + struct pipe_context *pipe = ctx->base.pipe; + struct pipe_vertex_buffer vb = {0}; + struct pipe_stream_output_target *so_target; + + assert(num_channels >= 1); + assert(num_channels <= 4); + + /* IMPORTANT: DON'T DO ANY BOUNDS CHECKING HERE! + * + * R600 uses this to initialize texture resources, so width0 might not be + * what you think it is. + */ + + /* Streamout is required. */ + if (!ctx->has_stream_out) { + assert(!"Streamout unsupported in util_blitter_clear_buffer()"); + return; + } + + /* Some alignment is required. */ + if (offset % 4 != 0 || size % 4 != 0) { + assert(!"Bad alignment in util_blitter_clear_buffer()"); + return; + } + + u_upload_data(ctx->upload, 0, num_channels*4, clear_value, + &vb.buffer_offset, &vb.buffer); + vb.stride = 0; + + blitter_set_running_flag(ctx); + blitter_check_saved_vertex_states(ctx); + blitter_disable_render_cond(ctx); + + pipe->set_vertex_buffers(pipe, ctx->base.vb_slot, 1, &vb); + pipe->bind_vertex_elements_state(pipe, + ctx->velem_state_readbuf[num_channels-1]); + pipe->bind_vs_state(pipe, ctx->vs_pos_only); + if (ctx->has_geometry_shader) + pipe->bind_gs_state(pipe, NULL); + pipe->bind_rasterizer_state(pipe, ctx->rs_discard_state); + + so_target = pipe->create_stream_output_target(pipe, dst, offset, size); + pipe->set_stream_output_targets(pipe, 1, &so_target, 0); + + util_draw_arrays(pipe, PIPE_PRIM_POINTS, 0, size / 4); + + blitter_restore_vertex_states(ctx); + blitter_restore_render_cond(ctx); + blitter_unset_running_flag(ctx); + pipe_so_target_reference(&so_target, NULL); + pipe_resource_reference(&vb.buffer, NULL); +} + /* probably radeon specific */ void util_blitter_custom_resolve_color(struct blitter_context *blitter, struct pipe_resource *dst, diff --git a/mesalib/src/gallium/auxiliary/util/u_blitter.h b/mesalib/src/gallium/auxiliary/util/u_blitter.h index 20e69ed5b..19015844e 100644 --- a/mesalib/src/gallium/auxiliary/util/u_blitter.h +++ b/mesalib/src/gallium/auxiliary/util/u_blitter.h @@ -276,7 +276,7 @@ void util_blitter_default_src_texture(struct pipe_sampler_view *src_templ, /** * Copy data from one buffer to another using the Stream Output functionality. - * Some alignment is required, otherwise software fallback is used. + * 4-byte alignment is required, otherwise software fallback is used. */ void util_blitter_copy_buffer(struct blitter_context *blitter, struct pipe_resource *dst, @@ -285,6 +285,22 @@ void util_blitter_copy_buffer(struct blitter_context *blitter, unsigned srcx, unsigned size); +/** + * Clear the contents of a buffer using the Stream Output functionality. + * 4-byte alignment is required. + * + * "num_channels" can be 1, 2, 3, or 4, and specifies if the clear value is + * R, RG, RGB, or RGBA. + * + * For each element, only "num_channels" components of "clear_value" are + * copied to the buffer, then the offset is incremented by num_channels*4. + */ +void util_blitter_clear_buffer(struct blitter_context *blitter, + struct pipe_resource *dst, + unsigned offset, unsigned size, + unsigned num_channels, + const union pipe_color_union *clear_value); + /** * Clear a region of a (color) surface to a constant value. * diff --git a/mesalib/src/gallium/auxiliary/util/u_debug_symbol.c b/mesalib/src/gallium/auxiliary/util/u_debug_symbol.c index 3d2f8ebc3..0ef111c3b 100644 --- a/mesalib/src/gallium/auxiliary/util/u_debug_symbol.c +++ b/mesalib/src/gallium/auxiliary/util/u_debug_symbol.c @@ -151,10 +151,8 @@ debug_symbol_name_dbghelp(const void *addr, char* buf, unsigned size) } #endif -#ifdef __GLIBC__ -#ifndef __UCLIBC__ +#if defined(__GLIBC__) && !defined(__UCLIBC__) #include -#endif /* This can only provide dynamic symbols, or binary offsets into a file. * @@ -179,7 +177,7 @@ debug_symbol_name(const void *addr, char* buf, unsigned size) return; #endif -#ifdef __GLIBC__ +#if defined(__GLIBC__) && !defined(__UCLIBC__) debug_symbol_name_glibc(addr, buf, size); if(buf[0]) return; diff --git a/mesalib/src/gallium/auxiliary/util/u_dump_state.c b/mesalib/src/gallium/auxiliary/util/u_dump_state.c index 2f28f3c84..12f1d2d6e 100644 --- a/mesalib/src/gallium/auxiliary/util/u_dump_state.c +++ b/mesalib/src/gallium/auxiliary/util/u_dump_state.c @@ -327,7 +327,8 @@ util_dump_rasterizer_state(FILE *stream, const struct pipe_rasterizer_state *sta util_dump_member(stream, uint, state, line_stipple_pattern); util_dump_member(stream, bool, state, line_last_pixel); util_dump_member(stream, bool, state, flatshade_first); - util_dump_member(stream, bool, state, gl_rasterization_rules); + util_dump_member(stream, bool, state, half_pixel_center); + util_dump_member(stream, bool, state, bottom_edge_rule); util_dump_member(stream, bool, state, rasterizer_discard); util_dump_member(stream, bool, state, depth_clip); util_dump_member(stream, uint, state, clip_plane_enable); diff --git a/mesalib/src/gallium/auxiliary/util/u_format.c b/mesalib/src/gallium/auxiliary/util/u_format.c index 18456371c..9bdc2eabf 100644 --- a/mesalib/src/gallium/auxiliary/util/u_format.c +++ b/mesalib/src/gallium/auxiliary/util/u_format.c @@ -632,6 +632,40 @@ void util_format_compose_swizzles(const unsigned char swz1[4], } } +void util_format_apply_color_swizzle(union pipe_color_union *dst, + const union pipe_color_union *src, + const unsigned char swz[4], + const boolean is_integer) +{ + unsigned c; + + if (is_integer) { + for (c = 0; c < 4; ++c) { + switch (swz[c]) { + case PIPE_SWIZZLE_RED: dst->ui[c] = src->ui[0]; break; + case PIPE_SWIZZLE_GREEN: dst->ui[c] = src->ui[1]; break; + case PIPE_SWIZZLE_BLUE: dst->ui[c] = src->ui[2]; break; + case PIPE_SWIZZLE_ALPHA: dst->ui[c] = src->ui[3]; break; + default: + dst->ui[c] = (swz[c] == PIPE_SWIZZLE_ONE) ? 1 : 0; + break; + } + } + } else { + for (c = 0; c < 4; ++c) { + switch (swz[c]) { + case PIPE_SWIZZLE_RED: dst->f[c] = src->f[0]; break; + case PIPE_SWIZZLE_GREEN: dst->f[c] = src->f[1]; break; + case PIPE_SWIZZLE_BLUE: dst->f[c] = src->f[2]; break; + case PIPE_SWIZZLE_ALPHA: dst->f[c] = src->f[3]; break; + default: + dst->f[c] = (swz[c] == PIPE_SWIZZLE_ONE) ? 1.0f : 0.0f; + break; + } + } + } +} + void util_format_swizzle_4f(float *dst, const float *src, const unsigned char swz[4]) { diff --git a/mesalib/src/gallium/auxiliary/util/u_format.h b/mesalib/src/gallium/auxiliary/util/u_format.h index ed942fb16..e4b9c365c 100644 --- a/mesalib/src/gallium/auxiliary/util/u_format.h +++ b/mesalib/src/gallium/auxiliary/util/u_format.h @@ -33,6 +33,9 @@ #include "pipe/p_format.h" #include "util/u_debug.h" +union pipe_color_union; + + #ifdef __cplusplus extern "C" { #endif @@ -1117,6 +1120,15 @@ void util_format_compose_swizzles(const unsigned char swz1[4], const unsigned char swz2[4], unsigned char dst[4]); +/* Apply the swizzle provided in \param swz (which is one of PIPE_SWIZZLE_x) + * to \param src and store the result in \param dst. + * \param is_integer determines the value written for PIPE_SWIZZLE_ONE. + */ +void util_format_apply_color_swizzle(union pipe_color_union *dst, + const union pipe_color_union *src, + const unsigned char swz[4], + const boolean is_integer); + void util_format_swizzle_4f(float *dst, const float *src, const unsigned char swz[4]); diff --git a/mesalib/src/gallium/auxiliary/util/u_format_latc.c b/mesalib/src/gallium/auxiliary/util/u_format_latc.c index 20feb241e..caab7e87a 100644 --- a/mesalib/src/gallium/auxiliary/util/u_format_latc.c +++ b/mesalib/src/gallium/auxiliary/util/u_format_latc.c @@ -15,9 +15,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. * **************************************************************************/ diff --git a/mesalib/src/gallium/auxiliary/util/u_format_rgtc.c b/mesalib/src/gallium/auxiliary/util/u_format_rgtc.c index ff04e37b5..758e33774 100644 --- a/mesalib/src/gallium/auxiliary/util/u_format_rgtc.c +++ b/mesalib/src/gallium/auxiliary/util/u_format_rgtc.c @@ -15,9 +15,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. * **************************************************************************/ diff --git a/mesalib/src/gallium/auxiliary/util/u_format_s3tc.c b/mesalib/src/gallium/auxiliary/util/u_format_s3tc.c index 4a9dc2237..35e3d3445 100644 --- a/mesalib/src/gallium/auxiliary/util/u_format_s3tc.c +++ b/mesalib/src/gallium/auxiliary/util/u_format_s3tc.c @@ -16,9 +16,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. * **************************************************************************/ diff --git a/mesalib/src/gallium/auxiliary/util/u_gen_mipmap.c b/mesalib/src/gallium/auxiliary/util/u_gen_mipmap.c index e1f18f39c..7974b1d76 100644 --- a/mesalib/src/gallium/auxiliary/util/u_gen_mipmap.c +++ b/mesalib/src/gallium/auxiliary/util/u_gen_mipmap.c @@ -1271,7 +1271,8 @@ util_create_gen_mipmap(struct pipe_context *pipe, /* rasterizer */ memset(&ctx->rasterizer, 0, sizeof(ctx->rasterizer)); ctx->rasterizer.cull_face = PIPE_FACE_NONE; - ctx->rasterizer.gl_rasterization_rules = 1; + ctx->rasterizer.half_pixel_center = 1; + ctx->rasterizer.bottom_edge_rule = 1; ctx->rasterizer.depth_clip = 1; /* sampler state */ diff --git a/mesalib/src/gallium/auxiliary/util/u_inlines.h b/mesalib/src/gallium/auxiliary/util/u_inlines.h index 7770cd514..6e65ee6c9 100644 --- a/mesalib/src/gallium/auxiliary/util/u_inlines.h +++ b/mesalib/src/gallium/auxiliary/util/u_inlines.h @@ -485,8 +485,7 @@ util_get_min_point_size(const struct pipe_rasterizer_state *state) { /* The point size should be clamped to this value at the rasterizer stage. */ - return state->gl_rasterization_rules && - !state->point_quad_rasterization && + return !state->point_quad_rasterization && !state->point_smooth && !state->multisample ? 1.0f : 0.0f; } diff --git a/mesalib/src/gallium/auxiliary/util/u_prim.h b/mesalib/src/gallium/auxiliary/util/u_prim.h index d62c636f2..8f444a305 100644 --- a/mesalib/src/gallium/auxiliary/util/u_prim.h +++ b/mesalib/src/gallium/auxiliary/util/u_prim.h @@ -26,8 +26,8 @@ **************************************************************************/ -#ifndef U_BLIT_H -#define U_BLIT_H +#ifndef U_PRIM_H +#define U_PRIM_H #include "pipe/p_defines.h" @@ -37,95 +37,125 @@ extern "C" { #endif -static INLINE boolean u_validate_pipe_prim( unsigned pipe_prim, unsigned nr ) -{ - boolean ok = TRUE; +struct u_prim_vertex_count { + int min; + int incr; +}; - switch (pipe_prim) { - case PIPE_PRIM_POINTS: - ok = (nr >= 1); - break; - case PIPE_PRIM_LINES: - ok = (nr >= 2); - break; - case PIPE_PRIM_LINE_STRIP: +/** + * Decompose a primitive that is a loop, a strip, or a fan. Return the + * original primitive if it is already decomposed. + */ +static INLINE unsigned +u_decomposed_prim(unsigned prim) +{ + switch (prim) { case PIPE_PRIM_LINE_LOOP: - ok = (nr >= 2); - break; - case PIPE_PRIM_TRIANGLES: - ok = (nr >= 3); - break; + case PIPE_PRIM_LINE_STRIP: + return PIPE_PRIM_LINES; case PIPE_PRIM_TRIANGLE_STRIP: case PIPE_PRIM_TRIANGLE_FAN: - case PIPE_PRIM_POLYGON: - ok = (nr >= 3); - break; - case PIPE_PRIM_QUADS: - ok = (nr >= 4); - break; + return PIPE_PRIM_TRIANGLES; case PIPE_PRIM_QUAD_STRIP: - ok = (nr >= 4); - break; + return PIPE_PRIM_QUADS; + case PIPE_PRIM_LINE_STRIP_ADJACENCY: + return PIPE_PRIM_LINES_ADJACENCY; + case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY: + return PIPE_PRIM_TRIANGLES_ADJACENCY; default: - ok = 0; - break; + return prim; } +} - return ok; +/** + * Reduce a primitive to one of PIPE_PRIM_POINTS, PIPE_PRIM_LINES, and + * PIPE_PRIM_TRIANGLES. + */ +static INLINE unsigned +u_reduced_prim(unsigned prim) +{ + switch (prim) { + case PIPE_PRIM_POINTS: + return PIPE_PRIM_POINTS; + case PIPE_PRIM_LINES: + case PIPE_PRIM_LINE_LOOP: + case PIPE_PRIM_LINE_STRIP: + case PIPE_PRIM_LINES_ADJACENCY: + case PIPE_PRIM_LINE_STRIP_ADJACENCY: + return PIPE_PRIM_LINES; + default: + return PIPE_PRIM_TRIANGLES; + } } +/** + * Re-assemble a primitive to remove its adjacency. + */ +static INLINE unsigned +u_assembled_prim(unsigned prim) +{ + switch (prim) { + case PIPE_PRIM_LINES_ADJACENCY: + case PIPE_PRIM_LINE_STRIP_ADJACENCY: + return PIPE_PRIM_LINES; + case PIPE_PRIM_TRIANGLES_ADJACENCY: + case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY: + return PIPE_PRIM_TRIANGLES; + default: + return prim; + } +} -static INLINE boolean u_trim_pipe_prim( unsigned pipe_prim, unsigned *nr ) +/** + * Return the vertex count information for a primitive. + * + * Note that if this function is called directly or indirectly anywhere in a + * source file, it will increase the size of the binary slightly more than + * expected because of the use of a table. + */ +static INLINE const struct u_prim_vertex_count * +u_prim_vertex_count(unsigned prim) { - boolean ok = TRUE; - const static unsigned values[][2] = { - { 1, 0 }, /* PIPE_PRIM_POINTS */ + static const struct u_prim_vertex_count prim_table[PIPE_PRIM_MAX] = { + { 1, 1 }, /* PIPE_PRIM_POINTS */ { 2, 2 }, /* PIPE_PRIM_LINES */ - { 2, 0 }, /* PIPE_PRIM_LINE_LOOP */ - { 2, 0 }, /* PIPE_PRIM_LINE_STRIP */ + { 2, 1 }, /* PIPE_PRIM_LINE_LOOP */ + { 2, 1 }, /* PIPE_PRIM_LINE_STRIP */ { 3, 3 }, /* PIPE_PRIM_TRIANGLES */ - { 3, 0 }, /* PIPE_PRIM_TRIANGLE_STRIP */ - { 3, 0 }, /* PIPE_PRIM_TRIANGLE_FAN */ - { 4, 4 }, /* PIPE_PRIM_TRIANGLE_QUADS */ - { 4, 2 }, /* PIPE_PRIM_TRIANGLE_QUAD_STRIP */ - { 3, 0 }, /* PIPE_PRIM_TRIANGLE_POLYGON */ + { 3, 1 }, /* PIPE_PRIM_TRIANGLE_STRIP */ + { 3, 1 }, /* PIPE_PRIM_TRIANGLE_FAN */ + { 4, 4 }, /* PIPE_PRIM_QUADS */ + { 4, 2 }, /* PIPE_PRIM_QUAD_STRIP */ + { 3, 1 }, /* PIPE_PRIM_POLYGON */ { 4, 4 }, /* PIPE_PRIM_LINES_ADJACENCY */ - { 4, 0 }, /* PIPE_PRIM_LINE_STRIP_ADJACENCY */ - { 6, 5 }, /* PIPE_PRIM_TRIANGLES_ADJACENCY */ - { 4, 0 }, /* PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY */ + { 4, 1 }, /* PIPE_PRIM_LINE_STRIP_ADJACENCY */ + { 6, 6 }, /* PIPE_PRIM_TRIANGLES_ADJACENCY */ + { 6, 2 }, /* PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY */ }; - if (unlikely(pipe_prim >= PIPE_PRIM_MAX)) { - *nr = 0; - return FALSE; - } - - ok = (*nr >= values[pipe_prim][0]); - if (values[pipe_prim][1]) - *nr -= (*nr % values[pipe_prim][1]); + return (likely(prim < PIPE_PRIM_MAX)) ? &prim_table[prim] : NULL; +} - if (!ok) - *nr = 0; +static INLINE boolean u_validate_pipe_prim( unsigned pipe_prim, unsigned nr ) +{ + const struct u_prim_vertex_count *count = u_prim_vertex_count(pipe_prim); - return ok; + return (count && nr >= count->min); } -static INLINE unsigned u_reduced_prim( unsigned pipe_prim ) +static INLINE boolean u_trim_pipe_prim( unsigned pipe_prim, unsigned *nr ) { - switch (pipe_prim) { - case PIPE_PRIM_POINTS: - return PIPE_PRIM_POINTS; + const struct u_prim_vertex_count *count = u_prim_vertex_count(pipe_prim); - case PIPE_PRIM_LINES: - case PIPE_PRIM_LINES_ADJACENCY: - case PIPE_PRIM_LINE_STRIP: - case PIPE_PRIM_LINE_STRIP_ADJACENCY: - case PIPE_PRIM_LINE_LOOP: - return PIPE_PRIM_LINES; - - default: - return PIPE_PRIM_TRIANGLES; + if (count && *nr >= count->min) { + if (count->incr > 1) + *nr -= (*nr % count->incr); + return TRUE; + } + else { + *nr = 0; + return FALSE; } } @@ -165,46 +195,71 @@ u_vertices_per_prim(int primitive) /** * Returns the number of decomposed primitives for the given * vertex count. - * Geometry shader is invoked once for each triangle in + * Parts of the pipline are invoked once for each triangle in * triangle strip, triangle fans and triangles and once - * for each line in line strip, line loop, lines. + * for each line in line strip, line loop, lines. Also + * statistics depend on knowing the exact number of decomposed + * primitives for a set of vertices. */ static INLINE unsigned -u_gs_prims_for_vertices(int primitive, int vertices) +u_decomposed_prims_for_vertices(int primitive, int vertices) { - switch(primitive) { + switch (primitive) { case PIPE_PRIM_POINTS: return vertices; case PIPE_PRIM_LINES: return vertices / 2; case PIPE_PRIM_LINE_LOOP: - return vertices; + return (vertices >= 2) ? vertices : 0; case PIPE_PRIM_LINE_STRIP: - return vertices - 1; + return (vertices >= 2) ? vertices - 1 : 0; case PIPE_PRIM_TRIANGLES: - return vertices / 3; + return vertices / 3; case PIPE_PRIM_TRIANGLE_STRIP: - return vertices - 2; + return (vertices >= 3) ? vertices - 2 : 0; case PIPE_PRIM_TRIANGLE_FAN: - return vertices - 2; + return (vertices >= 3) ? vertices - 2 : 0; case PIPE_PRIM_LINES_ADJACENCY: - return vertices / 2; + return vertices / 4; case PIPE_PRIM_LINE_STRIP_ADJACENCY: - return vertices - 1; + return (vertices >= 4) ? vertices - 3 : 0; case PIPE_PRIM_TRIANGLES_ADJACENCY: - return vertices / 3; + return vertices / 6; case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY: - return vertices - 2; - - /* following primitives should never be used - * with geometry shaders abd their size is - * undefined */ + return (vertices >= 6) ? 1 + (vertices - 6) / 2 : 0; + case PIPE_PRIM_QUADS: + return vertices / 4; + case PIPE_PRIM_QUAD_STRIP: + return (vertices >= 4) ? (vertices - 2) / 2 : 0; + /* Polygons can't be decomposed + * because the number of their vertices isn't known so + * for them and whatever else we don't recognize just + * return 1 if the number of vertices is greater than + * or equal to 3 and zero otherwise */ case PIPE_PRIM_POLYGON: + default: + debug_printf("Invalid decomposition primitive!\n"); + return (vertices >= 3) ? 1 : 0; + } +} + +/** + * Returns the number of reduced/tessellated primitives for the given vertex + * count. Each quad is treated as two triangles. Polygons are treated as + * triangle fans. + */ +static INLINE unsigned +u_reduced_prims_for_vertices(int primitive, int vertices) +{ + switch (primitive) { case PIPE_PRIM_QUADS: case PIPE_PRIM_QUAD_STRIP: + return u_decomposed_prims_for_vertices(primitive, vertices) * 2; + case PIPE_PRIM_POLYGON: + primitive = PIPE_PRIM_TRIANGLE_FAN; + /* fall through */ default: - debug_printf("Unrecognized geometry shader primitive"); - return 3; + return u_decomposed_prims_for_vertices(primitive, vertices); } } diff --git a/mesalib/src/gallium/auxiliary/util/u_simple_list.h b/mesalib/src/gallium/auxiliary/util/u_simple_list.h index fe5977137..7a47c1a78 100644 --- a/mesalib/src/gallium/auxiliary/util/u_simple_list.h +++ b/mesalib/src/gallium/auxiliary/util/u_simple_list.h @@ -28,9 +28,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/mesalib/src/gallium/auxiliary/util/u_sse.h b/mesalib/src/gallium/auxiliary/util/u_sse.h index 1df6c8726..d100c4706 100644 --- a/mesalib/src/gallium/auxiliary/util/u_sse.h +++ b/mesalib/src/gallium/auxiliary/util/u_sse.h @@ -175,7 +175,12 @@ static INLINE void u_print_ps(const char *name, __m128 r) * MSVC will never get in here as its intrinsics support do not rely on * compiler command line options. */ -static __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +static __inline __m128i +#ifdef __clang__ + __attribute__((__always_inline__, __nodebug__)) +#else + __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +#endif _mm_shuffle_epi8(__m128i a, __m128i mask) { __m128i result; diff --git a/mesalib/src/glsl/Makefile.am b/mesalib/src/glsl/Makefile.am index d0e5cd1d0..2bbad3d65 100644 --- a/mesalib/src/glsl/Makefile.am +++ b/mesalib/src/glsl/Makefile.am @@ -27,8 +27,7 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/mesa/ \ -I$(top_srcdir)/src/glsl/glcpp \ -I$(top_srcdir)/src/gtest/include \ - $(DEFINES) \ - $(API_DEFINES) + $(DEFINES) AM_CFLAGS = $(VISIBILITY_CFLAGS) AM_CXXFLAGS = $(VISIBILITY_CXXFLAGS) diff --git a/mesalib/src/glsl/Makefile.sources b/mesalib/src/glsl/Makefile.sources index b5282a604..50bad85ad 100644 --- a/mesalib/src/glsl/Makefile.sources +++ b/mesalib/src/glsl/Makefile.sources @@ -16,6 +16,7 @@ LIBGLCPP_GENERATED_FILES = \ # libglsl LIBGLSL_FILES = \ + $(GLSL_SRCDIR)/ast_array_index.cpp \ $(GLSL_SRCDIR)/ast_expr.cpp \ $(GLSL_SRCDIR)/ast_function.cpp \ $(GLSL_SRCDIR)/ast_to_hir.cpp \ @@ -45,6 +46,7 @@ LIBGLSL_FILES = \ $(GLSL_SRCDIR)/ir_variable_refcount.cpp \ $(GLSL_SRCDIR)/linker.cpp \ $(GLSL_SRCDIR)/link_functions.cpp \ + $(GLSL_SRCDIR)/link_interface_blocks.cpp \ $(GLSL_SRCDIR)/link_uniforms.cpp \ $(GLSL_SRCDIR)/link_uniform_initializers.cpp \ $(GLSL_SRCDIR)/link_uniform_block_active_visitor.cpp \ @@ -62,12 +64,14 @@ LIBGLSL_FILES = \ $(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp \ $(GLSL_SRCDIR)/lower_noise.cpp \ $(GLSL_SRCDIR)/lower_packed_varyings.cpp \ + $(GLSL_SRCDIR)/lower_named_interface_blocks.cpp \ $(GLSL_SRCDIR)/lower_packing_builtins.cpp \ $(GLSL_SRCDIR)/lower_texture_projection.cpp \ $(GLSL_SRCDIR)/lower_variable_index_to_cond_assign.cpp \ $(GLSL_SRCDIR)/lower_vec_index_to_cond_assign.cpp \ $(GLSL_SRCDIR)/lower_vec_index_to_swizzle.cpp \ $(GLSL_SRCDIR)/lower_vector.cpp \ + $(GLSL_SRCDIR)/lower_vector_insert.cpp \ $(GLSL_SRCDIR)/lower_output_reads.cpp \ $(GLSL_SRCDIR)/lower_ubo_reference.cpp \ $(GLSL_SRCDIR)/opt_algebraic.cpp \ @@ -81,6 +85,7 @@ LIBGLSL_FILES = \ $(GLSL_SRCDIR)/opt_dead_code_local.cpp \ $(GLSL_SRCDIR)/opt_dead_functions.cpp \ $(GLSL_SRCDIR)/opt_flatten_nested_if_blocks.cpp \ + $(GLSL_SRCDIR)/opt_flip_matrices.cpp \ $(GLSL_SRCDIR)/opt_function_inlining.cpp \ $(GLSL_SRCDIR)/opt_if_simplification.cpp \ $(GLSL_SRCDIR)/opt_noop_swizzle.cpp \ diff --git a/mesalib/src/glsl/ast.h b/mesalib/src/glsl/ast.h index fcc6b4566..df2a21f79 100644 --- a/mesalib/src/glsl/ast.h +++ b/mesalib/src/glsl/ast.h @@ -805,9 +805,9 @@ public: ast_compound_statement *body; }; -class ast_uniform_block : public ast_node { +class ast_interface_block : public ast_node { public: - ast_uniform_block(ast_type_qualifier layout, + ast_interface_block(ast_type_qualifier layout, const char *instance_name, ast_expression *array_size) : layout(layout), block_name(NULL), instance_name(instance_name), @@ -854,7 +854,17 @@ _mesa_ast_field_selection_to_hir(const ast_expression *expr, exec_list *instructions, struct _mesa_glsl_parse_state *state); +extern ir_rvalue * +_mesa_ast_array_index_to_hir(void *mem_ctx, + struct _mesa_glsl_parse_state *state, + ir_rvalue *array, ir_rvalue *idx, + YYLTYPE &loc, YYLTYPE &idx_loc); + void emit_function(_mesa_glsl_parse_state *state, ir_function *f); +extern void +check_builtin_array_max_size(const char *name, unsigned size, + YYLTYPE loc, struct _mesa_glsl_parse_state *state); + #endif /* AST_H */ diff --git a/mesalib/src/glsl/ast_array_index.cpp b/mesalib/src/glsl/ast_array_index.cpp new file mode 100644 index 000000000..4baeb6f9d --- /dev/null +++ b/mesalib/src/glsl/ast_array_index.cpp @@ -0,0 +1,190 @@ +/* + * Copyright © 2010 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "ast.h" +#include "glsl_types.h" +#include "ir.h" + +ir_rvalue * +_mesa_ast_array_index_to_hir(void *mem_ctx, + struct _mesa_glsl_parse_state *state, + ir_rvalue *array, ir_rvalue *idx, + YYLTYPE &loc, YYLTYPE &idx_loc) +{ + if (!array->type->is_error() + && !array->type->is_array() + && !array->type->is_matrix() + && !array->type->is_vector()) { + _mesa_glsl_error(& idx_loc, state, + "cannot dereference non-array / non-matrix / " + "non-vector"); + } + + if (!idx->type->is_error()) { + if (!idx->type->is_integer()) { + _mesa_glsl_error(& idx_loc, state, "array index must be integer type"); + } else if (!idx->type->is_scalar()) { + _mesa_glsl_error(& idx_loc, state, "array index must be scalar"); + } + } + + /* If the array index is a constant expression and the array has a + * declared size, ensure that the access is in-bounds. If the array + * index is not a constant expression, ensure that the array has a + * declared size. + */ + ir_constant *const const_index = idx->constant_expression_value(); + if (const_index != NULL && idx->type->is_integer()) { + const int idx = const_index->value.i[0]; + const char *type_name = "error"; + unsigned bound = 0; + + /* From page 24 (page 30 of the PDF) of the GLSL 1.50 spec: + * + * "It is illegal to declare an array with a size, and then + * later (in the same shader) index the same array with an + * integral constant expression greater than or equal to the + * declared size. It is also illegal to index an array with a + * negative constant expression." + */ + if (array->type->is_matrix()) { + if (array->type->row_type()->vector_elements <= idx) { + type_name = "matrix"; + bound = array->type->row_type()->vector_elements; + } + } else if (array->type->is_vector()) { + if (array->type->vector_elements <= idx) { + type_name = "vector"; + bound = array->type->vector_elements; + } + } else { + /* glsl_type::array_size() returns 0 for non-array types. This means + * that we don't need to verify that the type is an array before + * doing the bounds checking. + */ + if ((array->type->array_size() > 0) + && (array->type->array_size() <= idx)) { + type_name = "array"; + bound = array->type->array_size(); + } + } + + if (bound > 0) { + _mesa_glsl_error(& loc, state, "%s index must be < %u", + type_name, bound); + } else if (idx < 0) { + _mesa_glsl_error(& loc, state, "%s index must be >= 0", + type_name); + } + + if (array->type->is_array()) { + /* If the array is a variable dereference, it dereferences the + * whole array, by definition. Use this to get the variable. + * + * FINISHME: Should some methods for getting / setting / testing + * FINISHME: array access limits be added to ir_dereference? + */ + ir_variable *const v = array->whole_variable_referenced(); + if ((v != NULL) && (unsigned(idx) > v->max_array_access)) { + v->max_array_access = idx; + + /* Check whether this access will, as a side effect, implicitly + * cause the size of a built-in array to be too large. + */ + check_builtin_array_max_size(v->name, idx+1, loc, state); + } + } + } else if (const_index == NULL && array->type->is_array()) { + if (array->type->array_size() == 0) { + _mesa_glsl_error(&loc, state, "unsized array index must be constant"); + } else if (array->type->fields.array->is_interface()) { + /* Page 46 in section 4.3.7 of the OpenGL ES 3.00 spec says: + * + * "All indexes used to index a uniform block array must be + * constant integral expressions." + */ + _mesa_glsl_error(&loc, state, + "uniform block array index must be constant"); + } else { + /* whole_variable_referenced can return NULL if the array is a + * member of a structure. In this case it is safe to not update + * the max_array_access field because it is never used for fields + * of structures. + */ + ir_variable *v = array->whole_variable_referenced(); + if (v != NULL) + v->max_array_access = array->type->array_size() - 1; + } + + /* From page 23 (29 of the PDF) of the GLSL 1.30 spec: + * + * "Samplers aggregated into arrays within a shader (using square + * brackets [ ]) can only be indexed with integral constant + * expressions [...]." + * + * This restriction was added in GLSL 1.30. Shaders using earlier + * version of the language should not be rejected by the compiler + * front-end for using this construct. This allows useful things such + * as using a loop counter as the index to an array of samplers. If the + * loop in unrolled, the code should compile correctly. Instead, emit a + * warning. + */ + if (array->type->element_type()->is_sampler()) { + if (!state->is_version(130, 100)) { + if (state->es_shader) { + _mesa_glsl_warning(&loc, state, + "sampler arrays indexed with non-constant " + "expressions is optional in %s", + state->get_version_string()); + } else { + _mesa_glsl_warning(&loc, state, + "sampler arrays indexed with non-constant " + "expressions will be forbidden in GLSL 1.30 " + "and later"); + } + } else { + _mesa_glsl_error(&loc, state, + "sampler arrays indexed with non-constant " + "expressions is forbidden in GLSL 1.30 and " + "later"); + } + } + } + + /* After performing all of the error checking, generate the IR for the + * expression. + */ + if (array->type->is_array() + || array->type->is_matrix()) { + return new(mem_ctx) ir_dereference_array(array, idx); + } else if (array->type->is_vector()) { + return new(mem_ctx) ir_expression(ir_binop_vector_extract, array, idx); + } else if (array->type->is_error()) { + return array; + } else { + ir_rvalue *result = new(mem_ctx) ir_dereference_array(array, idx); + result->type = glsl_type::error_type; + + return result; + } +} diff --git a/mesalib/src/glsl/ast_function.cpp b/mesalib/src/glsl/ast_function.cpp index 26f72cf8e..00e0c05dd 100644 --- a/mesalib/src/glsl/ast_function.cpp +++ b/mesalib/src/glsl/ast_function.cpp @@ -165,10 +165,18 @@ verify_parameter_modes(_mesa_glsl_parse_state *state, actual->variable_referenced()->name); return false; } else if (!actual->is_lvalue()) { - _mesa_glsl_error(&loc, state, - "function parameter '%s %s' is not an lvalue", - mode, formal->name); - return false; + /* Even though ir_binop_vector_extract is not an l-value, let it + * slop through. generate_call will handle it correctly. + */ + ir_expression *const expr = ((ir_rvalue *) actual)->as_expression(); + if (expr == NULL + || expr->operation != ir_binop_vector_extract + || !expr->operands[0]->is_lvalue()) { + _mesa_glsl_error(&loc, state, + "function parameter '%s %s' is not an lvalue", + mode, formal->name); + return false; + } } } @@ -178,6 +186,93 @@ verify_parameter_modes(_mesa_glsl_parse_state *state, return true; } +static void +fix_parameter(void *mem_ctx, ir_rvalue *actual, const glsl_type *formal_type, + exec_list *before_instructions, exec_list *after_instructions, + bool parameter_is_inout) +{ + ir_expression *const expr = actual->as_expression(); + + /* If the types match exactly and the parameter is not a vector-extract, + * nothing needs to be done to fix the parameter. + */ + if (formal_type == actual->type + && (expr == NULL || expr->operation != ir_binop_vector_extract)) + return; + + /* To convert an out parameter, we need to create a temporary variable to + * hold the value before conversion, and then perform the conversion after + * the function call returns. + * + * This has the effect of transforming code like this: + * + * void f(out int x); + * float value; + * f(value); + * + * Into IR that's equivalent to this: + * + * void f(out int x); + * float value; + * int out_parameter_conversion; + * f(out_parameter_conversion); + * value = float(out_parameter_conversion); + * + * If the parameter is an ir_expression of ir_binop_vector_extract, + * additional conversion is needed in the post-call re-write. + */ + ir_variable *tmp = + new(mem_ctx) ir_variable(formal_type, "inout_tmp", ir_var_temporary); + + before_instructions->push_tail(tmp); + + /* If the parameter is an inout parameter, copy the value of the actual + * parameter to the new temporary. Note that no type conversion is allowed + * here because inout parameters must match types exactly. + */ + if (parameter_is_inout) { + /* Inout parameters should never require conversion, since that would + * require an implicit conversion to exist both to and from the formal + * parameter type, and there are no bidirectional implicit conversions. + */ + assert (actual->type == formal_type); + + ir_dereference_variable *const deref_tmp_1 = + new(mem_ctx) ir_dereference_variable(tmp); + ir_assignment *const assignment = + new(mem_ctx) ir_assignment(deref_tmp_1, actual); + before_instructions->push_tail(assignment); + } + + /* Replace the parameter in the call with a dereference of the new + * temporary. + */ + ir_dereference_variable *const deref_tmp_2 = + new(mem_ctx) ir_dereference_variable(tmp); + actual->replace_with(deref_tmp_2); + + + /* Copy the temporary variable to the actual parameter with optional + * type conversion applied. + */ + ir_rvalue *rhs = new(mem_ctx) ir_dereference_variable(tmp); + if (actual->type != formal_type) + rhs = convert_component(rhs, actual->type); + + ir_rvalue *lhs = actual; + if (expr != NULL && expr->operation == ir_binop_vector_extract) { + rhs = new(mem_ctx) ir_expression(ir_triop_vector_insert, + expr->operands[0]->type, + expr->operands[0]->clone(mem_ctx, NULL), + rhs, + expr->operands[1]->clone(mem_ctx, NULL)); + lhs = expr->operands[0]->clone(mem_ctx, NULL); + } + + ir_assignment *const assignment_2 = new(mem_ctx) ir_assignment(lhs, rhs); + after_instructions->push_tail(assignment_2); +} + /** * If a function call is generated, \c call_ir will point to it on exit. * Otherwise \c call_ir will be set to \c NULL. @@ -218,50 +313,10 @@ generate_call(exec_list *instructions, ir_function_signature *sig, break; } case ir_var_function_out: - if (actual->type != formal->type) { - /* To convert an out parameter, we need to create a - * temporary variable to hold the value before conversion, - * and then perform the conversion after the function call - * returns. - * - * This has the effect of transforming code like this: - * - * void f(out int x); - * float value; - * f(value); - * - * Into IR that's equivalent to this: - * - * void f(out int x); - * float value; - * int out_parameter_conversion; - * f(out_parameter_conversion); - * value = float(out_parameter_conversion); - */ - ir_variable *tmp = - new(ctx) ir_variable(formal->type, - "out_parameter_conversion", - ir_var_temporary); - instructions->push_tail(tmp); - ir_dereference_variable *deref_tmp_1 - = new(ctx) ir_dereference_variable(tmp); - ir_dereference_variable *deref_tmp_2 - = new(ctx) ir_dereference_variable(tmp); - ir_rvalue *converted_tmp - = convert_component(deref_tmp_1, actual->type); - ir_assignment *assignment - = new(ctx) ir_assignment(actual, converted_tmp); - post_call_conversions.push_tail(assignment); - actual->replace_with(deref_tmp_2); - } - break; case ir_var_function_inout: - /* Inout parameters should never require conversion, since that - * would require an implicit conversion to exist both to and - * from the formal parameter type, and there are no - * bidirectional implicit conversions. - */ - assert (actual->type == formal->type); + fix_parameter(ctx, actual, formal->type, + instructions, &post_call_conversions, + formal->mode == ir_var_function_inout); break; default: assert (!"Illegal formal parameter mode"); diff --git a/mesalib/src/glsl/ast_to_hir.cpp b/mesalib/src/glsl/ast_to_hir.cpp index 92065f5b7..e918adeef 100644 --- a/mesalib/src/glsl/ast_to_hir.cpp +++ b/mesalib/src/glsl/ast_to_hir.cpp @@ -672,6 +672,30 @@ do_assignment(exec_list *instructions, struct _mesa_glsl_parse_state *state, void *ctx = state; bool error_emitted = (lhs->type->is_error() || rhs->type->is_error()); + /* If the assignment LHS comes back as an ir_binop_vector_extract + * expression, move it to the RHS as an ir_triop_vector_insert. + */ + if (lhs->ir_type == ir_type_expression) { + ir_expression *const expr = lhs->as_expression(); + + if (unlikely(expr->operation == ir_binop_vector_extract)) { + ir_rvalue *new_rhs = + validate_assignment(state, lhs->type, rhs, is_initializer); + + if (new_rhs == NULL) { + _mesa_glsl_error(& lhs_loc, state, "type mismatch"); + return lhs; + } else { + rhs = new(ctx) ir_expression(ir_triop_vector_insert, + expr->operands[0]->type, + expr->operands[0], + new_rhs, + expr->operands[1]); + lhs = expr->operands[0]->clone(ctx, NULL); + } + } + } + ir_variable *lhs_var = lhs->variable_referenced(); if (lhs_var) lhs_var->assigned = true; @@ -904,7 +928,7 @@ get_scalar_boolean_operand(exec_list *instructions, * If name refers to a builtin array whose maximum allowed size is less than * size, report an error and return true. Otherwise return false. */ -static bool +void check_builtin_array_max_size(const char *name, unsigned size, YYLTYPE loc, struct _mesa_glsl_parse_state *state) { @@ -918,7 +942,6 @@ check_builtin_array_max_size(const char *name, unsigned size, _mesa_glsl_error(&loc, state, "`gl_TexCoord' array size cannot " "be larger than gl_MaxTextureCoords (%u)\n", state->Const.MaxTextureCoords); - return true; } else if (strcmp("gl_ClipDistance", name) == 0 && size > state->Const.MaxClipPlanes) { /* From section 7.1 (Vertex Shader Special Variables) of the @@ -933,9 +956,7 @@ check_builtin_array_max_size(const char *name, unsigned size, _mesa_glsl_error(&loc, state, "`gl_ClipDistance' array size cannot " "be larger than gl_MaxClipDistances (%u)\n", state->Const.MaxClipPlanes); - return true; } - return false; } /** @@ -1517,172 +1538,11 @@ ast_expression::hir(exec_list *instructions, op[0] = subexpressions[0]->hir(instructions, state); op[1] = subexpressions[1]->hir(instructions, state); - error_emitted = op[0]->type->is_error() || op[1]->type->is_error(); - - ir_rvalue *const array = op[0]; - - result = new(ctx) ir_dereference_array(op[0], op[1]); - - /* Do not use op[0] after this point. Use array. - */ - op[0] = NULL; - + result = _mesa_ast_array_index_to_hir(ctx, state, op[0], op[1], + loc, index_loc); - if (error_emitted) - break; - - if (!array->type->is_array() - && !array->type->is_matrix() - && !array->type->is_vector()) { - _mesa_glsl_error(& index_loc, state, - "cannot dereference non-array / non-matrix / " - "non-vector"); + if (result->type->is_error()) error_emitted = true; - } - - if (!op[1]->type->is_integer()) { - _mesa_glsl_error(& index_loc, state, - "array index must be integer type"); - error_emitted = true; - } else if (!op[1]->type->is_scalar()) { - _mesa_glsl_error(& index_loc, state, - "array index must be scalar"); - error_emitted = true; - } - - /* If the array index is a constant expression and the array has a - * declared size, ensure that the access is in-bounds. If the array - * index is not a constant expression, ensure that the array has a - * declared size. - */ - ir_constant *const const_index = op[1]->constant_expression_value(); - if (const_index != NULL) { - const int idx = const_index->value.i[0]; - const char *type_name; - unsigned bound = 0; - - if (array->type->is_matrix()) { - type_name = "matrix"; - } else if (array->type->is_vector()) { - type_name = "vector"; - } else { - type_name = "array"; - } - - /* From page 24 (page 30 of the PDF) of the GLSL 1.50 spec: - * - * "It is illegal to declare an array with a size, and then - * later (in the same shader) index the same array with an - * integral constant expression greater than or equal to the - * declared size. It is also illegal to index an array with a - * negative constant expression." - */ - if (array->type->is_matrix()) { - if (array->type->row_type()->vector_elements <= idx) { - bound = array->type->row_type()->vector_elements; - } - } else if (array->type->is_vector()) { - if (array->type->vector_elements <= idx) { - bound = array->type->vector_elements; - } - } else { - if ((array->type->array_size() > 0) - && (array->type->array_size() <= idx)) { - bound = array->type->array_size(); - } - } - - if (bound > 0) { - _mesa_glsl_error(& loc, state, "%s index must be < %u", - type_name, bound); - error_emitted = true; - } else if (idx < 0) { - _mesa_glsl_error(& loc, state, "%s index must be >= 0", - type_name); - error_emitted = true; - } - - if (array->type->is_array()) { - /* If the array is a variable dereference, it dereferences the - * whole array, by definition. Use this to get the variable. - * - * FINISHME: Should some methods for getting / setting / testing - * FINISHME: array access limits be added to ir_dereference? - */ - ir_variable *const v = array->whole_variable_referenced(); - if ((v != NULL) && (unsigned(idx) > v->max_array_access)) { - v->max_array_access = idx; - - /* Check whether this access will, as a side effect, implicitly - * cause the size of a built-in array to be too large. - */ - if (check_builtin_array_max_size(v->name, idx+1, loc, state)) - error_emitted = true; - } - } - } else if (array->type->array_size() == 0) { - _mesa_glsl_error(&loc, state, "unsized array index must be constant"); - } else if (array->type->is_array() - && array->type->fields.array->is_interface()) { - /* Page 46 in section 4.3.7 of the OpenGL ES 3.00 spec says: - * - * "All indexes used to index a uniform block array must be - * constant integral expressions." - */ - _mesa_glsl_error(&loc, state, - "uniform block array index must be constant"); - } else { - if (array->type->is_array()) { - /* whole_variable_referenced can return NULL if the array is a - * member of a structure. In this case it is safe to not update - * the max_array_access field because it is never used for fields - * of structures. - */ - ir_variable *v = array->whole_variable_referenced(); - if (v != NULL) - v->max_array_access = array->type->array_size() - 1; - } - } - - /* From page 23 (29 of the PDF) of the GLSL 1.30 spec: - * - * "Samplers aggregated into arrays within a shader (using square - * brackets [ ]) can only be indexed with integral constant - * expressions [...]." - * - * This restriction was added in GLSL 1.30. Shaders using earlier version - * of the language should not be rejected by the compiler front-end for - * using this construct. This allows useful things such as using a loop - * counter as the index to an array of samplers. If the loop in unrolled, - * the code should compile correctly. Instead, emit a warning. - */ - if (array->type->is_array() && - array->type->element_type()->is_sampler() && - const_index == NULL) { - - if (!state->is_version(130, 100)) { - if (state->es_shader) { - _mesa_glsl_warning(&loc, state, - "sampler arrays indexed with non-constant " - "expressions is optional in %s", - state->get_version_string()); - } else { - _mesa_glsl_warning(&loc, state, - "sampler arrays indexed with non-constant " - "expressions will be forbidden in GLSL 1.30 and " - "later"); - } - } else { - _mesa_glsl_error(&loc, state, - "sampler arrays indexed with non-constant " - "expressions is forbidden in GLSL 1.30 and " - "later"); - error_emitted = true; - } - } - - if (error_emitted) - result->type = glsl_type::error_type; break; } @@ -1842,6 +1702,9 @@ process_array_type(YYLTYPE *loc, const glsl_type *base, ast_node *array_size, { unsigned length = 0; + if (base == NULL) + return glsl_type::error_type; + /* From page 19 (page 25) of the GLSL 1.20 spec: * * "Only one-dimensional arrays may be declared." @@ -1894,7 +1757,8 @@ process_array_type(YYLTYPE *loc, const glsl_type *base, ast_node *array_size, "allowed in GLSL ES 1.00."); } - return glsl_type::get_array_instance(base, length); + const glsl_type *array_type = glsl_type::get_array_instance(base, length); + return array_type != NULL ? array_type : glsl_type::error_type; } @@ -3365,10 +3229,17 @@ ast_function::hir(exec_list *instructions, "match prototype", name); } - if (is_definition && sig->is_defined) { - YYLTYPE loc = this->get_location(); - - _mesa_glsl_error(& loc, state, "function `%s' redefined", name); + if (sig->is_defined) { + if (is_definition) { + YYLTYPE loc = this->get_location(); + _mesa_glsl_error(& loc, state, "function `%s' redefined", name); + } else { + /* We just encountered a prototype that exactly matches a + * function that's already been defined. This is redundant, + * and we should ignore it. + */ + return NULL; + } } } } else { @@ -4149,8 +4020,14 @@ ast_process_structure_or_interface_block(exec_list *instructions, * blocks. All other types, arrays, and structures * allowed for uniforms are allowed within a uniform * block." + * + * It should be impossible for decl_type to be NULL here. Cases that + * might naturally lead to decl_type being NULL, especially for the + * is_interface case, will have resulted in compilation having + * already halted due to a syntax error. */ - const struct glsl_type *field_type = decl_type; + const struct glsl_type *field_type = + decl_type != NULL ? decl_type : glsl_type::error_type; if (is_interface && field_type->contains_sampler()) { YYLTYPE loc = decl_list->get_location(); @@ -4173,12 +4050,15 @@ ast_process_structure_or_interface_block(exec_list *instructions, field_type = process_array_type(&loc, decl_type, decl->array_size, state); } - fields[i].type = (field_type != NULL) - ? field_type : glsl_type::error_type; + fields[i].type = field_type; fields[i].name = decl->identifier; if (qual->flags.q.row_major || qual->flags.q.column_major) { - if (!field_type->is_matrix() && !field_type->is_record()) { + if (!qual->flags.q.uniform) { + _mesa_glsl_error(&loc, state, + "row_major and column_major can only be " + "applied to uniform interface blocks."); + } else if (!field_type->is_matrix() && !field_type->is_record()) { _mesa_glsl_error(&loc, state, "uniform block layout qualifiers row_major and " "column_major can only be applied to matrix and " @@ -4187,6 +4067,12 @@ ast_process_structure_or_interface_block(exec_list *instructions, validate_matrix_layout_for_type(state, &loc, field_type); } + if (qual->flags.q.uniform && qual->has_interpolation()) { + _mesa_glsl_error(&loc, state, + "interpolation qualifiers cannot be used " + "with uniform interface blocks"); + } + if (field_type->is_matrix() || (field_type->is_array() && field_type->fields.array->is_matrix())) { fields[i].row_major = block_row_major; @@ -4244,12 +4130,12 @@ ast_struct_specifier::hir(exec_list *instructions, } ir_rvalue * -ast_uniform_block::hir(exec_list *instructions, - struct _mesa_glsl_parse_state *state) +ast_interface_block::hir(exec_list *instructions, + struct _mesa_glsl_parse_state *state) { YYLTYPE loc = this->get_location(); - /* The ast_uniform_block has a list of ast_declarator_lists. We + /* The ast_interface_block has a list of ast_declarator_lists. We * need to turn those into ir_variables with an association * with this uniform block. */ @@ -4276,16 +4162,32 @@ ast_uniform_block::hir(exec_list *instructions, true, block_row_major); + ir_variable_mode var_mode; + const char *iface_type_name; + if (this->layout.flags.q.in) { + var_mode = ir_var_shader_in; + iface_type_name = "in"; + } else if (this->layout.flags.q.out) { + var_mode = ir_var_shader_out; + iface_type_name = "out"; + } else if (this->layout.flags.q.uniform) { + var_mode = ir_var_uniform; + iface_type_name = "uniform"; + } else { + assert(!"interface block layout qualifier not found!"); + } + const glsl_type *block_type = glsl_type::get_interface_instance(fields, num_variables, packing, this->block_name); - if (!state->symbols->add_type(block_type->name, block_type)) { + if (!state->symbols->add_interface(block_type->name, block_type, var_mode)) { YYLTYPE loc = this->get_location(); - _mesa_glsl_error(&loc, state, "Uniform block name `%s' already taken in " - "the current scope.\n", this->block_name); + _mesa_glsl_error(&loc, state, "Interface block `%s' with type `%s' " + "already taken in the current scope.\n", + this->block_name, iface_type_name); } /* Since interface blocks cannot contain statements, it should be @@ -4309,11 +4211,11 @@ ast_uniform_block::hir(exec_list *instructions, var = new(state) ir_variable(block_array_type, this->instance_name, - ir_var_uniform); + var_mode); } else { var = new(state) ir_variable(block_type, this->instance_name, - ir_var_uniform); + var_mode); } var->interface_type = block_type; @@ -4329,7 +4231,7 @@ ast_uniform_block::hir(exec_list *instructions, ir_variable *var = new(state) ir_variable(fields[i].type, ralloc_strdup(state, fields[i].name), - ir_var_uniform); + var_mode); var->interface_type = block_type; state->symbols->add_variable(var); diff --git a/mesalib/src/glsl/builtin_variables.cpp b/mesalib/src/glsl/builtin_variables.cpp index b0c7a2035..4bb361c2e 100644 --- a/mesalib/src/glsl/builtin_variables.cpp +++ b/mesalib/src/glsl/builtin_variables.cpp @@ -39,6 +39,12 @@ generate_ARB_draw_instanced_variables(exec_list *, struct _mesa_glsl_parse_state *, bool, _mesa_glsl_parser_targets); +static void +generate_AMD_vertex_shader_layer_variables(exec_list *instructions, + struct _mesa_glsl_parse_state *state, + bool warn, + _mesa_glsl_parser_targets target); + struct builtin_variable { enum ir_variable_mode mode; int slot; @@ -535,7 +541,7 @@ generate_common_ES_uniforms(exec_list *instructions, add_builtin_constant(instructions, symtab, "gl_MaxTextureImageUnits", state->Const.MaxTextureImageUnits); add_builtin_constant(instructions, symtab, "gl_MaxFragmentUniformVectors", - state->Const.MaxFragmentUniformComponents); + state->Const.MaxFragmentUniformComponents / 4); add_uniform(instructions, symtab, "gl_DepthRange", state->symbols->get_type("gl_DepthRangeParameters")); @@ -818,6 +824,8 @@ generate_130_vs_variables(exec_list *instructions, "gl_ClipDistance", clip_distance_array_type, ir_var_shader_out, VARYING_SLOT_CLIP_DIST0); + generate_AMD_vertex_shader_layer_variables(instructions, state, false, + vertex_shader); } @@ -1020,6 +1028,29 @@ generate_ARB_draw_instanced_variables(exec_list *instructions, } } +static void +generate_AMD_vertex_shader_layer_variables(exec_list *instructions, + struct _mesa_glsl_parse_state *state, + bool warn, + _mesa_glsl_parser_targets target) +{ + /* gl_Layer is only available in the vertex shader for the + * AMD_vertex_shader_layer extension. It will also be available in the + * geometry shader when GLSL 1.50 is supported. + */ + if (target != vertex_shader) + return; + + if (state->AMD_vertex_shader_layer_enable) { + ir_variable *inst = + add_variable(instructions, state->symbols, + "gl_Layer", glsl_type::int_type, + ir_var_shader_out, VARYING_SLOT_LAYER); + + if (warn) + inst->warn_extension = "GL_AMD_vertex_shader_layer"; + } +} static void generate_ARB_shader_stencil_export_variables(exec_list *instructions, diff --git a/mesalib/src/glsl/glcpp/glcpp-parse.y b/mesalib/src/glsl/glcpp/glcpp-parse.y index 00edbbfbd..81ba04bcc 100644 --- a/mesalib/src/glsl/glcpp/glcpp-parse.y +++ b/mesalib/src/glsl/glcpp/glcpp-parse.y @@ -1236,6 +1236,12 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api) if (extensions->ARB_texture_query_lod) add_builtin_define(parser, "GL_ARB_texture_query_lod", 1); + + if (extensions->ARB_gpu_shader5) + add_builtin_define(parser, "GL_ARB_gpu_shader5", 1); + + if (extensions->AMD_vertex_shader_layer) + add_builtin_define(parser, "GL_AMD_vertex_shader_layer", 1); } } diff --git a/mesalib/src/glsl/glcpp/pp.c b/mesalib/src/glsl/glcpp/pp.c index 789f7f941..7e1b6c689 100644 --- a/mesalib/src/glsl/glcpp/pp.c +++ b/mesalib/src/glsl/glcpp/pp.c @@ -97,8 +97,10 @@ remove_line_continuations(glcpp_parser_t *ctx, const char *shader) { ralloc_strncat(&clean, shader, newline - shader + 1); - while (collapsed_newlines--) + while (collapsed_newlines) { ralloc_strcat(&clean, "\n"); + collapsed_newlines--; + } shader = newline + 1; search_start = shader; } diff --git a/mesalib/src/glsl/glsl_parser.yy b/mesalib/src/glsl/glsl_parser.yy index f52ed9b0a..6e92c2651 100644 --- a/mesalib/src/glsl/glsl_parser.yy +++ b/mesalib/src/glsl/glsl_parser.yy @@ -79,7 +79,7 @@ static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state *st, const char *msg) ast_case_label_list *case_label_list; ast_case_statement *case_statement; ast_case_statement_list *case_statement_list; - ast_uniform_block *uniform_block; + ast_interface_block *interface_block; struct { ast_node *cond; @@ -115,7 +115,7 @@ static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state *st, const char *msg) %token STRUCT VOID_TOK WHILE %token IDENTIFIER TYPE_IDENTIFIER NEW_IDENTIFIER %type any_identifier -%type instance_name_opt +%type instance_name_opt %token FLOATCONSTANT %token INTCONSTANT UINTCONSTANT BOOLCONSTANT %token FIELD_SELECTION @@ -164,7 +164,8 @@ static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state *st, const char *msg) %type interpolation_qualifier %type layout_qualifier %type layout_qualifier_id_list layout_qualifier_id -%type uniform_block_layout_qualifier +%type interface_block_layout_qualifier +%type interface_qualifier %type type_specifier %type type_specifier_no_prec %type type_specifier_nonarray @@ -223,8 +224,8 @@ static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state *st, const char *msg) %type declaration %type declaration_statement %type jump_statement -%type uniform_block -%type basic_uniform_block +%type interface_block +%type basic_interface_block %type struct_specifier %type struct_declaration_list %type struct_declaration @@ -784,7 +785,7 @@ declaration: $3->is_precision_statement = true; $$ = $3; } - | uniform_block + | interface_block { $$ = $1; } @@ -1140,7 +1141,7 @@ layout_qualifier_id: } } - /* See also uniform_block_layout_qualifier. */ + /* See also interface_block_layout_qualifier. */ if (!$$.flags.i && state->ARB_uniform_buffer_object_enable) { if (strcmp($1, "std140") == 0) { $$.flags.q.std140 = 1; @@ -1211,15 +1212,15 @@ layout_qualifier_id: "identifier `%s' used\n", $1); } } - | uniform_block_layout_qualifier + | interface_block_layout_qualifier { $$ = $1; /* Layout qualifiers for ARB_uniform_buffer_object. */ - if (!state->ARB_uniform_buffer_object_enable) { + if ($$.flags.q.uniform && !state->ARB_uniform_buffer_object_enable) { _mesa_glsl_error(& @1, state, "#version 140 / GL_ARB_uniform_buffer_object " "layout qualifier `%s' is used\n", $1); - } else if (state->ARB_uniform_buffer_object_warn) { + } else if ($$.flags.q.uniform && state->ARB_uniform_buffer_object_warn) { _mesa_glsl_warning(& @1, state, "#version 140 / GL_ARB_uniform_buffer_object " "layout qualifier `%s' is used\n", $1); @@ -1232,7 +1233,7 @@ layout_qualifier_id: * most qualifiers. See the any_identifier path of * layout_qualifier_id for the others. */ -uniform_block_layout_qualifier: +interface_block_layout_qualifier: ROW_MAJOR { memset(& $$, 0, sizeof($$)); @@ -1893,14 +1894,14 @@ function_definition: ; /* layout_qualifieropt is packed into this rule */ -uniform_block: - basic_uniform_block +interface_block: + basic_interface_block { $$ = $1; } - | layout_qualifier basic_uniform_block + | layout_qualifier basic_interface_block { - ast_uniform_block *block = $2; + ast_interface_block *block = $2; if (!block->layout.merge_qualifier(& @1, state, $1)) { YYERROR; } @@ -1908,55 +1909,137 @@ uniform_block: } ; -basic_uniform_block: - UNIFORM NEW_IDENTIFIER '{' member_list '}' instance_name_opt ';' +basic_interface_block: + interface_qualifier NEW_IDENTIFIER '{' member_list '}' instance_name_opt ';' { - ast_uniform_block *const block = $6; + ast_interface_block *const block = $6; block->block_name = $2; block->declarations.push_degenerate_list_at_head(& $4->link); - if (!state->ARB_uniform_buffer_object_enable) { + if ($1.flags.q.uniform) { + if (!state->ARB_uniform_buffer_object_enable) { + _mesa_glsl_error(& @1, state, + "#version 140 / GL_ARB_uniform_buffer_object " + "required for defining uniform blocks\n"); + } else if (state->ARB_uniform_buffer_object_warn) { + _mesa_glsl_warning(& @1, state, + "#version 140 / GL_ARB_uniform_buffer_object " + "required for defining uniform blocks\n"); + } + } else { + if (state->es_shader || state->language_version < 150) { + _mesa_glsl_error(& @1, state, + "#version 150 required for using " + "interface blocks.\n"); + } + } + + /* From the GLSL 1.50.11 spec, section 4.3.7 ("Interface Blocks"): + * "It is illegal to have an input block in a vertex shader + * or an output block in a fragment shader" + */ + if ((state->target == vertex_shader) && $1.flags.q.in) { _mesa_glsl_error(& @1, state, - "#version 140 / GL_ARB_uniform_buffer_object " - "required for defining uniform blocks\n"); - } else if (state->ARB_uniform_buffer_object_warn) { - _mesa_glsl_warning(& @1, state, - "#version 140 / GL_ARB_uniform_buffer_object " - "required for defining uniform blocks\n"); + "`in' interface block is not allowed for " + "a vertex shader\n"); + } else if ((state->target == fragment_shader) && $1.flags.q.out) { + _mesa_glsl_error(& @1, state, + "`out' interface block is not allowed for " + "a fragment shader\n"); } /* Since block arrays require names, and both features are added in * the same language versions, we don't have to explicitly * version-check both things. */ - if (block->instance_name != NULL - && !(state->language_version == 300 && state->es_shader)) { - _mesa_glsl_error(& @1, state, - "#version 300 es required for using uniform " - "blocks with an instance name\n"); + if (block->instance_name != NULL) { + state->check_version(150, 300, & @1, "interface blocks with " + "an instance name are not allowed"); + } + + unsigned interface_type_mask; + struct ast_type_qualifier temp_type_qualifier; + + /* Get a bitmask containing only the in/out/uniform flags, allowing us + * to ignore other irrelevant flags like interpolation qualifiers. + */ + temp_type_qualifier.flags.i = 0; + temp_type_qualifier.flags.q.uniform = true; + temp_type_qualifier.flags.q.in = true; + temp_type_qualifier.flags.q.out = true; + interface_type_mask = temp_type_qualifier.flags.i; + + /* Get the block's interface qualifier. The interface_qualifier + * production rule guarantees that only one bit will be set (and + * it will be in/out/uniform). + */ + unsigned block_interface_qualifier = $1.flags.i; + + block->layout.flags.i |= block_interface_qualifier; + + foreach_list_typed (ast_declarator_list, member, link, &block->declarations) { + ast_type_qualifier& qualifier = member->type->qualifier; + if ((qualifier.flags.i & interface_type_mask) == 0) { + /* GLSLangSpec.1.50.11, 4.3.7 (Interface Blocks): + * "If no optional qualifier is used in a member declaration, the + * qualifier of the variable is just in, out, or uniform as declared + * by interface-qualifier." + */ + qualifier.flags.i |= block_interface_qualifier; + } else if ((qualifier.flags.i & interface_type_mask) != + block_interface_qualifier) { + /* GLSLangSpec.1.50.11, 4.3.7 (Interface Blocks): + * "If optional qualifiers are used, they can include interpolation + * and storage qualifiers and they must declare an input, output, + * or uniform variable consistent with the interface qualifier of + * the block." + */ + _mesa_glsl_error(& @1, state, + "uniform/in/out qualifier on " + "interface block member does not match " + "the interface block\n"); + } } $$ = block; } ; +interface_qualifier: + IN_TOK + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.in = 1; + } + | OUT_TOK + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.out = 1; + } + | UNIFORM + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.uniform = 1; + } + ; + instance_name_opt: /* empty */ { - $$ = new(state) ast_uniform_block(*state->default_uniform_qualifier, + $$ = new(state) ast_interface_block(*state->default_uniform_qualifier, NULL, NULL); } | NEW_IDENTIFIER { - $$ = new(state) ast_uniform_block(*state->default_uniform_qualifier, + $$ = new(state) ast_interface_block(*state->default_uniform_qualifier, $1, NULL); } | NEW_IDENTIFIER '[' constant_expression ']' { - $$ = new(state) ast_uniform_block(*state->default_uniform_qualifier, + $$ = new(state) ast_interface_block(*state->default_uniform_qualifier, $1, $3); } @@ -1965,7 +2048,7 @@ instance_name_opt: _mesa_glsl_error(& @1, state, "instance block arrays must be explicitly sized\n"); - $$ = new(state) ast_uniform_block(*state->default_uniform_qualifier, + $$ = new(state) ast_interface_block(*state->default_uniform_qualifier, $1, NULL); } @@ -1984,41 +2067,28 @@ member_list: } ; -/* Specifying "uniform" inside of a uniform block is redundant. */ -uniformopt: - /* nothing */ - | UNIFORM - ; - member_declaration: - layout_qualifier uniformopt type_specifier struct_declarator_list ';' + fully_specified_type struct_declarator_list ';' { void *ctx = state; - ast_fully_specified_type *type = new(ctx) ast_fully_specified_type(); + ast_fully_specified_type *type = $1; type->set_location(yylloc); - type->qualifier = $1; - type->qualifier.flags.q.uniform = true; - type->specifier = $3; - $$ = new(ctx) ast_declarator_list(type); - $$->set_location(yylloc); - $$->ubo_qualifiers_valid = true; - - $$->declarations.push_degenerate_list_at_head(& $4->link); - } - | uniformopt type_specifier struct_declarator_list ';' - { - void *ctx = state; - ast_fully_specified_type *type = new(ctx) ast_fully_specified_type(); - type->set_location(yylloc); + if (type->qualifier.flags.q.attribute) { + _mesa_glsl_error(& @1, state, + "keyword 'attribute' cannot be used with " + "interface block member\n"); + } else if (type->qualifier.flags.q.varying) { + _mesa_glsl_error(& @1, state, + "keyword 'varying' cannot be used with " + "interface block member\n"); + } - type->qualifier.flags.q.uniform = true; - type->specifier = $2; $$ = new(ctx) ast_declarator_list(type); $$->set_location(yylloc); $$->ubo_qualifiers_valid = true; - $$->declarations.push_degenerate_list_at_head(& $3->link); + $$->declarations.push_degenerate_list_at_head(& $2->link); } ; diff --git a/mesalib/src/glsl/glsl_parser_extras.cpp b/mesalib/src/glsl/glsl_parser_extras.cpp index 099229410..c0dd71370 100644 --- a/mesalib/src/glsl/glsl_parser_extras.cpp +++ b/mesalib/src/glsl/glsl_parser_extras.cpp @@ -93,9 +93,9 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx, this->Const.MaxVertexAttribs = ctx->Const.VertexProgram.MaxAttribs; this->Const.MaxVertexUniformComponents = ctx->Const.VertexProgram.MaxUniformComponents; this->Const.MaxVaryingFloats = ctx->Const.MaxVarying * 4; - this->Const.MaxVertexTextureImageUnits = ctx->Const.MaxVertexTextureImageUnits; + this->Const.MaxVertexTextureImageUnits = ctx->Const.VertexProgram.MaxTextureImageUnits; this->Const.MaxCombinedTextureImageUnits = ctx->Const.MaxCombinedTextureImageUnits; - this->Const.MaxTextureImageUnits = ctx->Const.MaxTextureImageUnits; + this->Const.MaxTextureImageUnits = ctx->Const.FragmentProgram.MaxTextureImageUnits; this->Const.MaxFragmentUniformComponents = ctx->Const.FragmentProgram.MaxUniformComponents; this->Const.MinProgramTexelOffset = ctx->Const.MinProgramTexelOffset; this->Const.MaxProgramTexelOffset = ctx->Const.MaxProgramTexelOffset; @@ -468,6 +468,8 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = { EXT(ARB_shading_language_packing, true, false, true, true, false, ARB_shading_language_packing), EXT(ARB_texture_multisample, true, false, true, true, false, ARB_texture_multisample), EXT(ARB_texture_query_lod, false, false, true, true, false, ARB_texture_query_lod), + EXT(ARB_gpu_shader5, true, true, true, true, false, ARB_gpu_shader5), + EXT(AMD_vertex_shader_layer, true, false, false, true, false, AMD_vertex_shader_layer), }; #undef EXT @@ -1202,11 +1204,13 @@ ast_struct_specifier::ast_struct_specifier(const char *identifier, * \param max_unroll_iterations Maximum number of loop iterations to be * unrolled. Setting to 0 disables loop * unrolling. + * \param options The driver's preferred shader options. */ bool do_common_optimization(exec_list *ir, bool linked, bool uniform_locations_assigned, - unsigned max_unroll_iterations) + unsigned max_unroll_iterations, + const struct gl_shader_compiler_options *options) { GLboolean progress = GL_FALSE; @@ -1221,6 +1225,10 @@ do_common_optimization(exec_list *ir, bool linked, progress = opt_flatten_nested_if_blocks(ir) || progress; progress = do_copy_propagation(ir) || progress; progress = do_copy_propagation_elements(ir) || progress; + + if (options->PreferDP4 && !linked) + progress = opt_flip_matrices(ir) || progress; + if (linked) progress = do_dead_code(ir, uniform_locations_assigned) || progress; else @@ -1236,6 +1244,7 @@ do_common_optimization(exec_list *ir, bool linked, progress = do_algebraic(ir) || progress; progress = do_lower_jumps(ir) || progress; progress = do_vec_index_to_swizzle(ir) || progress; + progress = lower_vector_insert(ir, false) || progress; progress = do_swizzle_swizzle(ir) || progress; progress = do_noop_swizzle(ir) || progress; diff --git a/mesalib/src/glsl/glsl_parser_extras.h b/mesalib/src/glsl/glsl_parser_extras.h index 95891b595..16e180d3e 100644 --- a/mesalib/src/glsl/glsl_parser_extras.h +++ b/mesalib/src/glsl/glsl_parser_extras.h @@ -284,6 +284,10 @@ struct _mesa_glsl_parse_state { bool ARB_texture_multisample_warn; bool ARB_texture_query_lod_enable; bool ARB_texture_query_lod_warn; + bool ARB_gpu_shader5_enable; + bool ARB_gpu_shader5_warn; + bool AMD_vertex_shader_layer_enable; + bool AMD_vertex_shader_layer_warn; /*@}*/ /** Extensions supported by the OpenGL implementation. */ diff --git a/mesalib/src/glsl/glsl_symbol_table.cpp b/mesalib/src/glsl/glsl_symbol_table.cpp index 8d34547c6..50bf11302 100644 --- a/mesalib/src/glsl/glsl_symbol_table.cpp +++ b/mesalib/src/glsl/glsl_symbol_table.cpp @@ -41,13 +41,67 @@ public: ralloc_free(entry); } - symbol_table_entry(ir_variable *v) : v(v), f(0), t(0) {} - symbol_table_entry(ir_function *f) : v(0), f(f), t(0) {} - symbol_table_entry(const glsl_type *t) : v(0), f(0), t(t) {} + bool add_interface(const glsl_type *i, enum ir_variable_mode mode) + { + const glsl_type **dest; + + switch (mode) { + case ir_var_uniform: + dest = &ibu; + break; + case ir_var_shader_in: + dest = &ibi; + break; + case ir_var_shader_out: + dest = &ibo; + break; + default: + assert(!"Unsupported interface variable mode!"); + return false; + } + + if (*dest != NULL) { + return false; + } else { + *dest = i; + return true; + } + } + + const glsl_type *get_interface(enum ir_variable_mode mode) + { + switch (mode) { + case ir_var_uniform: + return ibu; + case ir_var_shader_in: + return ibi; + case ir_var_shader_out: + return ibo; + default: + assert(!"Unsupported interface variable mode!"); + return NULL; + } + } + + symbol_table_entry(ir_variable *v) : + v(v), f(0), t(0), ibu(0), ibi(0), ibo(0) {} + symbol_table_entry(ir_function *f) : + v(0), f(f), t(0), ibu(0), ibi(0), ibo(0) {} + symbol_table_entry(const glsl_type *t) : + v(0), f(0), t(t), ibu(0), ibi(0), ibo(0) {} + symbol_table_entry(const glsl_type *t, enum ir_variable_mode mode) : + v(0), f(0), t(0), ibu(0), ibi(0), ibo(0) + { + assert(t->is_interface()); + add_interface(t, mode); + } ir_variable *v; ir_function *f; const glsl_type *t; + const glsl_type *ibu; + const glsl_type *ibi; + const glsl_type *ibo; }; glsl_symbol_table::glsl_symbol_table() @@ -118,6 +172,23 @@ bool glsl_symbol_table::add_type(const char *name, const glsl_type *t) return _mesa_symbol_table_add_symbol(table, -1, name, entry) == 0; } +bool glsl_symbol_table::add_interface(const char *name, const glsl_type *i, + enum ir_variable_mode mode) +{ + assert(i->is_interface()); + symbol_table_entry *entry = get_entry(name); + if (entry == NULL) { + symbol_table_entry *entry = + new(mem_ctx) symbol_table_entry(i, mode); + bool add_interface_symbol_result = + _mesa_symbol_table_add_symbol(table, -1, name, entry) == 0; + assert(add_interface_symbol_result); + return add_interface_symbol_result; + } else { + return entry->add_interface(i, mode); + } +} + bool glsl_symbol_table::add_function(ir_function *f) { if (this->separate_function_namespace && name_declared_this_scope(f->name)) { @@ -152,6 +223,13 @@ const glsl_type *glsl_symbol_table::get_type(const char *name) return entry != NULL ? entry->t : NULL; } +const glsl_type *glsl_symbol_table::get_interface(const char *name, + enum ir_variable_mode mode) +{ + symbol_table_entry *entry = get_entry(name); + return entry != NULL ? entry->get_interface(mode) : NULL; +} + ir_function *glsl_symbol_table::get_function(const char *name) { symbol_table_entry *entry = get_entry(name); diff --git a/mesalib/src/glsl/glsl_symbol_table.h b/mesalib/src/glsl/glsl_symbol_table.h index 9f5602787..2753bdf31 100644 --- a/mesalib/src/glsl/glsl_symbol_table.h +++ b/mesalib/src/glsl/glsl_symbol_table.h @@ -99,6 +99,8 @@ public: bool add_variable(ir_variable *v); bool add_type(const char *name, const glsl_type *t); bool add_function(ir_function *f); + bool add_interface(const char *name, const glsl_type *i, + enum ir_variable_mode mode); /*@}*/ /** @@ -113,6 +115,8 @@ public: ir_variable *get_variable(const char *name); const glsl_type *get_type(const char *name); ir_function *get_function(const char *name); + const glsl_type *get_interface(const char *name, + enum ir_variable_mode mode); /*@}*/ private: diff --git a/mesalib/src/glsl/glsl_types.cpp b/mesalib/src/glsl/glsl_types.cpp index 419761a7d..df9c5d36f 100644 --- a/mesalib/src/glsl/glsl_types.cpp +++ b/mesalib/src/glsl/glsl_types.cpp @@ -57,6 +57,7 @@ glsl_type::glsl_type(GLenum gl_type, length(0) { init_ralloc_type_ctx(); + assert(name != NULL); this->name = ralloc_strdup(this->mem_ctx, name); /* Neither dimension is zero or both dimensions are zero. */ @@ -75,6 +76,7 @@ glsl_type::glsl_type(GLenum gl_type, length(0) { init_ralloc_type_ctx(); + assert(name != NULL); this->name = ralloc_strdup(this->mem_ctx, name); memset(& fields, 0, sizeof(fields)); } @@ -91,6 +93,7 @@ glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields, unsigned int i; init_ralloc_type_ctx(); + assert(name != NULL); this->name = ralloc_strdup(this->mem_ctx, name); this->fields.structure = ralloc_array(this->mem_ctx, glsl_struct_field, length); @@ -114,6 +117,7 @@ glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields, unsigned int i; init_ralloc_type_ctx(); + assert(name != NULL); this->name = ralloc_strdup(this->mem_ctx, name); this->fields.structure = ralloc_array(this->mem_ctx, glsl_struct_field, length); diff --git a/mesalib/src/glsl/glsl_types.h b/mesalib/src/glsl/glsl_types.h index 2f3b19f51..31e3dd253 100644 --- a/mesalib/src/glsl/glsl_types.h +++ b/mesalib/src/glsl/glsl_types.h @@ -132,8 +132,7 @@ struct glsl_type { /** * Name of the data type * - * This may be \c NULL for anonymous structures, for arrays, or for - * function types. + * Will never be \c NULL. */ const char *name; diff --git a/mesalib/src/glsl/ir.cpp b/mesalib/src/glsl/ir.cpp index 05b77da2c..dad58deeb 100644 --- a/mesalib/src/glsl/ir.cpp +++ b/mesalib/src/glsl/ir.cpp @@ -399,6 +399,10 @@ ir_expression::ir_expression(int op, ir_rvalue *op0, ir_rvalue *op1) this->type = op0->type; break; + case ir_binop_vector_extract: + this->type = op0->type->get_scalar_type(); + break; + default: assert(!"not reached: missing automatic type setup for ir_expression"); this->type = glsl_type::float_type; @@ -419,7 +423,7 @@ ir_expression::get_num_operands(ir_expression_operation op) if (op <= ir_last_triop) return 3; - if (op == ir_quadop_vector) + if (op <= ir_last_quadop) return 4; assert(false); @@ -477,6 +481,10 @@ static const char *const operator_strs[] = { "unpackHalf2x16", "unpackHalf2x16_split_x", "unpackHalf2x16_split_y", + "bitfield_reverse", + "bit_count", + "find_msb", + "find_lsb", "noise", "+", "-", @@ -504,8 +512,14 @@ static const char *const operator_strs[] = { "max", "pow", "packHalf2x16_split", + "bfm", "ubo_load", + "vector_extract", "lrp", + "bfi", + "bitfield_extract", + "vector_insert", + "bitfield_insert", "vector", }; diff --git a/mesalib/src/glsl/ir.h b/mesalib/src/glsl/ir.h index 0c3e39979..6d4150136 100644 --- a/mesalib/src/glsl/ir.h +++ b/mesalib/src/glsl/ir.h @@ -131,6 +131,7 @@ public: virtual class ir_swizzle * as_swizzle() { return NULL; } virtual class ir_constant * as_constant() { return NULL; } virtual class ir_discard * as_discard() { return NULL; } + virtual class ir_jump * as_jump() { return NULL; } /*@}*/ protected: @@ -273,7 +274,8 @@ enum ir_variable_mode { ir_var_function_inout, ir_var_const_in, /**< "in" param that must be a constant expression */ ir_var_system_value, /**< Ex: front-face, instance-id, etc. */ - ir_var_temporary /**< Temporary variable generated during compilation. */ + ir_var_temporary, /**< Temporary variable generated during compilation. */ + ir_var_mode_count /**< Number of variable modes */ }; /** @@ -1031,6 +1033,16 @@ enum ir_expression_operation { ir_unop_unpack_half_2x16_split_y, /*@}*/ + /** + * \name Bit operations, part of ARB_gpu_shader5. + */ + /*@{*/ + ir_unop_bitfield_reverse, + ir_unop_bit_count, + ir_unop_find_msb, + ir_unop_find_lsb, + /*@}*/ + ir_unop_noise, /** @@ -1106,6 +1118,15 @@ enum ir_expression_operation { ir_binop_pack_half_2x16_split, /*@}*/ + /** + * \name First half of a lowered bitfieldInsert() operation. + * + * \see lower_instructions::bitfield_insert_to_bfm_bfi + */ + /*@{*/ + ir_binop_bfm, + /*@}*/ + /** * Load a value the size of a given GLSL type from a uniform block. * @@ -1114,20 +1135,55 @@ enum ir_expression_operation { */ ir_binop_ubo_load, + /** + * Extract a scalar from a vector + * + * operand0 is the vector + * operand1 is the index of the field to read from operand0 + */ + ir_binop_vector_extract, + /** * A sentinel marking the last of the binary operations. */ - ir_last_binop = ir_binop_ubo_load, + ir_last_binop = ir_binop_vector_extract, ir_triop_lrp, + /** + * \name Second half of a lowered bitfieldInsert() operation. + * + * \see lower_instructions::bitfield_insert_to_bfm_bfi + */ + /*@{*/ + ir_triop_bfi, + /*@}*/ + + ir_triop_bitfield_extract, + + /** + * Generate a value with one field of a vector changed + * + * operand0 is the vector + * operand1 is the value to write into the vector result + * operand2 is the index in operand0 to be modified + */ + ir_triop_vector_insert, + /** * A sentinel marking the last of the ternary operations. */ - ir_last_triop = ir_triop_lrp, + ir_last_triop = ir_triop_vector_insert, + + ir_quadop_bitfield_insert, ir_quadop_vector, + /** + * A sentinel marking the last of the ternary operations. + */ + ir_last_quadop = ir_quadop_vector, + /** * A sentinel marking the last of all operations. */ @@ -1297,6 +1353,12 @@ protected: { ir_type = ir_type_unset; } + +public: + virtual ir_jump *as_jump() + { + return this; + } }; class ir_return : public ir_jump { diff --git a/mesalib/src/glsl/ir_basic_block.cpp b/mesalib/src/glsl/ir_basic_block.cpp index 86e0cf795..2cbc682d4 100644 --- a/mesalib/src/glsl/ir_basic_block.cpp +++ b/mesalib/src/glsl/ir_basic_block.cpp @@ -77,7 +77,7 @@ void call_for_basic_blocks(exec_list *instructions, callback(leader, ir, data); leader = NULL; call_for_basic_blocks(&ir_loop->body_instructions, callback, data); - } else if (ir->as_return() || ir->as_call()) { + } else if (ir->as_jump() || ir->as_call()) { callback(leader, ir, data); leader = NULL; } else if ((ir_function = ir->as_function())) { diff --git a/mesalib/src/glsl/ir_constant_expression.cpp b/mesalib/src/glsl/ir_constant_expression.cpp index c09e56a3d..0a725b45b 100644 --- a/mesalib/src/glsl/ir_constant_expression.cpp +++ b/mesalib/src/glsl/ir_constant_expression.cpp @@ -391,9 +391,17 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) } if (op[1] != NULL) - assert(op[0]->type->base_type == op[1]->type->base_type || - this->operation == ir_binop_lshift || - this->operation == ir_binop_rshift); + switch (this->operation) { + case ir_binop_lshift: + case ir_binop_rshift: + case ir_binop_vector_extract: + case ir_triop_bitfield_extract: + break; + + default: + assert(op[0]->type->base_type == op[1]->type->base_type); + break; + } bool op0_scalar = op[0]->type->is_scalar(); bool op1_scalar = op[1] != NULL && op[1]->type->is_scalar(); @@ -1230,6 +1238,29 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) } break; + case ir_binop_vector_extract: { + const int c = CLAMP(op[1]->value.i[0], 0, + (int) op[0]->type->vector_elements - 1); + + switch (op[0]->type->base_type) { + case GLSL_TYPE_UINT: + data.u[0] = op[0]->value.u[c]; + break; + case GLSL_TYPE_INT: + data.i[0] = op[0]->value.i[c]; + break; + case GLSL_TYPE_FLOAT: + data.f[0] = op[0]->value.f[c]; + break; + case GLSL_TYPE_BOOL: + data.b[0] = op[0]->value.b[c]; + break; + default: + assert(0); + } + break; + } + case ir_binop_bit_xor: for (unsigned c = 0, c0 = 0, c1 = 0; c < components; @@ -1248,6 +1279,102 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) } break; + case ir_unop_bitfield_reverse: + /* http://graphics.stanford.edu/~seander/bithacks.html#BitReverseObvious */ + for (unsigned c = 0; c < components; c++) { + unsigned int v = op[0]->value.u[c]; // input bits to be reversed + unsigned int r = v; // r will be reversed bits of v; first get LSB of v + int s = sizeof(v) * CHAR_BIT - 1; // extra shift needed at end + + for (v >>= 1; v; v >>= 1) { + r <<= 1; + r |= v & 1; + s--; + } + r <<= s; // shift when v's highest bits are zero + + data.u[c] = r; + } + break; + + case ir_unop_bit_count: + for (unsigned c = 0; c < components; c++) { + unsigned count = 0; + unsigned v = op[0]->value.u[c]; + + for (; v; count++) { + v &= v - 1; + } + data.u[c] = count; + } + break; + + case ir_unop_find_msb: + for (unsigned c = 0; c < components; c++) { + int v = op[0]->value.i[c]; + + if (v == 0 || (op[0]->type->base_type == GLSL_TYPE_INT && v == -1)) + data.i[c] = -1; + else { + int count = 0; + int top_bit = op[0]->type->base_type == GLSL_TYPE_UINT + ? 0 : v & (1 << 31); + + while (((v & (1 << 31)) == top_bit) && count != 32) { + count++; + v <<= 1; + } + + data.i[c] = 31 - count; + } + } + break; + + case ir_unop_find_lsb: + for (unsigned c = 0; c < components; c++) { + if (op[0]->value.i[c] == 0) + data.i[c] = -1; + else { + unsigned pos = 0; + unsigned v = op[0]->value.u[c]; + + for (; !(v & 1); v >>= 1) { + pos++; + } + data.u[c] = pos; + } + } + break; + + case ir_triop_bitfield_extract: { + int offset = op[1]->value.i[0]; + int bits = op[2]->value.i[0]; + + for (unsigned c = 0; c < components; c++) { + if (bits == 0) + data.u[c] = 0; + else if (offset < 0 || bits < 0) + data.u[c] = 0; /* Undefined, per spec. */ + else if (offset + bits > 32) + data.u[c] = 0; /* Undefined, per spec. */ + else { + if (op[0]->type->base_type == GLSL_TYPE_INT) { + /* int so that the right shift will sign-extend. */ + int value = op[0]->value.i[c]; + value <<= 32 - bits - offset; + value >>= 32 - bits; + data.i[c] = value; + } else { + unsigned value = op[0]->value.u[c]; + value <<= 32 - bits - offset; + value >>= 32 - bits; + data.u[c] = value; + } + } + } + break; + } + case ir_triop_lrp: { assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); assert(op[1]->type->base_type == GLSL_TYPE_FLOAT); @@ -1261,6 +1388,58 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) break; } + case ir_triop_vector_insert: { + const unsigned idx = op[2]->value.u[0]; + + memcpy(&data, &op[0]->value, sizeof(data)); + + switch (this->type->base_type) { + case GLSL_TYPE_INT: + data.i[idx] = op[1]->value.i[0]; + break; + case GLSL_TYPE_UINT: + data.u[idx] = op[1]->value.u[0]; + break; + case GLSL_TYPE_FLOAT: + data.f[idx] = op[1]->value.f[0]; + break; + case GLSL_TYPE_BOOL: + data.b[idx] = op[1]->value.b[0]; + break; + default: + assert(!"Should not get here."); + break; + } + break; + } + + case ir_quadop_bitfield_insert: { + int offset = op[2]->value.i[0]; + int bits = op[3]->value.i[0]; + + for (unsigned c = 0; c < components; c++) { + if (bits == 0) + data.u[c] = op[0]->value.u[c]; + else if (offset < 0 || bits < 0) + data.u[c] = 0; /* Undefined, per spec. */ + else if (offset + bits > 32) + data.u[c] = 0; /* Undefined, per spec. */ + else { + unsigned insert_mask = ((1 << bits) - 1) << offset; + + unsigned insert = op[1]->value.u[c]; + insert <<= offset; + insert &= insert_mask; + + unsigned base = op[0]->value.u[c]; + base &= ~insert_mask; + + data.u[c] = base | insert; + } + } + break; + } + case ir_quadop_vector: for (unsigned c = 0; c < this->type->vector_elements; c++) { switch (this->type->base_type) { diff --git a/mesalib/src/glsl/ir_optimization.h b/mesalib/src/glsl/ir_optimization.h index a8885d722..d38d5e303 100644 --- a/mesalib/src/glsl/ir_optimization.h +++ b/mesalib/src/glsl/ir_optimization.h @@ -37,6 +37,7 @@ #define MOD_TO_FRACT 0x20 #define INT_DIV_TO_MUL_RCP 0x40 #define LRP_TO_ARITH 0x80 +#define BITFIELD_INSERT_TO_BFM_BFI 0x100 /** * \see class lower_packing_builtins_visitor @@ -65,7 +66,8 @@ enum lower_packing_builtins_op { bool do_common_optimization(exec_list *ir, bool linked, bool uniform_locations_assigned, - unsigned max_unroll_iterations); + unsigned max_unroll_iterations, + const struct gl_shader_compiler_options *options); bool do_algebraic(exec_list *instructions); bool do_constant_folding(exec_list *instructions); @@ -78,6 +80,7 @@ bool do_dead_code(exec_list *instructions, bool uniform_locations_assigned); bool do_dead_code_local(exec_list *instructions); bool do_dead_code_unlinked(exec_list *instructions); bool do_dead_functions(exec_list *instructions); +bool opt_flip_matrices(exec_list *instructions); bool do_function_inlining(exec_list *instructions); bool do_lower_jumps(exec_list *instructions, bool pull_out_jumps = true, bool lower_sub_return = true, bool lower_main_return = false, bool lower_continue = false, bool lower_break = false); bool do_lower_texture_projection(exec_list *instructions); @@ -106,6 +109,8 @@ void lower_ubo_reference(struct gl_shader *shader, exec_list *instructions); void lower_packed_varyings(void *mem_ctx, unsigned location_base, unsigned locations_used, ir_variable_mode mode, gl_shader *shader); +bool lower_vector_insert(exec_list *instructions, bool lower_nonconstant_index); +void lower_named_interface_blocks(void *mem_ctx, gl_shader *shader); bool optimize_redundant_jumps(exec_list *instructions); bool optimize_split_arrays(exec_list *instructions, bool linked); diff --git a/mesalib/src/glsl/ir_print_visitor.cpp b/mesalib/src/glsl/ir_print_visitor.cpp index 597d2813f..f01019c98 100644 --- a/mesalib/src/glsl/ir_print_visitor.cpp +++ b/mesalib/src/glsl/ir_print_visitor.cpp @@ -24,6 +24,7 @@ #include "ir_print_visitor.h" #include "glsl_types.h" #include "glsl_parser_extras.h" +#include "main/macros.h" #include "program/hash_table.h" static void print_type(const glsl_type *t); @@ -149,7 +150,9 @@ void ir_print_visitor::visit(ir_variable *ir) const char *const mode[] = { "", "uniform ", "shader_in ", "shader_out ", "in ", "out ", "inout ", "const_in ", "sys ", "temporary " }; - const char *const interp[] = { "", "flat", "noperspective" }; + STATIC_ASSERT(ARRAY_SIZE(mode) == ir_var_mode_count); + const char *const interp[] = { "", "smooth", "flat", "noperspective" }; + STATIC_ASSERT(ARRAY_SIZE(interp) == INTERP_QUALIFIER_COUNT); printf("(%s%s%s%s) ", cent, inv, mode[ir->mode], interp[ir->interpolation]); diff --git a/mesalib/src/glsl/ir_reader.cpp b/mesalib/src/glsl/ir_reader.cpp index 16fdc41b4..b3667124f 100644 --- a/mesalib/src/glsl/ir_reader.cpp +++ b/mesalib/src/glsl/ir_reader.cpp @@ -676,16 +676,18 @@ ir_reader::read_expression(s_expression *expr) { s_expression *s_type; s_symbol *s_op; - s_expression *s_arg[3]; + s_expression *s_arg[4] = {NULL}; s_pattern pat[] = { "expression", s_type, s_op, s_arg[0] }; if (!PARTIAL_MATCH(expr, pat)) { ir_read_error(expr, "expected (expression " - " [])"); + " [] [] [])"); return NULL; } s_arg[1] = (s_expression *) s_arg[0]->next; // may be tail sentinel s_arg[2] = (s_expression *) s_arg[1]->next; // may be tail sentinel or NULL + if (s_arg[2]) + s_arg[3] = (s_expression *) s_arg[2]->next; // may be tail sentinel or NULL const glsl_type *type = read_type(s_type); if (type == NULL) @@ -709,7 +711,7 @@ ir_reader::read_expression(s_expression *expr) return NULL; } - ir_rvalue *arg[3] = {NULL, NULL, NULL}; + ir_rvalue *arg[4] = {NULL}; for (int i = 0; i < num_operands; i++) { arg[i] = read_rvalue(s_arg[i]); if (arg[i] == NULL) { @@ -718,7 +720,7 @@ ir_reader::read_expression(s_expression *expr) } } - return new(mem_ctx) ir_expression(op, type, arg[0], arg[1], arg[2]); + return new(mem_ctx) ir_expression(op, type, arg[0], arg[1], arg[2], arg[3]); } ir_swizzle * diff --git a/mesalib/src/glsl/ir_uniform.h b/mesalib/src/glsl/ir_uniform.h index 30e6f260d..8198c4819 100644 --- a/mesalib/src/glsl/ir_uniform.h +++ b/mesalib/src/glsl/ir_uniform.h @@ -99,15 +99,24 @@ struct gl_uniform_storage { */ bool initialized; - /** - * Base sampler index - * - * If \c ::base_type is \c GLSL_TYPE_SAMPLER, this represents the index of - * this sampler. If \c ::array_elements is not zero, the array will use - * sampler indexes \c ::sampler through \c ::sampler + \c ::array_elements - * - 1, inclusive. - */ - uint8_t sampler; + struct { + /** + * Base sampler index + * + * If \c ::base_type is \c GLSL_TYPE_SAMPLER, this represents the index + * of this sampler. If \c ::array_elements is not zero, the array will + * use sampler indices \c ::sampler through \c ::sampler + + * \c ::array_elements - 1, inclusive. + * + * Note that the index may be different in each shader stage. + */ + uint8_t index; + + /** + * Whether this sampler is used in this shader stage. + */ + bool active; + } sampler[MESA_SHADER_TYPES]; /** * Storage used by the driver for the uniform diff --git a/mesalib/src/glsl/ir_validate.cpp b/mesalib/src/glsl/ir_validate.cpp index 699c192cd..ce96f6855 100644 --- a/mesalib/src/glsl/ir_validate.cpp +++ b/mesalib/src/glsl/ir_validate.cpp @@ -69,6 +69,8 @@ public: virtual ir_visitor_status visit_leave(ir_expression *ir); virtual ir_visitor_status visit_leave(ir_swizzle *ir); + virtual ir_visitor_status visit_enter(class ir_dereference_array *); + virtual ir_visitor_status visit_enter(ir_assignment *ir); virtual ir_visitor_status visit_enter(ir_call *ir); @@ -101,6 +103,33 @@ ir_validate::visit(ir_dereference_variable *ir) return visit_continue; } +ir_visitor_status +ir_validate::visit_enter(class ir_dereference_array *ir) +{ + if (!ir->array->type->is_array() && !ir->array->type->is_matrix()) { + printf("ir_dereference_array @ %p does not specify an array or a " + "matrix\n", + (void *) ir); + ir->print(); + printf("\n"); + abort(); + } + + if (!ir->array_index->type->is_scalar()) { + printf("ir_dereference_array @ %p does not have scalar index: %s\n", + (void *) ir, ir->array_index->type->name); + abort(); + } + + if (!ir->array_index->type->is_integer()) { + printf("ir_dereference_array @ %p does not have integer index: %s\n", + (void *) ir, ir->array_index->type->name); + abort(); + } + + return visit_continue; +} + ir_visitor_status ir_validate::visit_enter(ir_if *ir) { @@ -361,6 +390,19 @@ ir_validate::visit_leave(ir_expression *ir) assert(ir->operands[0]->type == glsl_type::uint_type); break; + case ir_unop_bitfield_reverse: + assert(ir->operands[0]->type == ir->type); + assert(ir->type->is_integer()); + break; + + case ir_unop_bit_count: + case ir_unop_find_msb: + case ir_unop_find_lsb: + assert(ir->operands[0]->type->vector_elements == ir->type->vector_elements); + assert(ir->operands[0]->type->is_integer()); + assert(ir->type->base_type == GLSL_TYPE_INT); + break; + case ir_unop_noise: /* XXX what can we assert here? */ break; @@ -461,6 +503,12 @@ ir_validate::visit_leave(ir_expression *ir) assert(ir->operands[1]->type == glsl_type::float_type); break; + case ir_binop_bfm: + assert(ir->type->is_integer()); + assert(ir->operands[0]->type->is_integer()); + assert(ir->operands[1]->type->is_integer()); + break; + case ir_binop_ubo_load: assert(ir->operands[0]->as_constant()); assert(ir->operands[0]->type == glsl_type::uint_type); @@ -468,12 +516,46 @@ ir_validate::visit_leave(ir_expression *ir) assert(ir->operands[1]->type == glsl_type::uint_type); break; + case ir_binop_vector_extract: + assert(ir->operands[0]->type->is_vector()); + assert(ir->operands[1]->type->is_scalar() + && ir->operands[1]->type->is_integer()); + break; + case ir_triop_lrp: assert(ir->operands[0]->type->base_type == GLSL_TYPE_FLOAT); assert(ir->operands[0]->type == ir->operands[1]->type); assert(ir->operands[2]->type == ir->operands[0]->type || ir->operands[2]->type == glsl_type::float_type); break; + case ir_triop_bfi: + assert(ir->operands[0]->type->is_integer()); + assert(ir->operands[1]->type == ir->operands[2]->type); + assert(ir->operands[1]->type == ir->type); + break; + + case ir_triop_bitfield_extract: + assert(ir->operands[0]->type == ir->type); + assert(ir->operands[1]->type == glsl_type::int_type); + assert(ir->operands[2]->type == glsl_type::int_type); + break; + + case ir_triop_vector_insert: + assert(ir->operands[0]->type->is_vector()); + assert(ir->operands[1]->type->is_scalar()); + assert(ir->operands[0]->type->base_type == ir->operands[1]->type->base_type); + assert(ir->operands[2]->type->is_scalar() + && ir->operands[2]->type->is_integer()); + assert(ir->type == ir->operands[0]->type); + break; + + case ir_quadop_bitfield_insert: + assert(ir->operands[0]->type == ir->type); + assert(ir->operands[1]->type == ir->type); + assert(ir->operands[2]->type == glsl_type::int_type); + assert(ir->operands[3]->type == glsl_type::int_type); + break; + case ir_quadop_vector: /* The vector operator collects some number of scalars and generates a * vector from them. diff --git a/mesalib/src/glsl/link_interface_blocks.cpp b/mesalib/src/glsl/link_interface_blocks.cpp new file mode 100644 index 000000000..b91860d03 --- /dev/null +++ b/mesalib/src/glsl/link_interface_blocks.cpp @@ -0,0 +1,110 @@ +/* + * Copyright © 2013 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * \file link_interface_blocks.cpp + * Linker support for GLSL's interface blocks. + */ + +#include "ir.h" +#include "glsl_symbol_table.h" +#include "linker.h" +#include "main/macros.h" + +bool +validate_intrastage_interface_blocks(const gl_shader **shader_list, + unsigned num_shaders) +{ + glsl_symbol_table interfaces; + + for (unsigned int i = 0; i < num_shaders; i++) { + if (shader_list[i] == NULL) + continue; + + foreach_list(node, shader_list[i]->ir) { + ir_variable *var = ((ir_instruction *) node)->as_variable(); + if (!var) + continue; + + const glsl_type *iface_type = var->interface_type; + + if (iface_type == NULL) + continue; + + const glsl_type *old_iface_type = + interfaces.get_interface(iface_type->name, + (enum ir_variable_mode) var->mode); + + if (old_iface_type == NULL) { + /* This is the first time we've seen the interface, so save + * it into our symbol table. + */ + interfaces.add_interface(iface_type->name, iface_type, + (enum ir_variable_mode) var->mode); + } else if (old_iface_type != iface_type) { + return false; + } + } + } + + return true; +} + +bool +validate_interstage_interface_blocks(const gl_shader *producer, + const gl_shader *consumer) +{ + glsl_symbol_table interfaces; + + /* Add non-output interfaces from the consumer to the symbol table. */ + foreach_list(node, consumer->ir) { + ir_variable *var = ((ir_instruction *) node)->as_variable(); + if (!var || !var->interface_type || var->mode == ir_var_shader_out) + continue; + + interfaces.add_interface(var->interface_type->name, + var->interface_type, + (enum ir_variable_mode) var->mode); + } + + /* Verify that the producer's interfaces match. */ + foreach_list(node, producer->ir) { + ir_variable *var = ((ir_instruction *) node)->as_variable(); + if (!var || !var->interface_type || var->mode == ir_var_shader_in) + continue; + + enum ir_variable_mode consumer_mode = + var->mode == ir_var_uniform ? ir_var_uniform : ir_var_shader_in; + const glsl_type *expected_type = + interfaces.get_interface(var->interface_type->name, consumer_mode); + + /* The consumer doesn't use this output block. Ignore it. */ + if (expected_type == NULL) + continue; + + if (var->interface_type != expected_type) + return false; + } + + return true; +} diff --git a/mesalib/src/glsl/link_uniform_initializers.cpp b/mesalib/src/glsl/link_uniform_initializers.cpp index 836a360fa..54d9bf1f5 100644 --- a/mesalib/src/glsl/link_uniform_initializers.cpp +++ b/mesalib/src/glsl/link_uniform_initializers.cpp @@ -138,8 +138,16 @@ set_uniform_initializer(void *mem_ctx, gl_shader_program *prog, } if (base_type == GLSL_TYPE_SAMPLER) { - for (unsigned int i = 0; i < storage->array_elements; i++) { - prog->SamplerUnits[storage->sampler + i] = storage->storage[i].i; + for (int sh = 0; sh < MESA_SHADER_TYPES; sh++) { + gl_shader *shader = prog->_LinkedShaders[sh]; + + if (shader && storage->sampler[sh].active) { + for (unsigned i = 0; i < storage->array_elements; i++) { + unsigned index = storage->sampler[sh].index + i; + + shader->SamplerUnits[index] = storage->storage[i].i; + } + } } } } else { @@ -148,8 +156,17 @@ set_uniform_initializer(void *mem_ctx, gl_shader_program *prog, val->type->base_type, val->type->components()); - if (storage->type->is_sampler()) - prog->SamplerUnits[storage->sampler] = storage->storage[0].i; + if (storage->type->is_sampler()) { + for (int sh = 0; sh < MESA_SHADER_TYPES; sh++) { + gl_shader *shader = prog->_LinkedShaders[sh]; + + if (shader && storage->sampler[sh].active) { + unsigned index = storage->sampler[sh].index; + + shader->SamplerUnits[index] = storage->storage[0].i; + } + } + } } storage->initialized = true; diff --git a/mesalib/src/glsl/link_uniforms.cpp b/mesalib/src/glsl/link_uniforms.cpp index d457e4d0c..ad636681f 100644 --- a/mesalib/src/glsl/link_uniforms.cpp +++ b/mesalib/src/glsl/link_uniforms.cpp @@ -263,15 +263,19 @@ public: parcel_out_uniform_storage(struct string_to_uint_map *map, struct gl_uniform_storage *uniforms, union gl_constant_value *values) - : map(map), uniforms(uniforms), next_sampler(0), values(values) + : map(map), uniforms(uniforms), values(values) { - memset(this->targets, 0, sizeof(this->targets)); } - void start_shader() + void start_shader(gl_shader_type shader_type) { + assert(shader_type < MESA_SHADER_TYPES); + this->shader_type = shader_type; + this->shader_samplers_used = 0; this->shader_shadow_samplers = 0; + this->next_sampler = 0; + memset(this->targets, 0, sizeof(this->targets)); } void set_and_process(struct gl_shader_program *prog, @@ -335,8 +339,37 @@ public: int ubo_block_index; int ubo_byte_offset; bool ubo_row_major; + gl_shader_type shader_type; private: + void handle_samplers(const glsl_type *base_type, + struct gl_uniform_storage *uniform) + { + if (base_type->is_sampler()) { + uniform->sampler[shader_type].index = this->next_sampler; + uniform->sampler[shader_type].active = true; + + /* Increment the sampler by 1 for non-arrays and by the number of + * array elements for arrays. + */ + this->next_sampler += + MAX2(1, uniform->array_elements); + + const gl_texture_index target = base_type->sampler_index(); + const unsigned shadow = base_type->sampler_shadow; + for (unsigned i = uniform->sampler[shader_type].index; + i < MIN2(this->next_sampler, MAX_SAMPLERS); + i++) { + this->targets[i] = target; + this->shader_samplers_used |= 1U << i; + this->shader_shadow_samplers |= shadow << i; + } + } else { + uniform->sampler[shader_type].index = ~0; + uniform->sampler[shader_type].active = false; + } + } + virtual void visit_field(const glsl_type *type, const char *name, bool row_major) { @@ -354,31 +387,6 @@ private: if (!found) return; - /* If there is already storage associated with this uniform, it means - * that it was set while processing an earlier shader stage. For - * example, we may be processing the uniform in the fragment shader, but - * the uniform was already processed in the vertex shader. - */ - if (this->uniforms[id].storage != NULL) { - /* If the uniform already has storage set from another shader stage, - * mark the samplers used for this shader stage. - */ - if (type->contains_sampler()) { - const unsigned count = MAX2(1, this->uniforms[id].array_elements); - const unsigned shadow = (type->is_array()) - ? type->fields.array->sampler_shadow : type->sampler_shadow; - - for (unsigned i = 0; i < count; i++) { - const unsigned s = this->uniforms[id].sampler + i; - - this->shader_samplers_used |= 1U << s; - this->shader_shadow_samplers |= shadow << s; - } - } - - return; - } - const glsl_type *base_type; if (type->is_array()) { this->uniforms[id].array_elements = type->length; @@ -388,26 +396,16 @@ private: base_type = type; } - if (base_type->is_sampler()) { - this->uniforms[id].sampler = this->next_sampler; + /* This assigns sampler uniforms to sampler units. */ + handle_samplers(base_type, &this->uniforms[id]); - /* Increment the sampler by 1 for non-arrays and by the number of - * array elements for arrays. - */ - this->next_sampler += MAX2(1, this->uniforms[id].array_elements); - - const gl_texture_index target = base_type->sampler_index(); - const unsigned shadow = base_type->sampler_shadow; - for (unsigned i = this->uniforms[id].sampler - ; i < MIN2(this->next_sampler, MAX_SAMPLERS) - ; i++) { - this->targets[i] = target; - this->shader_samplers_used |= 1U << i; - this->shader_shadow_samplers |= shadow << i; - } - - } else { - this->uniforms[id].sampler = ~0; + /* If there is already storage associated with this uniform, it means + * that it was set while processing an earlier shader stage. For + * example, we may be processing the uniform in the fragment shader, but + * the uniform was already processed in the vertex shader. + */ + if (this->uniforms[id].storage != NULL) { + return; } this->uniforms[id].name = ralloc_strdup(this->uniforms, name); @@ -633,17 +631,6 @@ link_assign_uniform_locations(struct gl_shader_program *prog) prog->UniformHash = new string_to_uint_map; } - /* Uniforms that lack an initializer in the shader code have an initial - * value of zero. This includes sampler uniforms. - * - * Page 24 (page 30 of the PDF) of the GLSL 1.20 spec says: - * - * "The link time initial value is either the value of the variable's - * initializer, if present, or 0 if no initializer is present. Sampler - * types cannot have initializers." - */ - memset(prog->SamplerUnits, 0, sizeof(prog->SamplerUnits)); - /* First pass: Count the uniform resources used by the user-defined * uniforms. While this happens, each active uniform will have an index * assigned to it. @@ -656,6 +643,18 @@ link_assign_uniform_locations(struct gl_shader_program *prog) if (prog->_LinkedShaders[i] == NULL) continue; + /* Uniforms that lack an initializer in the shader code have an initial + * value of zero. This includes sampler uniforms. + * + * Page 24 (page 30 of the PDF) of the GLSL 1.20 spec says: + * + * "The link time initial value is either the value of the variable's + * initializer, if present, or 0 if no initializer is present. Sampler + * types cannot have initializers." + */ + memset(prog->_LinkedShaders[i]->SamplerUnits, 0, + sizeof(prog->_LinkedShaders[i]->SamplerUnits)); + link_update_uniform_buffer_variables(prog->_LinkedShaders[i]); /* Reset various per-shader target counts. @@ -706,9 +705,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog) if (prog->_LinkedShaders[i] == NULL) continue; - /* Reset various per-shader target counts. - */ - parcel.start_shader(); + parcel.start_shader((gl_shader_type)i); foreach_list(node, prog->_LinkedShaders[i]->ir) { ir_variable *const var = ((ir_instruction *) node)->as_variable(); @@ -726,10 +723,11 @@ link_assign_uniform_locations(struct gl_shader_program *prog) prog->_LinkedShaders[i]->active_samplers = parcel.shader_samplers_used; prog->_LinkedShaders[i]->shadow_samplers = parcel.shader_shadow_samplers; - } - assert(sizeof(prog->SamplerTargets) == sizeof(parcel.targets)); - memcpy(prog->SamplerTargets, parcel.targets, sizeof(prog->SamplerTargets)); + STATIC_ASSERT(sizeof(prog->_LinkedShaders[i]->SamplerTargets) == sizeof(parcel.targets)); + memcpy(prog->_LinkedShaders[i]->SamplerTargets, parcel.targets, + sizeof(prog->_LinkedShaders[i]->SamplerTargets)); + } #ifndef NDEBUG for (unsigned i = 0; i < num_user_uniforms; i++) { diff --git a/mesalib/src/glsl/link_varyings.cpp b/mesalib/src/glsl/link_varyings.cpp index 04c9fdd7c..34e3440d6 100644 --- a/mesalib/src/glsl/link_varyings.cpp +++ b/mesalib/src/glsl/link_varyings.cpp @@ -541,7 +541,7 @@ store_tfeedback_info(struct gl_context *ctx, struct gl_shader_program *prog, class varying_matches { public: - varying_matches(bool disable_varying_packing); + varying_matches(bool disable_varying_packing, bool consumer_is_fs); ~varying_matches(); void record(ir_variable *producer_var, ir_variable *consumer_var); unsigned assign_locations(); @@ -621,11 +621,15 @@ private: * it was allocated. */ unsigned matches_capacity; + + const bool consumer_is_fs; }; -varying_matches::varying_matches(bool disable_varying_packing) - : disable_varying_packing(disable_varying_packing) +varying_matches::varying_matches(bool disable_varying_packing, + bool consumer_is_fs) + : disable_varying_packing(disable_varying_packing), + consumer_is_fs(consumer_is_fs) { /* Note: this initial capacity is rather arbitrarily chosen to be large * enough for many cases without wasting an unreasonable amount of space. @@ -656,6 +660,10 @@ varying_matches::~varying_matches() * If \c producer_var has already been paired up with a consumer_var, or * producer_var is part of fixed pipeline functionality (and hence already has * a location assigned), this function has no effect. + * + * Note: as a side effect this function may change the interpolation type of + * \c producer_var, but only when the change couldn't possibly affect + * rendering. */ void varying_matches::record(ir_variable *producer_var, ir_variable *consumer_var) @@ -668,6 +676,25 @@ varying_matches::record(ir_variable *producer_var, ir_variable *consumer_var) return; } + if ((consumer_var == NULL && producer_var->type->contains_integer()) || + !consumer_is_fs) { + /* Since this varying is not being consumed by the fragment shader, its + * interpolation type varying cannot possibly affect rendering. Also, + * this variable is non-flat and is (or contains) an integer. + * + * lower_packed_varyings requires all integer varyings to flat, + * regardless of where they appear. We can trivially satisfy that + * requirement by changing the interpolation type to flat here. + */ + producer_var->centroid = false; + producer_var->interpolation = INTERP_QUALIFIER_FLAT; + + if (consumer_var) { + consumer_var->centroid = false; + consumer_var->interpolation = INTERP_QUALIFIER_FLAT; + } + } + if (this->num_matches == this->matches_capacity) { this->matches_capacity *= 2; this->matches = (match *) @@ -960,11 +987,14 @@ assign_varying_locations(struct gl_context *ctx, { const unsigned producer_base = VARYING_SLOT_VAR0; const unsigned consumer_base = VARYING_SLOT_VAR0; - varying_matches matches(ctx->Const.DisableVaryingPacking); + varying_matches matches(ctx->Const.DisableVaryingPacking, + consumer && consumer->Type == GL_FRAGMENT_SHADER); hash_table *tfeedback_candidates = hash_table_ctor(0, hash_table_string_hash, hash_table_string_compare); hash_table *consumer_inputs = hash_table_ctor(0, hash_table_string_hash, hash_table_string_compare); + hash_table *consumer_interface_inputs + = hash_table_ctor(0, hash_table_string_hash, hash_table_string_compare); /* Operate in a total of three passes. * @@ -983,8 +1013,17 @@ assign_varying_locations(struct gl_context *ctx, ((ir_instruction *) node)->as_variable(); if ((input_var != NULL) && (input_var->mode == ir_var_shader_in)) { - hash_table_insert(consumer_inputs, input_var, - ralloc_strdup(mem_ctx, input_var->name)); + if (input_var->interface_type != NULL) { + char *const iface_field_name = + ralloc_asprintf(mem_ctx, "%s.%s", + input_var->interface_type->name, + input_var->name); + hash_table_insert(consumer_interface_inputs, input_var, + iface_field_name); + } else { + hash_table_insert(consumer_inputs, input_var, + ralloc_strdup(mem_ctx, input_var->name)); + } } } } @@ -998,8 +1037,19 @@ assign_varying_locations(struct gl_context *ctx, tfeedback_candidate_generator g(mem_ctx, tfeedback_candidates); g.process(output_var); - ir_variable *input_var = - (ir_variable *) hash_table_find(consumer_inputs, output_var->name); + ir_variable *input_var; + if (output_var->interface_type != NULL) { + char *const iface_field_name = + ralloc_asprintf(mem_ctx, "%s.%s", + output_var->interface_type->name, + output_var->name); + input_var = + (ir_variable *) hash_table_find(consumer_interface_inputs, + iface_field_name); + } else { + input_var = + (ir_variable *) hash_table_find(consumer_inputs, output_var->name); + } if (input_var && input_var->mode != ir_var_shader_in) input_var = NULL; @@ -1019,6 +1069,7 @@ assign_varying_locations(struct gl_context *ctx, if (matched_candidate == NULL) { hash_table_dtor(tfeedback_candidates); hash_table_dtor(consumer_inputs); + hash_table_dtor(consumer_interface_inputs); return false; } @@ -1036,12 +1087,14 @@ assign_varying_locations(struct gl_context *ctx, if (!tfeedback_decls[i].assign_location(ctx, prog)) { hash_table_dtor(tfeedback_candidates); hash_table_dtor(consumer_inputs); + hash_table_dtor(consumer_interface_inputs); return false; } } hash_table_dtor(tfeedback_candidates); hash_table_dtor(consumer_inputs); + hash_table_dtor(consumer_interface_inputs); if (ctx->Const.DisableVaryingPacking) { /* Transform feedback code assumes varyings are packed, so if the driver diff --git a/mesalib/src/glsl/linker.cpp b/mesalib/src/glsl/linker.cpp index 2b30d2b65..982fe46bd 100644 --- a/mesalib/src/glsl/linker.cpp +++ b/mesalib/src/glsl/linker.cpp @@ -938,6 +938,12 @@ link_intrastage_shaders(void *mem_ctx, if (!cross_validate_globals(prog, shader_list, num_shaders, false)) return NULL; + /* Check that interface blocks defined in multiple shaders are consistent. + */ + if (!validate_intrastage_interface_blocks((const gl_shader **)shader_list, + num_shaders)) + return NULL; + /* Check that uniform blocks between shaders for a stage agree. */ const int num_uniform_blocks = link_uniform_blocks(mem_ctx, prog, shader_list, num_shaders, @@ -1512,15 +1518,15 @@ check_resources(struct gl_context *ctx, struct gl_shader_program *prog) }; const unsigned max_samplers[MESA_SHADER_TYPES] = { - ctx->Const.MaxVertexTextureImageUnits, - ctx->Const.MaxTextureImageUnits, - ctx->Const.MaxGeometryTextureImageUnits + ctx->Const.VertexProgram.MaxTextureImageUnits, + ctx->Const.FragmentProgram.MaxTextureImageUnits, + ctx->Const.GeometryProgram.MaxTextureImageUnits }; const unsigned max_uniform_components[MESA_SHADER_TYPES] = { ctx->Const.VertexProgram.MaxUniformComponents, ctx->Const.FragmentProgram.MaxUniformComponents, - 0 /* FINISHME: Geometry shaders. */ + ctx->Const.GeometryProgram.MaxUniformComponents }; const unsigned max_uniform_blocks[MESA_SHADER_TYPES] = { @@ -1722,6 +1728,12 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) if (prog->_LinkedShaders[i] == NULL) continue; + if (!validate_interstage_interface_blocks(prog->_LinkedShaders[prev], + prog->_LinkedShaders[i])) { + linker_error(prog, "interface block mismatch between shader stages\n"); + goto done; + } + if (!cross_validate_outputs_to_inputs(prog, prog->_LinkedShaders[prev], prog->_LinkedShaders[i])) @@ -1733,6 +1745,12 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) prog->LinkStatus = true; } + + for (unsigned int i = 0; i < MESA_SHADER_TYPES; i++) { + if (prog->_LinkedShaders[i] != NULL) + lower_named_interface_blocks(mem_ctx, prog->_LinkedShaders[i]); + } + /* Implement the GLSL 1.30+ rule for discard vs infinite loops Do * it before optimization because we want most of the checks to get * dropped thanks to constant propagation. @@ -1767,7 +1785,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) unsigned max_unroll = ctx->ShaderCompilerOptions[i].MaxUnrollIterations; - while (do_common_optimization(prog->_LinkedShaders[i]->ir, true, false, max_unroll)) + while (do_common_optimization(prog->_LinkedShaders[i]->ir, true, false, max_unroll, &ctx->ShaderCompilerOptions[i])) ; } diff --git a/mesalib/src/glsl/linker.h b/mesalib/src/glsl/linker.h index f1ce50ace..2fe2410c2 100644 --- a/mesalib/src/glsl/linker.h +++ b/mesalib/src/glsl/linker.h @@ -60,6 +60,14 @@ link_uniform_blocks(void *mem_ctx, unsigned num_shaders, struct gl_uniform_block **blocks_ret); +bool +validate_intrastage_interface_blocks(const gl_shader **shader_list, + unsigned num_shaders); + +bool +validate_interstage_interface_blocks(const gl_shader *producer, + const gl_shader *consumer); + /** * Class for processing all of the leaf fields of a variable that corresponds * to a program resource. diff --git a/mesalib/src/glsl/lower_clip_distance.cpp b/mesalib/src/glsl/lower_clip_distance.cpp index 643807de8..d6cf94438 100644 --- a/mesalib/src/glsl/lower_clip_distance.cpp +++ b/mesalib/src/glsl/lower_clip_distance.cpp @@ -46,10 +46,11 @@ */ #include "glsl_symbol_table.h" -#include "ir_hierarchical_visitor.h" +#include "ir_rvalue_visitor.h" #include "ir.h" +#include "program/prog_instruction.h" /* For WRITEMASK_* */ -class lower_clip_distance_visitor : public ir_hierarchical_visitor { +class lower_clip_distance_visitor : public ir_rvalue_visitor { public: lower_clip_distance_visitor() : progress(false), old_clip_distance_var(NULL), @@ -59,11 +60,14 @@ public: virtual ir_visitor_status visit(ir_variable *); void create_indices(ir_rvalue*, ir_rvalue *&, ir_rvalue *&); - virtual ir_visitor_status visit_leave(ir_dereference_array *); virtual ir_visitor_status visit_leave(ir_assignment *); void visit_new_assignment(ir_assignment *ir); virtual ir_visitor_status visit_leave(ir_call *); + virtual void handle_rvalue(ir_rvalue **rvalue); + + void fix_lhs(ir_assignment *); + bool progress; /** @@ -173,35 +177,70 @@ lower_clip_distance_visitor::create_indices(ir_rvalue *old_index, } -/** - * Replace any expression that indexes into the gl_ClipDistance array with an - * expression that indexes into one of the vec4's in gl_ClipDistanceMESA and - * accesses the appropriate component. - */ -ir_visitor_status -lower_clip_distance_visitor::visit_leave(ir_dereference_array *ir) +void +lower_clip_distance_visitor::handle_rvalue(ir_rvalue **rv) { /* If the gl_ClipDistance var hasn't been declared yet, then * there's no way this deref can refer to it. */ - if (!this->old_clip_distance_var) - return visit_continue; + if (!this->old_clip_distance_var || *rv == NULL) + return; + + ir_dereference_array *const array_deref = (*rv)->as_dereference_array(); + if (array_deref == NULL) + return; - ir_dereference_variable *old_var_ref = ir->array->as_dereference_variable(); + /* Replace any expression that indexes into the gl_ClipDistance array + * with an expression that indexes into one of the vec4's in + * gl_ClipDistanceMESA and accesses the appropriate component. + */ + ir_dereference_variable *old_var_ref = + array_deref->array->as_dereference_variable(); if (old_var_ref && old_var_ref->var == this->old_clip_distance_var) { this->progress = true; ir_rvalue *array_index; ir_rvalue *swizzle_index; - this->create_indices(ir->array_index, array_index, swizzle_index); - void *mem_ctx = ralloc_parent(ir); - ir->array = new(mem_ctx) ir_dereference_array( - this->new_clip_distance_var, array_index); - ir->array_index = swizzle_index; - } + this->create_indices(array_deref->array_index, array_index, swizzle_index); + void *mem_ctx = ralloc_parent(array_deref); - return visit_continue; + ir_dereference_array *const ClipDistanceMESA_deref = + new(mem_ctx) ir_dereference_array(this->new_clip_distance_var, + array_index); + + ir_expression *const expr = + new(mem_ctx) ir_expression(ir_binop_vector_extract, + ClipDistanceMESA_deref, + swizzle_index); + + *rv = expr; + } } +void +lower_clip_distance_visitor::fix_lhs(ir_assignment *ir) +{ + if (ir->lhs->ir_type == ir_type_expression) { + void *mem_ctx = ralloc_parent(ir); + ir_expression *const expr = (ir_expression *) ir->lhs; + + /* The expression must be of the form: + * + * (vector_extract gl_ClipDistanceMESA[i], j). + */ + assert(expr->operation == ir_binop_vector_extract); + assert(expr->operands[0]->ir_type == ir_type_dereference_array); + assert(expr->operands[0]->type == glsl_type::vec4_type); + + ir_dereference *const new_lhs = (ir_dereference *) expr->operands[0]; + ir->rhs = new(mem_ctx) ir_expression(ir_triop_vector_insert, + glsl_type::vec4_type, + new_lhs->clone(mem_ctx, NULL), + ir->rhs, + expr->operands[1]); + ir->set_lhs(new_lhs); + ir->write_mask = WRITEMASK_XYZW; + } +} /** * Replace any assignment having gl_ClipDistance (undereferenced) as its LHS @@ -223,29 +262,50 @@ lower_clip_distance_visitor::visit_leave(ir_assignment *ir) * each of them. * * Note: to unroll into element-by-element assignments, we need to make - * clones of the LHS and RHS. This is only safe if the LHS and RHS are - * side-effect free. Fortunately, we know that they are, because the - * only kind of rvalue that can have side effects is an ir_call, and - * ir_calls only appear (a) as a statement on their own, or (b) as the - * RHS of an assignment that stores the result of the call in a - * temporary variable. + * clones of the LHS and RHS. This is safe because expressions and + * l-values are side-effect free. */ void *ctx = ralloc_parent(ir); int array_size = this->old_clip_distance_var->type->array_size(); for (int i = 0; i < array_size; ++i) { ir_dereference_array *new_lhs = new(ctx) ir_dereference_array( ir->lhs->clone(ctx, NULL), new(ctx) ir_constant(i)); - new_lhs->accept(this); ir_dereference_array *new_rhs = new(ctx) ir_dereference_array( ir->rhs->clone(ctx, NULL), new(ctx) ir_constant(i)); - new_rhs->accept(this); - this->base_ir->insert_before( - new(ctx) ir_assignment(new_lhs, new_rhs)); + this->handle_rvalue((ir_rvalue **) &new_rhs); + + /* Handle the LHS after creating the new assignment. This must + * happen in this order because handle_rvalue may replace the old LHS + * with an ir_expression of ir_binop_vector_extract. Since this is + * not a valide l-value, this will cause an assertion in the + * ir_assignment constructor to fail. + * + * If this occurs, replace the mangled LHS with a dereference of the + * vector, and replace the RHS with an ir_triop_vector_insert. + */ + ir_assignment *const assign = new(ctx) ir_assignment(new_lhs, new_rhs); + this->handle_rvalue((ir_rvalue **) &assign->lhs); + this->fix_lhs(assign); + + this->base_ir->insert_before(assign); } ir->remove(); + + return visit_continue; } - return visit_continue; + /* Handle the LHS as if it were an r-value. Normally + * rvalue_visit(ir_assignment *) only visits the RHS, but we need to lower + * expressions in the LHS as well. + * + * This may cause the LHS to get replaced with an ir_expression of + * ir_binop_vector_extract. If this occurs, replace it with a dereference + * of the vector, and replace the RHS with an ir_triop_vector_insert. + */ + handle_rvalue((ir_rvalue **)&ir->lhs); + this->fix_lhs(ir); + + return rvalue_visit(ir); } @@ -330,7 +390,7 @@ lower_clip_distance_visitor::visit_leave(ir_call *ir) } } - return visit_continue; + return rvalue_visit(ir); } diff --git a/mesalib/src/glsl/lower_instructions.cpp b/mesalib/src/glsl/lower_instructions.cpp index 1ce7b7c9d..d32ec80d6 100644 --- a/mesalib/src/glsl/lower_instructions.cpp +++ b/mesalib/src/glsl/lower_instructions.cpp @@ -38,6 +38,7 @@ * - LOG_TO_LOG2 * - MOD_TO_FRACT * - LRP_TO_ARITH + * - BITFIELD_INSERT_TO_BFM_BFI * * SUB_TO_ADD_NEG: * --------------- @@ -84,6 +85,15 @@ * LRP_TO_ARITH: * ------------- * Converts ir_triop_lrp to (op0 * (1.0f - op2)) + (op1 * op2). + * + * BITFIELD_INSERT_TO_BFM_BFI: + * --------------------------- + * Breaks ir_quadop_bitfield_insert into ir_binop_bfm (bitfield mask) and + * ir_triop_bfi (bitfield insert). + * + * Many GPUs implement the bitfieldInsert() built-in from ARB_gpu_shader_5 + * with a pair of instructions. + * */ #include "main/core.h" /* for M_LOG2E */ @@ -114,6 +124,7 @@ private: void pow_to_exp2(ir_expression *); void log_to_log2(ir_expression *); void lrp_to_arith(ir_expression *); + void bitfield_insert_to_bfm_bfi(ir_expression *); }; /** @@ -298,6 +309,29 @@ lower_instructions_visitor::lrp_to_arith(ir_expression *ir) this->progress = true; } +void +lower_instructions_visitor::bitfield_insert_to_bfm_bfi(ir_expression *ir) +{ + /* Translates + * ir_quadop_bitfield_insert base insert offset bits + * into + * ir_triop_bfi (ir_binop_bfm bits offset) insert base + */ + + ir_rvalue *base_expr = ir->operands[0]; + + ir->operation = ir_triop_bfi; + ir->operands[0] = new(ir) ir_expression(ir_binop_bfm, + ir->type->get_base_type(), + ir->operands[3], + ir->operands[2]); + /* ir->operands[1] is still the value to insert. */ + ir->operands[2] = base_expr; + ir->operands[3] = NULL; + + this->progress = true; +} + ir_visitor_status lower_instructions_visitor::visit_leave(ir_expression *ir) { @@ -339,6 +373,11 @@ lower_instructions_visitor::visit_leave(ir_expression *ir) lrp_to_arith(ir); break; + case ir_quadop_bitfield_insert: + if (lowering(BITFIELD_INSERT_TO_BFM_BFI)) + bitfield_insert_to_bfm_bfi(ir); + break; + default: return visit_continue; } diff --git a/mesalib/src/glsl/lower_named_interface_blocks.cpp b/mesalib/src/glsl/lower_named_interface_blocks.cpp new file mode 100644 index 000000000..eba667a8b --- /dev/null +++ b/mesalib/src/glsl/lower_named_interface_blocks.cpp @@ -0,0 +1,238 @@ +/* + * Copyright (c) 2013 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * \file lower_named_interface_blocks.cpp + * + * This lowering pass converts all interface blocks with instance names + * into interface blocks without an instance name. + * + * For example, the following shader: + * + * out block { + * float block_var; + * } inst_name; + * + * main() + * { + * inst_name.block_var = 0.0; + * } + * + * Is rewritten to: + * + * out block { + * float block_var; + * }; + * + * main() + * { + * block_var = 0.0; + * } + * + * This takes place after the shader code has already been verified with + * the interface name in place. + * + * The linking phase will use the interface block name rather than the + * interface's instance name when linking interfaces. + * + * This modification to the ir allows our currently existing dead code + * elimination to work with interface blocks without changes. + */ + +#include "glsl_symbol_table.h" +#include "ir.h" +#include "ir_optimization.h" +#include "ir_rvalue_visitor.h" +#include "program/hash_table.h" + +class flatten_named_interface_blocks_declarations : public ir_rvalue_visitor +{ +public: + void * const mem_ctx; + hash_table *interface_namespace; + + flatten_named_interface_blocks_declarations(void *mem_ctx) + : mem_ctx(mem_ctx) + { + } + + void run(exec_list *instructions); + + virtual ir_visitor_status visit_leave(ir_assignment *); + virtual void handle_rvalue(ir_rvalue **rvalue); +}; + +void +flatten_named_interface_blocks_declarations::run(exec_list *instructions) +{ + interface_namespace = hash_table_ctor(0, hash_table_string_hash, + hash_table_string_compare); + + /* First pass: adjust instance block variables with an instance name + * to not have an instance name. + * + * The interface block variables are stored in the interface_namespace + * hash table so they can be used in the second pass. + */ + foreach_list_safe(node, instructions) { + ir_variable *var = ((ir_instruction *) node)->as_variable(); + if (!var || !var->is_interface_instance()) + continue; + + /* It should be possible to handle uniforms during this pass, + * but, this will require changes to the other uniform block + * support code. + */ + if (var->mode == ir_var_uniform) + continue; + + const glsl_type * iface_t = var->type; + const glsl_type * array_t = NULL; + exec_node *insert_pos = var; + + if (iface_t->is_array()) { + array_t = iface_t; + iface_t = array_t->fields.array; + } + + assert (iface_t->is_interface()); + + for (unsigned i = 0; i < iface_t->length; i++) { + const char * field_name = iface_t->fields.structure[i].name; + char *iface_field_name = + ralloc_asprintf(mem_ctx, "%s.%s", + iface_t->name, field_name); + + ir_variable *found_var = + (ir_variable *) hash_table_find(interface_namespace, + iface_field_name); + if (!found_var) { + ir_variable *new_var; + if (array_t == NULL) { + char *var_name = + ralloc_strdup(mem_ctx, iface_t->fields.structure[i].name); + new_var = + new(mem_ctx) ir_variable(iface_t->fields.structure[i].type, + var_name, + (ir_variable_mode) var->mode); + } else { + const glsl_type *new_array_type = + glsl_type::get_array_instance( + iface_t->fields.structure[i].type, + array_t->length); + char *var_name = + ralloc_asprintf(mem_ctx, "%s[%d]", + iface_t->fields.structure[i].name, + array_t->length); + new_var = + new(mem_ctx) ir_variable(new_array_type, + var_name, + (ir_variable_mode) var->mode); + } + + new_var->interface_type = iface_t; + hash_table_insert(interface_namespace, new_var, + iface_field_name); + insert_pos->insert_after(new_var); + insert_pos = new_var; + } + } + var->remove(); + } + + /* Second pass: visit all ir_dereference_record instances, and if they + * reference an interface block, then flatten the refererence out. + */ + visit_list_elements(this, instructions); + hash_table_dtor(interface_namespace); + interface_namespace = NULL; +} + +ir_visitor_status +flatten_named_interface_blocks_declarations::visit_leave(ir_assignment *ir) +{ + ir_dereference_record *lhs_rec = ir->lhs->as_dereference_record(); + if (lhs_rec) { + ir_rvalue *lhs_rec_tmp = lhs_rec; + handle_rvalue(&lhs_rec_tmp); + if (lhs_rec_tmp != lhs_rec) { + ir->set_lhs(lhs_rec_tmp); + } + } + return rvalue_visit(ir); +} + +void +flatten_named_interface_blocks_declarations::handle_rvalue(ir_rvalue **rvalue) +{ + if (*rvalue == NULL) + return; + + ir_dereference_record *ir = (*rvalue)->as_dereference_record(); + if (ir == NULL) + return; + + ir_variable *var = ir->variable_referenced(); + + if (!var->is_interface_instance()) + return; + + /* It should be possible to handle uniforms during this pass, + * but, this will require changes to the other uniform block + * support code. + */ + if (var->mode == ir_var_uniform) + return; + + if (var->interface_type != NULL) { + char *iface_field_name = + ralloc_asprintf(mem_ctx, "%s.%s", var->interface_type->name, + ir->field); + /* Find the variable in the set of flattened interface blocks */ + ir_variable *found_var = + (ir_variable *) hash_table_find(interface_namespace, + iface_field_name); + assert(found_var); + + ir_dereference_variable *deref_var = + new(mem_ctx) ir_dereference_variable(found_var); + + ir_dereference_array *deref_array = + ir->record->as_dereference_array(); + if (deref_array != NULL) { + *rvalue = + new(mem_ctx) ir_dereference_array(deref_var, + deref_array->array_index); + } else { + *rvalue = deref_var; + } + } +} + +void +lower_named_interface_blocks(void *mem_ctx, gl_shader *shader) +{ + flatten_named_interface_blocks_declarations v_decl(mem_ctx); + v_decl.run(shader->ir); +} + diff --git a/mesalib/src/glsl/lower_packed_varyings.cpp b/mesalib/src/glsl/lower_packed_varyings.cpp index b4cc5cd0d..cdf2289b4 100644 --- a/mesalib/src/glsl/lower_packed_varyings.cpp +++ b/mesalib/src/glsl/lower_packed_varyings.cpp @@ -178,6 +178,14 @@ lower_packed_varyings_visitor::run(exec_list *instructions) !this->needs_lowering(var)) continue; + /* This lowering pass is only capable of packing floats and ints + * together when their interpolation mode is "flat". Therefore, to be + * safe, caller should ensure that integral varyings always use flat + * interpolation, even when this is not required by GLSL. + */ + assert(var->interpolation == INTERP_QUALIFIER_FLAT || + !var->type->contains_integer()); + /* Change the old varying into an ordinary global. */ var->mode = ir_var_auto; diff --git a/mesalib/src/glsl/lower_vec_index_to_cond_assign.cpp b/mesalib/src/glsl/lower_vec_index_to_cond_assign.cpp index f85875f49..880859688 100644 --- a/mesalib/src/glsl/lower_vec_index_to_cond_assign.cpp +++ b/mesalib/src/glsl/lower_vec_index_to_cond_assign.cpp @@ -52,7 +52,12 @@ public: progress = false; } - ir_rvalue *convert_vec_index_to_cond_assign(ir_rvalue *val); + ir_rvalue *convert_vec_index_to_cond_assign(void *mem_ctx, + ir_rvalue *orig_vector, + ir_rvalue *orig_index, + const glsl_type *type); + + ir_rvalue *convert_vector_extract_to_cond_assign(ir_rvalue *ir); virtual ir_visitor_status visit_enter(ir_expression *); virtual ir_visitor_status visit_enter(ir_swizzle *); @@ -65,24 +70,16 @@ public: }; ir_rvalue * -ir_vec_index_to_cond_assign_visitor::convert_vec_index_to_cond_assign(ir_rvalue *ir) +ir_vec_index_to_cond_assign_visitor::convert_vec_index_to_cond_assign(void *mem_ctx, + ir_rvalue *orig_vector, + ir_rvalue *orig_index, + const glsl_type *type) { - ir_dereference_array *orig_deref = ir->as_dereference_array(); ir_assignment *assign, *value_assign; ir_variable *index, *var, *value; ir_dereference *deref, *deref_value; unsigned i; - if (!orig_deref) - return ir; - - if (orig_deref->array->type->is_matrix() || - orig_deref->array->type->is_array()) - return ir; - - void *mem_ctx = ralloc_parent(ir); - - assert(orig_deref->array_index->type->base_type == GLSL_TYPE_INT); exec_list list; @@ -92,19 +89,19 @@ ir_vec_index_to_cond_assign_visitor::convert_vec_index_to_cond_assign(ir_rvalue ir_var_temporary); list.push_tail(index); deref = new(base_ir) ir_dereference_variable(index); - assign = new(base_ir) ir_assignment(deref, orig_deref->array_index, NULL); + assign = new(base_ir) ir_assignment(deref, orig_index, NULL); list.push_tail(assign); /* Store the value inside a temp, thus avoiding matrixes duplication */ - value = new(base_ir) ir_variable(orig_deref->array->type, "vec_value_tmp", - ir_var_temporary); + value = new(base_ir) ir_variable(orig_vector->type, "vec_value_tmp", + ir_var_temporary); list.push_tail(value); deref_value = new(base_ir) ir_dereference_variable(value); - value_assign = new(base_ir) ir_assignment(deref_value, orig_deref->array); + value_assign = new(base_ir) ir_assignment(deref_value, orig_vector); list.push_tail(value_assign); /* Temporary where we store whichever value we swizzle out. */ - var = new(base_ir) ir_variable(ir->type, "vec_index_tmp_v", + var = new(base_ir) ir_variable(type, "vec_index_tmp_v", ir_var_temporary); list.push_tail(var); @@ -113,13 +110,14 @@ ir_vec_index_to_cond_assign_visitor::convert_vec_index_to_cond_assign(ir_rvalue */ ir_rvalue *const cond_deref = compare_index_block(&list, index, 0, - orig_deref->array->type->vector_elements, + orig_vector->type->vector_elements, mem_ctx); /* Generate a conditional move of each vector element to the temp. */ - for (i = 0; i < orig_deref->array->type->vector_elements; i++) { + for (i = 0; i < orig_vector->type->vector_elements; i++) { ir_rvalue *condition_swizzle = - new(base_ir) ir_swizzle(cond_deref->clone(ir, NULL), i, 0, 0, 0, 1); + new(base_ir) ir_swizzle(cond_deref->clone(mem_ctx, NULL), + i, 0, 0, 0, 1); /* Just clone the rest of the deref chain when trying to get at the * underlying variable. @@ -142,13 +140,27 @@ ir_vec_index_to_cond_assign_visitor::convert_vec_index_to_cond_assign(ir_rvalue return new(base_ir) ir_dereference_variable(var); } +ir_rvalue * +ir_vec_index_to_cond_assign_visitor::convert_vector_extract_to_cond_assign(ir_rvalue *ir) +{ + ir_expression *const expr = ir->as_expression(); + + if (expr == NULL || expr->operation != ir_binop_vector_extract) + return ir; + + return convert_vec_index_to_cond_assign(ralloc_parent(ir), + expr->operands[0], + expr->operands[1], + ir->type); +} + ir_visitor_status ir_vec_index_to_cond_assign_visitor::visit_enter(ir_expression *ir) { unsigned int i; for (i = 0; i < ir->get_num_operands(); i++) { - ir->operands[i] = convert_vec_index_to_cond_assign(ir->operands[i]); + ir->operands[i] = convert_vector_extract_to_cond_assign(ir->operands[i]); } return visit_continue; @@ -161,7 +173,7 @@ ir_vec_index_to_cond_assign_visitor::visit_enter(ir_swizzle *ir) * the result of indexing a vector is. But maybe at some point we'll end up * using swizzling of scalars for vector construction. */ - ir->val = convert_vec_index_to_cond_assign(ir->val); + ir->val = convert_vector_extract_to_cond_assign(ir->val); return visit_continue; } @@ -169,91 +181,12 @@ ir_vec_index_to_cond_assign_visitor::visit_enter(ir_swizzle *ir) ir_visitor_status ir_vec_index_to_cond_assign_visitor::visit_leave(ir_assignment *ir) { - ir_variable *index, *var; - ir_dereference_variable *deref; - ir_assignment *assign; - unsigned i; - - ir->rhs = convert_vec_index_to_cond_assign(ir->rhs); - if (ir->condition) - ir->condition = convert_vec_index_to_cond_assign(ir->condition); - - /* Last, handle the LHS */ - ir_dereference_array *orig_deref = ir->lhs->as_dereference_array(); - - if (!orig_deref || - orig_deref->array->type->is_matrix() || - orig_deref->array->type->is_array()) - return visit_continue; - - void *mem_ctx = ralloc_parent(ir); - - assert(orig_deref->array_index->type->base_type == GLSL_TYPE_INT); - - exec_list list; - - /* Store the index to a temporary to avoid reusing its tree. */ - index = new(ir) ir_variable(glsl_type::int_type, "vec_index_tmp_i", - ir_var_temporary); - list.push_tail(index); - deref = new(ir) ir_dereference_variable(index); - assign = new(ir) ir_assignment(deref, orig_deref->array_index, NULL); - list.push_tail(assign); - - /* Store the RHS to a temporary to avoid reusing its tree. */ - var = new(ir) ir_variable(ir->rhs->type, "vec_index_tmp_v", - ir_var_temporary); - list.push_tail(var); - deref = new(ir) ir_dereference_variable(var); - assign = new(ir) ir_assignment(deref, ir->rhs, NULL); - list.push_tail(assign); - - /* Generate a single comparison condition "mask" for all of the components - * in the vector. - */ - ir_rvalue *const cond_deref = - compare_index_block(&list, index, 0, - orig_deref->array->type->vector_elements, - mem_ctx); + ir->rhs = convert_vector_extract_to_cond_assign(ir->rhs); - /* Generate a conditional move of each vector element to the temp. */ - for (i = 0; i < orig_deref->array->type->vector_elements; i++) { - ir_rvalue *condition_swizzle = - new(ir) ir_swizzle(cond_deref->clone(ir, NULL), i, 0, 0, 0, 1); - - - /* Just clone the rest of the deref chain when trying to get at the - * underlying variable. - */ - ir_rvalue *swizzle = - new(ir) ir_swizzle(orig_deref->array->clone(mem_ctx, NULL), - i, 0, 0, 0, 1); - - deref = new(ir) ir_dereference_variable(var); - assign = new(ir) ir_assignment(swizzle, deref, condition_swizzle); - list.push_tail(assign); + if (ir->condition) { + ir->condition = convert_vector_extract_to_cond_assign(ir->condition); } - /* If the original assignment has a condition, respect that original - * condition! This is acomplished by wrapping the new conditional - * assignments in an if-statement that uses the original condition. - */ - if (ir->condition != NULL) { - /* No need to clone the condition because the IR that it hangs on is - * going to be removed from the instruction sequence. - */ - ir_if *if_stmt = new(mem_ctx) ir_if(ir->condition); - - list.move_nodes_to(&if_stmt->then_instructions); - ir->insert_before(if_stmt); - } else { - ir->insert_before(&list); - } - - ir->remove(); - - this->progress = true; - return visit_continue; } @@ -262,7 +195,7 @@ ir_vec_index_to_cond_assign_visitor::visit_enter(ir_call *ir) { foreach_iter(exec_list_iterator, iter, *ir) { ir_rvalue *param = (ir_rvalue *)iter.get(); - ir_rvalue *new_param = convert_vec_index_to_cond_assign(param); + ir_rvalue *new_param = convert_vector_extract_to_cond_assign(param); if (new_param != param) { param->replace_with(new_param); @@ -276,7 +209,7 @@ ir_visitor_status ir_vec_index_to_cond_assign_visitor::visit_enter(ir_return *ir) { if (ir->value) { - ir->value = convert_vec_index_to_cond_assign(ir->value); + ir->value = convert_vector_extract_to_cond_assign(ir->value); } return visit_continue; @@ -285,7 +218,7 @@ ir_vec_index_to_cond_assign_visitor::visit_enter(ir_return *ir) ir_visitor_status ir_vec_index_to_cond_assign_visitor::visit_enter(ir_if *ir) { - ir->condition = convert_vec_index_to_cond_assign(ir->condition); + ir->condition = convert_vector_extract_to_cond_assign(ir->condition); return visit_continue; } diff --git a/mesalib/src/glsl/lower_vec_index_to_swizzle.cpp b/mesalib/src/glsl/lower_vec_index_to_swizzle.cpp index 264d6dc07..d5ad692c2 100644 --- a/mesalib/src/glsl/lower_vec_index_to_swizzle.cpp +++ b/mesalib/src/glsl/lower_vec_index_to_swizzle.cpp @@ -46,7 +46,7 @@ public: progress = false; } - ir_rvalue *convert_vec_index_to_swizzle(ir_rvalue *val); + ir_rvalue *convert_vector_extract_to_swizzle(ir_rvalue *val); virtual ir_visitor_status visit_enter(ir_expression *); virtual ir_visitor_status visit_enter(ir_swizzle *); @@ -59,20 +59,14 @@ public: }; ir_rvalue * -ir_vec_index_to_swizzle_visitor::convert_vec_index_to_swizzle(ir_rvalue *ir) +ir_vec_index_to_swizzle_visitor::convert_vector_extract_to_swizzle(ir_rvalue *ir) { - ir_dereference_array *deref = ir->as_dereference_array(); - ir_constant *ir_constant; - - if (!deref) - return ir; - - if (deref->array->type->is_matrix() || deref->array->type->is_array()) + ir_expression *const expr = ir->as_expression(); + if (expr == NULL || expr->operation != ir_binop_vector_extract) return ir; - assert(deref->array_index->type->base_type == GLSL_TYPE_INT); - ir_constant = deref->array_index->constant_expression_value(); - if (!ir_constant) + ir_constant *const idx = expr->operands[1]->constant_expression_value(); + if (idx == NULL) return ir; void *ctx = ralloc_parent(ir); @@ -92,10 +86,10 @@ ir_vec_index_to_swizzle_visitor::convert_vec_index_to_swizzle(ir_rvalue *ir) * The ir_swizzle constructor gets angry if the index is negative or too * large. For simplicity sake, just clamp the index to [0, size-1]. */ - const int i = MIN2(MAX2(ir_constant->value.i[0], 0), - ((int) deref->array->type->vector_elements - 1)); + const int i = CLAMP(idx->value.i[0], 0, + (int) expr->operands[0]->type->vector_elements - 1); - return new(ctx) ir_swizzle(deref->array, i, 0, 0, 0, 1); + return new(ctx) ir_swizzle(expr->operands[0], i, 0, 0, 0, 1); } ir_visitor_status @@ -104,7 +98,7 @@ ir_vec_index_to_swizzle_visitor::visit_enter(ir_expression *ir) unsigned int i; for (i = 0; i < ir->get_num_operands(); i++) { - ir->operands[i] = convert_vec_index_to_swizzle(ir->operands[i]); + ir->operands[i] = convert_vector_extract_to_swizzle(ir->operands[i]); } return visit_continue; @@ -117,7 +111,7 @@ ir_vec_index_to_swizzle_visitor::visit_enter(ir_swizzle *ir) * the result of indexing a vector is. But maybe at some point we'll end up * using swizzling of scalars for vector construction. */ - ir->val = convert_vec_index_to_swizzle(ir->val); + ir->val = convert_vector_extract_to_swizzle(ir->val); return visit_continue; } @@ -125,8 +119,7 @@ ir_vec_index_to_swizzle_visitor::visit_enter(ir_swizzle *ir) ir_visitor_status ir_vec_index_to_swizzle_visitor::visit_enter(ir_assignment *ir) { - ir->set_lhs(convert_vec_index_to_swizzle(ir->lhs)); - ir->rhs = convert_vec_index_to_swizzle(ir->rhs); + ir->rhs = convert_vector_extract_to_swizzle(ir->rhs); return visit_continue; } @@ -136,7 +129,7 @@ ir_vec_index_to_swizzle_visitor::visit_enter(ir_call *ir) { foreach_iter(exec_list_iterator, iter, *ir) { ir_rvalue *param = (ir_rvalue *)iter.get(); - ir_rvalue *new_param = convert_vec_index_to_swizzle(param); + ir_rvalue *new_param = convert_vector_extract_to_swizzle(param); if (new_param != param) { param->replace_with(new_param); @@ -150,7 +143,7 @@ ir_visitor_status ir_vec_index_to_swizzle_visitor::visit_enter(ir_return *ir) { if (ir->value) { - ir->value = convert_vec_index_to_swizzle(ir->value); + ir->value = convert_vector_extract_to_swizzle(ir->value); } return visit_continue; @@ -159,7 +152,7 @@ ir_vec_index_to_swizzle_visitor::visit_enter(ir_return *ir) ir_visitor_status ir_vec_index_to_swizzle_visitor::visit_enter(ir_if *ir) { - ir->condition = convert_vec_index_to_swizzle(ir->condition); + ir->condition = convert_vector_extract_to_swizzle(ir->condition); return visit_continue; } diff --git a/mesalib/src/glsl/lower_vector_insert.cpp b/mesalib/src/glsl/lower_vector_insert.cpp new file mode 100644 index 000000000..0e640cc32 --- /dev/null +++ b/mesalib/src/glsl/lower_vector_insert.cpp @@ -0,0 +1,139 @@ +/* + * Copyright © 2013 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +#include "ir.h" +#include "ir_builder.h" +#include "ir_rvalue_visitor.h" +#include "ir_optimization.h" + +using namespace ir_builder; + +class vector_insert_visitor : public ir_rvalue_visitor { +public: + vector_insert_visitor(bool lower_nonconstant_index) + : progress(false), lower_nonconstant_index(lower_nonconstant_index) + { + factory.instructions = &factory_instructions; + } + + virtual ~vector_insert_visitor() + { + assert(factory_instructions.is_empty()); + } + + virtual void handle_rvalue(ir_rvalue **rv); + + ir_factory factory; + exec_list factory_instructions; + bool progress; + bool lower_nonconstant_index; +}; + + +void +vector_insert_visitor::handle_rvalue(ir_rvalue **rv) +{ + if (*rv == NULL || (*rv)->ir_type != ir_type_expression) + return; + + ir_expression *const expr = (ir_expression *) *rv; + + if (likely(expr->operation != ir_triop_vector_insert)) + return; + + factory.mem_ctx = ralloc_parent(expr); + + ir_constant *const idx = expr->operands[2]->constant_expression_value(); + if (idx != NULL) { + /* Replace (vector_insert (vec) (scalar) (index)) with a dereference of + * a new temporary. The new temporary gets assigned as + * + * t = vec + * t.mask = scalar + * + * where mask is the component selected by index. + */ + ir_variable *const temp = + factory.make_temp(expr->operands[0]->type, "vec_tmp"); + + const int mask = 1 << idx->value.i[0]; + + factory.emit(assign(temp, expr->operands[0])); + factory.emit(assign(temp, expr->operands[1], mask)); + + this->progress = true; + *rv = new(factory.mem_ctx) ir_dereference_variable(temp); + } else if (this->lower_nonconstant_index) { + /* Replace (vector_insert (vec) (scalar) (index)) with a dereference of + * a new temporary. The new temporary gets assigned as + * + * t = vec + * if (index == 0) + * t.x = scalar + * if (index == 1) + * t.y = scalar + * if (index == 2) + * t.z = scalar + * if (index == 3) + * t.w = scalar + */ + ir_variable *const temp = + factory.make_temp(expr->operands[0]->type, "vec_tmp"); + + ir_variable *const src_temp = + factory.make_temp(expr->operands[1]->type, "src_temp"); + + factory.emit(assign(temp, expr->operands[0])); + factory.emit(assign(src_temp, expr->operands[1])); + + for (unsigned i = 0; i < expr->type->vector_elements; i++) { + ir_constant *const cmp_index = + new(factory.mem_ctx) ir_constant(int(i)); + + ir_variable *const cmp_result = + factory.make_temp(glsl_type::bool_type, "index_condition"); + + factory.emit(assign(cmp_result, + equal(expr->operands[2]->clone(factory.mem_ctx, + NULL), + cmp_index))); + + factory.emit(if_tree(cmp_result, + assign(temp, src_temp, WRITEMASK_X << i))); + } + + this->progress = true; + *rv = new(factory.mem_ctx) ir_dereference_variable(temp); + } + + base_ir->insert_before(factory.instructions); +} + +bool +lower_vector_insert(exec_list *instructions, bool lower_nonconstant_index) +{ + vector_insert_visitor v(lower_nonconstant_index); + + visit_list_elements(&v, instructions); + + return v.progress; +} diff --git a/mesalib/src/glsl/main.cpp b/mesalib/src/glsl/main.cpp index ce084b4d7..d7e35bcb3 100644 --- a/mesalib/src/glsl/main.cpp +++ b/mesalib/src/glsl/main.cpp @@ -174,9 +174,11 @@ compile_shader(struct gl_context *ctx, struct gl_shader *shader) /* Optimization passes */ if (!state->error && !shader->ir->is_empty()) { + const struct gl_shader_compiler_options *opts = + &ctx->ShaderCompilerOptions[_mesa_shader_type_to_index(shader->Type)]; bool progress; do { - progress = do_common_optimization(shader->ir, false, false, 32); + progress = do_common_optimization(shader->ir, false, false, 32, opts); } while (progress); validate_ir_tree(shader->ir); diff --git a/mesalib/src/glsl/opt_algebraic.cpp b/mesalib/src/glsl/opt_algebraic.cpp index 70e016d22..d706a6ad1 100644 --- a/mesalib/src/glsl/opt_algebraic.cpp +++ b/mesalib/src/glsl/opt_algebraic.cpp @@ -186,12 +186,12 @@ ir_algebraic_visitor::swizzle_if_required(ir_expression *expr, ir_rvalue * ir_algebraic_visitor::handle_expression(ir_expression *ir) { - ir_constant *op_const[3] = {NULL, NULL, NULL}; - ir_expression *op_expr[3] = {NULL, NULL, NULL}; + ir_constant *op_const[4] = {NULL, NULL, NULL, NULL}; + ir_expression *op_expr[4] = {NULL, NULL, NULL, NULL}; ir_expression *temp; unsigned int i; - assert(ir->get_num_operands() <= 3); + assert(ir->get_num_operands() <= 4); for (i = 0; i < ir->get_num_operands(); i++) { if (ir->operands[i]->type->is_matrix()) return ir; diff --git a/mesalib/src/glsl/opt_flip_matrices.cpp b/mesalib/src/glsl/opt_flip_matrices.cpp new file mode 100644 index 000000000..497513fe8 --- /dev/null +++ b/mesalib/src/glsl/opt_flip_matrices.cpp @@ -0,0 +1,122 @@ +/* + * Copyright © 2013 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * \file opt_flip_matrices.cpp + * + * Convert (matrix * vector) operations to (vector * matrixTranspose), + * which can be done using dot products rather than multiplies and adds. + * On some hardware, this is more efficient. + * + * This currently only does the conversion for built-in matrices which + * already have transposed equivalents. Namely, gl_ModelViewProjectionMatrix + * and gl_TextureMatrix. + */ +#include "ir.h" +#include "ir_optimization.h" +#include "main/macros.h" + +namespace { +class matrix_flipper : public ir_hierarchical_visitor { +public: + matrix_flipper(exec_list *instructions) + { + progress = false; + mvp_transpose = NULL; + texmat_transpose = NULL; + + foreach_list(n, instructions) { + ir_instruction *ir = (ir_instruction *) n; + ir_variable *var = ir->as_variable(); + if (!var) + continue; + if (strcmp(var->name, "gl_ModelViewProjectionMatrixTranspose") == 0) + mvp_transpose = var; + if (strcmp(var->name, "gl_TextureMatrixTranspose") == 0) + texmat_transpose = var; + } + } + + ir_visitor_status visit_enter(ir_expression *ir); + + bool progress; + +private: + ir_variable *mvp_transpose; + ir_variable *texmat_transpose; +}; +} + +ir_visitor_status +matrix_flipper::visit_enter(ir_expression *ir) +{ + if (ir->operation != ir_binop_mul || + !ir->operands[0]->type->is_matrix() || + !ir->operands[1]->type->is_vector()) + return visit_continue; + + ir_variable *mat_var = ir->operands[0]->variable_referenced(); + if (!mat_var) + return visit_continue; + + if (mvp_transpose && + strcmp(mat_var->name, "gl_ModelViewProjectionMatrix") == 0) { + ir_dereference_variable *deref = ir->operands[0]->as_dereference_variable(); + assert(deref && deref->var == mat_var); + + void *mem_ctx = ralloc_parent(ir); + + ir->operands[0] = ir->operands[1]; + ir->operands[1] = new(mem_ctx) ir_dereference_variable(mvp_transpose); + + progress = true; + } else if (texmat_transpose && + strcmp(mat_var->name, "gl_TextureMatrix") == 0) { + ir_dereference_array *array_ref = ir->operands[0]->as_dereference_array(); + assert(array_ref != NULL); + ir_dereference_variable *var_ref = array_ref->array->as_dereference_variable(); + assert(var_ref && var_ref->var == mat_var); + + ir->operands[0] = ir->operands[1]; + ir->operands[1] = array_ref; + + var_ref->var = texmat_transpose; + + texmat_transpose->max_array_access = + MAX2(texmat_transpose->max_array_access, mat_var->max_array_access); + + progress = true; + } + + return visit_continue; +} + +bool +opt_flip_matrices(struct exec_list *instructions) +{ + matrix_flipper v(instructions); + + visit_list_elements(&v, instructions); + + return v.progress; +} diff --git a/mesalib/src/glsl/opt_if_simplification.cpp b/mesalib/src/glsl/opt_if_simplification.cpp index e1a23d94a..db59b131d 100644 --- a/mesalib/src/glsl/opt_if_simplification.cpp +++ b/mesalib/src/glsl/opt_if_simplification.cpp @@ -25,7 +25,8 @@ * \file opt_if_simplification.cpp * * Moves constant branches of if statements out to the surrounding - * instruction stream. + * instruction stream, and inverts if conditionals to avoid empty + * "then" blocks. */ #include "ir.h" @@ -101,6 +102,30 @@ ir_if_simplification_visitor::visit_leave(ir_if *ir) } ir->remove(); this->made_progress = true; + return visit_continue; + } + + /* Turn: + * + * if (cond) { + * } else { + * do_work(); + * } + * + * into : + * + * if (!cond) + * do_work(); + * + * which avoids control flow for "else" (which is usually more + * expensive than normal operations), and the "not" can usually be + * folded into the generation of "cond" anyway. + */ + if (ir->then_instructions.is_empty()) { + ir->condition = new(ralloc_parent(ir->condition)) + ir_expression(ir_unop_logic_not, ir->condition); + ir->else_instructions.move_nodes_to(&ir->then_instructions); + this->made_progress = true; } return visit_continue; diff --git a/mesalib/src/glsl/program.h b/mesalib/src/glsl/program.h index 46ce9dccc..6a76d4d54 100644 --- a/mesalib/src/glsl/program.h +++ b/mesalib/src/glsl/program.h @@ -16,9 +16,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ #include "main/core.h" diff --git a/mesalib/src/glsl/ralloc.c b/mesalib/src/glsl/ralloc.c index 59e71c48b..e79dad764 100644 --- a/mesalib/src/glsl/ralloc.c +++ b/mesalib/src/glsl/ralloc.c @@ -107,9 +107,13 @@ void * ralloc_size(const void *ctx, size_t size) { void *block = calloc(1, size + sizeof(ralloc_header)); + ralloc_header *info; + ralloc_header *parent; - ralloc_header *info = (ralloc_header *) block; - ralloc_header *parent = ctx != NULL ? get_header(ctx) : NULL; + if (unlikely(block == NULL)) + return NULL; + info = (ralloc_header *) block; + parent = ctx != NULL ? get_header(ctx) : NULL; add_child(parent, info); diff --git a/mesalib/src/glsl/standalone_scaffolding.cpp b/mesalib/src/glsl/standalone_scaffolding.cpp index 0c1f52f48..11cd6cdc0 100644 --- a/mesalib/src/glsl/standalone_scaffolding.cpp +++ b/mesalib/src/glsl/standalone_scaffolding.cpp @@ -104,6 +104,7 @@ void initialize_context_to_defaults(struct gl_context *ctx, gl_api api) ctx->Extensions.ARB_texture_cube_map_array = true; ctx->Extensions.ARB_texture_multisample = true; ctx->Extensions.ARB_texture_query_lod = true; + ctx->Extensions.ARB_gpu_shader5 = true; ctx->Const.GLSLVersion = 120; @@ -116,10 +117,22 @@ void initialize_context_to_defaults(struct gl_context *ctx, gl_api api) ctx->Const.VertexProgram.MaxUniformComponents = 512; ctx->Const.MaxVarying = 8; /* == gl_MaxVaryingFloats / 4 */ - ctx->Const.MaxVertexTextureImageUnits = 0; + ctx->Const.VertexProgram.MaxTextureImageUnits = 0; ctx->Const.MaxCombinedTextureImageUnits = 2; - ctx->Const.MaxTextureImageUnits = 2; + ctx->Const.FragmentProgram.MaxTextureImageUnits = 2; ctx->Const.FragmentProgram.MaxUniformComponents = 64; ctx->Const.MaxDrawBuffers = 1; + + /* Set up default shader compiler options. */ + struct gl_shader_compiler_options options; + memset(&options, 0, sizeof(options)); + options.MaxUnrollIterations = 32; + options.MaxIfDepth = UINT_MAX; + + /* Default pragma settings */ + options.DefaultPragmas.Optimize = true; + + for (int sh = 0; sh < MESA_SHADER_TYPES; ++sh) + memcpy(&ctx->ShaderCompilerOptions[sh], &options, sizeof(options)); } diff --git a/mesalib/src/glsl/standalone_scaffolding.h b/mesalib/src/glsl/standalone_scaffolding.h index 0a2cde8a3..7afb1c313 100644 --- a/mesalib/src/glsl/standalone_scaffolding.h +++ b/mesalib/src/glsl/standalone_scaffolding.h @@ -31,6 +31,7 @@ #ifndef STANDALONE_SCAFFOLDING_H #define STANDALONE_SCAFFOLDING_H +#include #include "main/mtypes.h" extern "C" void @@ -47,6 +48,22 @@ extern "C" void _mesa_shader_debug(struct gl_context *ctx, GLenum type, GLuint *id, const char *msg, int len); +static inline gl_shader_type +_mesa_shader_type_to_index(GLenum v) +{ + switch (v) { + case GL_VERTEX_SHADER: + return MESA_SHADER_VERTEX; + case GL_FRAGMENT_SHADER: + return MESA_SHADER_FRAGMENT; + case GL_GEOMETRY_SHADER: + return MESA_SHADER_GEOMETRY; + default: + assert(!"bad value in _mesa_shader_type_to_index()"); + return MESA_SHADER_TYPES; + } +} + /** * Initialize the given gl_context structure to a reasonable set of * defaults representing the minimum capabilities required by the diff --git a/mesalib/src/glsl/test_optpass.cpp b/mesalib/src/glsl/test_optpass.cpp index 117b0b006..fc10cbbde 100644 --- a/mesalib/src/glsl/test_optpass.cpp +++ b/mesalib/src/glsl/test_optpass.cpp @@ -54,7 +54,8 @@ static string read_stdin_to_eof() } static GLboolean -do_optimization(struct exec_list *ir, const char *optimization) +do_optimization(struct exec_list *ir, const char *optimization, + const struct gl_shader_compiler_options *options) { int int_0; int int_1; @@ -64,7 +65,7 @@ do_optimization(struct exec_list *ir, const char *optimization) if (sscanf(optimization, "do_common_optimization ( %d , %d ) ", &int_0, &int_1) == 2) { - return do_common_optimization(ir, int_0 != 0, false, int_1); + return do_common_optimization(ir, int_0 != 0, false, int_1, options); } else if (strcmp(optimization, "do_algebraic") == 0) { return do_algebraic(ir); } else if (strcmp(optimization, "do_constant_folding") == 0) { @@ -141,7 +142,8 @@ do_optimization(struct exec_list *ir, const char *optimization) static GLboolean do_optimization_passes(struct exec_list *ir, char **optimizations, - int num_optimizations, bool quiet) + int num_optimizations, bool quiet, + const struct gl_shader_compiler_options *options) { GLboolean overall_progress = false; @@ -150,7 +152,7 @@ do_optimization_passes(struct exec_list *ir, char **optimizations, if (!quiet) { printf("*** Running optimization %s...", optimization); } - GLboolean progress = do_optimization(ir, optimization); + GLboolean progress = do_optimization(ir, optimization, options); if (!quiet) { printf("%s\n", progress ? "progress" : "no progress"); } @@ -240,9 +242,11 @@ int test_optpass(int argc, char **argv) /* Optimization passes */ if (!state->error) { GLboolean progress; + const struct gl_shader_compiler_options *options = + &ctx->ShaderCompilerOptions[_mesa_shader_type_to_index(shader_type)]; do { progress = do_optimization_passes(shader->ir, &argv[optind], - argc - optind, quiet != 0); + argc - optind, quiet != 0, options); } while (loop && progress); } diff --git a/mesalib/src/mapi/Android.mk b/mesalib/src/mapi/Android.mk index d1749a262..f10437874 100644 --- a/mesalib/src/mapi/Android.mk +++ b/mesalib/src/mapi/Android.mk @@ -36,12 +36,12 @@ include $(CLEAR_VARS) abi_header := shared-glapi/glapi_mapi_tmp.h LOCAL_SRC_FILES := \ - mapi/entry.c \ - mapi/mapi_glapi.c \ - mapi/stub.c \ - mapi/table.c \ - mapi/u_current.c \ - mapi/u_execmem.c + entry.c \ + mapi_glapi.c \ + stub.c \ + table.c \ + u_current.c \ + u_execmem.c LOCAL_CFLAGS := \ -DMAPI_MODE_GLAPI \ @@ -68,9 +68,9 @@ include $(BUILD_SHARED_LIBRARY) mapi_abi_deps := \ $(wildcard $(LOCAL_PATH)/glapi/gen/*.py) \ $(wildcard $(LOCAL_PATH)/glapi/gen/*.xml) \ - $(LOCAL_PATH)/mapi/mapi_abi.py + $(LOCAL_PATH)/mapi_abi.py -$(mapi_abi_headers): PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/mapi/mapi_abi.py +$(mapi_abi_headers): PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/mapi_abi.py $(mapi_abi_headers): PRIVATE_APIXML := $(LOCAL_PATH)/glapi/gen/gl_and_es_API.xml $(mapi_abi_headers): $(mapi_abi_deps) @mkdir -p $(dir $@) diff --git a/mesalib/src/mapi/Makefile.am b/mesalib/src/mapi/Makefile.am new file mode 100644 index 000000000..ef538039b --- /dev/null +++ b/mesalib/src/mapi/Makefile.am @@ -0,0 +1,42 @@ +# Copyright © 2013 Intel Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +SUBDIRS = glapi/gen + +if HAVE_SHARED_GLAPI +SUBDIRS += shared-glapi +endif + +if HAVE_OPENGL +SUBDIRS += glapi +endif + +if HAVE_OPENGL_ES1 +SUBDIRS += es1api +endif + +if HAVE_OPENGL_ES2 +SUBDIRS += es2api +endif + +if HAVE_OPENVG +SUBDIRS += vgapi +endif diff --git a/mesalib/src/mapi/Makefile.sources b/mesalib/src/mapi/Makefile.sources new file mode 100644 index 000000000..aff465a60 --- /dev/null +++ b/mesalib/src/mapi/Makefile.sources @@ -0,0 +1,36 @@ +# src/mapi/Makefile.sources +# +# mapi may be used in several ways +# +# - In default mode, mapi implements the interface defined by mapi.h. To use +# this mode, compile MAPI_FILES. +# +# - In util mode, mapi provides utility functions for use with glapi. To use +# this mode, compile MAPI_UTIL_FILES with MAPI_MODE_UTIL defined. +# +# - In glapi mode, mapi implements the interface defined by glapi.h. To use +# this mode, compile MAPI_GLAPI_FILES with MAPI_MODE_GLAPI defined. +# +# - In bridge mode, mapi provides entry points calling into glapi. To use +# this mode, compile MAPI_BRIDGE_FILES with MAPI_MODE_BRIDGE defined. + +MAPI_UTIL_FILES = \ + $(TOP)/src/mapi/u_current.c \ + $(TOP)/src/mapi/u_execmem.c + +MAPI_FILES = \ + $(TOP)/src/mapi/entry.c \ + $(TOP)/src/mapi/mapi.c \ + $(TOP)/src/mapi/stub.c \ + $(TOP)/src/mapi/table.c \ + $(MAPI_UTIL_FILES) + +MAPI_GLAPI_FILES = \ + $(TOP)/src/mapi/entry.c \ + $(TOP)/src/mapi/mapi_glapi.c \ + $(TOP)/src/mapi/stub.c \ + $(TOP)/src/mapi/table.c \ + $(MAPI_UTIL_FILES) + +MAPI_BRIDGE_FILES = \ + $(TOP)/src/mapi/entry.c diff --git a/mesalib/src/mapi/entry.c b/mesalib/src/mapi/entry.c new file mode 100644 index 000000000..3d9168a72 --- /dev/null +++ b/mesalib/src/mapi/entry.c @@ -0,0 +1,98 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#include "entry.h" +#include "u_current.h" +#include "u_macros.h" + +/* define macros for use by assembly dispatchers */ +#define ENTRY_CURRENT_TABLE U_STRINGIFY(u_current_table) + +/* in bridge mode, mapi is a user of glapi */ +#ifdef MAPI_MODE_BRIDGE +#define ENTRY_CURRENT_TABLE_GET "_glapi_get_dispatch" +#else +#define ENTRY_CURRENT_TABLE_GET U_STRINGIFY(u_current_get_internal) +#endif + +#if defined(USE_X86_ASM) && defined(__GNUC__) +# ifdef GLX_USE_TLS +# include "entry_x86_tls.h" +# else +# include "entry_x86_tsd.h" +# endif +#elif defined(USE_X86_64_ASM) && defined(__GNUC__) && defined(GLX_USE_TLS) +# include "entry_x86-64_tls.h" +#else + +#include + +static INLINE const struct mapi_table * +entry_current_get(void) +{ +#ifdef MAPI_MODE_BRIDGE + return GET_DISPATCH(); +#else + return u_current_get(); +#endif +} + +/* C version of the public entries */ +#define MAPI_TMP_DEFINES +#define MAPI_TMP_PUBLIC_DECLARES +#define MAPI_TMP_PUBLIC_ENTRIES +#include "mapi_tmp.h" + +#ifndef MAPI_MODE_BRIDGE + +void +entry_patch_public(void) +{ +} + +mapi_func +entry_get_public(int slot) +{ + /* pubic_entries are defined by MAPI_TMP_PUBLIC_ENTRIES */ + return public_entries[slot]; +} + +mapi_func +entry_generate(int slot) +{ + return NULL; +} + +void +entry_patch(mapi_func entry, int slot) +{ +} + +#endif /* MAPI_MODE_BRIDGE */ + +#endif /* asm */ diff --git a/mesalib/src/mapi/entry.h b/mesalib/src/mapi/entry.h new file mode 100644 index 000000000..9df810004 --- /dev/null +++ b/mesalib/src/mapi/entry.h @@ -0,0 +1,48 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#ifndef _ENTRY_H_ +#define _ENTRY_H_ + +#include "u_compiler.h" + +typedef void (*mapi_func)(void); + +void +entry_patch_public(void); + +mapi_func +entry_get_public(int slot); + +mapi_func +entry_generate(int slot); + +void +entry_patch(mapi_func entry, int slot); + +#endif /* _ENTRY_H_ */ diff --git a/mesalib/src/mapi/entry_x86-64_tls.h b/mesalib/src/mapi/entry_x86-64_tls.h new file mode 100644 index 000000000..36cad00c2 --- /dev/null +++ b/mesalib/src/mapi/entry_x86-64_tls.h @@ -0,0 +1,113 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#include "u_macros.h" + +__asm__(".text\n" + ".balign 32\n" + "x86_64_entry_start:"); + +#define STUB_ASM_ENTRY(func) \ + ".globl " func "\n" \ + ".type " func ", @function\n" \ + ".balign 32\n" \ + func ":" + +#define STUB_ASM_CODE(slot) \ + "movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%rip), %rax\n\t" \ + "movq %fs:(%rax), %r11\n\t" \ + "jmp *(8 * " slot ")(%r11)" + +#define MAPI_TMP_STUB_ASM_GCC +#include "mapi_tmp.h" + +#ifndef MAPI_MODE_BRIDGE + +__asm__("x86_64_current_tls:\n\t" + "movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%rip), %rax\n\t" + "ret"); + +extern unsigned long +x86_64_current_tls(); + +#include +#include "u_execmem.h" + +void +entry_patch_public(void) +{ +} + +static char +x86_64_entry_start[]; + +mapi_func +entry_get_public(int slot) +{ + return (mapi_func) (x86_64_entry_start + slot * 32); +} + +void +entry_patch(mapi_func entry, int slot) +{ + char *code = (char *) entry; + *((unsigned int *) (code + 12)) = slot * sizeof(mapi_func); +} + +mapi_func +entry_generate(int slot) +{ + const char code_templ[16] = { + /* movq %fs:0, %r11 */ + 0x64, 0x4c, 0x8b, 0x1c, 0x25, 0x00, 0x00, 0x00, 0x00, + /* jmp *0x1234(%r11) */ + 0x41, 0xff, 0xa3, 0x34, 0x12, 0x00, 0x00, + }; + unsigned long addr; + void *code; + mapi_func entry; + + addr = x86_64_current_tls(); + if ((addr >> 32) != 0xffffffff) + return NULL; + addr &= 0xffffffff; + + code = u_execmem_alloc(sizeof(code_templ)); + if (!code) + return NULL; + + memcpy(code, code_templ, sizeof(code_templ)); + + *((unsigned int *) (code + 5)) = addr; + entry = (mapi_func) code; + entry_patch(entry, slot); + + return entry; +} + +#endif /* MAPI_MODE_BRIDGE */ diff --git a/mesalib/src/mapi/entry_x86_tls.h b/mesalib/src/mapi/entry_x86_tls.h new file mode 100644 index 000000000..58d09caa6 --- /dev/null +++ b/mesalib/src/mapi/entry_x86_tls.h @@ -0,0 +1,133 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#include +#include "u_macros.h" + +__asm__(".text"); + +__asm__("x86_current_tls:\n\t" + "call 1f\n" + "1:\n\t" + "popl %eax\n\t" + "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t" + "movl " ENTRY_CURRENT_TABLE "@GOTNTPOFF(%eax), %eax\n\t" + "ret"); + +#ifndef GLX_X86_READONLY_TEXT +__asm__(".section wtext, \"awx\", @progbits"); +#endif /* GLX_X86_READONLY_TEXT */ + +__asm__(".balign 16\n" + "x86_entry_start:"); + +#define STUB_ASM_ENTRY(func) \ + ".globl " func "\n" \ + ".type " func ", @function\n" \ + ".balign 16\n" \ + func ":" + +#define STUB_ASM_CODE(slot) \ + "call x86_current_tls\n\t" \ + "movl %gs:(%eax), %eax\n\t" \ + "jmp *(4 * " slot ")(%eax)" + +#define MAPI_TMP_STUB_ASM_GCC +#include "mapi_tmp.h" + +#ifndef GLX_X86_READONLY_TEXT +__asm__(".balign 16\n" + "x86_entry_end:"); +__asm__(".text"); +#endif /* GLX_X86_READONLY_TEXT */ + +#ifndef MAPI_MODE_BRIDGE + +#include "u_execmem.h" + +extern unsigned long +x86_current_tls(); + +static char x86_entry_start[]; +static char x86_entry_end[]; + +void +entry_patch_public(void) +{ +#ifndef GLX_X86_READONLY_TEXT + char patch[8] = { + 0x65, 0xa1, 0x00, 0x00, 0x00, 0x00, /* movl %gs:0x0, %eax */ + 0x90, 0x90 /* nop's */ + }; + char *entry; + + *((unsigned long *) (patch + 2)) = x86_current_tls(); + + for (entry = x86_entry_start; entry < x86_entry_end; entry += 16) + memcpy(entry, patch, sizeof(patch)); +#endif +} + +mapi_func +entry_get_public(int slot) +{ + return (mapi_func) (x86_entry_start + slot * 16); +} + +void +entry_patch(mapi_func entry, int slot) +{ + char *code = (char *) entry; + *((unsigned long *) (code + 8)) = slot * sizeof(mapi_func); +} + +mapi_func +entry_generate(int slot) +{ + const char code_templ[16] = { + 0x65, 0xa1, 0x00, 0x00, 0x00, 0x00, /* movl %gs:0x0, %eax */ + 0xff, 0xa0, 0x34, 0x12, 0x00, 0x00, /* jmp *0x1234(%eax) */ + 0x90, 0x90, 0x90, 0x90 /* nop's */ + }; + void *code; + mapi_func entry; + + code = u_execmem_alloc(sizeof(code_templ)); + if (!code) + return NULL; + + memcpy(code, code_templ, sizeof(code_templ)); + + *((unsigned long *) (code + 2)) = x86_current_tls(); + entry = (mapi_func) code; + entry_patch(entry, slot); + + return entry; +} + +#endif /* MAPI_MODE_BRIDGE */ diff --git a/mesalib/src/mapi/entry_x86_tsd.h b/mesalib/src/mapi/entry_x86_tsd.h new file mode 100644 index 000000000..c479c199e --- /dev/null +++ b/mesalib/src/mapi/entry_x86_tsd.h @@ -0,0 +1,104 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#include "u_macros.h" + +#define X86_ENTRY_SIZE 32 + +__asm__(".text\n" + ".balign 32\n" + "x86_entry_start:"); + +#define STUB_ASM_ENTRY(func) \ + ".globl " func "\n" \ + ".type " func ", @function\n" \ + ".balign 32\n" \ + func ":" + +#define STUB_ASM_CODE(slot) \ + "movl " ENTRY_CURRENT_TABLE ", %eax\n\t" \ + "testl %eax, %eax\n\t" \ + "je 1f\n\t" \ + "jmp *(4 * " slot ")(%eax)\n" \ + "1:\n\t" \ + "call " ENTRY_CURRENT_TABLE_GET "\n\t" \ + "jmp *(4 * " slot ")(%eax)" + +#define MAPI_TMP_STUB_ASM_GCC +#include "mapi_tmp.h" + +#ifndef MAPI_MODE_BRIDGE + +__asm__(".balign 32\n" + "x86_entry_end:"); + +#include +#include "u_execmem.h" + +static const char x86_entry_start[]; +static const char x86_entry_end[]; + +void +entry_patch_public(void) +{ +} + +mapi_func +entry_get_public(int slot) +{ + return (mapi_func) (x86_entry_start + slot * X86_ENTRY_SIZE); +} + +void +entry_patch(mapi_func entry, int slot) +{ + char *code = (char *) entry; + + *((unsigned long *) (code + 11)) = slot * sizeof(mapi_func); + *((unsigned long *) (code + 22)) = slot * sizeof(mapi_func); +} + +mapi_func +entry_generate(int slot) +{ + const char *code_templ = x86_entry_end - X86_ENTRY_SIZE; + void *code; + mapi_func entry; + + code = u_execmem_alloc(X86_ENTRY_SIZE); + if (!code) + return NULL; + + memcpy(code, code_templ, X86_ENTRY_SIZE); + entry = (mapi_func) code; + entry_patch(entry, slot); + + return entry; +} + +#endif /* MAPI_MODE_BRIDGE */ diff --git a/mesalib/src/mapi/glapi/Makefile.am b/mesalib/src/mapi/glapi/Makefile.am index bdb527d5c..1698d1474 100644 --- a/mesalib/src/mapi/glapi/Makefile.am +++ b/mesalib/src/mapi/glapi/Makefile.am @@ -20,8 +20,8 @@ # IN THE SOFTWARE. TOP = $(top_srcdir) -include sources.mak -include ../mapi/sources.mak +include Makefile.sources +include ../Makefile.sources AM_CPPFLAGS = \ $(DEFINES) \ diff --git a/mesalib/src/mapi/glapi/Makefile.sources b/mesalib/src/mapi/glapi/Makefile.sources new file mode 100644 index 000000000..58d28c52c --- /dev/null +++ b/mesalib/src/mapi/glapi/Makefile.sources @@ -0,0 +1,19 @@ +# src/mapi/glapi/Makefile.sources + +GLAPI_SOURCES = \ + glapi_dispatch.c \ + glapi_entrypoint.c \ + glapi_gentable.c \ + glapi_getproc.c \ + glapi_nop.c \ + glthread.c \ + glapi.c + +X86_API = \ + glapi_x86.S + +X86_64_API = \ + glapi_x86-64.S + +SPARC_API = \ + glapi_sparc.S diff --git a/mesalib/src/mapi/glapi/SConscript b/mesalib/src/mapi/glapi/SConscript index 00cce3e7f..c4ac080aa 100644 --- a/mesalib/src/mapi/glapi/SConscript +++ b/mesalib/src/mapi/glapi/SConscript @@ -43,13 +43,14 @@ mapi_sources = [ 'u_execmem.c', ] for s in mapi_sources: - o = env.SharedObject(s[:-2], '../mapi/' + s) + o = env.SharedObject(s[:-2], '../' + s) glapi_sources.append(o) # # Assembly sources # -if env['gcc'] and env['platform'] not in ('cygwin', 'darwin', 'windows'): +if (env['gcc'] or env['clang']) and \ + env['platform'] not in ('cygwin', 'darwin', 'windows'): GLAPI = '#src/mapi/glapi/' if env['machine'] == 'x86': @@ -94,11 +95,6 @@ if env['gcc'] and env['platform'] not in ('cygwin', 'darwin', 'windows'): else: pass -if env['toolchain'] == 'crossmingw': - # compile these files without -gstabs option - glapi_sources = env.compile_without_gstabs(glapi_sources, "glapi_dispatch.c") - glapi_sources = env.compile_without_gstabs(glapi_sources, "glapi_getproc.c") - glapi = env.ConvenienceLibrary( target = 'glapi', source = glapi_sources, diff --git a/mesalib/src/mapi/glapi/gen/GL3x.xml b/mesalib/src/mapi/glapi/gen/GL3x.xml index c17a64402..5078f7b6d 100644 --- a/mesalib/src/mapi/glapi/gen/GL3x.xml +++ b/mesalib/src/mapi/glapi/gen/GL3x.xml @@ -424,26 +424,26 @@ - - + + - - + + - - + + - - + + @@ -607,7 +607,7 @@ - + diff --git a/mesalib/src/mapi/glapi/gen/Makefile.am b/mesalib/src/mapi/glapi/gen/Makefile.am index 36e47e21e..97200598e 100644 --- a/mesalib/src/mapi/glapi/gen/Makefile.am +++ b/mesalib/src/mapi/glapi/gen/Makefile.am @@ -20,7 +20,7 @@ XORG_INDENT_FLAGS = -linux -bad -bap -blf -bli0 -cbi0 -cdw -nce -cs -i4 -lc80 -p MESA_DIR = $(top_srcdir)/src/mesa MESA_GLAPI_DIR = $(top_srcdir)/src/mapi/glapi -MESA_MAPI_DIR = $(top_srcdir)/src/mapi/mapi +MESA_MAPI_DIR = $(top_srcdir)/src/mapi MESA_GLX_DIR = $(top_srcdir)/src/glx MESA_GLAPI_OUTPUTS = \ diff --git a/mesalib/src/mapi/glapi/gen/es_EXT.xml b/mesalib/src/mapi/glapi/gen/es_EXT.xml index ff378acf1..f412333df 100644 --- a/mesalib/src/mapi/glapi/gen/es_EXT.xml +++ b/mesalib/src/mapi/glapi/gen/es_EXT.xml @@ -689,22 +689,25 @@ - + + static_dispatch="false" es2="2.0"> - + - + @@ -779,7 +782,8 @@ - + @@ -787,7 +791,8 @@ - + @@ -815,8 +820,8 @@ - + @@ -825,7 +830,7 @@ + static_dispatch="false" es1="1.0" es2="2.0"> diff --git a/mesalib/src/mapi/glapi/gen/gl_API.xml b/mesalib/src/mapi/glapi/gen/gl_API.xml index df9592477..f7257978f 100644 --- a/mesalib/src/mapi/glapi/gen/gl_API.xml +++ b/mesalib/src/mapi/glapi/gen/gl_API.xml @@ -5685,83 +5685,83 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + @@ -6004,44 +6004,44 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -7656,8 +7656,8 @@ - - + + diff --git a/mesalib/src/mapi/glapi/gen/gl_XML.py b/mesalib/src/mapi/glapi/gen/gl_XML.py index 227e9fcd9..3bbc79439 100644 --- a/mesalib/src/mapi/glapi/gen/gl_XML.py +++ b/mesalib/src/mapi/glapi/gen/gl_XML.py @@ -802,6 +802,8 @@ class gl_function( gl_item ): comma = "" for p in self.parameterIterator(): + if p.is_padding: + continue p_string = p_string + comma + p.name comma = ", " diff --git a/mesalib/src/mapi/glapi/gen/gl_enums.py b/mesalib/src/mapi/glapi/gen/gl_enums.py index 0bf8b0a9c..806d38445 100644 --- a/mesalib/src/mapi/glapi/gen/gl_enums.py +++ b/mesalib/src/mapi/glapi/gen/gl_enums.py @@ -43,7 +43,6 @@ class PrintGlEnums(gl_XML.gl_print_base): def printRealHeader(self): print '#include "main/glheader.h"' - print '#include "main/mfeatures.h"' print '#include "main/enums.h"' print '#include "main/imports.h"' print '#include "main/mtypes.h"' @@ -115,7 +114,7 @@ const char *_mesa_lookup_enum_by_nr( int nr ) /** * Primitive names */ -static const char *prim_names[PRIM_UNKNOWN + 1] = { +static const char *prim_names[PRIM_MAX+3] = { "GL_POINTS", "GL_LINES", "GL_LINE_LOOP", @@ -126,8 +125,11 @@ static const char *prim_names[PRIM_UNKNOWN + 1] = { "GL_QUADS", "GL_QUAD_STRIP", "GL_POLYGON", + "GL_LINES_ADJACENCY", + "GL_LINE_STRIP_ADJACENCY", + "GL_TRIANGLES_ADJACENCY", + "GL_TRIANGLE_STRIP_ADJACENCY", "outside begin/end", - "inside unknown primitive", "unknown state" }; diff --git a/mesalib/src/mapi/glapi/gen/gl_genexec.py b/mesalib/src/mapi/glapi/gen/gl_genexec.py index a85b4471a..e91d4e9ac 100644 --- a/mesalib/src/mapi/glapi/gen/gl_genexec.py +++ b/mesalib/src/mapi/glapi/gen/gl_genexec.py @@ -44,7 +44,6 @@ header = """/** */ -#include "main/mfeatures.h" #include "main/accum.h" #include "main/api_loopback.h" #include "main/api_exec.h" @@ -110,6 +109,7 @@ header = """/** #include "main/syncobj.h" #include "main/formatquery.h" #include "main/dispatch.h" +#include "vbo/vbo.h" /** @@ -129,6 +129,8 @@ _mesa_initialize_exec_table(struct gl_context *ctx) assert(exec != NULL); assert(ctx->Version > 0); + + vbo_initialize_exec_dispatch(ctx, exec); """ diff --git a/mesalib/src/mapi/glapi/gen/gl_table.py b/mesalib/src/mapi/glapi/gen/gl_table.py index 382eaafd9..fd384689f 100644 --- a/mesalib/src/mapi/glapi/gen/gl_table.py +++ b/mesalib/src/mapi/glapi/gen/gl_table.py @@ -97,12 +97,6 @@ class PrintRemapTable(gl_XML.gl_print_base): * can SET_FuncName, are used to get and set the dispatch pointer for the * named function in the specified dispatch table. */ - -/* GLXEXT is defined when building the GLX extension in the xserver. - */ -#if !defined(GLXEXT) -#include "main/mfeatures.h" -#endif """ return @@ -147,17 +141,6 @@ class PrintRemapTable(gl_XML.gl_print_base): for f, index in abi_functions: print '#define _gloffset_%s %d' % (f.name, f.offset) - print '' - print '#if !FEATURE_remap_table' - print '' - - for f, index in functions: - print '#define _gloffset_%s %d' % (f.name, f.offset) - - print '' - print '#else /* !FEATURE_remap_table */' - print '' - if self.es: remap_table = "esLocalRemapTable" @@ -180,8 +163,6 @@ class PrintRemapTable(gl_XML.gl_print_base): print '#define _gloffset_%s %s[%s_remap_index]' % (f.name, remap_table, f.name) print '' - print '#endif /* !FEATURE_remap_table */' - print '' for f, index in abi_functions + functions: arg_string = gl_XML.create_parameter_string( f.parameters, 0 ) @@ -209,12 +190,10 @@ class PrintRemapTable(gl_XML.gl_print_base): print '#define SET_%s(disp, fn) SET_%s(disp, fn)' % (name, f.name) print '' - print '#if FEATURE_remap_table' for f in alias_functions: for name in f.entry_points: if name != f.name: print '#define %s_remap_index %s_remap_index' % (name, f.name) - print '#endif /* FEATURE_remap_table */' print '' return diff --git a/mesalib/src/mapi/glapi/gen/gl_x86-64_asm.py b/mesalib/src/mapi/glapi/gen/gl_x86-64_asm.py index a3548c295..19e0e15b0 100644 --- a/mesalib/src/mapi/glapi/gen/gl_x86-64_asm.py +++ b/mesalib/src/mapi/glapi/gen/gl_x86-64_asm.py @@ -180,19 +180,6 @@ class PrintGenericStubs(gl_XML.gl_print_base): def printRealFooter(self): - print '' - print '#if defined(GLX_USE_TLS) && defined(__linux__)' - print ' .section ".note.ABI-tag", "a"' - print ' .p2align 2' - print ' .long 1f - 0f /* name length */' - print ' .long 3f - 2f /* data length */' - print ' .long 1 /* note length */' - print '0: .asciz "GNU" /* vendor name */' - print '1: .p2align 2' - print '2: .long 0 /* note data: the ABI tag */' - print ' .long 2,4,20 /* Minimum kernel version w/TLS */' - print '3: .p2align 2 /* pad out section */' - print '#endif /* GLX_USE_TLS */' print '' print '#if defined (__ELF__) && defined (__linux__)' print ' .section .note.GNU-stack,"",%progbits' diff --git a/mesalib/src/mapi/glapi/gen/gl_x86_asm.py b/mesalib/src/mapi/glapi/gen/gl_x86_asm.py index 8b0f6ee24..919bbc032 100644 --- a/mesalib/src/mapi/glapi/gen/gl_x86_asm.py +++ b/mesalib/src/mapi/glapi/gen/gl_x86_asm.py @@ -189,19 +189,6 @@ class PrintGenericStubs(gl_XML.gl_print_base): print '\t\tALIGNTEXT16' print 'GLNAME(gl_dispatch_functions_end):' print '' - print '#if defined(GLX_USE_TLS) && defined(__linux__)' - print ' .section ".note.ABI-tag", "a"' - print ' .p2align 2' - print ' .long 1f - 0f /* name length */' - print ' .long 3f - 2f /* data length */' - print ' .long 1 /* note length */' - print '0: .asciz "GNU" /* vendor name */' - print '1: .p2align 2' - print '2: .long 0 /* note data: the ABI tag */' - print ' .long 2,4,20 /* Minimum kernel version w/TLS */' - print '3: .p2align 2 /* pad out section */' - print '#endif /* GLX_USE_TLS */' - print '' print '#if defined (__ELF__) && defined (__linux__)' print ' .section .note.GNU-stack,"",%progbits' print '#endif' diff --git a/mesalib/src/mapi/glapi/gen/glapi_gen.mk b/mesalib/src/mapi/glapi/gen/glapi_gen.mk index f65286fbd..242ae5fd9 100644 --- a/mesalib/src/mapi/glapi/gen/glapi_gen.mk +++ b/mesalib/src/mapi/glapi/gen/glapi_gen.mk @@ -4,7 +4,7 @@ glapi_gen_common_deps := \ $(wildcard $(top_srcdir)/src/mapi/glapi/gen/*.xml) \ $(wildcard $(top_srcdir)/src/mapi/glapi/gen/*.py) -glapi_gen_mapi_script := $(top_srcdir)/src/mapi/mapi/mapi_abi.py +glapi_gen_mapi_script := $(top_srcdir)/src/mapi/mapi_abi.py glapi_gen_mapi_deps := \ $(glapi_gen_mapi_script) \ $(glapi_gen_common_deps) diff --git a/mesalib/src/mapi/glapi/gen/mesadef.py b/mesalib/src/mapi/glapi/gen/mesadef.py index 473baaee5..eefda7643 100644 --- a/mesalib/src/mapi/glapi/gen/mesadef.py +++ b/mesalib/src/mapi/glapi/gen/mesadef.py @@ -19,9 +19,10 @@ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. # Generate the mesa.def file for Windows. diff --git a/mesalib/src/mapi/glapi/glapi.c b/mesalib/src/mapi/glapi/glapi.c index f7655c558..18a7d31a7 100644 --- a/mesalib/src/mapi/glapi/glapi.c +++ b/mesalib/src/mapi/glapi/glapi.c @@ -27,7 +27,7 @@ */ #include "glapi/glapi.h" -#include "mapi/u_current.h" +#include "u_current.h" /* * Global variables, _glapi_get_context, and _glapi_get_dispatch are defined in diff --git a/mesalib/src/mapi/glapi/glapi.h b/mesalib/src/mapi/glapi/glapi.h index f6854754b..bacc4c5f6 100644 --- a/mesalib/src/mapi/glapi/glapi.h +++ b/mesalib/src/mapi/glapi/glapi.h @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/mesalib/src/mapi/glapi/glapi_dispatch.c b/mesalib/src/mapi/glapi/glapi_dispatch.c index be65ebedd..7f8056242 100644 --- a/mesalib/src/mapi/glapi/glapi_dispatch.c +++ b/mesalib/src/mapi/glapi/glapi_dispatch.c @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/mesalib/src/mapi/glapi/glapi_entrypoint.c b/mesalib/src/mapi/glapi/glapi_entrypoint.c index 7a0eb3537..6b03548fe 100644 --- a/mesalib/src/mapi/glapi/glapi_entrypoint.c +++ b/mesalib/src/mapi/glapi/glapi_entrypoint.c @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ /** @@ -30,7 +31,7 @@ #include "glapi/glapi_priv.h" -#include "mapi/u_execmem.h" +#include "u_execmem.h" #ifdef USE_X86_ASM diff --git a/mesalib/src/mapi/glapi/glapi_getproc.c b/mesalib/src/mapi/glapi/glapi_getproc.c index f976d5808..3cbd68fda 100644 --- a/mesalib/src/mapi/glapi/glapi_getproc.c +++ b/mesalib/src/mapi/glapi/glapi_getproc.c @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ /** diff --git a/mesalib/src/mapi/glapi/glapi_nop.c b/mesalib/src/mapi/glapi/glapi_nop.c index 69b1ae6dd..bdd1786fe 100644 --- a/mesalib/src/mapi/glapi/glapi_nop.c +++ b/mesalib/src/mapi/glapi/glapi_nop.c @@ -18,9 +18,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/mesalib/src/mapi/glapi/glapi_priv.h b/mesalib/src/mapi/glapi/glapi_priv.h index 3ab553a2b..ea32f302f 100644 --- a/mesalib/src/mapi/glapi/glapi_priv.h +++ b/mesalib/src/mapi/glapi/glapi_priv.h @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/mesalib/src/mapi/glapi/glthread.h b/mesalib/src/mapi/glapi/glthread.h index 1c3f4e2bf..2399abb2b 100644 --- a/mesalib/src/mapi/glapi/glthread.h +++ b/mesalib/src/mapi/glapi/glthread.h @@ -1,7 +1,7 @@ #ifndef GLTHREAD_H #define GLTHREAD_H -#include "mapi/u_thread.h" +#include "u_thread.h" #ifdef __cplusplus extern "C" { diff --git a/mesalib/src/mapi/glapi/sources.mak b/mesalib/src/mapi/glapi/sources.mak deleted file mode 100644 index aa8a4d40a..000000000 --- a/mesalib/src/mapi/glapi/sources.mak +++ /dev/null @@ -1,19 +0,0 @@ -# src/mapi/glapi/sources.mak - -GLAPI_SOURCES = \ - glapi_dispatch.c \ - glapi_entrypoint.c \ - glapi_gentable.c \ - glapi_getproc.c \ - glapi_nop.c \ - glthread.c \ - glapi.c - -X86_API = \ - glapi_x86.S - -X86_64_API = \ - glapi_x86-64.S - -SPARC_API = \ - glapi_sparc.S diff --git a/mesalib/src/mapi/mapi.c b/mesalib/src/mapi/mapi.c new file mode 100644 index 000000000..b471c40b1 --- /dev/null +++ b/mesalib/src/mapi/mapi.c @@ -0,0 +1,191 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#include +#include + +#include "u_current.h" +#include "u_thread.h" +#include "mapi.h" +#include "stub.h" +#include "table.h" + +/* dynamic stubs will run out before this array */ +static const struct mapi_stub *mapi_stub_map[MAPI_TABLE_NUM_SLOTS]; +static int mapi_num_stubs; + +static const struct mapi_stub * +get_stub(const char *name, const struct mapi_stub *alias) +{ + const struct mapi_stub *stub; + + stub = stub_find_public(name); + if (!stub) { + struct mapi_stub *dyn = stub_find_dynamic(name, 1); + if (dyn) { + stub_fix_dynamic(dyn, alias); + stub = dyn; + } + } + + return stub; +} + +/** + * Initialize mapi. spec consists of NULL-separated strings. The first string + * denotes the version. It is followed by variable numbers of entries. Each + * entry can have multiple names. An empty name terminates an entry. An empty + * entry terminates the spec. A spec of two entries, Foo and Bar, is as + * follows + * + * "1\0" + * "Foo\0" + * "FooEXT\0" + * "\0" + * "Bar\0" + * "\0" + */ +void +mapi_init(const char *spec) +{ + u_mutex_declare_static(mutex); + const char *p; + int ver, count; + + u_mutex_lock(mutex); + + /* already initialized */ + if (mapi_num_stubs) { + u_mutex_unlock(mutex); + return; + } + + count = 0; + p = spec; + + /* parse version string */ + ver = atoi(p); + if (ver != 1) { + u_mutex_unlock(mutex); + return; + } + p += strlen(p) + 1; + + while (*p) { + const struct mapi_stub *stub; + + stub = get_stub(p, NULL); + /* out of dynamic entries */ + if (!stub) + break; + p += strlen(p) + 1; + + while (*p) { + get_stub(p, stub); + p += strlen(p) + 1; + } + + mapi_stub_map[count++] = stub; + p++; + } + + mapi_num_stubs = count; + + u_mutex_unlock(mutex); +} + +/** + * Return the address of an entry. Optionally generate the entry if it does + * not exist. + */ +mapi_proc +mapi_get_proc_address(const char *name) +{ + const struct mapi_stub *stub; + + stub = stub_find_public(name); + if (!stub) + stub = stub_find_dynamic(name, 0); + + return (stub) ? (mapi_proc) stub_get_addr(stub) : NULL; +} + +/** + * Create a dispatch table. + */ +struct mapi_table * +mapi_table_create(void) +{ + const struct mapi_table *noop = table_get_noop(); + struct mapi_table *tbl; + + tbl = malloc(MAPI_TABLE_SIZE); + if (tbl) + memcpy(tbl, noop, MAPI_TABLE_SIZE); + + return tbl; +} + +/** + * Destroy a dispatch table. + */ +void +mapi_table_destroy(struct mapi_table *tbl) +{ + free(tbl); +} + +/** + * Fill a dispatch table. The order of the procs is determined when mapi_init + * is called. + */ +void +mapi_table_fill(struct mapi_table *tbl, const mapi_proc *procs) +{ + const struct mapi_table *noop = table_get_noop(); + int i; + + for (i = 0; i < mapi_num_stubs; i++) { + const struct mapi_stub *stub = mapi_stub_map[i]; + int slot = stub_get_slot(stub); + mapi_func func = (mapi_func) procs[i]; + + if (!func) + func = table_get_func(noop, slot); + table_set_func(tbl, slot, func); + } +} + +/** + * Make a dispatch table current. + */ +void +mapi_table_make_current(const struct mapi_table *tbl) +{ + u_current_set(tbl); +} diff --git a/mesalib/src/mapi/mapi.h b/mesalib/src/mapi/mapi.h new file mode 100644 index 000000000..c7e43e22e --- /dev/null +++ b/mesalib/src/mapi/mapi.h @@ -0,0 +1,66 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#ifndef _MAPI_H_ +#define _MAPI_H_ + +#include "u_compiler.h" + +#ifdef _WIN32 +#ifdef MAPI_DLL_EXPORTS +#define MAPI_EXPORT __declspec(dllexport) +#else +#define MAPI_EXPORT __declspec(dllimport) +#endif +#else /* _WIN32 */ +#define MAPI_EXPORT PUBLIC +#endif + +typedef void (*mapi_proc)(void); + +struct mapi_table; + +MAPI_EXPORT void +mapi_init(const char *spec); + +MAPI_EXPORT mapi_proc +mapi_get_proc_address(const char *name); + +MAPI_EXPORT struct mapi_table * +mapi_table_create(void); + +MAPI_EXPORT void +mapi_table_destroy(struct mapi_table *tbl); + +MAPI_EXPORT void +mapi_table_fill(struct mapi_table *tbl, const mapi_proc *procs); + +MAPI_EXPORT void +mapi_table_make_current(const struct mapi_table *tbl); + +#endif /* _MAPI_H_ */ diff --git a/mesalib/src/mapi/mapi/entry.c b/mesalib/src/mapi/mapi/entry.c deleted file mode 100644 index 3d9168a72..000000000 --- a/mesalib/src/mapi/mapi/entry.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#include "entry.h" -#include "u_current.h" -#include "u_macros.h" - -/* define macros for use by assembly dispatchers */ -#define ENTRY_CURRENT_TABLE U_STRINGIFY(u_current_table) - -/* in bridge mode, mapi is a user of glapi */ -#ifdef MAPI_MODE_BRIDGE -#define ENTRY_CURRENT_TABLE_GET "_glapi_get_dispatch" -#else -#define ENTRY_CURRENT_TABLE_GET U_STRINGIFY(u_current_get_internal) -#endif - -#if defined(USE_X86_ASM) && defined(__GNUC__) -# ifdef GLX_USE_TLS -# include "entry_x86_tls.h" -# else -# include "entry_x86_tsd.h" -# endif -#elif defined(USE_X86_64_ASM) && defined(__GNUC__) && defined(GLX_USE_TLS) -# include "entry_x86-64_tls.h" -#else - -#include - -static INLINE const struct mapi_table * -entry_current_get(void) -{ -#ifdef MAPI_MODE_BRIDGE - return GET_DISPATCH(); -#else - return u_current_get(); -#endif -} - -/* C version of the public entries */ -#define MAPI_TMP_DEFINES -#define MAPI_TMP_PUBLIC_DECLARES -#define MAPI_TMP_PUBLIC_ENTRIES -#include "mapi_tmp.h" - -#ifndef MAPI_MODE_BRIDGE - -void -entry_patch_public(void) -{ -} - -mapi_func -entry_get_public(int slot) -{ - /* pubic_entries are defined by MAPI_TMP_PUBLIC_ENTRIES */ - return public_entries[slot]; -} - -mapi_func -entry_generate(int slot) -{ - return NULL; -} - -void -entry_patch(mapi_func entry, int slot) -{ -} - -#endif /* MAPI_MODE_BRIDGE */ - -#endif /* asm */ diff --git a/mesalib/src/mapi/mapi/entry.h b/mesalib/src/mapi/mapi/entry.h deleted file mode 100644 index 9df810004..000000000 --- a/mesalib/src/mapi/mapi/entry.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#ifndef _ENTRY_H_ -#define _ENTRY_H_ - -#include "u_compiler.h" - -typedef void (*mapi_func)(void); - -void -entry_patch_public(void); - -mapi_func -entry_get_public(int slot); - -mapi_func -entry_generate(int slot); - -void -entry_patch(mapi_func entry, int slot); - -#endif /* _ENTRY_H_ */ diff --git a/mesalib/src/mapi/mapi/entry_x86-64_tls.h b/mesalib/src/mapi/mapi/entry_x86-64_tls.h deleted file mode 100644 index 72d4125a6..000000000 --- a/mesalib/src/mapi/mapi/entry_x86-64_tls.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#include "u_macros.h" - -#ifdef __linux__ -__asm__(".section .note.ABI-tag, \"a\"\n\t" - ".p2align 2\n\t" - ".long 1f - 0f\n\t" /* name length */ - ".long 3f - 2f\n\t" /* data length */ - ".long 1\n\t" /* note length */ - "0: .asciz \"GNU\"\n\t" /* vendor name */ - "1: .p2align 2\n\t" - "2: .long 0\n\t" /* note data: the ABI tag */ - ".long 2,4,20\n\t" /* Minimum kernel version w/TLS */ - "3: .p2align 2\n\t"); /* pad out section */ -#endif /* __linux__ */ - -__asm__(".text\n" - ".balign 32\n" - "x86_64_entry_start:"); - -#define STUB_ASM_ENTRY(func) \ - ".globl " func "\n" \ - ".type " func ", @function\n" \ - ".balign 32\n" \ - func ":" - -#define STUB_ASM_CODE(slot) \ - "movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%rip), %rax\n\t" \ - "movq %fs:(%rax), %r11\n\t" \ - "jmp *(8 * " slot ")(%r11)" - -#define MAPI_TMP_STUB_ASM_GCC -#include "mapi_tmp.h" - -#ifndef MAPI_MODE_BRIDGE - -__asm__("x86_64_current_tls:\n\t" - "movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%rip), %rax\n\t" - "ret"); - -extern unsigned long -x86_64_current_tls(); - -#include -#include "u_execmem.h" - -void -entry_patch_public(void) -{ -} - -static char -x86_64_entry_start[]; - -mapi_func -entry_get_public(int slot) -{ - return (mapi_func) (x86_64_entry_start + slot * 32); -} - -void -entry_patch(mapi_func entry, int slot) -{ - char *code = (char *) entry; - *((unsigned int *) (code + 12)) = slot * sizeof(mapi_func); -} - -mapi_func -entry_generate(int slot) -{ - const char code_templ[16] = { - /* movq %fs:0, %r11 */ - 0x64, 0x4c, 0x8b, 0x1c, 0x25, 0x00, 0x00, 0x00, 0x00, - /* jmp *0x1234(%r11) */ - 0x41, 0xff, 0xa3, 0x34, 0x12, 0x00, 0x00, - }; - unsigned long addr; - void *code; - mapi_func entry; - - addr = x86_64_current_tls(); - if ((addr >> 32) != 0xffffffff) - return NULL; - addr &= 0xffffffff; - - code = u_execmem_alloc(sizeof(code_templ)); - if (!code) - return NULL; - - memcpy(code, code_templ, sizeof(code_templ)); - - *((unsigned int *) (code + 5)) = addr; - entry = (mapi_func) code; - entry_patch(entry, slot); - - return entry; -} - -#endif /* MAPI_MODE_BRIDGE */ diff --git a/mesalib/src/mapi/mapi/entry_x86_tls.h b/mesalib/src/mapi/mapi/entry_x86_tls.h deleted file mode 100644 index de918128e..000000000 --- a/mesalib/src/mapi/mapi/entry_x86_tls.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#include -#include "u_macros.h" - -#ifdef __linux__ -__asm__(".section .note.ABI-tag, \"a\"\n\t" - ".p2align 2\n\t" - ".long 1f - 0f\n\t" /* name length */ - ".long 3f - 2f\n\t" /* data length */ - ".long 1\n\t" /* note length */ - "0: .asciz \"GNU\"\n\t" /* vendor name */ - "1: .p2align 2\n\t" - "2: .long 0\n\t" /* note data: the ABI tag */ - ".long 2,4,20\n\t" /* Minimum kernel version w/TLS */ - "3: .p2align 2\n\t"); /* pad out section */ -#endif /* __linux__ */ - -__asm__(".text"); - -__asm__("x86_current_tls:\n\t" - "call 1f\n" - "1:\n\t" - "popl %eax\n\t" - "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t" - "movl " ENTRY_CURRENT_TABLE "@GOTNTPOFF(%eax), %eax\n\t" - "ret"); - -#ifndef GLX_X86_READONLY_TEXT -__asm__(".section wtext, \"awx\", @progbits"); -#endif /* GLX_X86_READONLY_TEXT */ - -__asm__(".balign 16\n" - "x86_entry_start:"); - -#define STUB_ASM_ENTRY(func) \ - ".globl " func "\n" \ - ".type " func ", @function\n" \ - ".balign 16\n" \ - func ":" - -#define STUB_ASM_CODE(slot) \ - "call x86_current_tls\n\t" \ - "movl %gs:(%eax), %eax\n\t" \ - "jmp *(4 * " slot ")(%eax)" - -#define MAPI_TMP_STUB_ASM_GCC -#include "mapi_tmp.h" - -#ifndef GLX_X86_READONLY_TEXT -__asm__(".balign 16\n" - "x86_entry_end:"); -__asm__(".text"); -#endif /* GLX_X86_READONLY_TEXT */ - -#ifndef MAPI_MODE_BRIDGE - -#include "u_execmem.h" - -extern unsigned long -x86_current_tls(); - -static char x86_entry_start[]; -static char x86_entry_end[]; - -void -entry_patch_public(void) -{ -#ifndef GLX_X86_READONLY_TEXT - char patch[8] = { - 0x65, 0xa1, 0x00, 0x00, 0x00, 0x00, /* movl %gs:0x0, %eax */ - 0x90, 0x90 /* nop's */ - }; - char *entry; - - *((unsigned long *) (patch + 2)) = x86_current_tls(); - - for (entry = x86_entry_start; entry < x86_entry_end; entry += 16) - memcpy(entry, patch, sizeof(patch)); -#endif -} - -mapi_func -entry_get_public(int slot) -{ - return (mapi_func) (x86_entry_start + slot * 16); -} - -void -entry_patch(mapi_func entry, int slot) -{ - char *code = (char *) entry; - *((unsigned long *) (code + 8)) = slot * sizeof(mapi_func); -} - -mapi_func -entry_generate(int slot) -{ - const char code_templ[16] = { - 0x65, 0xa1, 0x00, 0x00, 0x00, 0x00, /* movl %gs:0x0, %eax */ - 0xff, 0xa0, 0x34, 0x12, 0x00, 0x00, /* jmp *0x1234(%eax) */ - 0x90, 0x90, 0x90, 0x90 /* nop's */ - }; - void *code; - mapi_func entry; - - code = u_execmem_alloc(sizeof(code_templ)); - if (!code) - return NULL; - - memcpy(code, code_templ, sizeof(code_templ)); - - *((unsigned long *) (code + 2)) = x86_current_tls(); - entry = (mapi_func) code; - entry_patch(entry, slot); - - return entry; -} - -#endif /* MAPI_MODE_BRIDGE */ diff --git a/mesalib/src/mapi/mapi/entry_x86_tsd.h b/mesalib/src/mapi/mapi/entry_x86_tsd.h deleted file mode 100644 index c479c199e..000000000 --- a/mesalib/src/mapi/mapi/entry_x86_tsd.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#include "u_macros.h" - -#define X86_ENTRY_SIZE 32 - -__asm__(".text\n" - ".balign 32\n" - "x86_entry_start:"); - -#define STUB_ASM_ENTRY(func) \ - ".globl " func "\n" \ - ".type " func ", @function\n" \ - ".balign 32\n" \ - func ":" - -#define STUB_ASM_CODE(slot) \ - "movl " ENTRY_CURRENT_TABLE ", %eax\n\t" \ - "testl %eax, %eax\n\t" \ - "je 1f\n\t" \ - "jmp *(4 * " slot ")(%eax)\n" \ - "1:\n\t" \ - "call " ENTRY_CURRENT_TABLE_GET "\n\t" \ - "jmp *(4 * " slot ")(%eax)" - -#define MAPI_TMP_STUB_ASM_GCC -#include "mapi_tmp.h" - -#ifndef MAPI_MODE_BRIDGE - -__asm__(".balign 32\n" - "x86_entry_end:"); - -#include -#include "u_execmem.h" - -static const char x86_entry_start[]; -static const char x86_entry_end[]; - -void -entry_patch_public(void) -{ -} - -mapi_func -entry_get_public(int slot) -{ - return (mapi_func) (x86_entry_start + slot * X86_ENTRY_SIZE); -} - -void -entry_patch(mapi_func entry, int slot) -{ - char *code = (char *) entry; - - *((unsigned long *) (code + 11)) = slot * sizeof(mapi_func); - *((unsigned long *) (code + 22)) = slot * sizeof(mapi_func); -} - -mapi_func -entry_generate(int slot) -{ - const char *code_templ = x86_entry_end - X86_ENTRY_SIZE; - void *code; - mapi_func entry; - - code = u_execmem_alloc(X86_ENTRY_SIZE); - if (!code) - return NULL; - - memcpy(code, code_templ, X86_ENTRY_SIZE); - entry = (mapi_func) code; - entry_patch(entry, slot); - - return entry; -} - -#endif /* MAPI_MODE_BRIDGE */ diff --git a/mesalib/src/mapi/mapi/mapi.c b/mesalib/src/mapi/mapi/mapi.c deleted file mode 100644 index b471c40b1..000000000 --- a/mesalib/src/mapi/mapi/mapi.c +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#include -#include - -#include "u_current.h" -#include "u_thread.h" -#include "mapi.h" -#include "stub.h" -#include "table.h" - -/* dynamic stubs will run out before this array */ -static const struct mapi_stub *mapi_stub_map[MAPI_TABLE_NUM_SLOTS]; -static int mapi_num_stubs; - -static const struct mapi_stub * -get_stub(const char *name, const struct mapi_stub *alias) -{ - const struct mapi_stub *stub; - - stub = stub_find_public(name); - if (!stub) { - struct mapi_stub *dyn = stub_find_dynamic(name, 1); - if (dyn) { - stub_fix_dynamic(dyn, alias); - stub = dyn; - } - } - - return stub; -} - -/** - * Initialize mapi. spec consists of NULL-separated strings. The first string - * denotes the version. It is followed by variable numbers of entries. Each - * entry can have multiple names. An empty name terminates an entry. An empty - * entry terminates the spec. A spec of two entries, Foo and Bar, is as - * follows - * - * "1\0" - * "Foo\0" - * "FooEXT\0" - * "\0" - * "Bar\0" - * "\0" - */ -void -mapi_init(const char *spec) -{ - u_mutex_declare_static(mutex); - const char *p; - int ver, count; - - u_mutex_lock(mutex); - - /* already initialized */ - if (mapi_num_stubs) { - u_mutex_unlock(mutex); - return; - } - - count = 0; - p = spec; - - /* parse version string */ - ver = atoi(p); - if (ver != 1) { - u_mutex_unlock(mutex); - return; - } - p += strlen(p) + 1; - - while (*p) { - const struct mapi_stub *stub; - - stub = get_stub(p, NULL); - /* out of dynamic entries */ - if (!stub) - break; - p += strlen(p) + 1; - - while (*p) { - get_stub(p, stub); - p += strlen(p) + 1; - } - - mapi_stub_map[count++] = stub; - p++; - } - - mapi_num_stubs = count; - - u_mutex_unlock(mutex); -} - -/** - * Return the address of an entry. Optionally generate the entry if it does - * not exist. - */ -mapi_proc -mapi_get_proc_address(const char *name) -{ - const struct mapi_stub *stub; - - stub = stub_find_public(name); - if (!stub) - stub = stub_find_dynamic(name, 0); - - return (stub) ? (mapi_proc) stub_get_addr(stub) : NULL; -} - -/** - * Create a dispatch table. - */ -struct mapi_table * -mapi_table_create(void) -{ - const struct mapi_table *noop = table_get_noop(); - struct mapi_table *tbl; - - tbl = malloc(MAPI_TABLE_SIZE); - if (tbl) - memcpy(tbl, noop, MAPI_TABLE_SIZE); - - return tbl; -} - -/** - * Destroy a dispatch table. - */ -void -mapi_table_destroy(struct mapi_table *tbl) -{ - free(tbl); -} - -/** - * Fill a dispatch table. The order of the procs is determined when mapi_init - * is called. - */ -void -mapi_table_fill(struct mapi_table *tbl, const mapi_proc *procs) -{ - const struct mapi_table *noop = table_get_noop(); - int i; - - for (i = 0; i < mapi_num_stubs; i++) { - const struct mapi_stub *stub = mapi_stub_map[i]; - int slot = stub_get_slot(stub); - mapi_func func = (mapi_func) procs[i]; - - if (!func) - func = table_get_func(noop, slot); - table_set_func(tbl, slot, func); - } -} - -/** - * Make a dispatch table current. - */ -void -mapi_table_make_current(const struct mapi_table *tbl) -{ - u_current_set(tbl); -} diff --git a/mesalib/src/mapi/mapi/mapi.h b/mesalib/src/mapi/mapi/mapi.h deleted file mode 100644 index c7e43e22e..000000000 --- a/mesalib/src/mapi/mapi/mapi.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#ifndef _MAPI_H_ -#define _MAPI_H_ - -#include "u_compiler.h" - -#ifdef _WIN32 -#ifdef MAPI_DLL_EXPORTS -#define MAPI_EXPORT __declspec(dllexport) -#else -#define MAPI_EXPORT __declspec(dllimport) -#endif -#else /* _WIN32 */ -#define MAPI_EXPORT PUBLIC -#endif - -typedef void (*mapi_proc)(void); - -struct mapi_table; - -MAPI_EXPORT void -mapi_init(const char *spec); - -MAPI_EXPORT mapi_proc -mapi_get_proc_address(const char *name); - -MAPI_EXPORT struct mapi_table * -mapi_table_create(void); - -MAPI_EXPORT void -mapi_table_destroy(struct mapi_table *tbl); - -MAPI_EXPORT void -mapi_table_fill(struct mapi_table *tbl, const mapi_proc *procs); - -MAPI_EXPORT void -mapi_table_make_current(const struct mapi_table *tbl); - -#endif /* _MAPI_H_ */ diff --git a/mesalib/src/mapi/mapi/mapi_abi.py b/mesalib/src/mapi/mapi/mapi_abi.py deleted file mode 100644 index c645c02f9..000000000 --- a/mesalib/src/mapi/mapi/mapi_abi.py +++ /dev/null @@ -1,873 +0,0 @@ -#!/usr/bin/env python - -# Mesa 3-D graphics library -# Version: 7.9 -# -# Copyright (C) 2010 LunarG Inc. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. -# -# Authors: -# Chia-I Wu - -import sys -# make it possible to import glapi -import os -GLAPI = os.path.join(".", os.path.dirname(sys.argv[0]), "../glapi/gen") -sys.path.append(GLAPI) - -import re -from optparse import OptionParser -import gl_XML -import glX_XML - - -# number of dynamic entries -ABI_NUM_DYNAMIC_ENTRIES = 256 - -class ABIEntry(object): - """Represent an ABI entry.""" - - _match_c_param = re.compile( - '^(?P[\w\s*]+?)(?P\w+)(\[(?P\d+)\])?$') - - def __init__(self, cols, attrs, xml_data = None): - self._parse(cols) - - self.slot = attrs['slot'] - self.hidden = attrs['hidden'] - self.alias = attrs['alias'] - self.handcode = attrs['handcode'] - self.xml_data = xml_data - - def c_prototype(self): - return '%s %s(%s)' % (self.c_return(), self.name, self.c_params()) - - def c_return(self): - ret = self.ret - if not ret: - ret = 'void' - - return ret - - def c_params(self): - """Return the parameter list used in the entry prototype.""" - c_params = [] - for t, n, a in self.params: - sep = '' if t.endswith('*') else ' ' - arr = '[%d]' % a if a else '' - c_params.append(t + sep + n + arr) - if not c_params: - c_params.append('void') - - return ", ".join(c_params) - - def c_args(self): - """Return the argument list used in the entry invocation.""" - c_args = [] - for t, n, a in self.params: - c_args.append(n) - - return ", ".join(c_args) - - def _parse(self, cols): - ret = cols.pop(0) - if ret == 'void': - ret = None - - name = cols.pop(0) - - params = [] - if not cols: - raise Exception(cols) - elif len(cols) == 1 and cols[0] == 'void': - pass - else: - for val in cols: - params.append(self._parse_param(val)) - - self.ret = ret - self.name = name - self.params = params - - def _parse_param(self, c_param): - m = self._match_c_param.match(c_param) - if not m: - raise Exception('unrecognized param ' + c_param) - - c_type = m.group('type').strip() - c_name = m.group('name') - c_array = m.group('array') - c_array = int(c_array) if c_array else 0 - - return (c_type, c_name, c_array) - - def __str__(self): - return self.c_prototype() - - def __cmp__(self, other): - # compare slot, alias, and then name - res = cmp(self.slot, other.slot) - if not res: - if not self.alias: - res = -1 - elif not other.alias: - res = 1 - - if not res: - res = cmp(self.name, other.name) - - return res - -def abi_parse_xml(xml): - """Parse a GLAPI XML file for ABI entries.""" - api = gl_XML.parse_GL_API(xml, glX_XML.glx_item_factory()) - - entry_dict = {} - for func in api.functionIterateByOffset(): - # make sure func.name appear first - entry_points = func.entry_points[:] - entry_points.remove(func.name) - entry_points.insert(0, func.name) - - for name in entry_points: - attrs = { - 'slot': func.offset, - 'hidden': not func.is_static_entry_point(name), - 'alias': None if name == func.name else func.name, - 'handcode': bool(func.has_different_protocol(name)), - } - - # post-process attrs - if attrs['alias']: - try: - alias = entry_dict[attrs['alias']] - except KeyError: - raise Exception('failed to alias %s' % attrs['alias']) - if alias.alias: - raise Exception('recursive alias %s' % ent.name) - attrs['alias'] = alias - if attrs['handcode']: - attrs['handcode'] = func.static_glx_name(name) - else: - attrs['handcode'] = None - - if entry_dict.has_key(name): - raise Exception('%s is duplicated' % (name)) - - cols = [] - cols.append(func.return_type) - cols.append(name) - params = func.get_parameter_string(name) - cols.extend([p.strip() for p in params.split(',')]) - - ent = ABIEntry(cols, attrs, func) - entry_dict[ent.name] = ent - - entries = entry_dict.values() - entries.sort() - - return entries - -def abi_parse_line(line): - cols = [col.strip() for col in line.split(',')] - - attrs = { - 'slot': -1, - 'hidden': False, - 'alias': None, - 'handcode': None, - } - - # extract attributes from the first column - vals = cols[0].split(':') - while len(vals) > 1: - val = vals.pop(0) - if val.startswith('slot='): - attrs['slot'] = int(val[5:]) - elif val == 'hidden': - attrs['hidden'] = True - elif val.startswith('alias='): - attrs['alias'] = val[6:] - elif val.startswith('handcode='): - attrs['handcode'] = val[9:] - elif not val: - pass - else: - raise Exception('unknown attribute %s' % val) - cols[0] = vals[0] - - return (attrs, cols) - -def abi_parse(filename): - """Parse a CSV file for ABI entries.""" - fp = open(filename) if filename != '-' else sys.stdin - lines = [line.strip() for line in fp.readlines() - if not line.startswith('#') and line.strip()] - - entry_dict = {} - next_slot = 0 - for line in lines: - attrs, cols = abi_parse_line(line) - - # post-process attributes - if attrs['alias']: - try: - alias = entry_dict[attrs['alias']] - except KeyError: - raise Exception('failed to alias %s' % attrs['alias']) - if alias.alias: - raise Exception('recursive alias %s' % ent.name) - slot = alias.slot - attrs['alias'] = alias - else: - slot = next_slot - next_slot += 1 - - if attrs['slot'] < 0: - attrs['slot'] = slot - elif attrs['slot'] != slot: - raise Exception('invalid slot in %s' % (line)) - - ent = ABIEntry(cols, attrs) - if entry_dict.has_key(ent.name): - raise Exception('%s is duplicated' % (ent.name)) - entry_dict[ent.name] = ent - - entries = entry_dict.values() - entries.sort() - - return entries - -def abi_sanity_check(entries): - if not entries: - return - - all_names = [] - last_slot = entries[-1].slot - i = 0 - for slot in xrange(last_slot + 1): - if entries[i].slot != slot: - raise Exception('entries are not ordered by slots') - if entries[i].alias: - raise Exception('first entry of slot %d aliases %s' - % (slot, entries[i].alias.name)) - handcode = None - while i < len(entries) and entries[i].slot == slot: - ent = entries[i] - if not handcode and ent.handcode: - handcode = ent.handcode - elif ent.handcode != handcode: - raise Exception('two aliases with handcode %s != %s', - ent.handcode, handcode) - - if ent.name in all_names: - raise Exception('%s is duplicated' % (ent.name)) - if ent.alias and ent.alias.name not in all_names: - raise Exception('failed to alias %s' % (ent.alias.name)) - all_names.append(ent.name) - i += 1 - if i < len(entries): - raise Exception('there are %d invalid entries' % (len(entries) - 1)) - -class ABIPrinter(object): - """MAPI Printer""" - - def __init__(self, entries): - self.entries = entries - - # sort entries by their names - self.entries_sorted_by_names = self.entries[:] - self.entries_sorted_by_names.sort(lambda x, y: cmp(x.name, y.name)) - - self.indent = ' ' * 3 - self.noop_warn = 'noop_warn' - self.noop_generic = 'noop_generic' - self.current_get = 'entry_current_get' - - self.api_defines = [] - self.api_headers = ['"KHR/khrplatform.h"'] - self.api_call = 'KHRONOS_APICALL' - self.api_entry = 'KHRONOS_APIENTRY' - self.api_attrs = 'KHRONOS_APIATTRIBUTES' - - self.c_header = '' - - self.lib_need_table_size = True - self.lib_need_noop_array = True - self.lib_need_stubs = True - self.lib_need_all_entries = True - self.lib_need_non_hidden_entries = False - - def c_notice(self): - return '/* This file is automatically generated by mapi_abi.py. Do not modify. */' - - def c_public_includes(self): - """Return includes of the client API headers.""" - defines = ['#define ' + d for d in self.api_defines] - includes = ['#include ' + h for h in self.api_headers] - return "\n".join(defines + includes) - - def need_entry_point(self, ent): - """Return True if an entry point is needed for the entry.""" - # non-handcode hidden aliases may share the entry they alias - use_alias = (ent.hidden and ent.alias and not ent.handcode) - return not use_alias - - def c_public_declarations(self, prefix): - """Return the declarations of public entry points.""" - decls = [] - for ent in self.entries: - if not self.need_entry_point(ent): - continue - export = self.api_call if not ent.hidden else '' - decls.append(self._c_decl(ent, prefix, True, export) + ';') - - return "\n".join(decls) - - def c_mapi_table(self): - """Return defines of the dispatch table size.""" - num_static_entries = self.entries[-1].slot + 1 - return ('#define MAPI_TABLE_NUM_STATIC %d\n' + \ - '#define MAPI_TABLE_NUM_DYNAMIC %d') % ( - num_static_entries, ABI_NUM_DYNAMIC_ENTRIES) - - def c_mapi_table_initializer(self, prefix): - """Return the array initializer for mapi_table_fill.""" - entries = [self._c_function(ent, prefix) - for ent in self.entries if not ent.alias] - pre = self.indent + '(mapi_proc) ' - return pre + (',\n' + pre).join(entries) - - def c_mapi_table_spec(self): - """Return the spec for mapi_init.""" - specv1 = [] - line = '"1' - for ent in self.entries: - if not ent.alias: - line += '\\0"\n' - specv1.append(line) - line = '"' - line += '%s\\0' % ent.name - line += '";' - specv1.append(line) - - return self.indent + self.indent.join(specv1) - - def _c_function(self, ent, prefix, mangle=False, stringify=False): - """Return the function name of an entry.""" - formats = { - True: { True: '%s_STR(%s)', False: '%s(%s)' }, - False: { True: '"%s%s"', False: '%s%s' }, - } - fmt = formats[prefix.isupper()][stringify] - name = ent.name - if mangle and ent.hidden: - name = '_dispatch_stub_' + str(ent.slot) - return fmt % (prefix, name) - - def _c_function_call(self, ent, prefix): - """Return the function name used for calling.""" - if ent.handcode: - # _c_function does not handle this case - formats = { True: '%s(%s)', False: '%s%s' } - fmt = formats[prefix.isupper()] - name = fmt % (prefix, ent.handcode) - elif self.need_entry_point(ent): - name = self._c_function(ent, prefix, True) - else: - name = self._c_function(ent.alias, prefix, True) - return name - - def _c_decl(self, ent, prefix, mangle=False, export=''): - """Return the C declaration for the entry.""" - decl = '%s %s %s(%s)' % (ent.c_return(), self.api_entry, - self._c_function(ent, prefix, mangle), ent.c_params()) - if export: - decl = export + ' ' + decl - if self.api_attrs: - decl += ' ' + self.api_attrs - - return decl - - def _c_cast(self, ent): - """Return the C cast for the entry.""" - cast = '%s (%s *)(%s)' % ( - ent.c_return(), self.api_entry, ent.c_params()) - - return cast - - def c_private_declarations(self, prefix): - """Return the declarations of private functions.""" - decls = [self._c_decl(ent, prefix) + ';' - for ent in self.entries if not ent.alias] - - return "\n".join(decls) - - def c_public_dispatches(self, prefix, no_hidden): - """Return the public dispatch functions.""" - dispatches = [] - for ent in self.entries: - if ent.hidden and no_hidden: - continue - - if not self.need_entry_point(ent): - continue - - export = self.api_call if not ent.hidden else '' - - proto = self._c_decl(ent, prefix, True, export) - cast = self._c_cast(ent) - - ret = '' - if ent.ret: - ret = 'return ' - stmt1 = self.indent - stmt1 += 'const struct mapi_table *_tbl = %s();' % ( - self.current_get) - stmt2 = self.indent - stmt2 += 'mapi_func _func = ((const mapi_func *) _tbl)[%d];' % ( - ent.slot) - stmt3 = self.indent - stmt3 += '%s((%s) _func)(%s);' % (ret, cast, ent.c_args()) - - disp = '%s\n{\n%s\n%s\n%s\n}' % (proto, stmt1, stmt2, stmt3) - - if ent.handcode: - disp = '#if 0\n' + disp + '\n#endif' - - dispatches.append(disp) - - return '\n\n'.join(dispatches) - - def c_public_initializer(self, prefix): - """Return the initializer for public dispatch functions.""" - names = [] - for ent in self.entries: - if ent.alias: - continue - - name = '%s(mapi_func) %s' % (self.indent, - self._c_function_call(ent, prefix)) - names.append(name) - - return ',\n'.join(names) - - def c_stub_string_pool(self): - """Return the string pool for use by stubs.""" - # sort entries by their names - sorted_entries = self.entries[:] - sorted_entries.sort(lambda x, y: cmp(x.name, y.name)) - - pool = [] - offsets = {} - count = 0 - for ent in sorted_entries: - offsets[ent] = count - pool.append('%s' % (ent.name)) - count += len(ent.name) + 1 - - pool_str = self.indent + '"' + \ - ('\\0"\n' + self.indent + '"').join(pool) + '";' - return (pool_str, offsets) - - def c_stub_initializer(self, prefix, pool_offsets): - """Return the initializer for struct mapi_stub array.""" - stubs = [] - for ent in self.entries_sorted_by_names: - stubs.append('%s{ (void *) %d, %d, NULL }' % ( - self.indent, pool_offsets[ent], ent.slot)) - - return ',\n'.join(stubs) - - def c_noop_functions(self, prefix, warn_prefix): - """Return the noop functions.""" - noops = [] - for ent in self.entries: - if ent.alias: - continue - - proto = self._c_decl(ent, prefix, False, 'static') - - stmt1 = self.indent; - space = '' - for t, n, a in ent.params: - stmt1 += "%s(void) %s;" % (space, n) - space = ' ' - - if ent.params: - stmt1 += '\n'; - - stmt1 += self.indent + '%s(%s);' % (self.noop_warn, - self._c_function(ent, warn_prefix, False, True)) - - if ent.ret: - stmt2 = self.indent + 'return (%s) 0;' % (ent.ret) - noop = '%s\n{\n%s\n%s\n}' % (proto, stmt1, stmt2) - else: - noop = '%s\n{\n%s\n}' % (proto, stmt1) - - noops.append(noop) - - return '\n\n'.join(noops) - - def c_noop_initializer(self, prefix, use_generic): - """Return an initializer for the noop dispatch table.""" - entries = [self._c_function(ent, prefix) - for ent in self.entries if not ent.alias] - if use_generic: - entries = [self.noop_generic] * len(entries) - - entries.extend([self.noop_generic] * ABI_NUM_DYNAMIC_ENTRIES) - - pre = self.indent + '(mapi_func) ' - return pre + (',\n' + pre).join(entries) - - def c_asm_gcc(self, prefix, no_hidden): - asm = [] - - for ent in self.entries: - if ent.hidden and no_hidden: - continue - - if not self.need_entry_point(ent): - continue - - name = self._c_function(ent, prefix, True, True) - - if ent.handcode: - asm.append('#if 0') - - if ent.hidden: - asm.append('".hidden "%s"\\n"' % (name)) - - if ent.alias and not (ent.alias.hidden and no_hidden): - asm.append('".globl "%s"\\n"' % (name)) - asm.append('".set "%s", "%s"\\n"' % (name, - self._c_function(ent.alias, prefix, True, True))) - else: - asm.append('STUB_ASM_ENTRY(%s)"\\n"' % (name)) - asm.append('"\\t"STUB_ASM_CODE("%d")"\\n"' % (ent.slot)) - - if ent.handcode: - asm.append('#endif') - asm.append('') - - return "\n".join(asm) - - def output_for_lib(self): - print self.c_notice() - - if self.c_header: - print - print self.c_header - - print - print '#ifdef MAPI_TMP_DEFINES' - print self.c_public_includes() - print - print self.c_public_declarations(self.prefix_lib) - print '#undef MAPI_TMP_DEFINES' - print '#endif /* MAPI_TMP_DEFINES */' - - if self.lib_need_table_size: - print - print '#ifdef MAPI_TMP_TABLE' - print self.c_mapi_table() - print '#undef MAPI_TMP_TABLE' - print '#endif /* MAPI_TMP_TABLE */' - - if self.lib_need_noop_array: - print - print '#ifdef MAPI_TMP_NOOP_ARRAY' - print '#ifdef DEBUG' - print - print self.c_noop_functions(self.prefix_noop, self.prefix_warn) - print - print 'const mapi_func table_%s_array[] = {' % (self.prefix_noop) - print self.c_noop_initializer(self.prefix_noop, False) - print '};' - print - print '#else /* DEBUG */' - print - print 'const mapi_func table_%s_array[] = {' % (self.prefix_noop) - print self.c_noop_initializer(self.prefix_noop, True) - print '};' - print - print '#endif /* DEBUG */' - print '#undef MAPI_TMP_NOOP_ARRAY' - print '#endif /* MAPI_TMP_NOOP_ARRAY */' - - if self.lib_need_stubs: - pool, pool_offsets = self.c_stub_string_pool() - print - print '#ifdef MAPI_TMP_PUBLIC_STUBS' - print 'static const char public_string_pool[] =' - print pool - print - print 'static const struct mapi_stub public_stubs[] = {' - print self.c_stub_initializer(self.prefix_lib, pool_offsets) - print '};' - print '#undef MAPI_TMP_PUBLIC_STUBS' - print '#endif /* MAPI_TMP_PUBLIC_STUBS */' - - if self.lib_need_all_entries: - print - print '#ifdef MAPI_TMP_PUBLIC_ENTRIES' - print self.c_public_dispatches(self.prefix_lib, False) - print - print 'static const mapi_func public_entries[] = {' - print self.c_public_initializer(self.prefix_lib) - print '};' - print '#undef MAPI_TMP_PUBLIC_ENTRIES' - print '#endif /* MAPI_TMP_PUBLIC_ENTRIES */' - - print - print '#ifdef MAPI_TMP_STUB_ASM_GCC' - print '__asm__(' - print self.c_asm_gcc(self.prefix_lib, False) - print ');' - print '#undef MAPI_TMP_STUB_ASM_GCC' - print '#endif /* MAPI_TMP_STUB_ASM_GCC */' - - if self.lib_need_non_hidden_entries: - all_hidden = True - for ent in self.entries: - if not ent.hidden: - all_hidden = False - break - if not all_hidden: - print - print '#ifdef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN' - print self.c_public_dispatches(self.prefix_lib, True) - print - print '/* does not need public_entries */' - print '#undef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN' - print '#endif /* MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN */' - - print - print '#ifdef MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN' - print '__asm__(' - print self.c_asm_gcc(self.prefix_lib, True) - print ');' - print '#undef MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN' - print '#endif /* MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN */' - - def output_for_app(self): - print self.c_notice() - print - print self.c_private_declarations(self.prefix_app) - print - print '#ifdef API_TMP_DEFINE_SPEC' - print - print 'static const char %s_spec[] =' % (self.prefix_app) - print self.c_mapi_table_spec() - print - print 'static const mapi_proc %s_procs[] = {' % (self.prefix_app) - print self.c_mapi_table_initializer(self.prefix_app) - print '};' - print - print '#endif /* API_TMP_DEFINE_SPEC */' - -class GLAPIPrinter(ABIPrinter): - """OpenGL API Printer""" - - def __init__(self, entries): - for ent in entries: - self._override_for_api(ent) - super(GLAPIPrinter, self).__init__(entries) - - self.api_defines = ['GL_GLEXT_PROTOTYPES'] - self.api_headers = ['"GL/gl.h"', '"GL/glext.h"'] - self.api_call = 'GLAPI' - self.api_entry = 'APIENTRY' - self.api_attrs = '' - - self.lib_need_table_size = False - self.lib_need_noop_array = False - self.lib_need_stubs = False - self.lib_need_all_entries = False - self.lib_need_non_hidden_entries = True - - self.prefix_lib = 'GLAPI_PREFIX' - self.prefix_app = '_mesa_' - self.prefix_noop = 'noop' - self.prefix_warn = self.prefix_lib - - self.c_header = self._get_c_header() - - def _override_for_api(self, ent): - """Override attributes of an entry if necessary for this - printer.""" - # By default, no override is necessary. - pass - - def _get_c_header(self): - header = """#ifndef _GLAPI_TMP_H_ -#define _GLAPI_TMP_H_ -#ifdef USE_MGL_NAMESPACE -#define GLAPI_PREFIX(func) mgl##func -#define GLAPI_PREFIX_STR(func) "mgl"#func -#else -#define GLAPI_PREFIX(func) gl##func -#define GLAPI_PREFIX_STR(func) "gl"#func -#endif /* USE_MGL_NAMESPACE */ - -typedef int GLfixed; -typedef int GLclampx; -#endif /* _GLAPI_TMP_H_ */""" - - return header - -class ES1APIPrinter(GLAPIPrinter): - """OpenGL ES 1.x API Printer""" - - def __init__(self, entries): - super(ES1APIPrinter, self).__init__(entries) - self.prefix_lib = 'gl' - self.prefix_warn = 'gl' - - def _override_for_api(self, ent): - if ent.xml_data is None: - raise Exception('ES2 API printer requires XML input') - ent.hidden = ent.name not in \ - ent.xml_data.entry_points_for_api_version('es1') - ent.handcode = False - - def _get_c_header(self): - header = """#ifndef _GLAPI_TMP_H_ -#define _GLAPI_TMP_H_ -typedef int GLfixed; -typedef int GLclampx; -#endif /* _GLAPI_TMP_H_ */""" - - return header - -class ES2APIPrinter(GLAPIPrinter): - """OpenGL ES 2.x API Printer""" - - def __init__(self, entries): - super(ES2APIPrinter, self).__init__(entries) - self.prefix_lib = 'gl' - self.prefix_warn = 'gl' - - def _override_for_api(self, ent): - if ent.xml_data is None: - raise Exception('ES2 API printer requires XML input') - ent.hidden = ent.name not in \ - ent.xml_data.entry_points_for_api_version('es2') - ent.handcode = False - - def _get_c_header(self): - header = """#ifndef _GLAPI_TMP_H_ -#define _GLAPI_TMP_H_ -typedef int GLfixed; -typedef int GLclampx; -#endif /* _GLAPI_TMP_H_ */""" - - return header - -class SharedGLAPIPrinter(GLAPIPrinter): - """Shared GLAPI API Printer""" - - def __init__(self, entries): - super(SharedGLAPIPrinter, self).__init__(entries) - - self.lib_need_table_size = True - self.lib_need_noop_array = True - self.lib_need_stubs = True - self.lib_need_all_entries = True - self.lib_need_non_hidden_entries = False - - self.prefix_lib = 'shared' - self.prefix_warn = 'gl' - - def _override_for_api(self, ent): - ent.hidden = True - ent.handcode = False - - def _get_c_header(self): - header = """#ifndef _GLAPI_TMP_H_ -#define _GLAPI_TMP_H_ -typedef int GLfixed; -typedef int GLclampx; -#endif /* _GLAPI_TMP_H_ */""" - - return header - -class VGAPIPrinter(ABIPrinter): - """OpenVG API Printer""" - - def __init__(self, entries): - super(VGAPIPrinter, self).__init__(entries) - - self.api_defines = ['VG_VGEXT_PROTOTYPES'] - self.api_headers = ['"VG/openvg.h"', '"VG/vgext.h"'] - self.api_call = 'VG_API_CALL' - self.api_entry = 'VG_API_ENTRY' - self.api_attrs = 'VG_API_EXIT' - - self.prefix_lib = 'vg' - self.prefix_app = 'vega' - self.prefix_noop = 'noop' - self.prefix_warn = 'vg' - -def parse_args(): - printers = ['vgapi', 'glapi', 'es1api', 'es2api', 'shared-glapi'] - modes = ['lib', 'app'] - - parser = OptionParser(usage='usage: %prog [options] ') - parser.add_option('-p', '--printer', dest='printer', - help='printer to use: %s' % (", ".join(printers))) - parser.add_option('-m', '--mode', dest='mode', - help='target user: %s' % (", ".join(modes))) - - options, args = parser.parse_args() - if not args or options.printer not in printers or \ - options.mode not in modes: - parser.print_help() - sys.exit(1) - - return (args[0], options) - -def main(): - printers = { - 'vgapi': VGAPIPrinter, - 'glapi': GLAPIPrinter, - 'es1api': ES1APIPrinter, - 'es2api': ES2APIPrinter, - 'shared-glapi': SharedGLAPIPrinter, - } - - filename, options = parse_args() - - if filename.endswith('.xml'): - entries = abi_parse_xml(filename) - else: - entries = abi_parse(filename) - abi_sanity_check(entries) - - printer = printers[options.printer](entries) - if options.mode == 'lib': - printer.output_for_lib() - else: - printer.output_for_app() - -if __name__ == '__main__': - main() diff --git a/mesalib/src/mapi/mapi/mapi_glapi.c b/mesalib/src/mapi/mapi/mapi_glapi.c deleted file mode 100644 index 4627c4de0..000000000 --- a/mesalib/src/mapi/mapi/mapi_glapi.c +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#include -#include "glapi/glapi.h" -#include "mapi/u_current.h" -#include "mapi/table.h" /* for MAPI_TABLE_NUM_SLOTS */ -#include "mapi/stub.h" - -/* - * Global variables, _glapi_get_context, and _glapi_get_dispatch are defined in - * u_current.c. - */ - -#ifdef GLX_USE_TLS -/* not used, but defined for compatibility */ -const struct _glapi_table *_glapi_Dispatch; -const void *_glapi_Context; -#endif /* GLX_USE_TLS */ - -void -_glapi_destroy_multithread(void) -{ - u_current_destroy(); -} - -void -_glapi_check_multithread(void) -{ - u_current_init(); -} - -void -_glapi_set_context(void *context) -{ - u_current_set_user((const void *) context); -} - -void -_glapi_set_dispatch(struct _glapi_table *dispatch) -{ - u_current_set((const struct mapi_table *) dispatch); -} - -/** - * Return size of dispatch table struct as number of functions (or - * slots). - */ -unsigned int -_glapi_get_dispatch_table_size(void) -{ - return MAPI_TABLE_NUM_SLOTS; -} - -/** - * Fill-in the dispatch stub for the named function. - * - * This function is intended to be called by a hardware driver. When called, - * a dispatch stub may be created created for the function. A pointer to this - * dispatch function will be returned by glXGetProcAddress. - * - * \param function_names Array of pointers to function names that should - * share a common dispatch offset. - * \param parameter_signature String representing the types of the parameters - * passed to the named function. Parameter types - * are converted to characters using the following - * rules: - * - 'i' for \c GLint, \c GLuint, and \c GLenum - * - 'p' for any pointer type - * - 'f' for \c GLfloat and \c GLclampf - * - 'd' for \c GLdouble and \c GLclampd - * - * \returns - * The offset in the dispatch table of the named function. A pointer to the - * driver's implementation of the named function should be stored at - * \c dispatch_table[\c offset]. Return -1 if error/problem. - * - * \sa glXGetProcAddress - * - * \warning - * This function can only handle up to 8 names at a time. As far as I know, - * the maximum number of names ever associated with an existing GL function is - * 4 (\c glPointParameterfSGIS, \c glPointParameterfEXT, - * \c glPointParameterfARB, and \c glPointParameterf), so this should not be - * too painful of a limitation. - * - * \todo - * Check parameter_signature. - */ -int -_glapi_add_dispatch( const char * const * function_names, - const char * parameter_signature ) -{ - const struct mapi_stub *function_stubs[8]; - const struct mapi_stub *alias = NULL; - unsigned i; - - (void) memset(function_stubs, 0, sizeof(function_stubs)); - - /* find the missing stubs, and decide the alias */ - for (i = 0; function_names[i] != NULL && i < 8; i++) { - const char * funcName = function_names[i]; - const struct mapi_stub *stub; - int slot; - - if (!funcName || funcName[0] != 'g' || funcName[1] != 'l') - return -1; - funcName += 2; - - stub = stub_find_public(funcName); - if (!stub) - stub = stub_find_dynamic(funcName, 0); - - slot = (stub) ? stub_get_slot(stub) : -1; - if (slot >= 0) { - if (alias && stub_get_slot(alias) != slot) - return -1; - /* use the first existing stub as the alias */ - if (!alias) - alias = stub; - - function_stubs[i] = stub; - } - } - - /* generate missing stubs */ - for (i = 0; function_names[i] != NULL && i < 8; i++) { - const char * funcName = function_names[i] + 2; - struct mapi_stub *stub; - - if (function_stubs[i]) - continue; - - stub = stub_find_dynamic(funcName, 1); - if (!stub) - return -1; - - stub_fix_dynamic(stub, alias); - if (!alias) - alias = stub; - } - - return (alias) ? stub_get_slot(alias) : -1; -} - -static const struct mapi_stub * -_glapi_get_stub(const char *name, int generate) -{ - const struct mapi_stub *stub; - -#ifdef USE_MGL_NAMESPACE - if (name) - name++; -#endif - - if (!name || name[0] != 'g' || name[1] != 'l') - return NULL; - name += 2; - - stub = stub_find_public(name); - if (!stub) - stub = stub_find_dynamic(name, generate); - - return stub; -} - -/** - * Return offset of entrypoint for named function within dispatch table. - */ -int -_glapi_get_proc_offset(const char *funcName) -{ - const struct mapi_stub *stub = _glapi_get_stub(funcName, 0); - return (stub) ? stub_get_slot(stub) : -1; -} - -/** - * Return pointer to the named function. If the function name isn't found - * in the name of static functions, try generating a new API entrypoint on - * the fly with assembly language. - */ -_glapi_proc -_glapi_get_proc_address(const char *funcName) -{ - const struct mapi_stub *stub = _glapi_get_stub(funcName, 1); - return (stub) ? (_glapi_proc) stub_get_addr(stub) : NULL; -} - -/** - * Return the name of the function at the given dispatch offset. - * This is only intended for debugging. - */ -const char * -_glapi_get_proc_name(unsigned int offset) -{ - const struct mapi_stub *stub = stub_find_by_slot(offset); - return stub ? stub_get_name(stub) : NULL; -} - -unsigned long -_glthread_GetID(void) -{ - return u_thread_self(); -} - -void -_glapi_noop_enable_warnings(unsigned char enable) -{ -} - -void -_glapi_set_warning_func(_glapi_proc func) -{ -} diff --git a/mesalib/src/mapi/mapi/mapi_tmp.h b/mesalib/src/mapi/mapi/mapi_tmp.h deleted file mode 100644 index f326b4a4e..000000000 --- a/mesalib/src/mapi/mapi/mapi_tmp.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#ifndef MAPI_ABI_HEADER -#error "MAPI_ABI_HEADER must be defined" -#endif - -/* does not need hidden entries in bridge mode */ -#ifdef MAPI_MODE_BRIDGE - -#ifdef MAPI_TMP_PUBLIC_ENTRIES -#undef MAPI_TMP_PUBLIC_ENTRIES -#define MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN -#endif - -#ifdef MAPI_TMP_STUB_ASM_GCC -#undef MAPI_TMP_STUB_ASM_GCC -#define MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN -#endif - -#endif /* MAPI_MODE_BRIDGE */ - -#include MAPI_ABI_HEADER diff --git a/mesalib/src/mapi/mapi/sources.mak b/mesalib/src/mapi/mapi/sources.mak deleted file mode 100644 index 56f4afd3e..000000000 --- a/mesalib/src/mapi/mapi/sources.mak +++ /dev/null @@ -1,36 +0,0 @@ -# src/mapi/mapi/sources.mak -# -# mapi may be used in several ways -# -# - In default mode, mapi implements the interface defined by mapi.h. To use -# this mode, compile MAPI_FILES. -# -# - In util mode, mapi provides utility functions for use with glapi. To use -# this mode, compile MAPI_UTIL_FILES with MAPI_MODE_UTIL defined. -# -# - In glapi mode, mapi implements the interface defined by glapi.h. To use -# this mode, compile MAPI_GLAPI_FILES with MAPI_MODE_GLAPI defined. -# -# - In bridge mode, mapi provides entry points calling into glapi. To use -# this mode, compile MAPI_BRIDGE_FILES with MAPI_MODE_BRIDGE defined. - -MAPI_UTIL_FILES = \ - $(TOP)/src/mapi/mapi/u_current.c \ - $(TOP)/src/mapi/mapi/u_execmem.c - -MAPI_FILES = \ - $(TOP)/src/mapi/mapi/entry.c \ - $(TOP)/src/mapi/mapi/mapi.c \ - $(TOP)/src/mapi/mapi/stub.c \ - $(TOP)/src/mapi/mapi/table.c \ - $(MAPI_UTIL_FILES) - -MAPI_GLAPI_FILES = \ - $(TOP)/src/mapi/mapi/entry.c \ - $(TOP)/src/mapi/mapi/mapi_glapi.c \ - $(TOP)/src/mapi/mapi/stub.c \ - $(TOP)/src/mapi/mapi/table.c \ - $(MAPI_UTIL_FILES) - -MAPI_BRIDGE_FILES = \ - $(TOP)/src/mapi/mapi/entry.c diff --git a/mesalib/src/mapi/mapi/stub.c b/mesalib/src/mapi/mapi/stub.c deleted file mode 100644 index 688dc8143..000000000 --- a/mesalib/src/mapi/mapi/stub.c +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#include -#include -#include - -#include "u_current.h" -#include "u_thread.h" -#include "entry.h" -#include "stub.h" -#include "table.h" - -#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0])) - -struct mapi_stub { - const void *name; - int slot; - mapi_func addr; -}; - -/* define public_string_pool and public_stubs */ -#define MAPI_TMP_PUBLIC_STUBS -#include "mapi_tmp.h" - -static struct mapi_stub dynamic_stubs[MAPI_TABLE_NUM_DYNAMIC]; -static int num_dynamic_stubs; -static int next_dynamic_slot = MAPI_TABLE_NUM_STATIC; - -void -stub_init_once(void) -{ -#ifdef HAVE_PTHREAD - static pthread_once_t once = PTHREAD_ONCE_INIT; - pthread_once(&once, entry_patch_public); -#else - static int first = 1; - if (first) { - first = 0; - entry_patch_public(); - } -#endif -} - -static int -stub_compare(const void *key, const void *elem) -{ - const char *name = (const char *) key; - const struct mapi_stub *stub = (const struct mapi_stub *) elem; - const char *stub_name; - - stub_name = &public_string_pool[(unsigned long) stub->name]; - - return strcmp(name, stub_name); -} - -/** - * Return the public stub with the given name. - */ -const struct mapi_stub * -stub_find_public(const char *name) -{ - return (const struct mapi_stub *) bsearch(name, public_stubs, - ARRAY_SIZE(public_stubs), sizeof(public_stubs[0]), stub_compare); -} - -/** - * Add a dynamic stub. - */ -static struct mapi_stub * -stub_add_dynamic(const char *name) -{ - struct mapi_stub *stub; - int idx; - - idx = num_dynamic_stubs; - /* minus 1 to make sure we can never reach the last slot */ - if (idx >= MAPI_TABLE_NUM_DYNAMIC - 1) - return NULL; - - stub = &dynamic_stubs[idx]; - - /* dispatch to the last slot, which is reserved for no-op */ - stub->addr = entry_generate( - MAPI_TABLE_NUM_STATIC + MAPI_TABLE_NUM_DYNAMIC - 1); - if (!stub->addr) - return NULL; - - stub->name = (const void *) name; - /* to be fixed later */ - stub->slot = -1; - - num_dynamic_stubs = idx + 1; - - return stub; -} - -/** - * Return the dynamic stub with the given name. If no such stub exists and - * generate is true, a new stub is generated. - */ -struct mapi_stub * -stub_find_dynamic(const char *name, int generate) -{ - u_mutex_declare_static(dynamic_mutex); - struct mapi_stub *stub = NULL; - int count, i; - - u_mutex_lock(dynamic_mutex); - - if (generate) - assert(!stub_find_public(name)); - - count = num_dynamic_stubs; - for (i = 0; i < count; i++) { - if (strcmp(name, (const char *) dynamic_stubs[i].name) == 0) { - stub = &dynamic_stubs[i]; - break; - } - } - - /* generate a dynamic stub */ - if (generate && !stub) - stub = stub_add_dynamic(name); - - u_mutex_unlock(dynamic_mutex); - - return stub; -} - -static const struct mapi_stub * -search_table_by_slot(const struct mapi_stub *table, size_t num_entries, - int slot) -{ - size_t i; - for (i = 0; i < num_entries; ++i) { - if (table[i].slot == slot) - return &table[i]; - } - return NULL; -} - -const struct mapi_stub * -stub_find_by_slot(int slot) -{ - const struct mapi_stub *stub = - search_table_by_slot(public_stubs, ARRAY_SIZE(public_stubs), slot); - if (stub) - return stub; - return search_table_by_slot(dynamic_stubs, num_dynamic_stubs, slot); -} - -void -stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias) -{ - int slot; - - if (stub->slot >= 0) - return; - - if (alias) - slot = alias->slot; - else - slot = next_dynamic_slot++; - - entry_patch(stub->addr, slot); - stub->slot = slot; -} - -/** - * Return the name of a stub. - */ -const char * -stub_get_name(const struct mapi_stub *stub) -{ - const char *name; - - if (stub >= public_stubs && - stub < public_stubs + ARRAY_SIZE(public_stubs)) - name = &public_string_pool[(unsigned long) stub->name]; - else - name = (const char *) stub->name; - - return name; -} - -/** - * Return the slot of a stub. - */ -int -stub_get_slot(const struct mapi_stub *stub) -{ - return stub->slot; -} - -/** - * Return the address of a stub. - */ -mapi_func -stub_get_addr(const struct mapi_stub *stub) -{ - assert(stub->addr || (unsigned int) stub->slot < MAPI_TABLE_NUM_STATIC); - return (stub->addr) ? stub->addr : entry_get_public(stub->slot); -} diff --git a/mesalib/src/mapi/mapi/stub.h b/mesalib/src/mapi/mapi/stub.h deleted file mode 100644 index 98e2553ec..000000000 --- a/mesalib/src/mapi/mapi/stub.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#ifndef _STUB_H_ -#define _STUB_H_ - -#include "entry.h" - -struct mapi_stub; - -void -stub_init_once(void); - -const struct mapi_stub * -stub_find_public(const char *name); - -struct mapi_stub * -stub_find_dynamic(const char *name, int generate); - -const struct mapi_stub * -stub_find_by_slot(int slot); - -void -stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias); - -const char * -stub_get_name(const struct mapi_stub *stub); - -int -stub_get_slot(const struct mapi_stub *stub); - -mapi_func -stub_get_addr(const struct mapi_stub *stub); - -#endif /* _STUB_H_ */ diff --git a/mesalib/src/mapi/mapi/table.c b/mesalib/src/mapi/mapi/table.c deleted file mode 100644 index 9bb9f654a..000000000 --- a/mesalib/src/mapi/mapi/table.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#include -#include - -#include "table.h" - -static void -noop_warn(const char *name) -{ - static int debug = -1; - - if (debug < 0) - debug = (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG")); - - if (debug) - fprintf(stderr, "%s is no-op\n", name); -} - -static int -noop_generic(void) -{ - noop_warn("function"); - return 0; -} - -/* define noop_array */ -#define MAPI_TMP_DEFINES -#define MAPI_TMP_NOOP_ARRAY -#include "mapi_tmp.h" diff --git a/mesalib/src/mapi/mapi/table.h b/mesalib/src/mapi/mapi/table.h deleted file mode 100644 index d84523f77..000000000 --- a/mesalib/src/mapi/mapi/table.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 LunarG Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Authors: - * Chia-I Wu - */ - -#ifndef _TABLE_H_ -#define _TABLE_H_ - -#include "u_compiler.h" -#include "entry.h" - -#define MAPI_TMP_TABLE -#include "mapi_tmp.h" - -#define MAPI_TABLE_NUM_SLOTS (MAPI_TABLE_NUM_STATIC + MAPI_TABLE_NUM_DYNAMIC) -#define MAPI_TABLE_SIZE (MAPI_TABLE_NUM_SLOTS * sizeof(mapi_func)) - -extern const mapi_func table_noop_array[]; - -/** - * Get the no-op dispatch table. - */ -static INLINE const struct mapi_table * -table_get_noop(void) -{ - return (const struct mapi_table *) table_noop_array; -} - -/** - * Set the function of a slot. - */ -static INLINE void -table_set_func(struct mapi_table *tbl, int slot, mapi_func func) -{ - mapi_func *funcs = (mapi_func *) tbl; - funcs[slot] = func; -} - -/** - * Return the function of a slot. - */ -static INLINE mapi_func -table_get_func(const struct mapi_table *tbl, int slot) -{ - const mapi_func *funcs = (const mapi_func *) tbl; - return funcs[slot]; -} - -#endif /* _TABLE_H_ */ diff --git a/mesalib/src/mapi/mapi/u_compiler.h b/mesalib/src/mapi/mapi/u_compiler.h deleted file mode 100644 index f376e97a0..000000000 --- a/mesalib/src/mapi/mapi/u_compiler.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef _U_COMPILER_H_ -#define _U_COMPILER_H_ - -#include "c99_compat.h" /* inline, __func__, etc. */ - - -/* XXX: Use standard `inline` keyword instead */ -#ifndef INLINE -# define INLINE inline -#endif - -/* Function visibility */ -#ifndef PUBLIC -# if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) -# define PUBLIC __attribute__((visibility("default"))) -# elif defined(_MSC_VER) -# define PUBLIC __declspec(dllexport) -# else -# define PUBLIC -# endif -#endif - -#ifndef likely -# if defined(__GNUC__) -# define likely(x) __builtin_expect(!!(x), 1) -# define unlikely(x) __builtin_expect(!!(x), 0) -# else -# define likely(x) (x) -# define unlikely(x) (x) -# endif -#endif - -#endif /* _U_COMPILER_H_ */ diff --git a/mesalib/src/mapi/mapi/u_current.c b/mesalib/src/mapi/mapi/u_current.c deleted file mode 100644 index d902375f8..000000000 --- a/mesalib/src/mapi/mapi/u_current.c +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.1 - * - * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -/* - * This file manages the OpenGL API dispatch layer. - * The dispatch table (struct _glapi_table) is basically just a list - * of function pointers. - * There are functions to set/get the current dispatch table for the - * current thread and to manage registration/dispatch of dynamically - * added extension functions. - * - * It's intended that this file and the other glapi*.[ch] files are - * flexible enough to be reused in several places: XFree86, DRI- - * based libGL.so, and perhaps the SGI SI. - * - * NOTE: There are no dependencies on Mesa in this code. - * - * Versions (API changes): - * 2000/02/23 - original version for Mesa 3.3 and XFree86 4.0 - * 2001/01/16 - added dispatch override feature for Mesa 3.5 - * 2002/06/28 - added _glapi_set_warning_func(), Mesa 4.1. - * 2002/10/01 - _glapi_get_proc_address() will now generate new entrypoints - * itself (using offset ~0). _glapi_add_entrypoint() can be - * called afterward and it'll fill in the correct dispatch - * offset. This allows DRI libGL to avoid probing for DRI - * drivers! No changes to the public glapi interface. - */ - -#include "u_current.h" -#include "u_thread.h" - -#ifndef MAPI_MODE_UTIL - -#include "table.h" -#include "stub.h" - -#else - -extern void init_glapi_relocs_once(void); -extern void (*__glapi_noop_table[])(void); - -#define table_noop_array __glapi_noop_table -#define stub_init_once() init_glapi_relocs_once() - -#endif - -/** - * \name Current dispatch and current context control variables - * - * Depending on whether or not multithreading is support, and the type of - * support available, several variables are used to store the current context - * pointer and the current dispatch table pointer. In the non-threaded case, - * the variables \c _glapi_Dispatch and \c _glapi_Context are used for this - * purpose. - * - * In the "normal" threaded case, the variables \c _glapi_Dispatch and - * \c _glapi_Context will be \c NULL if an application is detected as being - * multithreaded. Single-threaded applications will use \c _glapi_Dispatch - * and \c _glapi_Context just like the case without any threading support. - * When \c _glapi_Dispatch and \c _glapi_Context are \c NULL, the thread state - * data \c _gl_DispatchTSD and \c ContextTSD are used. Drivers and the - * static dispatch functions access these variables via \c _glapi_get_dispatch - * and \c _glapi_get_context. - * - * There is a race condition in setting \c _glapi_Dispatch to \c NULL. It is - * possible for the original thread to be setting it at the same instant a new - * thread, perhaps running on a different processor, is clearing it. Because - * of that, \c ThreadSafe, which can only ever be changed to \c GL_TRUE, is - * used to determine whether or not the application is multithreaded. - * - * In the TLS case, the variables \c _glapi_Dispatch and \c _glapi_Context are - * hardcoded to \c NULL. Instead the TLS variables \c _glapi_tls_Dispatch and - * \c _glapi_tls_Context are used. Having \c _glapi_Dispatch and - * \c _glapi_Context be hardcoded to \c NULL maintains binary compatability - * between TLS enabled loaders and non-TLS DRI drivers. - */ -/*@{*/ -#if defined(GLX_USE_TLS) - -__thread struct mapi_table *u_current_table - __attribute__((tls_model("initial-exec"))) - = (struct mapi_table *) table_noop_array; - -__thread void *u_current_user - __attribute__((tls_model("initial-exec"))); - -#else - -struct mapi_table *u_current_table = - (struct mapi_table *) table_noop_array; -void *u_current_user; - -#ifdef THREADS -struct u_tsd u_current_table_tsd; -static struct u_tsd u_current_user_tsd; -static int ThreadSafe; -#endif /* THREADS */ - -#endif /* defined(GLX_USE_TLS) */ -/*@}*/ - - -void -u_current_destroy(void) -{ -#if defined(THREADS) && defined(_WIN32) - u_tsd_destroy(&u_current_table_tsd); - u_tsd_destroy(&u_current_user_tsd); -#endif -} - - -#if defined(THREADS) && !defined(GLX_USE_TLS) - -static void -u_current_init_tsd(void) -{ - u_tsd_init(&u_current_table_tsd); - u_tsd_init(&u_current_user_tsd); -} - -/** - * Mutex for multithread check. - */ -u_mutex_declare_static(ThreadCheckMutex); - -/** - * We should call this periodically from a function such as glXMakeCurrent - * in order to test if multiple threads are being used. - */ -void -u_current_init(void) -{ - static unsigned long knownID; - static int firstCall = 1; - - if (ThreadSafe) - return; - - u_mutex_lock(ThreadCheckMutex); - if (firstCall) { - u_current_init_tsd(); - - knownID = u_thread_self(); - firstCall = 0; - } - else if (knownID != u_thread_self()) { - ThreadSafe = 1; - u_current_set(NULL); - u_current_set_user(NULL); - } - u_mutex_unlock(ThreadCheckMutex); -} - -#else - -void -u_current_init(void) -{ -} - -#endif - - - -/** - * Set the current context pointer for this thread. - * The context pointer is an opaque type which should be cast to - * void from the real context pointer type. - */ -void -u_current_set_user(const void *ptr) -{ - u_current_init(); - -#if defined(GLX_USE_TLS) - u_current_user = (void *) ptr; -#elif defined(THREADS) - u_tsd_set(&u_current_user_tsd, (void *) ptr); - u_current_user = (ThreadSafe) ? NULL : (void *) ptr; -#else - u_current_user = (void *) ptr; -#endif -} - -/** - * Get the current context pointer for this thread. - * The context pointer is an opaque type which should be cast from - * void to the real context pointer type. - */ -void * -u_current_get_user_internal(void) -{ -#if defined(GLX_USE_TLS) - return u_current_user; -#elif defined(THREADS) - return (ThreadSafe) - ? u_tsd_get(&u_current_user_tsd) - : u_current_user; -#else - return u_current_user; -#endif -} - -/** - * Set the global or per-thread dispatch table pointer. - * If the dispatch parameter is NULL we'll plug in the no-op dispatch - * table (__glapi_noop_table). - */ -void -u_current_set(const struct mapi_table *tbl) -{ - u_current_init(); - - stub_init_once(); - - if (!tbl) - tbl = (const struct mapi_table *) table_noop_array; - -#if defined(GLX_USE_TLS) - u_current_table = (struct mapi_table *) tbl; -#elif defined(THREADS) - u_tsd_set(&u_current_table_tsd, (void *) tbl); - u_current_table = (ThreadSafe) ? NULL : (void *) tbl; -#else - u_current_table = (struct mapi_table *) tbl; -#endif -} - -/** - * Return pointer to current dispatch table for calling thread. - */ -struct mapi_table * -u_current_get_internal(void) -{ -#if defined(GLX_USE_TLS) - return u_current_table; -#elif defined(THREADS) - return (struct mapi_table *) ((ThreadSafe) ? - u_tsd_get(&u_current_table_tsd) : (void *) u_current_table); -#else - return u_current_table; -#endif -} diff --git a/mesalib/src/mapi/mapi/u_current.h b/mesalib/src/mapi/mapi/u_current.h deleted file mode 100644 index f9cffd8c3..000000000 --- a/mesalib/src/mapi/mapi/u_current.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef _U_CURRENT_H_ -#define _U_CURRENT_H_ - -#if defined(MAPI_MODE_UTIL) || defined(MAPI_MODE_GLAPI) || \ - defined(MAPI_MODE_BRIDGE) - -#include "glapi/glapi.h" - -/* ugly renames to match glapi.h */ -#define mapi_table _glapi_table - -#ifdef GLX_USE_TLS -#define u_current_table _glapi_tls_Dispatch -#define u_current_user _glapi_tls_Context -#else -#define u_current_table _glapi_Dispatch -#define u_current_user _glapi_Context -#endif - -#define u_current_get_internal _glapi_get_dispatch -#define u_current_get_user_internal _glapi_get_context - -#define u_current_table_tsd _gl_DispatchTSD - -#else /* MAPI_MODE_UTIL || MAPI_MODE_GLAPI || MAPI_MODE_BRIDGE */ - -#include "u_compiler.h" - -struct mapi_table; - -#ifdef GLX_USE_TLS - -extern __thread struct mapi_table *u_current_table - __attribute__((tls_model("initial-exec"))); - -extern __thread void *u_current_user - __attribute__((tls_model("initial-exec"))); - -#else /* GLX_USE_TLS */ - -extern struct mapi_table *u_current_table; -extern void *u_current_user; - -#endif /* GLX_USE_TLS */ - -#endif /* MAPI_MODE_UTIL || MAPI_MODE_GLAPI || MAPI_MODE_BRIDGE */ - -void -u_current_init(void); - -void -u_current_destroy(void); - -void -u_current_set(const struct mapi_table *tbl); - -struct mapi_table * -u_current_get_internal(void); - -void -u_current_set_user(const void *ptr); - -void * -u_current_get_user_internal(void); - -static INLINE const struct mapi_table * -u_current_get(void) -{ -#ifdef GLX_USE_TLS - return u_current_table; -#else - return (likely(u_current_table) ? - u_current_table : u_current_get_internal()); -#endif -} - -static INLINE const void * -u_current_get_user(void) -{ -#ifdef GLX_USE_TLS - return u_current_user; -#else - return likely(u_current_user) ? u_current_user : u_current_get_user_internal(); -#endif -} - -#endif /* _U_CURRENT_H_ */ diff --git a/mesalib/src/mapi/mapi/u_execmem.c b/mesalib/src/mapi/mapi/u_execmem.c deleted file mode 100644 index e5072e06e..000000000 --- a/mesalib/src/mapi/mapi/u_execmem.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.5 - * - * Copyright (C) 1999-2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -/** - * \file glapi_execmem.c - * - * Function for allocating executable memory for dispatch stubs. - * - * Copied from main/execmem.c and simplified for dispatch stubs. - */ - - -#include "u_compiler.h" -#include "u_thread.h" -#include "u_execmem.h" - - -#define EXEC_MAP_SIZE (4*1024) - -u_mutex_declare_static(exec_mutex); - -static unsigned int head = 0; - -static unsigned char *exec_mem = (unsigned char *)0; - - -#if defined(__linux__) || defined(__OpenBSD__) || defined(_NetBSD__) || defined(__sun) - -#include -#include - -#ifdef MESA_SELINUX -#include -#endif - - -#ifndef MAP_ANONYMOUS -#define MAP_ANONYMOUS MAP_ANON -#endif - - -/* - * Dispatch stubs are of fixed size and never freed. Thus, we do not need to - * overlay a heap, we just mmap a page and manage through an index. - */ - -static int -init_map(void) -{ -#ifdef MESA_SELINUX - if (is_selinux_enabled()) { - if (!security_get_boolean_active("allow_execmem") || - !security_get_boolean_pending("allow_execmem")) - return 0; - } -#endif - - if (!exec_mem) - exec_mem = mmap(NULL, EXEC_MAP_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - - return (exec_mem != MAP_FAILED); -} - - -#elif defined(_WIN32) - -#include - - -/* - * Avoid Data Execution Prevention. - */ - -static int -init_map(void) -{ - exec_mem = VirtualAlloc(NULL, EXEC_MAP_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); - - return (exec_mem != NULL); -} - - -#else - -#include - -static int -init_map(void) -{ - exec_mem = malloc(EXEC_MAP_SIZE); - - return (exec_mem != NULL); -} - - -#endif - -void * -u_execmem_alloc(unsigned int size) -{ - void *addr = NULL; - - u_mutex_lock(exec_mutex); - - if (!init_map()) - goto bail; - - /* free space check, assumes no integer overflow */ - if (head + size > EXEC_MAP_SIZE) - goto bail; - - /* allocation, assumes proper addr and size alignement */ - addr = exec_mem + head; - head += size; - -bail: - u_mutex_unlock(exec_mutex); - - return addr; -} - - diff --git a/mesalib/src/mapi/mapi/u_execmem.h b/mesalib/src/mapi/mapi/u_execmem.h deleted file mode 100644 index 13fff8df2..000000000 --- a/mesalib/src/mapi/mapi/u_execmem.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _U_EXECMEM_H_ -#define _U_EXECMEM_H_ - -void * -u_execmem_alloc(unsigned int size); - -#endif /* _U_EXECMEM_H_ */ diff --git a/mesalib/src/mapi/mapi/u_macros.h b/mesalib/src/mapi/mapi/u_macros.h deleted file mode 100644 index 72345b5f1..000000000 --- a/mesalib/src/mapi/mapi/u_macros.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef _U_MACROS_ -#define _U_MACROS_ - -#define _U_STRINGIFY(x) #x -#define _U_CONCAT(x, y) x ## y -#define _U_CONCAT_STR(x, y) #x#y - -#define U_STRINGIFY(x) _U_STRINGIFY(x) -#define U_CONCAT(x, y) _U_CONCAT(x, y) -#define U_CONCAT_STR(x, y) _U_CONCAT_STR(x, y) - -#endif /* _U_MACROS_ */ diff --git a/mesalib/src/mapi/mapi/u_thread.h b/mesalib/src/mapi/mapi/u_thread.h deleted file mode 100644 index a5e504370..000000000 --- a/mesalib/src/mapi/mapi/u_thread.h +++ /dev/null @@ -1,287 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.5.2 - * - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -/* - * Thread support for gl dispatch. - * - * Initial version by John Stone (j.stone@acm.org) (johns@cs.umr.edu) - * and Christoph Poliwoda (poliwoda@volumegraphics.com) - * Revised by Keith Whitwell - * Adapted for new gl dispatcher by Brian Paul - * Modified for use in mapi by Chia-I Wu - */ - -/* - * If this file is accidentally included by a non-threaded build, - * it should not cause the build to fail, or otherwise cause problems. - * In general, it should only be included when needed however. - */ - -#ifndef _U_THREAD_H_ -#define _U_THREAD_H_ - -#include -#include -#include "u_compiler.h" - -#if defined(HAVE_PTHREAD) -#include /* POSIX threads headers */ -#endif -#ifdef _WIN32 -#include -#endif - -#if defined(HAVE_PTHREAD) || defined(_WIN32) -#ifndef THREADS -#define THREADS -#endif -#endif - -/* - * Error messages - */ -#define INIT_TSD_ERROR "_glthread_: failed to allocate key for thread specific data" -#define GET_TSD_ERROR "_glthread_: failed to get thread specific data" -#define SET_TSD_ERROR "_glthread_: thread failed to set thread specific data" - - -/* - * Magic number to determine if a TSD object has been initialized. - * Kind of a hack but there doesn't appear to be a better cross-platform - * solution. - */ -#define INIT_MAGIC 0xff8adc98 - -#ifdef __cplusplus -extern "C" { -#endif - - -/* - * POSIX threads. This should be your choice in the Unix world - * whenever possible. When building with POSIX threads, be sure - * to enable any compiler flags which will cause the MT-safe - * libc (if one exists) to be used when linking, as well as any - * header macros for MT-safe errno, etc. For Solaris, this is the -mt - * compiler flag. On Solaris with gcc, use -D_REENTRANT to enable - * proper compiling for MT-safe libc etc. - */ -#if defined(HAVE_PTHREAD) - -struct u_tsd { - pthread_key_t key; - unsigned initMagic; -}; - -typedef pthread_mutex_t u_mutex; - -#define u_mutex_declare_static(name) \ - static u_mutex name = PTHREAD_MUTEX_INITIALIZER - -#define u_mutex_init(name) pthread_mutex_init(&(name), NULL) -#define u_mutex_destroy(name) pthread_mutex_destroy(&(name)) -#define u_mutex_lock(name) (void) pthread_mutex_lock(&(name)) -#define u_mutex_unlock(name) (void) pthread_mutex_unlock(&(name)) - -static INLINE unsigned long -u_thread_self(void) -{ - return (unsigned long) pthread_self(); -} - - -static INLINE void -u_tsd_init(struct u_tsd *tsd) -{ - if (pthread_key_create(&tsd->key, NULL/*free*/) != 0) { - perror(INIT_TSD_ERROR); - exit(-1); - } - tsd->initMagic = INIT_MAGIC; -} - - -static INLINE void * -u_tsd_get(struct u_tsd *tsd) -{ - if (tsd->initMagic != INIT_MAGIC) { - u_tsd_init(tsd); - } - return pthread_getspecific(tsd->key); -} - - -static INLINE void -u_tsd_set(struct u_tsd *tsd, void *ptr) -{ - if (tsd->initMagic != INIT_MAGIC) { - u_tsd_init(tsd); - } - if (pthread_setspecific(tsd->key, ptr) != 0) { - perror(SET_TSD_ERROR); - exit(-1); - } -} - -#endif /* HAVE_PTHREAD */ - - -/* - * Windows threads. Should work with Windows NT and 95. - * IMPORTANT: Link with multithreaded runtime library when THREADS are - * used! - */ -#ifdef _WIN32 - -struct u_tsd { - DWORD key; - unsigned initMagic; -}; - -typedef CRITICAL_SECTION u_mutex; - -/* http://locklessinc.com/articles/pthreads_on_windows/ */ -#define u_mutex_declare_static(name) \ - static u_mutex name = {(PCRITICAL_SECTION_DEBUG)-1, -1, 0, 0, 0, 0} - -#define u_mutex_init(name) InitializeCriticalSection(&name) -#define u_mutex_destroy(name) DeleteCriticalSection(&name) -#define u_mutex_lock(name) EnterCriticalSection(&name) -#define u_mutex_unlock(name) LeaveCriticalSection(&name) - -static INLINE unsigned long -u_thread_self(void) -{ - return GetCurrentThreadId(); -} - - -static INLINE void -u_tsd_init(struct u_tsd *tsd) -{ - tsd->key = TlsAlloc(); - if (tsd->key == TLS_OUT_OF_INDEXES) { - perror(INIT_TSD_ERROR); - exit(-1); - } - tsd->initMagic = INIT_MAGIC; -} - - -static INLINE void -u_tsd_destroy(struct u_tsd *tsd) -{ - if (tsd->initMagic != INIT_MAGIC) { - return; - } - TlsFree(tsd->key); - tsd->initMagic = 0x0; -} - - -static INLINE void * -u_tsd_get(struct u_tsd *tsd) -{ - if (tsd->initMagic != INIT_MAGIC) { - u_tsd_init(tsd); - } - return TlsGetValue(tsd->key); -} - - -static INLINE void -u_tsd_set(struct u_tsd *tsd, void *ptr) -{ - /* the following code assumes that the struct u_tsd has been initialized - to zero at creation */ - if (tsd->initMagic != INIT_MAGIC) { - u_tsd_init(tsd); - } - if (TlsSetValue(tsd->key, ptr) == 0) { - perror(SET_TSD_ERROR); - exit(-1); - } -} - -#endif /* _WIN32 */ - - -/* - * THREADS not defined - */ -#ifndef THREADS - -struct u_tsd { - unsigned initMagic; -}; - -typedef unsigned u_mutex; - -#define u_mutex_declare_static(name) static u_mutex name = 0 -#define u_mutex_init(name) (void) name -#define u_mutex_destroy(name) (void) name -#define u_mutex_lock(name) (void) name -#define u_mutex_unlock(name) (void) name - -/* - * no-op functions - */ - -static INLINE unsigned long -u_thread_self(void) -{ - return 0; -} - - -static INLINE void -u_tsd_init(struct u_tsd *tsd) -{ - (void) tsd; -} - - -static INLINE void * -u_tsd_get(struct u_tsd *tsd) -{ - (void) tsd; - return NULL; -} - - -static INLINE void -u_tsd_set(struct u_tsd *tsd, void *ptr) -{ - (void) tsd; - (void) ptr; -} -#endif /* THREADS */ - - -#ifdef __cplusplus -} -#endif - -#endif /* _U_THREAD_H_ */ diff --git a/mesalib/src/mapi/mapi_abi.py b/mesalib/src/mapi/mapi_abi.py new file mode 100644 index 000000000..6bfcfa9af --- /dev/null +++ b/mesalib/src/mapi/mapi_abi.py @@ -0,0 +1,873 @@ +#!/usr/bin/env python + +# Mesa 3-D graphics library +# Version: 7.9 +# +# Copyright (C) 2010 LunarG Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +# Authors: +# Chia-I Wu + +import sys +# make it possible to import glapi +import os +GLAPI = os.path.join(".", os.path.dirname(sys.argv[0]), "glapi/gen") +sys.path.append(GLAPI) + +import re +from optparse import OptionParser +import gl_XML +import glX_XML + + +# number of dynamic entries +ABI_NUM_DYNAMIC_ENTRIES = 256 + +class ABIEntry(object): + """Represent an ABI entry.""" + + _match_c_param = re.compile( + '^(?P[\w\s*]+?)(?P\w+)(\[(?P\d+)\])?$') + + def __init__(self, cols, attrs, xml_data = None): + self._parse(cols) + + self.slot = attrs['slot'] + self.hidden = attrs['hidden'] + self.alias = attrs['alias'] + self.handcode = attrs['handcode'] + self.xml_data = xml_data + + def c_prototype(self): + return '%s %s(%s)' % (self.c_return(), self.name, self.c_params()) + + def c_return(self): + ret = self.ret + if not ret: + ret = 'void' + + return ret + + def c_params(self): + """Return the parameter list used in the entry prototype.""" + c_params = [] + for t, n, a in self.params: + sep = '' if t.endswith('*') else ' ' + arr = '[%d]' % a if a else '' + c_params.append(t + sep + n + arr) + if not c_params: + c_params.append('void') + + return ", ".join(c_params) + + def c_args(self): + """Return the argument list used in the entry invocation.""" + c_args = [] + for t, n, a in self.params: + c_args.append(n) + + return ", ".join(c_args) + + def _parse(self, cols): + ret = cols.pop(0) + if ret == 'void': + ret = None + + name = cols.pop(0) + + params = [] + if not cols: + raise Exception(cols) + elif len(cols) == 1 and cols[0] == 'void': + pass + else: + for val in cols: + params.append(self._parse_param(val)) + + self.ret = ret + self.name = name + self.params = params + + def _parse_param(self, c_param): + m = self._match_c_param.match(c_param) + if not m: + raise Exception('unrecognized param ' + c_param) + + c_type = m.group('type').strip() + c_name = m.group('name') + c_array = m.group('array') + c_array = int(c_array) if c_array else 0 + + return (c_type, c_name, c_array) + + def __str__(self): + return self.c_prototype() + + def __cmp__(self, other): + # compare slot, alias, and then name + res = cmp(self.slot, other.slot) + if not res: + if not self.alias: + res = -1 + elif not other.alias: + res = 1 + + if not res: + res = cmp(self.name, other.name) + + return res + +def abi_parse_xml(xml): + """Parse a GLAPI XML file for ABI entries.""" + api = gl_XML.parse_GL_API(xml, glX_XML.glx_item_factory()) + + entry_dict = {} + for func in api.functionIterateByOffset(): + # make sure func.name appear first + entry_points = func.entry_points[:] + entry_points.remove(func.name) + entry_points.insert(0, func.name) + + for name in entry_points: + attrs = { + 'slot': func.offset, + 'hidden': not func.is_static_entry_point(name), + 'alias': None if name == func.name else func.name, + 'handcode': bool(func.has_different_protocol(name)), + } + + # post-process attrs + if attrs['alias']: + try: + alias = entry_dict[attrs['alias']] + except KeyError: + raise Exception('failed to alias %s' % attrs['alias']) + if alias.alias: + raise Exception('recursive alias %s' % ent.name) + attrs['alias'] = alias + if attrs['handcode']: + attrs['handcode'] = func.static_glx_name(name) + else: + attrs['handcode'] = None + + if entry_dict.has_key(name): + raise Exception('%s is duplicated' % (name)) + + cols = [] + cols.append(func.return_type) + cols.append(name) + params = func.get_parameter_string(name) + cols.extend([p.strip() for p in params.split(',')]) + + ent = ABIEntry(cols, attrs, func) + entry_dict[ent.name] = ent + + entries = entry_dict.values() + entries.sort() + + return entries + +def abi_parse_line(line): + cols = [col.strip() for col in line.split(',')] + + attrs = { + 'slot': -1, + 'hidden': False, + 'alias': None, + 'handcode': None, + } + + # extract attributes from the first column + vals = cols[0].split(':') + while len(vals) > 1: + val = vals.pop(0) + if val.startswith('slot='): + attrs['slot'] = int(val[5:]) + elif val == 'hidden': + attrs['hidden'] = True + elif val.startswith('alias='): + attrs['alias'] = val[6:] + elif val.startswith('handcode='): + attrs['handcode'] = val[9:] + elif not val: + pass + else: + raise Exception('unknown attribute %s' % val) + cols[0] = vals[0] + + return (attrs, cols) + +def abi_parse(filename): + """Parse a CSV file for ABI entries.""" + fp = open(filename) if filename != '-' else sys.stdin + lines = [line.strip() for line in fp.readlines() + if not line.startswith('#') and line.strip()] + + entry_dict = {} + next_slot = 0 + for line in lines: + attrs, cols = abi_parse_line(line) + + # post-process attributes + if attrs['alias']: + try: + alias = entry_dict[attrs['alias']] + except KeyError: + raise Exception('failed to alias %s' % attrs['alias']) + if alias.alias: + raise Exception('recursive alias %s' % ent.name) + slot = alias.slot + attrs['alias'] = alias + else: + slot = next_slot + next_slot += 1 + + if attrs['slot'] < 0: + attrs['slot'] = slot + elif attrs['slot'] != slot: + raise Exception('invalid slot in %s' % (line)) + + ent = ABIEntry(cols, attrs) + if entry_dict.has_key(ent.name): + raise Exception('%s is duplicated' % (ent.name)) + entry_dict[ent.name] = ent + + entries = entry_dict.values() + entries.sort() + + return entries + +def abi_sanity_check(entries): + if not entries: + return + + all_names = [] + last_slot = entries[-1].slot + i = 0 + for slot in xrange(last_slot + 1): + if entries[i].slot != slot: + raise Exception('entries are not ordered by slots') + if entries[i].alias: + raise Exception('first entry of slot %d aliases %s' + % (slot, entries[i].alias.name)) + handcode = None + while i < len(entries) and entries[i].slot == slot: + ent = entries[i] + if not handcode and ent.handcode: + handcode = ent.handcode + elif ent.handcode != handcode: + raise Exception('two aliases with handcode %s != %s', + ent.handcode, handcode) + + if ent.name in all_names: + raise Exception('%s is duplicated' % (ent.name)) + if ent.alias and ent.alias.name not in all_names: + raise Exception('failed to alias %s' % (ent.alias.name)) + all_names.append(ent.name) + i += 1 + if i < len(entries): + raise Exception('there are %d invalid entries' % (len(entries) - 1)) + +class ABIPrinter(object): + """MAPI Printer""" + + def __init__(self, entries): + self.entries = entries + + # sort entries by their names + self.entries_sorted_by_names = self.entries[:] + self.entries_sorted_by_names.sort(lambda x, y: cmp(x.name, y.name)) + + self.indent = ' ' * 3 + self.noop_warn = 'noop_warn' + self.noop_generic = 'noop_generic' + self.current_get = 'entry_current_get' + + self.api_defines = [] + self.api_headers = ['"KHR/khrplatform.h"'] + self.api_call = 'KHRONOS_APICALL' + self.api_entry = 'KHRONOS_APIENTRY' + self.api_attrs = 'KHRONOS_APIATTRIBUTES' + + self.c_header = '' + + self.lib_need_table_size = True + self.lib_need_noop_array = True + self.lib_need_stubs = True + self.lib_need_all_entries = True + self.lib_need_non_hidden_entries = False + + def c_notice(self): + return '/* This file is automatically generated by mapi_abi.py. Do not modify. */' + + def c_public_includes(self): + """Return includes of the client API headers.""" + defines = ['#define ' + d for d in self.api_defines] + includes = ['#include ' + h for h in self.api_headers] + return "\n".join(defines + includes) + + def need_entry_point(self, ent): + """Return True if an entry point is needed for the entry.""" + # non-handcode hidden aliases may share the entry they alias + use_alias = (ent.hidden and ent.alias and not ent.handcode) + return not use_alias + + def c_public_declarations(self, prefix): + """Return the declarations of public entry points.""" + decls = [] + for ent in self.entries: + if not self.need_entry_point(ent): + continue + export = self.api_call if not ent.hidden else '' + decls.append(self._c_decl(ent, prefix, True, export) + ';') + + return "\n".join(decls) + + def c_mapi_table(self): + """Return defines of the dispatch table size.""" + num_static_entries = self.entries[-1].slot + 1 + return ('#define MAPI_TABLE_NUM_STATIC %d\n' + \ + '#define MAPI_TABLE_NUM_DYNAMIC %d') % ( + num_static_entries, ABI_NUM_DYNAMIC_ENTRIES) + + def c_mapi_table_initializer(self, prefix): + """Return the array initializer for mapi_table_fill.""" + entries = [self._c_function(ent, prefix) + for ent in self.entries if not ent.alias] + pre = self.indent + '(mapi_proc) ' + return pre + (',\n' + pre).join(entries) + + def c_mapi_table_spec(self): + """Return the spec for mapi_init.""" + specv1 = [] + line = '"1' + for ent in self.entries: + if not ent.alias: + line += '\\0"\n' + specv1.append(line) + line = '"' + line += '%s\\0' % ent.name + line += '";' + specv1.append(line) + + return self.indent + self.indent.join(specv1) + + def _c_function(self, ent, prefix, mangle=False, stringify=False): + """Return the function name of an entry.""" + formats = { + True: { True: '%s_STR(%s)', False: '%s(%s)' }, + False: { True: '"%s%s"', False: '%s%s' }, + } + fmt = formats[prefix.isupper()][stringify] + name = ent.name + if mangle and ent.hidden: + name = '_dispatch_stub_' + str(ent.slot) + return fmt % (prefix, name) + + def _c_function_call(self, ent, prefix): + """Return the function name used for calling.""" + if ent.handcode: + # _c_function does not handle this case + formats = { True: '%s(%s)', False: '%s%s' } + fmt = formats[prefix.isupper()] + name = fmt % (prefix, ent.handcode) + elif self.need_entry_point(ent): + name = self._c_function(ent, prefix, True) + else: + name = self._c_function(ent.alias, prefix, True) + return name + + def _c_decl(self, ent, prefix, mangle=False, export=''): + """Return the C declaration for the entry.""" + decl = '%s %s %s(%s)' % (ent.c_return(), self.api_entry, + self._c_function(ent, prefix, mangle), ent.c_params()) + if export: + decl = export + ' ' + decl + if self.api_attrs: + decl += ' ' + self.api_attrs + + return decl + + def _c_cast(self, ent): + """Return the C cast for the entry.""" + cast = '%s (%s *)(%s)' % ( + ent.c_return(), self.api_entry, ent.c_params()) + + return cast + + def c_private_declarations(self, prefix): + """Return the declarations of private functions.""" + decls = [self._c_decl(ent, prefix) + ';' + for ent in self.entries if not ent.alias] + + return "\n".join(decls) + + def c_public_dispatches(self, prefix, no_hidden): + """Return the public dispatch functions.""" + dispatches = [] + for ent in self.entries: + if ent.hidden and no_hidden: + continue + + if not self.need_entry_point(ent): + continue + + export = self.api_call if not ent.hidden else '' + + proto = self._c_decl(ent, prefix, True, export) + cast = self._c_cast(ent) + + ret = '' + if ent.ret: + ret = 'return ' + stmt1 = self.indent + stmt1 += 'const struct mapi_table *_tbl = %s();' % ( + self.current_get) + stmt2 = self.indent + stmt2 += 'mapi_func _func = ((const mapi_func *) _tbl)[%d];' % ( + ent.slot) + stmt3 = self.indent + stmt3 += '%s((%s) _func)(%s);' % (ret, cast, ent.c_args()) + + disp = '%s\n{\n%s\n%s\n%s\n}' % (proto, stmt1, stmt2, stmt3) + + if ent.handcode: + disp = '#if 0\n' + disp + '\n#endif' + + dispatches.append(disp) + + return '\n\n'.join(dispatches) + + def c_public_initializer(self, prefix): + """Return the initializer for public dispatch functions.""" + names = [] + for ent in self.entries: + if ent.alias: + continue + + name = '%s(mapi_func) %s' % (self.indent, + self._c_function_call(ent, prefix)) + names.append(name) + + return ',\n'.join(names) + + def c_stub_string_pool(self): + """Return the string pool for use by stubs.""" + # sort entries by their names + sorted_entries = self.entries[:] + sorted_entries.sort(lambda x, y: cmp(x.name, y.name)) + + pool = [] + offsets = {} + count = 0 + for ent in sorted_entries: + offsets[ent] = count + pool.append('%s' % (ent.name)) + count += len(ent.name) + 1 + + pool_str = self.indent + '"' + \ + ('\\0"\n' + self.indent + '"').join(pool) + '";' + return (pool_str, offsets) + + def c_stub_initializer(self, prefix, pool_offsets): + """Return the initializer for struct mapi_stub array.""" + stubs = [] + for ent in self.entries_sorted_by_names: + stubs.append('%s{ (void *) %d, %d, NULL }' % ( + self.indent, pool_offsets[ent], ent.slot)) + + return ',\n'.join(stubs) + + def c_noop_functions(self, prefix, warn_prefix): + """Return the noop functions.""" + noops = [] + for ent in self.entries: + if ent.alias: + continue + + proto = self._c_decl(ent, prefix, False, 'static') + + stmt1 = self.indent; + space = '' + for t, n, a in ent.params: + stmt1 += "%s(void) %s;" % (space, n) + space = ' ' + + if ent.params: + stmt1 += '\n'; + + stmt1 += self.indent + '%s(%s);' % (self.noop_warn, + self._c_function(ent, warn_prefix, False, True)) + + if ent.ret: + stmt2 = self.indent + 'return (%s) 0;' % (ent.ret) + noop = '%s\n{\n%s\n%s\n}' % (proto, stmt1, stmt2) + else: + noop = '%s\n{\n%s\n}' % (proto, stmt1) + + noops.append(noop) + + return '\n\n'.join(noops) + + def c_noop_initializer(self, prefix, use_generic): + """Return an initializer for the noop dispatch table.""" + entries = [self._c_function(ent, prefix) + for ent in self.entries if not ent.alias] + if use_generic: + entries = [self.noop_generic] * len(entries) + + entries.extend([self.noop_generic] * ABI_NUM_DYNAMIC_ENTRIES) + + pre = self.indent + '(mapi_func) ' + return pre + (',\n' + pre).join(entries) + + def c_asm_gcc(self, prefix, no_hidden): + asm = [] + + for ent in self.entries: + if ent.hidden and no_hidden: + continue + + if not self.need_entry_point(ent): + continue + + name = self._c_function(ent, prefix, True, True) + + if ent.handcode: + asm.append('#if 0') + + if ent.hidden: + asm.append('".hidden "%s"\\n"' % (name)) + + if ent.alias and not (ent.alias.hidden and no_hidden): + asm.append('".globl "%s"\\n"' % (name)) + asm.append('".set "%s", "%s"\\n"' % (name, + self._c_function(ent.alias, prefix, True, True))) + else: + asm.append('STUB_ASM_ENTRY(%s)"\\n"' % (name)) + asm.append('"\\t"STUB_ASM_CODE("%d")"\\n"' % (ent.slot)) + + if ent.handcode: + asm.append('#endif') + asm.append('') + + return "\n".join(asm) + + def output_for_lib(self): + print self.c_notice() + + if self.c_header: + print + print self.c_header + + print + print '#ifdef MAPI_TMP_DEFINES' + print self.c_public_includes() + print + print self.c_public_declarations(self.prefix_lib) + print '#undef MAPI_TMP_DEFINES' + print '#endif /* MAPI_TMP_DEFINES */' + + if self.lib_need_table_size: + print + print '#ifdef MAPI_TMP_TABLE' + print self.c_mapi_table() + print '#undef MAPI_TMP_TABLE' + print '#endif /* MAPI_TMP_TABLE */' + + if self.lib_need_noop_array: + print + print '#ifdef MAPI_TMP_NOOP_ARRAY' + print '#ifdef DEBUG' + print + print self.c_noop_functions(self.prefix_noop, self.prefix_warn) + print + print 'const mapi_func table_%s_array[] = {' % (self.prefix_noop) + print self.c_noop_initializer(self.prefix_noop, False) + print '};' + print + print '#else /* DEBUG */' + print + print 'const mapi_func table_%s_array[] = {' % (self.prefix_noop) + print self.c_noop_initializer(self.prefix_noop, True) + print '};' + print + print '#endif /* DEBUG */' + print '#undef MAPI_TMP_NOOP_ARRAY' + print '#endif /* MAPI_TMP_NOOP_ARRAY */' + + if self.lib_need_stubs: + pool, pool_offsets = self.c_stub_string_pool() + print + print '#ifdef MAPI_TMP_PUBLIC_STUBS' + print 'static const char public_string_pool[] =' + print pool + print + print 'static const struct mapi_stub public_stubs[] = {' + print self.c_stub_initializer(self.prefix_lib, pool_offsets) + print '};' + print '#undef MAPI_TMP_PUBLIC_STUBS' + print '#endif /* MAPI_TMP_PUBLIC_STUBS */' + + if self.lib_need_all_entries: + print + print '#ifdef MAPI_TMP_PUBLIC_ENTRIES' + print self.c_public_dispatches(self.prefix_lib, False) + print + print 'static const mapi_func public_entries[] = {' + print self.c_public_initializer(self.prefix_lib) + print '};' + print '#undef MAPI_TMP_PUBLIC_ENTRIES' + print '#endif /* MAPI_TMP_PUBLIC_ENTRIES */' + + print + print '#ifdef MAPI_TMP_STUB_ASM_GCC' + print '__asm__(' + print self.c_asm_gcc(self.prefix_lib, False) + print ');' + print '#undef MAPI_TMP_STUB_ASM_GCC' + print '#endif /* MAPI_TMP_STUB_ASM_GCC */' + + if self.lib_need_non_hidden_entries: + all_hidden = True + for ent in self.entries: + if not ent.hidden: + all_hidden = False + break + if not all_hidden: + print + print '#ifdef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN' + print self.c_public_dispatches(self.prefix_lib, True) + print + print '/* does not need public_entries */' + print '#undef MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN' + print '#endif /* MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN */' + + print + print '#ifdef MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN' + print '__asm__(' + print self.c_asm_gcc(self.prefix_lib, True) + print ');' + print '#undef MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN' + print '#endif /* MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN */' + + def output_for_app(self): + print self.c_notice() + print + print self.c_private_declarations(self.prefix_app) + print + print '#ifdef API_TMP_DEFINE_SPEC' + print + print 'static const char %s_spec[] =' % (self.prefix_app) + print self.c_mapi_table_spec() + print + print 'static const mapi_proc %s_procs[] = {' % (self.prefix_app) + print self.c_mapi_table_initializer(self.prefix_app) + print '};' + print + print '#endif /* API_TMP_DEFINE_SPEC */' + +class GLAPIPrinter(ABIPrinter): + """OpenGL API Printer""" + + def __init__(self, entries): + for ent in entries: + self._override_for_api(ent) + super(GLAPIPrinter, self).__init__(entries) + + self.api_defines = ['GL_GLEXT_PROTOTYPES'] + self.api_headers = ['"GL/gl.h"', '"GL/glext.h"'] + self.api_call = 'GLAPI' + self.api_entry = 'APIENTRY' + self.api_attrs = '' + + self.lib_need_table_size = False + self.lib_need_noop_array = False + self.lib_need_stubs = False + self.lib_need_all_entries = False + self.lib_need_non_hidden_entries = True + + self.prefix_lib = 'GLAPI_PREFIX' + self.prefix_app = '_mesa_' + self.prefix_noop = 'noop' + self.prefix_warn = self.prefix_lib + + self.c_header = self._get_c_header() + + def _override_for_api(self, ent): + """Override attributes of an entry if necessary for this + printer.""" + # By default, no override is necessary. + pass + + def _get_c_header(self): + header = """#ifndef _GLAPI_TMP_H_ +#define _GLAPI_TMP_H_ +#ifdef USE_MGL_NAMESPACE +#define GLAPI_PREFIX(func) mgl##func +#define GLAPI_PREFIX_STR(func) "mgl"#func +#else +#define GLAPI_PREFIX(func) gl##func +#define GLAPI_PREFIX_STR(func) "gl"#func +#endif /* USE_MGL_NAMESPACE */ + +typedef int GLfixed; +typedef int GLclampx; +#endif /* _GLAPI_TMP_H_ */""" + + return header + +class ES1APIPrinter(GLAPIPrinter): + """OpenGL ES 1.x API Printer""" + + def __init__(self, entries): + super(ES1APIPrinter, self).__init__(entries) + self.prefix_lib = 'gl' + self.prefix_warn = 'gl' + + def _override_for_api(self, ent): + if ent.xml_data is None: + raise Exception('ES2 API printer requires XML input') + ent.hidden = ent.name not in \ + ent.xml_data.entry_points_for_api_version('es1') + ent.handcode = False + + def _get_c_header(self): + header = """#ifndef _GLAPI_TMP_H_ +#define _GLAPI_TMP_H_ +typedef int GLfixed; +typedef int GLclampx; +#endif /* _GLAPI_TMP_H_ */""" + + return header + +class ES2APIPrinter(GLAPIPrinter): + """OpenGL ES 2.x API Printer""" + + def __init__(self, entries): + super(ES2APIPrinter, self).__init__(entries) + self.prefix_lib = 'gl' + self.prefix_warn = 'gl' + + def _override_for_api(self, ent): + if ent.xml_data is None: + raise Exception('ES2 API printer requires XML input') + ent.hidden = ent.name not in \ + ent.xml_data.entry_points_for_api_version('es2') + ent.handcode = False + + def _get_c_header(self): + header = """#ifndef _GLAPI_TMP_H_ +#define _GLAPI_TMP_H_ +typedef int GLfixed; +typedef int GLclampx; +#endif /* _GLAPI_TMP_H_ */""" + + return header + +class SharedGLAPIPrinter(GLAPIPrinter): + """Shared GLAPI API Printer""" + + def __init__(self, entries): + super(SharedGLAPIPrinter, self).__init__(entries) + + self.lib_need_table_size = True + self.lib_need_noop_array = True + self.lib_need_stubs = True + self.lib_need_all_entries = True + self.lib_need_non_hidden_entries = False + + self.prefix_lib = 'shared' + self.prefix_warn = 'gl' + + def _override_for_api(self, ent): + ent.hidden = True + ent.handcode = False + + def _get_c_header(self): + header = """#ifndef _GLAPI_TMP_H_ +#define _GLAPI_TMP_H_ +typedef int GLfixed; +typedef int GLclampx; +#endif /* _GLAPI_TMP_H_ */""" + + return header + +class VGAPIPrinter(ABIPrinter): + """OpenVG API Printer""" + + def __init__(self, entries): + super(VGAPIPrinter, self).__init__(entries) + + self.api_defines = ['VG_VGEXT_PROTOTYPES'] + self.api_headers = ['"VG/openvg.h"', '"VG/vgext.h"'] + self.api_call = 'VG_API_CALL' + self.api_entry = 'VG_API_ENTRY' + self.api_attrs = 'VG_API_EXIT' + + self.prefix_lib = 'vg' + self.prefix_app = 'vega' + self.prefix_noop = 'noop' + self.prefix_warn = 'vg' + +def parse_args(): + printers = ['vgapi', 'glapi', 'es1api', 'es2api', 'shared-glapi'] + modes = ['lib', 'app'] + + parser = OptionParser(usage='usage: %prog [options] ') + parser.add_option('-p', '--printer', dest='printer', + help='printer to use: %s' % (", ".join(printers))) + parser.add_option('-m', '--mode', dest='mode', + help='target user: %s' % (", ".join(modes))) + + options, args = parser.parse_args() + if not args or options.printer not in printers or \ + options.mode not in modes: + parser.print_help() + sys.exit(1) + + return (args[0], options) + +def main(): + printers = { + 'vgapi': VGAPIPrinter, + 'glapi': GLAPIPrinter, + 'es1api': ES1APIPrinter, + 'es2api': ES2APIPrinter, + 'shared-glapi': SharedGLAPIPrinter, + } + + filename, options = parse_args() + + if filename.endswith('.xml'): + entries = abi_parse_xml(filename) + else: + entries = abi_parse(filename) + abi_sanity_check(entries) + + printer = printers[options.printer](entries) + if options.mode == 'lib': + printer.output_for_lib() + else: + printer.output_for_app() + +if __name__ == '__main__': + main() diff --git a/mesalib/src/mapi/mapi_glapi.c b/mesalib/src/mapi/mapi_glapi.c new file mode 100644 index 000000000..a6838ce61 --- /dev/null +++ b/mesalib/src/mapi/mapi_glapi.c @@ -0,0 +1,240 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#include +#include "glapi/glapi.h" +#include "u_current.h" +#include "table.h" /* for MAPI_TABLE_NUM_SLOTS */ +#include "stub.h" + +/* + * Global variables, _glapi_get_context, and _glapi_get_dispatch are defined in + * u_current.c. + */ + +#ifdef GLX_USE_TLS +/* not used, but defined for compatibility */ +const struct _glapi_table *_glapi_Dispatch; +const void *_glapi_Context; +#endif /* GLX_USE_TLS */ + +void +_glapi_destroy_multithread(void) +{ + u_current_destroy(); +} + +void +_glapi_check_multithread(void) +{ + u_current_init(); +} + +void +_glapi_set_context(void *context) +{ + u_current_set_user((const void *) context); +} + +void +_glapi_set_dispatch(struct _glapi_table *dispatch) +{ + u_current_set((const struct mapi_table *) dispatch); +} + +/** + * Return size of dispatch table struct as number of functions (or + * slots). + */ +unsigned int +_glapi_get_dispatch_table_size(void) +{ + return MAPI_TABLE_NUM_SLOTS; +} + +/** + * Fill-in the dispatch stub for the named function. + * + * This function is intended to be called by a hardware driver. When called, + * a dispatch stub may be created created for the function. A pointer to this + * dispatch function will be returned by glXGetProcAddress. + * + * \param function_names Array of pointers to function names that should + * share a common dispatch offset. + * \param parameter_signature String representing the types of the parameters + * passed to the named function. Parameter types + * are converted to characters using the following + * rules: + * - 'i' for \c GLint, \c GLuint, and \c GLenum + * - 'p' for any pointer type + * - 'f' for \c GLfloat and \c GLclampf + * - 'd' for \c GLdouble and \c GLclampd + * + * \returns + * The offset in the dispatch table of the named function. A pointer to the + * driver's implementation of the named function should be stored at + * \c dispatch_table[\c offset]. Return -1 if error/problem. + * + * \sa glXGetProcAddress + * + * \warning + * This function can only handle up to 8 names at a time. As far as I know, + * the maximum number of names ever associated with an existing GL function is + * 4 (\c glPointParameterfSGIS, \c glPointParameterfEXT, + * \c glPointParameterfARB, and \c glPointParameterf), so this should not be + * too painful of a limitation. + * + * \todo + * Check parameter_signature. + */ +int +_glapi_add_dispatch( const char * const * function_names, + const char * parameter_signature ) +{ + const struct mapi_stub *function_stubs[8]; + const struct mapi_stub *alias = NULL; + unsigned i; + + (void) memset(function_stubs, 0, sizeof(function_stubs)); + + /* find the missing stubs, and decide the alias */ + for (i = 0; function_names[i] != NULL && i < 8; i++) { + const char * funcName = function_names[i]; + const struct mapi_stub *stub; + int slot; + + if (!funcName || funcName[0] != 'g' || funcName[1] != 'l') + return -1; + funcName += 2; + + stub = stub_find_public(funcName); + if (!stub) + stub = stub_find_dynamic(funcName, 0); + + slot = (stub) ? stub_get_slot(stub) : -1; + if (slot >= 0) { + if (alias && stub_get_slot(alias) != slot) + return -1; + /* use the first existing stub as the alias */ + if (!alias) + alias = stub; + + function_stubs[i] = stub; + } + } + + /* generate missing stubs */ + for (i = 0; function_names[i] != NULL && i < 8; i++) { + const char * funcName = function_names[i] + 2; + struct mapi_stub *stub; + + if (function_stubs[i]) + continue; + + stub = stub_find_dynamic(funcName, 1); + if (!stub) + return -1; + + stub_fix_dynamic(stub, alias); + if (!alias) + alias = stub; + } + + return (alias) ? stub_get_slot(alias) : -1; +} + +static const struct mapi_stub * +_glapi_get_stub(const char *name, int generate) +{ + const struct mapi_stub *stub; + +#ifdef USE_MGL_NAMESPACE + if (name) + name++; +#endif + + if (!name || name[0] != 'g' || name[1] != 'l') + return NULL; + name += 2; + + stub = stub_find_public(name); + if (!stub) + stub = stub_find_dynamic(name, generate); + + return stub; +} + +/** + * Return offset of entrypoint for named function within dispatch table. + */ +int +_glapi_get_proc_offset(const char *funcName) +{ + const struct mapi_stub *stub = _glapi_get_stub(funcName, 0); + return (stub) ? stub_get_slot(stub) : -1; +} + +/** + * Return pointer to the named function. If the function name isn't found + * in the name of static functions, try generating a new API entrypoint on + * the fly with assembly language. + */ +_glapi_proc +_glapi_get_proc_address(const char *funcName) +{ + const struct mapi_stub *stub = _glapi_get_stub(funcName, 1); + return (stub) ? (_glapi_proc) stub_get_addr(stub) : NULL; +} + +/** + * Return the name of the function at the given dispatch offset. + * This is only intended for debugging. + */ +const char * +_glapi_get_proc_name(unsigned int offset) +{ + const struct mapi_stub *stub = stub_find_by_slot(offset); + return stub ? stub_get_name(stub) : NULL; +} + +unsigned long +_glthread_GetID(void) +{ + return u_thread_self(); +} + +void +_glapi_noop_enable_warnings(unsigned char enable) +{ +} + +void +_glapi_set_warning_func(_glapi_proc func) +{ +} diff --git a/mesalib/src/mapi/mapi_tmp.h b/mesalib/src/mapi/mapi_tmp.h new file mode 100644 index 000000000..f326b4a4e --- /dev/null +++ b/mesalib/src/mapi/mapi_tmp.h @@ -0,0 +1,48 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#ifndef MAPI_ABI_HEADER +#error "MAPI_ABI_HEADER must be defined" +#endif + +/* does not need hidden entries in bridge mode */ +#ifdef MAPI_MODE_BRIDGE + +#ifdef MAPI_TMP_PUBLIC_ENTRIES +#undef MAPI_TMP_PUBLIC_ENTRIES +#define MAPI_TMP_PUBLIC_ENTRIES_NO_HIDDEN +#endif + +#ifdef MAPI_TMP_STUB_ASM_GCC +#undef MAPI_TMP_STUB_ASM_GCC +#define MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN +#endif + +#endif /* MAPI_MODE_BRIDGE */ + +#include MAPI_ABI_HEADER diff --git a/mesalib/src/mapi/stub.c b/mesalib/src/mapi/stub.c new file mode 100644 index 000000000..688dc8143 --- /dev/null +++ b/mesalib/src/mapi/stub.c @@ -0,0 +1,229 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#include +#include +#include + +#include "u_current.h" +#include "u_thread.h" +#include "entry.h" +#include "stub.h" +#include "table.h" + +#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0])) + +struct mapi_stub { + const void *name; + int slot; + mapi_func addr; +}; + +/* define public_string_pool and public_stubs */ +#define MAPI_TMP_PUBLIC_STUBS +#include "mapi_tmp.h" + +static struct mapi_stub dynamic_stubs[MAPI_TABLE_NUM_DYNAMIC]; +static int num_dynamic_stubs; +static int next_dynamic_slot = MAPI_TABLE_NUM_STATIC; + +void +stub_init_once(void) +{ +#ifdef HAVE_PTHREAD + static pthread_once_t once = PTHREAD_ONCE_INIT; + pthread_once(&once, entry_patch_public); +#else + static int first = 1; + if (first) { + first = 0; + entry_patch_public(); + } +#endif +} + +static int +stub_compare(const void *key, const void *elem) +{ + const char *name = (const char *) key; + const struct mapi_stub *stub = (const struct mapi_stub *) elem; + const char *stub_name; + + stub_name = &public_string_pool[(unsigned long) stub->name]; + + return strcmp(name, stub_name); +} + +/** + * Return the public stub with the given name. + */ +const struct mapi_stub * +stub_find_public(const char *name) +{ + return (const struct mapi_stub *) bsearch(name, public_stubs, + ARRAY_SIZE(public_stubs), sizeof(public_stubs[0]), stub_compare); +} + +/** + * Add a dynamic stub. + */ +static struct mapi_stub * +stub_add_dynamic(const char *name) +{ + struct mapi_stub *stub; + int idx; + + idx = num_dynamic_stubs; + /* minus 1 to make sure we can never reach the last slot */ + if (idx >= MAPI_TABLE_NUM_DYNAMIC - 1) + return NULL; + + stub = &dynamic_stubs[idx]; + + /* dispatch to the last slot, which is reserved for no-op */ + stub->addr = entry_generate( + MAPI_TABLE_NUM_STATIC + MAPI_TABLE_NUM_DYNAMIC - 1); + if (!stub->addr) + return NULL; + + stub->name = (const void *) name; + /* to be fixed later */ + stub->slot = -1; + + num_dynamic_stubs = idx + 1; + + return stub; +} + +/** + * Return the dynamic stub with the given name. If no such stub exists and + * generate is true, a new stub is generated. + */ +struct mapi_stub * +stub_find_dynamic(const char *name, int generate) +{ + u_mutex_declare_static(dynamic_mutex); + struct mapi_stub *stub = NULL; + int count, i; + + u_mutex_lock(dynamic_mutex); + + if (generate) + assert(!stub_find_public(name)); + + count = num_dynamic_stubs; + for (i = 0; i < count; i++) { + if (strcmp(name, (const char *) dynamic_stubs[i].name) == 0) { + stub = &dynamic_stubs[i]; + break; + } + } + + /* generate a dynamic stub */ + if (generate && !stub) + stub = stub_add_dynamic(name); + + u_mutex_unlock(dynamic_mutex); + + return stub; +} + +static const struct mapi_stub * +search_table_by_slot(const struct mapi_stub *table, size_t num_entries, + int slot) +{ + size_t i; + for (i = 0; i < num_entries; ++i) { + if (table[i].slot == slot) + return &table[i]; + } + return NULL; +} + +const struct mapi_stub * +stub_find_by_slot(int slot) +{ + const struct mapi_stub *stub = + search_table_by_slot(public_stubs, ARRAY_SIZE(public_stubs), slot); + if (stub) + return stub; + return search_table_by_slot(dynamic_stubs, num_dynamic_stubs, slot); +} + +void +stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias) +{ + int slot; + + if (stub->slot >= 0) + return; + + if (alias) + slot = alias->slot; + else + slot = next_dynamic_slot++; + + entry_patch(stub->addr, slot); + stub->slot = slot; +} + +/** + * Return the name of a stub. + */ +const char * +stub_get_name(const struct mapi_stub *stub) +{ + const char *name; + + if (stub >= public_stubs && + stub < public_stubs + ARRAY_SIZE(public_stubs)) + name = &public_string_pool[(unsigned long) stub->name]; + else + name = (const char *) stub->name; + + return name; +} + +/** + * Return the slot of a stub. + */ +int +stub_get_slot(const struct mapi_stub *stub) +{ + return stub->slot; +} + +/** + * Return the address of a stub. + */ +mapi_func +stub_get_addr(const struct mapi_stub *stub) +{ + assert(stub->addr || (unsigned int) stub->slot < MAPI_TABLE_NUM_STATIC); + return (stub->addr) ? stub->addr : entry_get_public(stub->slot); +} diff --git a/mesalib/src/mapi/stub.h b/mesalib/src/mapi/stub.h new file mode 100644 index 000000000..98e2553ec --- /dev/null +++ b/mesalib/src/mapi/stub.h @@ -0,0 +1,60 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#ifndef _STUB_H_ +#define _STUB_H_ + +#include "entry.h" + +struct mapi_stub; + +void +stub_init_once(void); + +const struct mapi_stub * +stub_find_public(const char *name); + +struct mapi_stub * +stub_find_dynamic(const char *name, int generate); + +const struct mapi_stub * +stub_find_by_slot(int slot); + +void +stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias); + +const char * +stub_get_name(const struct mapi_stub *stub); + +int +stub_get_slot(const struct mapi_stub *stub); + +mapi_func +stub_get_addr(const struct mapi_stub *stub); + +#endif /* _STUB_H_ */ diff --git a/mesalib/src/mapi/table.c b/mesalib/src/mapi/table.c new file mode 100644 index 000000000..9bb9f654a --- /dev/null +++ b/mesalib/src/mapi/table.c @@ -0,0 +1,56 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#include +#include + +#include "table.h" + +static void +noop_warn(const char *name) +{ + static int debug = -1; + + if (debug < 0) + debug = (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG")); + + if (debug) + fprintf(stderr, "%s is no-op\n", name); +} + +static int +noop_generic(void) +{ + noop_warn("function"); + return 0; +} + +/* define noop_array */ +#define MAPI_TMP_DEFINES +#define MAPI_TMP_NOOP_ARRAY +#include "mapi_tmp.h" diff --git a/mesalib/src/mapi/table.h b/mesalib/src/mapi/table.h new file mode 100644 index 000000000..d84523f77 --- /dev/null +++ b/mesalib/src/mapi/table.h @@ -0,0 +1,72 @@ +/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu + */ + +#ifndef _TABLE_H_ +#define _TABLE_H_ + +#include "u_compiler.h" +#include "entry.h" + +#define MAPI_TMP_TABLE +#include "mapi_tmp.h" + +#define MAPI_TABLE_NUM_SLOTS (MAPI_TABLE_NUM_STATIC + MAPI_TABLE_NUM_DYNAMIC) +#define MAPI_TABLE_SIZE (MAPI_TABLE_NUM_SLOTS * sizeof(mapi_func)) + +extern const mapi_func table_noop_array[]; + +/** + * Get the no-op dispatch table. + */ +static INLINE const struct mapi_table * +table_get_noop(void) +{ + return (const struct mapi_table *) table_noop_array; +} + +/** + * Set the function of a slot. + */ +static INLINE void +table_set_func(struct mapi_table *tbl, int slot, mapi_func func) +{ + mapi_func *funcs = (mapi_func *) tbl; + funcs[slot] = func; +} + +/** + * Return the function of a slot. + */ +static INLINE mapi_func +table_get_func(const struct mapi_table *tbl, int slot) +{ + const mapi_func *funcs = (const mapi_func *) tbl; + return funcs[slot]; +} + +#endif /* _TABLE_H_ */ diff --git a/mesalib/src/mapi/u_compiler.h b/mesalib/src/mapi/u_compiler.h new file mode 100644 index 000000000..f376e97a0 --- /dev/null +++ b/mesalib/src/mapi/u_compiler.h @@ -0,0 +1,33 @@ +#ifndef _U_COMPILER_H_ +#define _U_COMPILER_H_ + +#include "c99_compat.h" /* inline, __func__, etc. */ + + +/* XXX: Use standard `inline` keyword instead */ +#ifndef INLINE +# define INLINE inline +#endif + +/* Function visibility */ +#ifndef PUBLIC +# if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) +# define PUBLIC __attribute__((visibility("default"))) +# elif defined(_MSC_VER) +# define PUBLIC __declspec(dllexport) +# else +# define PUBLIC +# endif +#endif + +#ifndef likely +# if defined(__GNUC__) +# define likely(x) __builtin_expect(!!(x), 1) +# define unlikely(x) __builtin_expect(!!(x), 0) +# else +# define likely(x) (x) +# define unlikely(x) (x) +# endif +#endif + +#endif /* _U_COMPILER_H_ */ diff --git a/mesalib/src/mapi/u_current.c b/mesalib/src/mapi/u_current.c new file mode 100644 index 000000000..344344939 --- /dev/null +++ b/mesalib/src/mapi/u_current.c @@ -0,0 +1,267 @@ +/* + * Mesa 3-D graphics library + * Version: 7.1 + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + + +/* + * This file manages the OpenGL API dispatch layer. + * The dispatch table (struct _glapi_table) is basically just a list + * of function pointers. + * There are functions to set/get the current dispatch table for the + * current thread and to manage registration/dispatch of dynamically + * added extension functions. + * + * It's intended that this file and the other glapi*.[ch] files are + * flexible enough to be reused in several places: XFree86, DRI- + * based libGL.so, and perhaps the SGI SI. + * + * NOTE: There are no dependencies on Mesa in this code. + * + * Versions (API changes): + * 2000/02/23 - original version for Mesa 3.3 and XFree86 4.0 + * 2001/01/16 - added dispatch override feature for Mesa 3.5 + * 2002/06/28 - added _glapi_set_warning_func(), Mesa 4.1. + * 2002/10/01 - _glapi_get_proc_address() will now generate new entrypoints + * itself (using offset ~0). _glapi_add_entrypoint() can be + * called afterward and it'll fill in the correct dispatch + * offset. This allows DRI libGL to avoid probing for DRI + * drivers! No changes to the public glapi interface. + */ + +#include "u_current.h" +#include "u_thread.h" + +#ifndef MAPI_MODE_UTIL + +#include "table.h" +#include "stub.h" + +#else + +extern void init_glapi_relocs_once(void); +extern void (*__glapi_noop_table[])(void); + +#define table_noop_array __glapi_noop_table +#define stub_init_once() init_glapi_relocs_once() + +#endif + +/** + * \name Current dispatch and current context control variables + * + * Depending on whether or not multithreading is support, and the type of + * support available, several variables are used to store the current context + * pointer and the current dispatch table pointer. In the non-threaded case, + * the variables \c _glapi_Dispatch and \c _glapi_Context are used for this + * purpose. + * + * In the "normal" threaded case, the variables \c _glapi_Dispatch and + * \c _glapi_Context will be \c NULL if an application is detected as being + * multithreaded. Single-threaded applications will use \c _glapi_Dispatch + * and \c _glapi_Context just like the case without any threading support. + * When \c _glapi_Dispatch and \c _glapi_Context are \c NULL, the thread state + * data \c _gl_DispatchTSD and \c ContextTSD are used. Drivers and the + * static dispatch functions access these variables via \c _glapi_get_dispatch + * and \c _glapi_get_context. + * + * There is a race condition in setting \c _glapi_Dispatch to \c NULL. It is + * possible for the original thread to be setting it at the same instant a new + * thread, perhaps running on a different processor, is clearing it. Because + * of that, \c ThreadSafe, which can only ever be changed to \c GL_TRUE, is + * used to determine whether or not the application is multithreaded. + * + * In the TLS case, the variables \c _glapi_Dispatch and \c _glapi_Context are + * hardcoded to \c NULL. Instead the TLS variables \c _glapi_tls_Dispatch and + * \c _glapi_tls_Context are used. Having \c _glapi_Dispatch and + * \c _glapi_Context be hardcoded to \c NULL maintains binary compatability + * between TLS enabled loaders and non-TLS DRI drivers. + */ +/*@{*/ +#if defined(GLX_USE_TLS) + +__thread struct mapi_table *u_current_table + __attribute__((tls_model("initial-exec"))) + = (struct mapi_table *) table_noop_array; + +__thread void *u_current_user + __attribute__((tls_model("initial-exec"))); + +#else + +struct mapi_table *u_current_table = + (struct mapi_table *) table_noop_array; +void *u_current_user; + +#ifdef THREADS +struct u_tsd u_current_table_tsd; +static struct u_tsd u_current_user_tsd; +static int ThreadSafe; +#endif /* THREADS */ + +#endif /* defined(GLX_USE_TLS) */ +/*@}*/ + + +void +u_current_destroy(void) +{ +#if defined(THREADS) && defined(_WIN32) + u_tsd_destroy(&u_current_table_tsd); + u_tsd_destroy(&u_current_user_tsd); +#endif +} + + +#if defined(THREADS) && !defined(GLX_USE_TLS) + +static void +u_current_init_tsd(void) +{ + u_tsd_init(&u_current_table_tsd); + u_tsd_init(&u_current_user_tsd); +} + +/** + * Mutex for multithread check. + */ +u_mutex_declare_static(ThreadCheckMutex); + +/** + * We should call this periodically from a function such as glXMakeCurrent + * in order to test if multiple threads are being used. + */ +void +u_current_init(void) +{ + static unsigned long knownID; + static int firstCall = 1; + + if (ThreadSafe) + return; + + u_mutex_lock(ThreadCheckMutex); + if (firstCall) { + u_current_init_tsd(); + + knownID = u_thread_self(); + firstCall = 0; + } + else if (knownID != u_thread_self()) { + ThreadSafe = 1; + u_current_set(NULL); + u_current_set_user(NULL); + } + u_mutex_unlock(ThreadCheckMutex); +} + +#else + +void +u_current_init(void) +{ +} + +#endif + + + +/** + * Set the current context pointer for this thread. + * The context pointer is an opaque type which should be cast to + * void from the real context pointer type. + */ +void +u_current_set_user(const void *ptr) +{ + u_current_init(); + +#if defined(GLX_USE_TLS) + u_current_user = (void *) ptr; +#elif defined(THREADS) + u_tsd_set(&u_current_user_tsd, (void *) ptr); + u_current_user = (ThreadSafe) ? NULL : (void *) ptr; +#else + u_current_user = (void *) ptr; +#endif +} + +/** + * Get the current context pointer for this thread. + * The context pointer is an opaque type which should be cast from + * void to the real context pointer type. + */ +void * +u_current_get_user_internal(void) +{ +#if defined(GLX_USE_TLS) + return u_current_user; +#elif defined(THREADS) + return (ThreadSafe) + ? u_tsd_get(&u_current_user_tsd) + : u_current_user; +#else + return u_current_user; +#endif +} + +/** + * Set the global or per-thread dispatch table pointer. + * If the dispatch parameter is NULL we'll plug in the no-op dispatch + * table (__glapi_noop_table). + */ +void +u_current_set(const struct mapi_table *tbl) +{ + u_current_init(); + + stub_init_once(); + + if (!tbl) + tbl = (const struct mapi_table *) table_noop_array; + +#if defined(GLX_USE_TLS) + u_current_table = (struct mapi_table *) tbl; +#elif defined(THREADS) + u_tsd_set(&u_current_table_tsd, (void *) tbl); + u_current_table = (ThreadSafe) ? NULL : (void *) tbl; +#else + u_current_table = (struct mapi_table *) tbl; +#endif +} + +/** + * Return pointer to current dispatch table for calling thread. + */ +struct mapi_table * +u_current_get_internal(void) +{ +#if defined(GLX_USE_TLS) + return u_current_table; +#elif defined(THREADS) + return (struct mapi_table *) ((ThreadSafe) ? + u_tsd_get(&u_current_table_tsd) : (void *) u_current_table); +#else + return u_current_table; +#endif +} diff --git a/mesalib/src/mapi/u_current.h b/mesalib/src/mapi/u_current.h new file mode 100644 index 000000000..f9cffd8c3 --- /dev/null +++ b/mesalib/src/mapi/u_current.h @@ -0,0 +1,87 @@ +#ifndef _U_CURRENT_H_ +#define _U_CURRENT_H_ + +#if defined(MAPI_MODE_UTIL) || defined(MAPI_MODE_GLAPI) || \ + defined(MAPI_MODE_BRIDGE) + +#include "glapi/glapi.h" + +/* ugly renames to match glapi.h */ +#define mapi_table _glapi_table + +#ifdef GLX_USE_TLS +#define u_current_table _glapi_tls_Dispatch +#define u_current_user _glapi_tls_Context +#else +#define u_current_table _glapi_Dispatch +#define u_current_user _glapi_Context +#endif + +#define u_current_get_internal _glapi_get_dispatch +#define u_current_get_user_internal _glapi_get_context + +#define u_current_table_tsd _gl_DispatchTSD + +#else /* MAPI_MODE_UTIL || MAPI_MODE_GLAPI || MAPI_MODE_BRIDGE */ + +#include "u_compiler.h" + +struct mapi_table; + +#ifdef GLX_USE_TLS + +extern __thread struct mapi_table *u_current_table + __attribute__((tls_model("initial-exec"))); + +extern __thread void *u_current_user + __attribute__((tls_model("initial-exec"))); + +#else /* GLX_USE_TLS */ + +extern struct mapi_table *u_current_table; +extern void *u_current_user; + +#endif /* GLX_USE_TLS */ + +#endif /* MAPI_MODE_UTIL || MAPI_MODE_GLAPI || MAPI_MODE_BRIDGE */ + +void +u_current_init(void); + +void +u_current_destroy(void); + +void +u_current_set(const struct mapi_table *tbl); + +struct mapi_table * +u_current_get_internal(void); + +void +u_current_set_user(const void *ptr); + +void * +u_current_get_user_internal(void); + +static INLINE const struct mapi_table * +u_current_get(void) +{ +#ifdef GLX_USE_TLS + return u_current_table; +#else + return (likely(u_current_table) ? + u_current_table : u_current_get_internal()); +#endif +} + +static INLINE const void * +u_current_get_user(void) +{ +#ifdef GLX_USE_TLS + return u_current_user; +#else + return likely(u_current_user) ? u_current_user : u_current_get_user_internal(); +#endif +} + +#endif /* _U_CURRENT_H_ */ diff --git a/mesalib/src/mapi/u_execmem.c b/mesalib/src/mapi/u_execmem.c new file mode 100644 index 000000000..b6751edb5 --- /dev/null +++ b/mesalib/src/mapi/u_execmem.c @@ -0,0 +1,146 @@ +/* + * Mesa 3-D graphics library + * Version: 6.5 + * + * Copyright (C) 1999-2005 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + + +/** + * \file glapi_execmem.c + * + * Function for allocating executable memory for dispatch stubs. + * + * Copied from main/execmem.c and simplified for dispatch stubs. + */ + + +#include "u_compiler.h" +#include "u_thread.h" +#include "u_execmem.h" + + +#define EXEC_MAP_SIZE (4*1024) + +u_mutex_declare_static(exec_mutex); + +static unsigned int head = 0; + +static unsigned char *exec_mem = (unsigned char *)0; + + +#if defined(__linux__) || defined(__OpenBSD__) || defined(_NetBSD__) || defined(__sun) || defined(__HAIKU__) + +#include +#include + +#ifdef MESA_SELINUX +#include +#endif + + +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif + + +/* + * Dispatch stubs are of fixed size and never freed. Thus, we do not need to + * overlay a heap, we just mmap a page and manage through an index. + */ + +static int +init_map(void) +{ +#ifdef MESA_SELINUX + if (is_selinux_enabled()) { + if (!security_get_boolean_active("allow_execmem") || + !security_get_boolean_pending("allow_execmem")) + return 0; + } +#endif + + if (!exec_mem) + exec_mem = mmap(NULL, EXEC_MAP_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + + return (exec_mem != MAP_FAILED); +} + + +#elif defined(_WIN32) + +#include + + +/* + * Avoid Data Execution Prevention. + */ + +static int +init_map(void) +{ + exec_mem = VirtualAlloc(NULL, EXEC_MAP_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); + + return (exec_mem != NULL); +} + + +#else + +#include + +static int +init_map(void) +{ + exec_mem = malloc(EXEC_MAP_SIZE); + + return (exec_mem != NULL); +} + + +#endif + +void * +u_execmem_alloc(unsigned int size) +{ + void *addr = NULL; + + u_mutex_lock(exec_mutex); + + if (!init_map()) + goto bail; + + /* free space check, assumes no integer overflow */ + if (head + size > EXEC_MAP_SIZE) + goto bail; + + /* allocation, assumes proper addr and size alignement */ + addr = exec_mem + head; + head += size; + +bail: + u_mutex_unlock(exec_mutex); + + return addr; +} + + diff --git a/mesalib/src/mapi/u_execmem.h b/mesalib/src/mapi/u_execmem.h new file mode 100644 index 000000000..13fff8df2 --- /dev/null +++ b/mesalib/src/mapi/u_execmem.h @@ -0,0 +1,7 @@ +#ifndef _U_EXECMEM_H_ +#define _U_EXECMEM_H_ + +void * +u_execmem_alloc(unsigned int size); + +#endif /* _U_EXECMEM_H_ */ diff --git a/mesalib/src/mapi/u_macros.h b/mesalib/src/mapi/u_macros.h new file mode 100644 index 000000000..72345b5f1 --- /dev/null +++ b/mesalib/src/mapi/u_macros.h @@ -0,0 +1,12 @@ +#ifndef _U_MACROS_ +#define _U_MACROS_ + +#define _U_STRINGIFY(x) #x +#define _U_CONCAT(x, y) x ## y +#define _U_CONCAT_STR(x, y) #x#y + +#define U_STRINGIFY(x) _U_STRINGIFY(x) +#define U_CONCAT(x, y) _U_CONCAT(x, y) +#define U_CONCAT_STR(x, y) _U_CONCAT_STR(x, y) + +#endif /* _U_MACROS_ */ diff --git a/mesalib/src/mapi/u_thread.h b/mesalib/src/mapi/u_thread.h new file mode 100644 index 000000000..2f8154373 --- /dev/null +++ b/mesalib/src/mapi/u_thread.h @@ -0,0 +1,288 @@ +/* + * Mesa 3-D graphics library + * Version: 6.5.2 + * + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + + +/* + * Thread support for gl dispatch. + * + * Initial version by John Stone (j.stone@acm.org) (johns@cs.umr.edu) + * and Christoph Poliwoda (poliwoda@volumegraphics.com) + * Revised by Keith Whitwell + * Adapted for new gl dispatcher by Brian Paul + * Modified for use in mapi by Chia-I Wu + */ + +/* + * If this file is accidentally included by a non-threaded build, + * it should not cause the build to fail, or otherwise cause problems. + * In general, it should only be included when needed however. + */ + +#ifndef _U_THREAD_H_ +#define _U_THREAD_H_ + +#include +#include +#include "u_compiler.h" + +#if defined(HAVE_PTHREAD) +#include /* POSIX threads headers */ +#endif +#ifdef _WIN32 +#include +#endif + +#if defined(HAVE_PTHREAD) || defined(_WIN32) +#ifndef THREADS +#define THREADS +#endif +#endif + +/* + * Error messages + */ +#define INIT_TSD_ERROR "_glthread_: failed to allocate key for thread specific data" +#define GET_TSD_ERROR "_glthread_: failed to get thread specific data" +#define SET_TSD_ERROR "_glthread_: thread failed to set thread specific data" + + +/* + * Magic number to determine if a TSD object has been initialized. + * Kind of a hack but there doesn't appear to be a better cross-platform + * solution. + */ +#define INIT_MAGIC 0xff8adc98 + +#ifdef __cplusplus +extern "C" { +#endif + + +/* + * POSIX threads. This should be your choice in the Unix world + * whenever possible. When building with POSIX threads, be sure + * to enable any compiler flags which will cause the MT-safe + * libc (if one exists) to be used when linking, as well as any + * header macros for MT-safe errno, etc. For Solaris, this is the -mt + * compiler flag. On Solaris with gcc, use -D_REENTRANT to enable + * proper compiling for MT-safe libc etc. + */ +#if defined(HAVE_PTHREAD) + +struct u_tsd { + pthread_key_t key; + unsigned initMagic; +}; + +typedef pthread_mutex_t u_mutex; + +#define u_mutex_declare_static(name) \ + static u_mutex name = PTHREAD_MUTEX_INITIALIZER + +#define u_mutex_init(name) pthread_mutex_init(&(name), NULL) +#define u_mutex_destroy(name) pthread_mutex_destroy(&(name)) +#define u_mutex_lock(name) (void) pthread_mutex_lock(&(name)) +#define u_mutex_unlock(name) (void) pthread_mutex_unlock(&(name)) + +static INLINE unsigned long +u_thread_self(void) +{ + return (unsigned long) pthread_self(); +} + + +static INLINE void +u_tsd_init(struct u_tsd *tsd) +{ + if (pthread_key_create(&tsd->key, NULL/*free*/) != 0) { + perror(INIT_TSD_ERROR); + exit(-1); + } + tsd->initMagic = INIT_MAGIC; +} + + +static INLINE void * +u_tsd_get(struct u_tsd *tsd) +{ + if (tsd->initMagic != INIT_MAGIC) { + u_tsd_init(tsd); + } + return pthread_getspecific(tsd->key); +} + + +static INLINE void +u_tsd_set(struct u_tsd *tsd, void *ptr) +{ + if (tsd->initMagic != INIT_MAGIC) { + u_tsd_init(tsd); + } + if (pthread_setspecific(tsd->key, ptr) != 0) { + perror(SET_TSD_ERROR); + exit(-1); + } +} + +#endif /* HAVE_PTHREAD */ + + +/* + * Windows threads. Should work with Windows NT and 95. + * IMPORTANT: Link with multithreaded runtime library when THREADS are + * used! + */ +#ifdef _WIN32 + +struct u_tsd { + DWORD key; + unsigned initMagic; +}; + +typedef CRITICAL_SECTION u_mutex; + +/* http://locklessinc.com/articles/pthreads_on_windows/ */ +#define u_mutex_declare_static(name) \ + static u_mutex name = {(PCRITICAL_SECTION_DEBUG)-1, -1, 0, 0, 0, 0} + +#define u_mutex_init(name) InitializeCriticalSection(&name) +#define u_mutex_destroy(name) DeleteCriticalSection(&name) +#define u_mutex_lock(name) EnterCriticalSection(&name) +#define u_mutex_unlock(name) LeaveCriticalSection(&name) + +static INLINE unsigned long +u_thread_self(void) +{ + return GetCurrentThreadId(); +} + + +static INLINE void +u_tsd_init(struct u_tsd *tsd) +{ + tsd->key = TlsAlloc(); + if (tsd->key == TLS_OUT_OF_INDEXES) { + perror(INIT_TSD_ERROR); + exit(-1); + } + tsd->initMagic = INIT_MAGIC; +} + + +static INLINE void +u_tsd_destroy(struct u_tsd *tsd) +{ + if (tsd->initMagic != INIT_MAGIC) { + return; + } + TlsFree(tsd->key); + tsd->initMagic = 0x0; +} + + +static INLINE void * +u_tsd_get(struct u_tsd *tsd) +{ + if (tsd->initMagic != INIT_MAGIC) { + u_tsd_init(tsd); + } + return TlsGetValue(tsd->key); +} + + +static INLINE void +u_tsd_set(struct u_tsd *tsd, void *ptr) +{ + /* the following code assumes that the struct u_tsd has been initialized + to zero at creation */ + if (tsd->initMagic != INIT_MAGIC) { + u_tsd_init(tsd); + } + if (TlsSetValue(tsd->key, ptr) == 0) { + perror(SET_TSD_ERROR); + exit(-1); + } +} + +#endif /* _WIN32 */ + + +/* + * THREADS not defined + */ +#ifndef THREADS + +struct u_tsd { + unsigned initMagic; +}; + +typedef unsigned u_mutex; + +#define u_mutex_declare_static(name) static u_mutex name = 0 +#define u_mutex_init(name) (void) name +#define u_mutex_destroy(name) (void) name +#define u_mutex_lock(name) (void) name +#define u_mutex_unlock(name) (void) name + +/* + * no-op functions + */ + +static INLINE unsigned long +u_thread_self(void) +{ + return 0; +} + + +static INLINE void +u_tsd_init(struct u_tsd *tsd) +{ + (void) tsd; +} + + +static INLINE void * +u_tsd_get(struct u_tsd *tsd) +{ + (void) tsd; + return NULL; +} + + +static INLINE void +u_tsd_set(struct u_tsd *tsd, void *ptr) +{ + (void) tsd; + (void) ptr; +} +#endif /* THREADS */ + + +#ifdef __cplusplus +} +#endif + +#endif /* _U_THREAD_H_ */ diff --git a/mesalib/src/mesa/Android.gen.mk b/mesalib/src/mesa/Android.gen.mk index 35f00da09..c6280f5cb 100644 --- a/mesalib/src/mesa/Android.gen.mk +++ b/mesalib/src/mesa/Android.gen.mk @@ -111,8 +111,7 @@ $(intermediates)/main/api_exec.c: $(dispatch_deps) $(call es-gen) GET_HASH_GEN := $(LOCAL_PATH)/main/get_hash_generator.py -GET_HASH_GEN_FLAGS := $(patsubst %,-a %,$(MESA_ENABLED_APIS)) $(intermediates)/main/get_hash.h: $(glapi)/gl_and_es_API.xml \ $(LOCAL_PATH)/main/get_hash_params.py $(GET_HASH_GEN) - @$(MESA_PYTHON2) $(GET_HASH_GEN) $(GET_HASH_GEN_FLAGS) -f $< > $@ + @$(MESA_PYTHON2) $(GET_HASH_GEN) -f $< > $@ diff --git a/mesalib/src/mesa/Android.libmesa_dricore.mk b/mesalib/src/mesa/Android.libmesa_dricore.mk index 093d7a189..00c06943c 100644 --- a/mesalib/src/mesa/Android.libmesa_dricore.mk +++ b/mesalib/src/mesa/Android.libmesa_dricore.mk @@ -31,7 +31,7 @@ LOCAL_PATH := $(call my-dir) # Import the following variables: # MESA_FILES # X86_FILES -include $(LOCAL_PATH)/sources.mak +include $(LOCAL_PATH)/Makefile.sources include $(CLEAR_VARS) diff --git a/mesalib/src/mesa/Android.libmesa_st_mesa.mk b/mesalib/src/mesa/Android.libmesa_st_mesa.mk index 79914caf1..e7203c41d 100644 --- a/mesalib/src/mesa/Android.libmesa_st_mesa.mk +++ b/mesalib/src/mesa/Android.libmesa_st_mesa.mk @@ -31,7 +31,7 @@ LOCAL_PATH := $(call my-dir) # Import variables: # MESA_GALLIUM_FILES. # X86_FILES -include $(LOCAL_PATH)/sources.mak +include $(LOCAL_PATH)/Makefile.sources include $(CLEAR_VARS) diff --git a/mesalib/src/mesa/Makefile.am b/mesalib/src/mesa/Makefile.am index c341c48e7..d5f5f5b86 100644 --- a/mesalib/src/mesa/Makefile.am +++ b/mesalib/src/mesa/Makefile.am @@ -23,7 +23,19 @@ if NEED_LIBDRICORE DRICORE_SUBDIR = libdricore endif -SUBDIRS = program x86 x86-64 . $(DRICORE_SUBDIR) drivers +SUBDIRS = program x86 x86-64 . $(DRICORE_SUBDIR) + +if HAVE_X11_DRIVER +SUBDIRS += drivers/x11 +endif + +if HAVE_DRI +SUBDIRS += drivers/dri +endif + +if HAVE_OSMESA +SUBDIRS += drivers/osmesa +endif gldir = $(includedir)/GL gl_HEADERS = $(top_srcdir)/include/GL/*.h @@ -59,14 +71,12 @@ CLEANFILES = \ git_sha1.h.tmp GET_HASH_GEN = main/get_hash_generator.py -GET_HASH_GEN_FLAGS := $(patsubst -DFEATURE_%=1,-a %, \ - $(patsubst -DFEATURE_%=0,,$(API_DEFINES))) main/get_hash.h: $(GLAPI)/gl_and_es_API.xml main/get_hash_params.py \ $(GET_HASH_GEN) Makefile $(AM_V_GEN)set -e; \ - $(PYTHON2) $(PYTHON_FLAGS) $(srcdir)/$(GET_HASH_GEN) \ - $(GET_HASH_GEN_FLAGS) -f $< > $@.tmp; \ + $(PYTHON2) $(PYTHON_FLAGS) $(srcdir)/$(GET_HASH_GEN) \ + -f $< > $@.tmp; \ mv $@.tmp $@; noinst_LTLIBRARIES = @@ -81,9 +91,9 @@ endif SRCDIR = $(top_srcdir)/src/mesa/ BUILDDIR = $(top_builddir)/src/mesa/ -include sources.mak +include Makefile.sources -AM_CPPFLAGS = $(API_DEFINES) $(DEFINES) $(INCLUDE_DIRS) +AM_CPPFLAGS = $(DEFINES) $(INCLUDE_DIRS) AM_CFLAGS = $(LLVM_CFLAGS) $(VISIBILITY_CFLAGS) AM_CXXFLAGS = $(LLVM_CFLAGS) $(VISIBILITY_CXXFLAGS) diff --git a/mesalib/src/mesa/Makefile.sources b/mesalib/src/mesa/Makefile.sources new file mode 100644 index 000000000..a5c1f5dea --- /dev/null +++ b/mesalib/src/mesa/Makefile.sources @@ -0,0 +1,350 @@ +### Lists of source files, included by Makefiles + +# This file is among different build systems. SRCDIR must be defined with +# a trailing slash because the Android build system leaves it undefined. + +# this is part of MAIN_FILES +MAIN_ES_FILES = \ + $(SRCDIR)main/es1_conversion.c + +MAIN_FILES = \ + $(SRCDIR)main/api_arrayelt.c \ + $(BUILDDIR)main/api_exec.c \ + $(SRCDIR)main/api_loopback.c \ + $(SRCDIR)main/api_validate.c \ + $(SRCDIR)main/accum.c \ + $(SRCDIR)main/arbprogram.c \ + $(SRCDIR)main/atifragshader.c \ + $(SRCDIR)main/attrib.c \ + $(SRCDIR)main/arrayobj.c \ + $(SRCDIR)main/blend.c \ + $(SRCDIR)main/bufferobj.c \ + $(SRCDIR)main/buffers.c \ + $(SRCDIR)main/clear.c \ + $(SRCDIR)main/clip.c \ + $(SRCDIR)main/colortab.c \ + $(SRCDIR)main/condrender.c \ + $(SRCDIR)main/context.c \ + $(SRCDIR)main/convolve.c \ + $(SRCDIR)main/cpuinfo.c \ + $(SRCDIR)main/debug.c \ + $(SRCDIR)main/depth.c \ + $(SRCDIR)main/dlist.c \ + $(SRCDIR)main/drawpix.c \ + $(SRCDIR)main/drawtex.c \ + $(SRCDIR)main/enable.c \ + $(SRCDIR)main/errors.c \ + $(SRCDIR)main/eval.c \ + $(SRCDIR)main/execmem.c \ + $(SRCDIR)main/extensions.c \ + $(SRCDIR)main/fbobject.c \ + $(SRCDIR)main/feedback.c \ + $(SRCDIR)main/ffvertex_prog.c \ + $(SRCDIR)main/ff_fragment_shader.cpp \ + $(SRCDIR)main/fog.c \ + $(SRCDIR)main/formatquery.c \ + $(SRCDIR)main/formats.c \ + $(SRCDIR)main/format_pack.c \ + $(SRCDIR)main/format_unpack.c \ + $(SRCDIR)main/framebuffer.c \ + $(SRCDIR)main/get.c \ + $(SRCDIR)main/getstring.c \ + $(SRCDIR)main/glformats.c \ + $(SRCDIR)main/hash.c \ + $(SRCDIR)main/hash_table.c \ + $(SRCDIR)main/hint.c \ + $(SRCDIR)main/histogram.c \ + $(SRCDIR)main/image.c \ + $(SRCDIR)main/imports.c \ + $(SRCDIR)main/light.c \ + $(SRCDIR)main/lines.c \ + $(SRCDIR)main/matrix.c \ + $(SRCDIR)main/mipmap.c \ + $(SRCDIR)main/mm.c \ + $(SRCDIR)main/multisample.c \ + $(SRCDIR)main/pack.c \ + $(SRCDIR)main/pbo.c \ + $(SRCDIR)main/pixel.c \ + $(SRCDIR)main/pixelstore.c \ + $(SRCDIR)main/pixeltransfer.c \ + $(SRCDIR)main/points.c \ + $(SRCDIR)main/polygon.c \ + $(SRCDIR)main/queryobj.c \ + $(SRCDIR)main/querymatrix.c \ + $(SRCDIR)main/rastpos.c \ + $(SRCDIR)main/readpix.c \ + $(SRCDIR)main/remap.c \ + $(SRCDIR)main/renderbuffer.c \ + $(SRCDIR)main/samplerobj.c \ + $(SRCDIR)main/scissor.c \ + $(SRCDIR)main/set.c \ + $(SRCDIR)main/shaderapi.c \ + $(SRCDIR)main/shaderobj.c \ + $(SRCDIR)main/shader_query.cpp \ + $(SRCDIR)main/shared.c \ + $(SRCDIR)main/state.c \ + $(SRCDIR)main/stencil.c \ + $(SRCDIR)main/syncobj.c \ + $(SRCDIR)main/texcompress.c \ + $(SRCDIR)main/texcompress_cpal.c \ + $(SRCDIR)main/texcompress_rgtc.c \ + $(SRCDIR)main/texcompress_s3tc.c \ + $(SRCDIR)main/texcompress_fxt1.c \ + $(SRCDIR)main/texcompress_etc.c \ + $(SRCDIR)main/texenv.c \ + $(SRCDIR)main/texformat.c \ + $(SRCDIR)main/texgen.c \ + $(SRCDIR)main/texgetimage.c \ + $(SRCDIR)main/teximage.c \ + $(SRCDIR)main/texobj.c \ + $(SRCDIR)main/texparam.c \ + $(SRCDIR)main/texstate.c \ + $(SRCDIR)main/texstorage.c \ + $(SRCDIR)main/texstore.c \ + $(SRCDIR)main/texturebarrier.c \ + $(SRCDIR)main/transformfeedback.c \ + $(SRCDIR)main/uniforms.c \ + $(SRCDIR)main/uniform_query.cpp \ + $(SRCDIR)main/varray.c \ + $(SRCDIR)main/version.c \ + $(SRCDIR)main/viewport.c \ + $(SRCDIR)main/vtxfmt.c \ + $(BUILDDIR)main/enums.c \ + $(MAIN_ES_FILES) + +MATH_FILES = \ + $(SRCDIR)math/m_debug_clip.c \ + $(SRCDIR)math/m_debug_norm.c \ + $(SRCDIR)math/m_debug_xform.c \ + $(SRCDIR)math/m_eval.c \ + $(SRCDIR)math/m_matrix.c \ + $(SRCDIR)math/m_translate.c \ + $(SRCDIR)math/m_vector.c + +MATH_XFORM_FILES = \ + $(SRCDIR)math/m_xform.c + +SWRAST_FILES = \ + $(SRCDIR)swrast/s_aaline.c \ + $(SRCDIR)swrast/s_aatriangle.c \ + $(SRCDIR)swrast/s_alpha.c \ + $(SRCDIR)swrast/s_atifragshader.c \ + $(SRCDIR)swrast/s_bitmap.c \ + $(SRCDIR)swrast/s_blend.c \ + $(SRCDIR)swrast/s_blit.c \ + $(SRCDIR)swrast/s_clear.c \ + $(SRCDIR)swrast/s_copypix.c \ + $(SRCDIR)swrast/s_context.c \ + $(SRCDIR)swrast/s_depth.c \ + $(SRCDIR)swrast/s_drawpix.c \ + $(SRCDIR)swrast/s_feedback.c \ + $(SRCDIR)swrast/s_fog.c \ + $(SRCDIR)swrast/s_fragprog.c \ + $(SRCDIR)swrast/s_lines.c \ + $(SRCDIR)swrast/s_logic.c \ + $(SRCDIR)swrast/s_masking.c \ + $(SRCDIR)swrast/s_points.c \ + $(SRCDIR)swrast/s_renderbuffer.c \ + $(SRCDIR)swrast/s_span.c \ + $(SRCDIR)swrast/s_stencil.c \ + $(SRCDIR)swrast/s_texcombine.c \ + $(SRCDIR)swrast/s_texfetch.c \ + $(SRCDIR)swrast/s_texfilter.c \ + $(SRCDIR)swrast/s_texrender.c \ + $(SRCDIR)swrast/s_texture.c \ + $(SRCDIR)swrast/s_triangle.c \ + $(SRCDIR)swrast/s_zoom.c + +SWRAST_SETUP_FILES = \ + $(SRCDIR)swrast_setup/ss_context.c \ + $(SRCDIR)swrast_setup/ss_triangle.c + +TNL_FILES = \ + $(SRCDIR)tnl/t_context.c \ + $(SRCDIR)tnl/t_pipeline.c \ + $(SRCDIR)tnl/t_draw.c \ + $(SRCDIR)tnl/t_rasterpos.c \ + $(SRCDIR)tnl/t_vb_program.c \ + $(SRCDIR)tnl/t_vb_render.c \ + $(SRCDIR)tnl/t_vb_texgen.c \ + $(SRCDIR)tnl/t_vb_texmat.c \ + $(SRCDIR)tnl/t_vb_vertex.c \ + $(SRCDIR)tnl/t_vb_fog.c \ + $(SRCDIR)tnl/t_vb_light.c \ + $(SRCDIR)tnl/t_vb_normals.c \ + $(SRCDIR)tnl/t_vb_points.c \ + $(SRCDIR)tnl/t_vp_build.c \ + $(SRCDIR)tnl/t_vertex.c \ + $(SRCDIR)tnl/t_vertex_sse.c \ + $(SRCDIR)tnl/t_vertex_generic.c + +VBO_FILES = \ + $(SRCDIR)vbo/vbo_context.c \ + $(SRCDIR)vbo/vbo_exec.c \ + $(SRCDIR)vbo/vbo_exec_api.c \ + $(SRCDIR)vbo/vbo_exec_array.c \ + $(SRCDIR)vbo/vbo_exec_draw.c \ + $(SRCDIR)vbo/vbo_exec_eval.c \ + $(SRCDIR)vbo/vbo_noop.c \ + $(SRCDIR)vbo/vbo_primitive_restart.c \ + $(SRCDIR)vbo/vbo_rebase.c \ + $(SRCDIR)vbo/vbo_split.c \ + $(SRCDIR)vbo/vbo_split_copy.c \ + $(SRCDIR)vbo/vbo_split_inplace.c \ + $(SRCDIR)vbo/vbo_save.c \ + $(SRCDIR)vbo/vbo_save_api.c \ + $(SRCDIR)vbo/vbo_save_draw.c \ + $(SRCDIR)vbo/vbo_save_loopback.c + +STATETRACKER_FILES = \ + $(SRCDIR)state_tracker/st_atom.c \ + $(SRCDIR)state_tracker/st_atom_array.c \ + $(SRCDIR)state_tracker/st_atom_blend.c \ + $(SRCDIR)state_tracker/st_atom_clip.c \ + $(SRCDIR)state_tracker/st_atom_constbuf.c \ + $(SRCDIR)state_tracker/st_atom_depth.c \ + $(SRCDIR)state_tracker/st_atom_framebuffer.c \ + $(SRCDIR)state_tracker/st_atom_msaa.c \ + $(SRCDIR)state_tracker/st_atom_pixeltransfer.c \ + $(SRCDIR)state_tracker/st_atom_sampler.c \ + $(SRCDIR)state_tracker/st_atom_scissor.c \ + $(SRCDIR)state_tracker/st_atom_shader.c \ + $(SRCDIR)state_tracker/st_atom_rasterizer.c \ + $(SRCDIR)state_tracker/st_atom_stipple.c \ + $(SRCDIR)state_tracker/st_atom_texture.c \ + $(SRCDIR)state_tracker/st_atom_viewport.c \ + $(SRCDIR)state_tracker/st_cb_bitmap.c \ + $(SRCDIR)state_tracker/st_cb_blit.c \ + $(SRCDIR)state_tracker/st_cb_bufferobjects.c \ + $(SRCDIR)state_tracker/st_cb_clear.c \ + $(SRCDIR)state_tracker/st_cb_condrender.c \ + $(SRCDIR)state_tracker/st_cb_flush.c \ + $(SRCDIR)state_tracker/st_cb_drawpixels.c \ + $(SRCDIR)state_tracker/st_cb_drawtex.c \ + $(SRCDIR)state_tracker/st_cb_eglimage.c \ + $(SRCDIR)state_tracker/st_cb_fbo.c \ + $(SRCDIR)state_tracker/st_cb_feedback.c \ + $(SRCDIR)state_tracker/st_cb_msaa.c \ + $(SRCDIR)state_tracker/st_cb_program.c \ + $(SRCDIR)state_tracker/st_cb_queryobj.c \ + $(SRCDIR)state_tracker/st_cb_rasterpos.c \ + $(SRCDIR)state_tracker/st_cb_readpixels.c \ + $(SRCDIR)state_tracker/st_cb_syncobj.c \ + $(SRCDIR)state_tracker/st_cb_strings.c \ + $(SRCDIR)state_tracker/st_cb_texture.c \ + $(SRCDIR)state_tracker/st_cb_texturebarrier.c \ + $(SRCDIR)state_tracker/st_cb_viewport.c \ + $(SRCDIR)state_tracker/st_cb_xformfb.c \ + $(SRCDIR)state_tracker/st_context.c \ + $(SRCDIR)state_tracker/st_debug.c \ + $(SRCDIR)state_tracker/st_draw.c \ + $(SRCDIR)state_tracker/st_draw_feedback.c \ + $(SRCDIR)state_tracker/st_extensions.c \ + $(SRCDIR)state_tracker/st_format.c \ + $(SRCDIR)state_tracker/st_gen_mipmap.c \ + $(SRCDIR)state_tracker/st_glsl_to_tgsi.cpp \ + $(SRCDIR)state_tracker/st_manager.c \ + $(SRCDIR)state_tracker/st_mesa_to_tgsi.c \ + $(SRCDIR)state_tracker/st_program.c \ + $(SRCDIR)state_tracker/st_texture.c + +PROGRAM_FILES = \ + $(SRCDIR)program/arbprogparse.c \ + $(SRCDIR)program/prog_hash_table.c \ + $(SRCDIR)program/ir_to_mesa.cpp \ + $(SRCDIR)program/program.c \ + $(SRCDIR)program/program_parse_extra.c \ + $(SRCDIR)program/prog_cache.c \ + $(SRCDIR)program/prog_execute.c \ + $(SRCDIR)program/prog_instruction.c \ + $(SRCDIR)program/prog_noise.c \ + $(SRCDIR)program/prog_optimize.c \ + $(SRCDIR)program/prog_opt_constant_fold.c \ + $(SRCDIR)program/prog_parameter.c \ + $(SRCDIR)program/prog_parameter_layout.c \ + $(SRCDIR)program/prog_print.c \ + $(SRCDIR)program/prog_statevars.c \ + $(SRCDIR)program/programopt.c \ + $(SRCDIR)program/register_allocate.c \ + $(SRCDIR)program/sampler.cpp \ + $(SRCDIR)program/string_to_uint_map.cpp \ + $(SRCDIR)program/symbol_table.c \ + $(BUILDDIR)program/lex.yy.c \ + $(BUILDDIR)program/program_parse.tab.c + +ASM_C_FILES = \ + $(SRCDIR)x86/common_x86.c \ + $(SRCDIR)x86/x86_xform.c \ + $(SRCDIR)x86/3dnow.c \ + $(SRCDIR)x86/sse.c \ + $(SRCDIR)x86/rtasm/x86sse.c \ + $(SRCDIR)sparc/sparc.c \ + $(SRCDIR)x86-64/x86-64.c + +X86_FILES = \ + $(SRCDIR)x86/common_x86_asm.S \ + $(SRCDIR)x86/x86_xform2.S \ + $(SRCDIR)x86/x86_xform3.S \ + $(SRCDIR)x86/x86_xform4.S \ + $(SRCDIR)x86/x86_cliptest.S \ + $(SRCDIR)x86/mmx_blend.S \ + $(SRCDIR)x86/3dnow_xform1.S \ + $(SRCDIR)x86/3dnow_xform2.S \ + $(SRCDIR)x86/3dnow_xform3.S \ + $(SRCDIR)x86/3dnow_xform4.S \ + $(SRCDIR)x86/3dnow_normal.S \ + $(SRCDIR)x86/sse_xform1.S \ + $(SRCDIR)x86/sse_xform2.S \ + $(SRCDIR)x86/sse_xform3.S \ + $(SRCDIR)x86/sse_xform4.S \ + $(SRCDIR)x86/sse_normal.S \ + $(SRCDIR)x86/read_rgba_span_x86.S + +X86_64_FILES = \ + $(SRCDIR)x86-64/xform4.S + +SPARC_FILES = \ + $(SRCDIR)sparc/sparc_clip.S \ + $(SRCDIR)sparc/norm.S \ + $(SRCDIR)sparc/xform.S + +COMMON_DRIVER_FILES = \ + $(SRCDIR)drivers/common/driverfuncs.c \ + $(SRCDIR)drivers/common/meta.c + + +# Sources for building non-Gallium drivers +MESA_FILES = \ + $(MAIN_FILES) \ + $(MATH_FILES) \ + $(MATH_XFORM_FILES) \ + $(VBO_FILES) \ + $(TNL_FILES) \ + $(SWRAST_FILES) \ + $(SWRAST_SETUP_FILES) \ + $(COMMON_DRIVER_FILES)\ + $(ASM_C_FILES) + +# Sources for building Gallium drivers +MESA_GALLIUM_FILES = \ + $(MAIN_FILES) \ + $(MATH_FILES) \ + $(VBO_FILES) \ + $(STATETRACKER_FILES) \ + $(SRCDIR)x86/common_x86.c + +### Include directories + +INCLUDE_DIRS = \ + -I$(top_srcdir)/include \ + -I$(top_srcdir)/src/glsl \ + -I$(top_builddir)/src/glsl \ + -I$(top_srcdir)/src/glsl/glcpp \ + -I$(top_srcdir)/src/mesa \ + -I$(top_builddir)/src/mesa \ + -I$(top_srcdir)/src/mesa/main \ + -I$(top_builddir)/src/mesa/main \ + -I$(top_srcdir)/src/mapi \ + -I$(top_builddir)/src/mapi \ + -I$(top_srcdir)/src/gallium/include \ + -I$(top_srcdir)/src/gallium/auxiliary diff --git a/mesalib/src/mesa/SConscript b/mesalib/src/mesa/SConscript index ca9b70bad..0f1543802 100644 --- a/mesalib/src/mesa/SConscript +++ b/mesalib/src/mesa/SConscript @@ -31,7 +31,6 @@ if env['platform'] == 'windows': env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS']) else: env.Append(CPPDEFINES = [ - 'IN_DRI_DRIVER', # enable the remap table (for DRI drivers) ('HAVE_DLOPEN', '1'), ]) @@ -263,6 +262,7 @@ statetracker_sources = [ 'state_tracker/st_cb_eglimage.c', 'state_tracker/st_cb_fbo.c', 'state_tracker/st_cb_feedback.c', + 'state_tracker/st_cb_msaa.c', 'state_tracker/st_cb_program.c', 'state_tracker/st_cb_queryobj.c', 'state_tracker/st_cb_rasterpos.c', @@ -340,22 +340,18 @@ if env['gles']: enabled_apis += ['ES1', 'ES2'] -env.Append(CPPDEFINES = ["FEATURE_%s=1" % api for api in enabled_apis]) - -get_hash_gen_opts = ' '.join(["-a %s" % api for api in enabled_apis]) - get_hash_header = env.CodeGenerate( target = 'main/get_hash.h', script = 'main/get_hash_generator.py', source = GLAPI + 'gen/gl_and_es_API.xml', - command = python_cmd + ' $SCRIPT ' + get_hash_gen_opts + - ' -f $SOURCE > $TARGET' + command = python_cmd + ' $SCRIPT ' + ' -f $SOURCE > $TARGET' ) # # Assembly sources # -if env['gcc'] and env['platform'] not in ('cygwin', 'darwin', 'windows', 'haiku'): +if (env['gcc'] or env['clang']) and \ + env['platform'] not in ('cygwin', 'darwin', 'windows', 'haiku'): if env['machine'] == 'x86': env.Append(CPPDEFINES = [ 'USE_X86_ASM', diff --git a/mesalib/src/mesa/drivers/Makefile.am b/mesalib/src/mesa/drivers/Makefile.am deleted file mode 100644 index 1bc74eadf..000000000 --- a/mesalib/src/mesa/drivers/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright © 2012 Intel Corporation -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice (including the next -# paragraph) shall be included in all copies or substantial portions of the -# Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -SUBDIRS = $(DRIVER_DIRS) diff --git a/mesalib/src/mesa/drivers/common/driverfuncs.c b/mesalib/src/mesa/drivers/common/driverfuncs.c index a98dfc607..4f7696c4c 100644 --- a/mesalib/src/mesa/drivers/common/driverfuncs.c +++ b/mesalib/src/mesa/drivers/common/driverfuncs.c @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ @@ -40,6 +41,7 @@ #include "main/texgetimage.h" #include "main/teximage.h" #include "main/texobj.h" +#include "main/texstorage.h" #include "main/texstore.h" #include "main/bufferobj.h" #include "main/fbobject.h" @@ -209,7 +211,7 @@ _mesa_init_driver_functions(struct dd_function_table *driver) driver->EndCallList = NULL; /* GL_ARB_texture_storage */ - driver->AllocTextureStorage = _swrast_AllocTextureStorage; + driver->AllocTextureStorage = _mesa_alloc_texture_storage; /* GL_ARB_texture_multisample */ driver->GetSamplePosition = NULL; diff --git a/mesalib/src/mesa/drivers/common/driverfuncs.h b/mesalib/src/mesa/drivers/common/driverfuncs.h index 212f30742..806c8b0af 100644 --- a/mesalib/src/mesa/drivers/common/driverfuncs.h +++ b/mesalib/src/mesa/drivers/common/driverfuncs.h @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/mesalib/src/mesa/drivers/common/meta.c b/mesalib/src/mesa/drivers/common/meta.c index e3ab82bfe..1250bd35c 100644 --- a/mesalib/src/mesa/drivers/common/meta.c +++ b/mesalib/src/mesa/drivers/common/meta.c @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ /** @@ -3048,16 +3049,33 @@ _mesa_meta_check_generate_mipmap_fallback(struct gl_context *ctx, GLenum target, GLenum status; /* check for fallbacks */ - if (!ctx->Extensions.EXT_framebuffer_object || - target == GL_TEXTURE_3D || + if (!ctx->Extensions.EXT_framebuffer_object) { + _mesa_perf_debug(ctx, MESA_DEBUG_SEVERITY_HIGH, + "glGenerateMipmap() without FBOs\n"); + return GL_TRUE; + } + + if (target == GL_TEXTURE_3D || target == GL_TEXTURE_1D_ARRAY || target == GL_TEXTURE_2D_ARRAY) { + _mesa_perf_debug(ctx, MESA_DEBUG_SEVERITY_HIGH, + "glGenerateMipmap() to %s target\n", + _mesa_lookup_enum_by_nr(target)); return GL_TRUE; } srcLevel = texObj->BaseLevel; baseImage = _mesa_select_tex_image(ctx, texObj, target, srcLevel); - if (!baseImage || _mesa_is_format_compressed(baseImage->TexFormat)) { + if (!baseImage) { + _mesa_perf_debug(ctx, MESA_DEBUG_SEVERITY_HIGH, + "glGenerateMipmap() couldn't find base teximage\n"); + return GL_TRUE; + } + + if (_mesa_is_format_compressed(baseImage->TexFormat)) { + _mesa_perf_debug(ctx, MESA_DEBUG_SEVERITY_HIGH, + "glGenerateMipmap() with %s format\n", + _mesa_get_format_name(baseImage->TexFormat)); return GL_TRUE; } @@ -3067,6 +3085,9 @@ _mesa_meta_check_generate_mipmap_fallback(struct gl_context *ctx, GLenum target, * texture sample conversion. So we won't be able to generate the * right colors when rendering. Need to use a fallback. */ + _mesa_perf_debug(ctx, MESA_DEBUG_SEVERITY_HIGH, + "glGenerateMipmap() of sRGB texture without " + "sRGB decode\n"); return GL_TRUE; } @@ -3103,6 +3124,8 @@ _mesa_meta_check_generate_mipmap_fallback(struct gl_context *ctx, GLenum target, _mesa_BindFramebuffer(GL_FRAMEBUFFER_EXT, fboSave); if (status != GL_FRAMEBUFFER_COMPLETE_EXT) { + _mesa_perf_debug(ctx, MESA_DEBUG_SEVERITY_HIGH, + "glGenerateMipmap() got incomplete FBO\n"); return GL_TRUE; } @@ -3374,6 +3397,8 @@ setup_glsl_generate_mipmap(struct gl_context *ctx, sizeof(struct vertex), OFFSET(x)); _mesa_VertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(struct vertex), OFFSET(tex)); + _mesa_EnableVertexAttribArray(0); + _mesa_EnableVertexAttribArray(1); } /* Generate a fragment shader program appropriate for the texture target */ @@ -3445,8 +3470,6 @@ setup_glsl_generate_mipmap(struct gl_context *ctx, _mesa_DeleteObjectARB(vs); _mesa_BindAttribLocation(mipmap->ShaderProg, 0, "position"); _mesa_BindAttribLocation(mipmap->ShaderProg, 1, "texcoords"); - _mesa_EnableVertexAttribArray(0); - _mesa_EnableVertexAttribArray(1); link_program_with_debug(ctx, mipmap->ShaderProg); sampler->shader_prog = mipmap->ShaderProg; ralloc_free(mem_ctx); @@ -3741,10 +3764,20 @@ get_temp_image_type(struct gl_context *ctx, gl_format format) return datatype; return GL_FLOAT; } - case GL_DEPTH_COMPONENT: - return GL_UNSIGNED_INT; - case GL_DEPTH_STENCIL: - return GL_UNSIGNED_INT_24_8; + case GL_DEPTH_COMPONENT: { + GLenum datatype = _mesa_get_format_datatype(format); + if (datatype == GL_FLOAT) + return GL_FLOAT; + else + return GL_UNSIGNED_INT; + } + case GL_DEPTH_STENCIL: { + GLenum datatype = _mesa_get_format_datatype(format); + if (datatype == GL_FLOAT) + return GL_FLOAT_32_UNSIGNED_INT_24_8_REV; + else + return GL_UNSIGNED_INT_24_8; + } default: _mesa_problem(ctx, "Unexpected format %d in get_temp_image_type()", baseFormat); diff --git a/mesalib/src/mesa/drivers/common/meta.h b/mesalib/src/mesa/drivers/common/meta.h index a6bdd3947..823be14c7 100644 --- a/mesalib/src/mesa/drivers/common/meta.h +++ b/mesalib/src/mesa/drivers/common/meta.h @@ -17,9 +17,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/mesalib/src/mesa/drivers/dri/common/Makefile.am b/mesalib/src/mesa/drivers/dri/common/Makefile.am index dfc8f3b7a..ce4119d0f 100644 --- a/mesalib/src/mesa/drivers/dri/common/Makefile.am +++ b/mesalib/src/mesa/drivers/dri/common/Makefile.am @@ -27,7 +27,6 @@ AM_CFLAGS = \ -I$(top_srcdir)/src/mapi \ -I$(top_srcdir)/src/mesa/ \ $(DEFINES) \ - $(API_DEFINES) \ $(LIBDRM_CFLAGS) \ $(VISIBILITY_CFLAGS) diff --git a/mesalib/src/mesa/drivers/dri/common/drisw_util.c b/mesalib/src/mesa/drivers/dri/common/drisw_util.c index 6af101c31..89f03c310 100644 --- a/mesalib/src/mesa/drivers/dri/common/drisw_util.c +++ b/mesalib/src/mesa/drivers/dri/common/drisw_util.c @@ -16,9 +16,10 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. */ /** diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool.h b/mesalib/src/mesa/drivers/dri/common/xmlpool.h index ffea43002..ebd4e7c86 100644 --- a/mesalib/src/mesa/drivers/dri/common/xmlpool.h +++ b/mesalib/src/mesa/drivers/dri/common/xmlpool.h @@ -60,6 +60,13 @@ #define DRI_CONF_OPT_BEGIN(name,type,def) \ "