From 5ea10842211465d5e5fa807160cb832907ffe1e6 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 30 Mar 2011 17:12:01 +1000 Subject: [PATCH] mesa-intel-fix-gs-rendering-regression.patch, attempt to fix gnome shell rendering. --- mesa-intel-fix-gs-rendering-regression.patch | 99 ++++++++++++++++++++ mesa.spec | 8 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 mesa-intel-fix-gs-rendering-regression.patch diff --git a/mesa-intel-fix-gs-rendering-regression.patch b/mesa-intel-fix-gs-rendering-regression.patch new file mode 100644 index 0000000..498a032 --- /dev/null +++ b/mesa-intel-fix-gs-rendering-regression.patch @@ -0,0 +1,99 @@ + +This reverts upstream + f627d429bda8196fd20f2023374ad6d34e4becb6, + de7678ef521f4fb34459e407a66ab8bf8be733e1, + 6547253bd138db815173c00ca2dc220e8ad20ab1 + + +diff --git a/src/mesa/drivers/dri/intel/intel_regions.c b/src/mesa/drivers/dri/intel/intel_regions.c +index a4da1ce..0857fa8 100644 +--- a/src/mesa/drivers/dri/intel/intel_regions.c ++++ b/src/mesa/drivers/dri/intel/intel_regions.c +@@ -149,6 +149,11 @@ intel_region_alloc_internal(struct intel_screen *screen, + { + struct intel_region *region; + ++ if (buffer == NULL) { ++ _DBG("%s <-- NULL\n", __FUNCTION__); ++ return NULL; ++ } ++ + region = calloc(sizeof(*region), 1); + if (region == NULL) + return region; +@@ -175,7 +180,6 @@ intel_region_alloc(struct intel_screen *screen, + drm_intel_bo *buffer; + unsigned long flags = 0; + unsigned long aligned_pitch; +- struct intel_region *region; + + if (expect_accelerated_upload) + flags |= BO_ALLOC_FOR_RENDER; +@@ -183,17 +187,9 @@ intel_region_alloc(struct intel_screen *screen, + buffer = drm_intel_bo_alloc_tiled(screen->bufmgr, "region", + width, height, cpp, + &tiling, &aligned_pitch, flags); +- if (buffer == NULL) +- return NULL; + +- region = intel_region_alloc_internal(screen, cpp, width, height, +- aligned_pitch / cpp, tiling, buffer); +- if (region == NULL) { +- drm_intel_bo_unreference(buffer); +- return NULL; +- } +- +- return region; ++ return intel_region_alloc_internal(screen, cpp, width, height, ++ aligned_pitch / cpp, tiling, buffer); + } + + GLboolean +diff --git a/src/mesa/drivers/dri/intel/intel_tex_subimage.c b/src/mesa/drivers/dri/intel/intel_tex_subimage.c +index d0f8294..6b7f13f 100644 +--- a/src/mesa/drivers/dri/intel/intel_tex_subimage.c ++++ b/src/mesa/drivers/dri/intel/intel_tex_subimage.c +@@ -90,19 +90,19 @@ intelTexSubimage(struct gl_context * ctx, + intel->gen < 6 && target == GL_TEXTURE_2D && + drm_intel_bo_busy(dst_bo)) + { +- dstRowStride = width * intelImage->mt->cpp; +- temp_bo = drm_intel_bo_alloc(intel->bufmgr, "subimage blit bo", +- dstRowStride * height, 0); +- if (!temp_bo) +- return; +- +- if (drm_intel_gem_bo_map_gtt(temp_bo)) { +- drm_intel_bo_unreference(temp_bo); +- return; +- } +- ++ unsigned long pitch; ++ uint32_t tiling_mode = I915_TILING_NONE; ++ temp_bo = drm_intel_bo_alloc_tiled(intel->bufmgr, ++ "subimage blit bo", ++ width, height, ++ intelImage->mt->cpp, ++ &tiling_mode, ++ &pitch, ++ 0); ++ drm_intel_gem_bo_map_gtt(temp_bo); + texImage->Data = temp_bo->virtual; + texImage->ImageOffsets[0] = 0; ++ dstRowStride = pitch; + + intel_miptree_get_image_offset(intelImage->mt, level, + intelImage->face, 0, +diff --git a/src/mesa/drivers/dri/intel/intel_tex_validate.c b/src/mesa/drivers/dri/intel/intel_tex_validate.c +index a11b07e..8537e7f 100644 +--- a/src/mesa/drivers/dri/intel/intel_tex_validate.c ++++ b/src/mesa/drivers/dri/intel/intel_tex_validate.c +@@ -140,8 +140,6 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit) + cpp, + comp_byte, + GL_TRUE); +- if (!intelObj->mt) +- return GL_FALSE; + } + + /* Pull in any images not in the object's tree: diff --git a/mesa.spec b/mesa.spec index bf9668e..0ec80cd 100644 --- a/mesa.spec +++ b/mesa.spec @@ -18,7 +18,7 @@ Summary: Mesa graphics libraries Name: mesa Version: 7.11 -Release: 0.2.%{gitdate}.0%{?dist} +Release: 0.3.%{gitdate}.0%{?dist} License: MIT Group: System Environment/Libraries URL: http://www.mesa3d.org @@ -31,6 +31,7 @@ Source2: %{manpages}.tar.bz2 Source3: make-git-snapshot.sh Source4: llvmcore.mk +Patch1: mesa-intel-fix-gs-rendering-regression.patch Patch2: mesa-7.1-nukeglthread-debug.patch Patch3: mesa-no-mach64.patch Patch4: legacy-drivers.patch @@ -214,6 +215,7 @@ Requires: Xorg %(xserver-sdk-abi-requires ansic) %(xserver-sdk-abi-requires vide %prep #setup -q -n Mesa-%{version}%{?snapshot} -b0 -b2 %setup -q -n mesa-%{gitdate} -b2 +%patch1 -p1 -b .upstreamrevert %patch2 -p1 -b .intel-glthread %patch3 -p1 -b .no-mach64 %patch4 -p1 -b .classic @@ -485,6 +487,10 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/libOSMesa.so %changelog +* Wed Mar 30 2011 Dave Airlie 7.11-0.3.20110330.0 +- mesa-intel-fix-gs-rendering-regression.patch, attempt to fix gnome shell + rendering. + * Wed Mar 30 2011 Dave Airlie 7.11-0.2.20110330.0 - snapshot upstream again to hopefully fix ILK bug