Hello community, here is the log from the commit of package Mesa for openSUSE:Factory checked in at Thu Sep 1 13:33:26 CEST 2011. -------- --- Mesa/Mesa.changes 2011-07-28 09:16:44.000000000 +0200 +++ /mounts/work_src_done/STABLE/Mesa/Mesa.changes 2011-08-09 02:55:34.000000000 +0200 @@ -1,0 +2,19 @@ +Tue Aug 9 00:51:28 UTC 2011 - stefan.bruens@rwth-aachen.de + +- add fix for bfo #28125 (DRI2 prevents indirect glx) + +------------------------------------------------------------------- +Tue Aug 2 13:05:58 UTC 2011 - mhopf@novell.com + +- Obsolete Mesa-nouveau3d (included in standard Mesa package now) +- Also nuke from baselibs.conf + +------------------------------------------------------------------- +Fri Jul 29 10:10:31 UTC 2011 - mhopf@novell.com + +- Update to Mesa 7.11-rc3 +- U_Mesa-7.11-llvm3.patch: fix compatibility with llvm 3.0 (and pre-releases) +- gallium is now required for r300, r600 +- nouveau is now built by default (except on < OS11.3) + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- MesaLib-7.10.3.tar.bz2 egl-buildfix.diff libdrm-2.4.26-nouveau.diff New: ---- MesaLib-7.11-rc3.tar.bz2 U_Mesa-7.11-llvm3.patch U_glx-ignore-BadRequest-errors-from-DRI2Connect.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ Mesa.spec ++++++ --- /var/tmp/diff_new_pack.TbKdLq/_old 2011-09-01 12:10:06.000000000 +0200 +++ /var/tmp/diff_new_pack.TbKdLq/_new 2011-09-01 12:10:06.000000000 +0200 @@ -17,25 +17,20 @@ # norootforbuild -%define enable_nouveau_gallium 1 -%define enable_radeon_gallium 1 +%define _version 7.11-rc3 -%define _version 7.10.3 - -Version: 7.10.3 -Release: 14 +Version: 7.11 +Release: 1 Name: Mesa BuildRequires: gcc-c++ libdrm-devel libexpat-devel pkgconfig python-base xorg-x11-devel -BuildRequires: bison flex libtalloc-devel libxml2-python -%if 0%{?suse_version} > 1020 -BuildRequires: fdupes -%endif +BuildRequires: bison fdupes flex libtalloc-devel libxml2-python llvm-devel Url: http://www.mesa3d.org License: MIT License (or similar) Group: System/Libraries Provides: xorg-x11-Mesa = %{version} intel-i810-Mesa = %{version} Mesa7 = %{version} Obsoletes: xorg-x11-Mesa < %{version} intel-i810-Mesa < %{version} Mesa7 < %{version} +Obsoletes: Mesa-nouveau3d AutoReqProv: on # bug437293 %ifarch ppc64 @@ -50,11 +45,11 @@ Source4: manual-pages.tar.bz2 Source5: drirc # to be upstreamed -Patch8: egl-buildfix.diff Patch9: u_GLX-SWrast-Make-GLX-with-SWrast-enabled-work-on-olde.patch Patch11: u_Fix-crash-in-swrast-when-setting-a-texture-for-a-pix.patch -Patch12: libdrm-2.4.26-nouveau.diff # already upstream +Patch13: U_Mesa-7.11-llvm3.patch +Patch14: U_glx-ignore-BadRequest-errors-from-DRI2Connect.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -113,26 +108,6 @@ -------- Brian Paul -%package nouveau3d -License: MIT License (or similar) -Requires: Mesa = %version xorg-x11-driver-video-nouveau -Summary: Experimental 3D driver for nouveau driver -Group: System/Libraries - -%description nouveau3d -This is the 3D driver for open source nouveau driver. It uses Gallium3d architecture within Mesa. - -Note: -This driver is in a very experimental state. So it is not recommend that you use it. -Bug reports using this driver are not supported by developers. - -Authors: --------- - Brian Paul - Pekka Paalanen - Ben Skeggs - Francisco Jerez - %prep %setup -n %{name}-%{_version} -b4 -q # no need to build (GLUT-)Demos @@ -141,10 +116,10 @@ rm -f include/GL/{glut.h,uglglutshapes.h,glutf90.h} # remove some docs rm -rf docs/README.{VMS,WIN32,OS2} -%patch8 %patch9 -p1 %patch11 -p1 -%patch12 -p1 +%patch13 -p0 +%patch14 -p1 %build @@ -155,38 +130,29 @@ autoreconf -fi ### libGL (disable savage/mga, bnc #402132/#403071; reenable mga, bnc #466635) %configure --disable-glw \ + --enable-gles1 \ --enable-gles2 \ --with-driver=dri \ --with-dri-searchpath=/usr/%{_lib}/dri/updates:/usr/%{_lib}/dri \ %ifarch %ix86 x86_64 + --with-dri-drivers=i810,i915,i965,mach64,r128,r200,radeon,sis,tdfx,unichrome,swrast,mga \ %if 0%{?suse_version} >= 1130 - --with-dri-drivers=i810,i915,i965,mach64,r128,r200,r300,r600,radeon,sis,tdfx,unichrome,swrast,nouveau,mga \ + --with-gallium-drivers=r300,r600,nouveau \ %else - --with-dri-drivers=i810,i915,i965,mach64,r128,r200,r300,r600,radeon,sis,tdfx,unichrome,swrast \ -%endif -%if %enable_nouveau_gallium - --enable-gallium-nouveau \ -%endif -%if %enable_radeon_gallium - --enable-gallium-radeon \ - --enable-gallium-r600 \ + --with-gallium-drivers=r300,r600 \ %endif %endif %ifarch ppc ppc64 %sparc hppa + --with-dri-drivers=i810,i915,i965,mach64,r128,r200,radeon,tdfx,unichrome,swrast \ %if 0%{?suse_version} >= 1130 - --with-dri-drivers=i810,i915,i965,mach64,r128,r200,r300,r600,radeon,tdfx,unichrome,swrast,nouveau \ + --with-gallium-drivers=r300,r600,nouveau \ %else - --with-dri-drivers=i810,i915,i965,mach64,r128,r200,r300,r600,radeon,tdfx,unichrome,swrast \ -%endif -%if %enable_nouveau_gallium - --enable-gallium-nouveau \ -%endif + --with-gallium-drivers=r300,r600 \ %endif -%ifarch s390 s390x - --with-dri-drivers=swrast \ %endif -%ifarch %arm +%ifarch s390 s390x %arm --with-dri-drivers=swrast \ + --with-gallium-drivers="" \ %endif --disable-glut \ CFLAGS="$RPM_OPT_FLAGS -DNDEBUG" @@ -198,7 +164,7 @@ --disable-glu \ --disable-glw \ --disable-glut \ - --disable-gallium \ + --with-gallium-drivers="" \ CFLAGS="$RPM_OPT_FLAGS -DNDEBUG" sed -i 's/GL_LIB = .*/GL_LIB = IndirectGL/g' configs/autoconf make %{?jobs:-j%jobs} @@ -218,9 +184,7 @@ # global drirc file mkdir -p $RPM_BUILD_ROOT/etc install -m 644 $RPM_SOURCE_DIR/drirc $RPM_BUILD_ROOT/etc -%if 0%{?suse_version} > 1020 %fdupes -s $RPM_BUILD_ROOT/%_mandir -%endif %clean rm -rf $RPM_BUILD_ROOT @@ -235,11 +199,7 @@ %config /etc/drirc %{_libdir}/lib*.so.* %{_libdir}/dri/ -%{_libdir}/egl/ -%exclude %{_libdir}/dri/nouveau_dri.so -%if 0%{?suse_version} >= 1130 -%exclude %{_libdir}/dri/nouveau_vieux_dri.so -%endif +#%{_libdir}/egl/ %files devel %defattr(-,root,root) @@ -255,6 +215,7 @@ %{_libdir}/libEGL.so %{_libdir}/libGLESv1_CM.so %{_libdir}/libGLESv2.so +%{_libdir}/libglapi.so %{_libdir}/pkgconfig/dri.pc %{_libdir}/pkgconfig/egl.pc %{_libdir}/pkgconfig/gl.pc @@ -263,11 +224,4 @@ %{_libdir}/pkgconfig/glesv2.pc %{_mandir}/man3/* -%files nouveau3d -%defattr(-,root,root) -%{_libdir}/dri/nouveau_dri.so -%if 0%{?suse_version} >= 1130 -%{_libdir}/dri/nouveau_vieux_dri.so -%endif - %changelog ++++++ U_Mesa-7.11-llvm3.patch ++++++ Makes Mesa work with LLVM3 (also pre-releases). Included in Mesa in post-11.7 Index: src/gallium/auxiliary/gallivm/lp_bld_debug.cpp =================================================================== --- src/gallium/auxiliary/gallivm/lp_bld_debug.cpp.orig +++ src/gallium/auxiliary/gallivm/lp_bld_debug.cpp @@ -193,7 +193,11 @@ lp_disassemble(const void* func) InitializeAllDisassemblers(); +#if HAVE_LLVM >= 0x0300 + OwningPtr<const MCAsmInfo> AsmInfo(T->createMCAsmInfo(Triple)); +#else OwningPtr<const MCAsmInfo> AsmInfo(T->createAsmInfo(Triple)); +#endif if (!AsmInfo) { debug_printf("error: no assembly info for target %s\n", Triple.c_str()); @@ -289,7 +293,11 @@ lp_disassemble(const void* func) pc += Size; +#if HAVE_LLVM >= 0x0300 + const MCInstrDesc &TID = TII->get(Inst.getOpcode()); +#else const TargetInstrDesc &TID = TII->get(Inst.getOpcode()); +#endif /* * Keep track of forward jumps to a nearby address. Index: src/gallium/auxiliary/gallivm/lp_bld_type.c =================================================================== --- src/gallium/auxiliary/gallivm/lp_bld_type.c.orig +++ src/gallium/auxiliary/gallivm/lp_bld_type.c @@ -325,8 +325,10 @@ lp_typekind_name(LLVMTypeKind t) return "LLVMArrayTypeKind"; case LLVMPointerTypeKind: return "LLVMPointerTypeKind"; +#if HAVE_LLVM < 0x0300 case LLVMOpaqueTypeKind: return "LLVMOpaqueTypeKind"; +#endif case LLVMVectorTypeKind: return "LLVMVectorTypeKind"; case LLVMMetadataTypeKind: Index: src/gallium/auxiliary/draw/draw_llvm.c =================================================================== --- src/gallium/auxiliary/draw/draw_llvm.c.orig +++ src/gallium/auxiliary/draw/draw_llvm.c @@ -96,7 +96,7 @@ draw_llvm_generate_elts(struct draw_llvm * Create LLVM type for struct draw_jit_texture */ static LLVMTypeRef -create_jit_texture_type(struct gallivm_state *gallivm) +create_jit_texture_type(struct gallivm_state *gallivm, const char *struct_name) { LLVMTargetDataRef target = gallivm->target; LLVMTypeRef texture_type; @@ -120,13 +120,21 @@ create_jit_texture_type(struct gallivm_s elem_types[DRAW_JIT_TEXTURE_BORDER_COLOR] = LLVMArrayType(LLVMFloatTypeInContext(gallivm->context), 4); +#if HAVE_LLVM >= 0x0300 + texture_type = LLVMStructCreateNamed(gallivm->context, struct_name); + LLVMStructSetBody(texture_type, elem_types, + Elements(elem_types), 0); +#else texture_type = LLVMStructTypeInContext(gallivm->context, elem_types, Elements(elem_types), 0); + LLVMAddTypeName(gallivm->module, struct_name, texture_type); + /* Make sure the target's struct layout cache doesn't return * stale/invalid data. */ LLVMInvalidateStructLayout(gallivm->target, texture_type); +#endif LP_CHECK_MEMBER_OFFSET(struct draw_jit_texture, width, target, texture_type, @@ -176,7 +184,7 @@ create_jit_texture_type(struct gallivm_s */ static LLVMTypeRef create_jit_context_type(struct gallivm_state *gallivm, - LLVMTypeRef texture_type) + LLVMTypeRef texture_type, const char *struct_name) { LLVMTargetDataRef target = gallivm->target; LLVMTypeRef float_type = LLVMFloatTypeInContext(gallivm->context); @@ -189,11 +197,17 @@ create_jit_context_type(struct gallivm_s elem_types[3] = LLVMPointerType(float_type, 0); /* viewport */ elem_types[4] = LLVMArrayType(texture_type, PIPE_MAX_VERTEX_SAMPLERS); /* textures */ - +#if HAVE_LLVM >= 0x0300 + context_type = LLVMStructCreateNamed(gallivm->context, struct_name); + LLVMStructSetBody(context_type, elem_types, + Elements(elem_types), 0); +#else context_type = LLVMStructTypeInContext(gallivm->context, elem_types, Elements(elem_types), 0); + LLVMAddTypeName(gallivm->module, struct_name, context_type); LLVMInvalidateStructLayout(gallivm->target, context_type); +#endif LP_CHECK_MEMBER_OFFSET(struct draw_jit_context, vs_constants, target, context_type, 0); @@ -215,7 +229,7 @@ create_jit_context_type(struct gallivm_s * Create LLVM type for struct pipe_vertex_buffer */ static LLVMTypeRef -create_jit_vertex_buffer_type(struct gallivm_state *gallivm) +create_jit_vertex_buffer_type(struct gallivm_state *gallivm, const char *struct_name) { LLVMTargetDataRef target = gallivm->target; LLVMTypeRef elem_types[3]; @@ -225,10 +239,17 @@ create_jit_vertex_buffer_type(struct gal elem_types[1] = LLVMInt32TypeInContext(gallivm->context); elem_types[2] = LLVMPointerType(LLVMInt8TypeInContext(gallivm->context), 0); /* vs_constants */ +#if HAVE_LLVM >= 0x0300 + vb_type = LLVMStructCreateNamed(gallivm->context, struct_name); + LLVMStructSetBody(vb_type, elem_types, + Elements(elem_types), 0); +#else vb_type = LLVMStructTypeInContext(gallivm->context, elem_types, Elements(elem_types), 0); + LLVMAddTypeName(gallivm->module, struct_name, vb_type); LLVMInvalidateStructLayout(gallivm->target, vb_type); +#endif LP_CHECK_MEMBER_OFFSET(struct pipe_vertex_buffer, stride, target, vb_type, 0); @@ -258,10 +279,17 @@ create_jit_vertex_header(struct gallivm_ elem_types[1] = LLVMArrayType(LLVMFloatTypeInContext(gallivm->context), 4); elem_types[2] = LLVMArrayType(elem_types[1], data_elems); +#if HAVE_LLVM >= 0x0300 + vertex_header = LLVMStructCreateNamed(gallivm->context, struct_name); + LLVMStructSetBody(vertex_header, elem_types, + Elements(elem_types), 0); +#else vertex_header = LLVMStructTypeInContext(gallivm->context, elem_types, Elements(elem_types), 0); + LLVMAddTypeName(gallivm->module, struct_name, vertex_header); LLVMInvalidateStructLayout(gallivm->target, vertex_header); +#endif /* these are bit-fields and we can't take address of them LP_CHECK_MEMBER_OFFSET(struct vertex_header, clipmask, @@ -284,8 +312,6 @@ create_jit_vertex_header(struct gallivm_ target, vertex_header, DRAW_JIT_VERTEX_DATA); - LLVMAddTypeName(gallivm->module, struct_name, vertex_header); - return vertex_header; } @@ -299,19 +325,15 @@ create_jit_types(struct draw_llvm *llvm) struct gallivm_state *gallivm = llvm->gallivm; LLVMTypeRef texture_type, context_type, buffer_type, vb_type; - texture_type = create_jit_texture_type(gallivm); - LLVMAddTypeName(gallivm->module, "texture", texture_type); + texture_type = create_jit_texture_type(gallivm, "texture"); - context_type = create_jit_context_type(gallivm, texture_type); - LLVMAddTypeName(gallivm->module, "draw_jit_context", context_type); + context_type = create_jit_context_type(gallivm, texture_type, "draw_jit_context"); llvm->context_ptr_type = LLVMPointerType(context_type, 0); buffer_type = LLVMPointerType(LLVMIntTypeInContext(gallivm->context, 8), 0); - LLVMAddTypeName(gallivm->module, "buffer", buffer_type); llvm->buffer_ptr_type = LLVMPointerType(buffer_type, 0); - vb_type = create_jit_vertex_buffer_type(gallivm); - LLVMAddTypeName(gallivm->module, "pipe_vertex_buffer", vb_type); + vb_type = create_jit_vertex_buffer_type(gallivm, "pipe_vertex_buffer"); llvm->vb_ptr_type = LLVMPointerType(vb_type, 0); } Index: src/gallium/drivers/llvmpipe/lp_jit.c =================================================================== --- src/gallium/drivers/llvmpipe/lp_jit.c.orig +++ src/gallium/drivers/llvmpipe/lp_jit.c @@ -68,10 +68,17 @@ lp_jit_create_types(struct llvmpipe_cont elem_types[LP_JIT_TEXTURE_BORDER_COLOR] = LLVMArrayType(LLVMFloatTypeInContext(lc), 4); +#if HAVE_LLVM >= 0x0300 + texture_type = LLVMStructCreateNamed(gallivm->context, "texture"); + LLVMStructSetBody(texture_type, elem_types, + Elements(elem_types), 0); +#else texture_type = LLVMStructTypeInContext(lc, elem_types, Elements(elem_types), 0); + LLVMAddTypeName(gallivm->module, "texture", texture_type); LLVMInvalidateStructLayout(gallivm->target, texture_type); +#endif LP_CHECK_MEMBER_OFFSET(struct lp_jit_texture, width, gallivm->target, texture_type, @@ -112,8 +119,6 @@ lp_jit_create_types(struct llvmpipe_cont LP_CHECK_STRUCT_SIZE(struct lp_jit_texture, gallivm->target, texture_type); - - LLVMAddTypeName(gallivm->module, "texture", texture_type); } /* struct lp_jit_context */ @@ -129,11 +134,19 @@ lp_jit_create_types(struct llvmpipe_cont elem_types[LP_JIT_CTX_TEXTURES] = LLVMArrayType(texture_type, PIPE_MAX_SAMPLERS); +#if HAVE_LLVM >= 0x0300 + context_type = LLVMStructCreateNamed(gallivm->context, "context"); + LLVMStructSetBody(context_type, elem_types, + Elements(elem_types), 0); +#else context_type = LLVMStructTypeInContext(lc, elem_types, Elements(elem_types), 0); LLVMInvalidateStructLayout(gallivm->target, context_type); + LLVMAddTypeName(gallivm->module, "context", context_type); +#endif + LP_CHECK_MEMBER_OFFSET(struct lp_jit_context, constants, gallivm->target, context_type, LP_JIT_CTX_CONSTANTS); @@ -155,8 +168,6 @@ lp_jit_create_types(struct llvmpipe_cont LP_CHECK_STRUCT_SIZE(struct lp_jit_context, gallivm->target, context_type); - LLVMAddTypeName(gallivm->module, "context", context_type); - lp->jit_context_ptr_type = LLVMPointerType(context_type, 0); } ++++++ U_glx-ignore-BadRequest-errors-from-DRI2Connect.diff ++++++
From fbc2fcf685d22ec9bc9465e1f731529979497eaa Mon Sep 17 00:00:00 2001 From: Christopher James Halse Rogers
Date: Thu, 04 Aug 2011 02:06:13 +0000 Subject: glx/dri2: Paper over errors in DRI2Connect when indirect
DRI2 will throw BadRequest for this when the client is not local, but
DRI2 is an implementation detail and not something callers should have
to know about. Silently swallow errors in this case, and just propagate
the failure through DRI2Connect's return code.
Note: This is a candidate for the stable release branches.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=28125
Signed-off-by: Christopher James Halse Rogers