From: Ian Romanick <ian.d.roman...@intel.com> Before calling _tnl_run_pipeline, the i915 driver maps all textures used in vertex shaders (via intel_tex_map_images). Later run_vp tries to map the textures again (via _swrast_map_texture). However, this just replaces the actual mappings with NULL pointers. When the pointers are dereferened, a segfault occurs.
Setting swrast_texture_image::Buffer in intel_tex_map_images works around the problem, but I have a hard time believing this is the right fix. NOTE: This is a candidate for the 8.0 branch. Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> Cc: Eric Anholt <e...@anholt.net> Cc: Brian Paul <bri...@vmware.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45882 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45885 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45886 --- src/mesa/drivers/dri/intel/intel_tex_validate.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/src/mesa/drivers/dri/intel/intel_tex_validate.c b/src/mesa/drivers/dri/intel/intel_tex_validate.c index b96f2a4..b91f364 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_validate.c +++ b/src/mesa/drivers/dri/intel/intel_tex_validate.c @@ -158,6 +158,7 @@ intel_tex_map_image_for_swrast(struct intel_context *intel, intel_image->base.Map = intel_region_map(intel, mt->region, mode) + (x + y * mt->region->pitch) * mt->cpp; + intel_image->base.Buffer = intel_image->base.Map; } intel_image->base.RowStride = mt->region->pitch; @@ -170,6 +171,7 @@ intel_tex_unmap_image_for_swrast(struct intel_context *intel, if (intel_image && intel_image->mt) { intel_region_unmap(intel, intel_image->mt->region); intel_image->base.Map = NULL; + intel_image->base.Buffer = NULL; } } -- 1.7.6.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev