From 1b6cc0bb895d90b82be7ad062c77cf60e2e3108d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20R=C4=99korajski?= Date: Tue, 27 Aug 2019 00:11:36 +0200 Subject: [PATCH] - fix a bug in intel drivers that crashes xfwm4 with compositor and vblank enabled - rel 2 --- Mesa.spec | 5 +- ..._TEXTURE_2D-and-GL_TEXTURE_RECTANGLE.patch | 81 +++++++++++++++++++ 2 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 i9x5-tex-ignore-the-diff-between-GL_TEXTURE_2D-and-GL_TEXTURE_RECTANGLE.patch diff --git a/Mesa.spec b/Mesa.spec index 8936138..38580a0 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -56,7 +56,7 @@ Summary: Free OpenGL implementation Summary(pl.UTF-8): Wolnodostępna implementacja standardu OpenGL Name: Mesa Version: 19.1.5 -Release: 1 +Release: 2 License: MIT (core) and others - see license.html file Group: X11/Libraries #Source0: ftp://ftp.freedesktop.org/pub/mesa/mesa-%{version}.tar.xz @@ -64,6 +64,7 @@ Group: X11/Libraries Source0: https://gitlab.freedesktop.org/mesa/mesa/-/archive/mesa-%{version}/mesa-mesa-%{version}.tar.bz2 # Source0-md5: 751a9f0fc21b7c0c58518adff8b5ec2b Patch0: nouveau_no_rtti.patch +Patch1: i9x5-tex-ignore-the-diff-between-GL_TEXTURE_2D-and-GL_TEXTURE_RECTANGLE.patch URL: http://www.mesa3d.org/ %{?with_opencl:BuildRequires: clang-devel >= %{llvm_ver}} BuildRequires: elfutils-devel @@ -1299,8 +1300,8 @@ radv - eksperymentalny sterownik Vulkan dla GPU firmy AMD. %prep %setup -q -n mesa-mesa-%{version} - %patch0 -p1 +%patch1 -p1 %build diff --git a/i9x5-tex-ignore-the-diff-between-GL_TEXTURE_2D-and-GL_TEXTURE_RECTANGLE.patch b/i9x5-tex-ignore-the-diff-between-GL_TEXTURE_2D-and-GL_TEXTURE_RECTANGLE.patch new file mode 100644 index 0000000..7256552 --- /dev/null +++ b/i9x5-tex-ignore-the-diff-between-GL_TEXTURE_2D-and-GL_TEXTURE_RECTANGLE.patch @@ -0,0 +1,81 @@ +i965/tex: ignore the diff between GL_TEXTURE_2D and GL_TEXTURE_RECTANGLE + +the difference between GL_TEXTURE_2D and GL_TEXTURE_RECTANGLE +doesn't matter as far as the miptree is concerned; +genX(update_sampler_state) only looks at the +gl_texture_object and not the miptree when determining whether or +not to use normalized coordinates. + +Signed-off-by: Andrii Simiklit + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107117 +--- + src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +index 7d1fa96..dc45a06 100644 +--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c ++++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +@@ -58,6 +58,12 @@ static void *intel_miptree_map_raw(struct brw_context *brw, + + static void intel_miptree_unmap_raw(struct intel_mipmap_tree *mt); + ++static GLenum ++tex_rect_to_tex2d(GLenum val) ++{ ++ return (GL_TEXTURE_RECTANGLE == val) ? GL_TEXTURE_2D : val; ++} ++ + static bool + intel_miptree_supports_mcs(struct brw_context *brw, + const struct intel_mipmap_tree *mt) +@@ -1320,13 +1326,15 @@ intel_miptree_match_image(struct intel_mipmap_tree *mt, + { + struct intel_texture_image *intelImage = intel_texture_image(image); + GLuint level = intelImage->base.Base.Level; ++ GLenum texObjTarget = tex_rect_to_tex2d(mt->target); ++ GLenum mipmapTreeTarget = tex_rect_to_tex2d(image->TexObject->Target); + int width, height, depth; + + /* glTexImage* choose the texture object based on the target passed in, and + * objects can't change targets over their lifetimes, so this should be + * true. + */ +- assert(image->TexObject->Target == mt->target); ++ assert(texObjTarget == mipmapTreeTarget); + + mesa_format mt_format = mt->format; + if (mt->format == MESA_FORMAT_Z24_UNORM_X8_UINT && mt->stencil_mt) +--- mesa-mesa-19.1.5/src/mesa/drivers/dri/i915/intel_mipmap_tree.c.orig 2019-08-26 23:37:27.779941449 +0200 ++++ mesa-mesa-19.1.5/src/mesa/drivers/dri/i915/intel_mipmap_tree.c 2019-08-26 23:38:47.553273174 +0200 +@@ -403,6 +403,12 @@ + } + } + ++static GLenum ++tex_rect_to_tex2d(GLenum val) ++{ ++ return (GL_TEXTURE_RECTANGLE == val) ? GL_TEXTURE_2D : val; ++} ++ + /** + * Can the image be pulled into a unified mipmap tree? This mirrors + * the completeness test in a lot of ways. +@@ -415,13 +421,15 @@ + { + struct intel_texture_image *intelImage = intel_texture_image(image); + GLuint level = intelImage->base.Base.Level; ++ GLenum texObjTarget = tex_rect_to_tex2d(mt->target); ++ GLenum mipmapTreeTarget = tex_rect_to_tex2d(image->TexObject->Target); + int width, height, depth; + + /* glTexImage* choose the texture object based on the target passed in, and + * objects can't change targets over their lifetimes, so this should be + * true. + */ +- assert(target_to_target(image->TexObject->Target) == mt->target); ++ assert(texObjTarget == mipmapTreeTarget); + + mesa_format mt_format = mt->format; + -- 2.44.0