Bug 98431 - UnrealEngine v4 demos startup fails to blorp blit assert
Summary: UnrealEngine v4 demos startup fails to blorp blit assert
Status: VERIFIED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: Jason Ekstrand
QA Contact: Intel 3D Bugs Mailing List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-10-25 14:44 UTC by Eero Tamminen
Modified: 2016-10-27 21:49 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description Eero Tamminen 2016-10-25 14:44:14 UTC
Latest Mesa from git (a1652a0) aborts at UnrealEngine v4 demos [1] startup to:
-----------
$ INTEL_DEBUG=perf SunTemple/Binaries/Linux/SunTemple
...
128x51744 miptree too large to blit, falling back to untiled
SIMD16 shader failed to compile: CS compile failed: Failure to register allocate.  Reduce number of live scalar values to avoid this.
Multi-LOD fast clear - giving up (2048x1024x11).
Multi-LOD fast clear - giving up (2048x1024x11).
SunTemple: ../../../src/intel/blorp/blorp_blit.c:1767: surf_convert_to_uncompressed: Assertion `*height % fmtl->bh == 0 || *y + *height == info->surf.logical_level0_px.height' failed.
Aborted (core dumped)
-----------

Assert happens for Stylized, Sun Temple, Light Room Interior Day, Subway Reflections and Effects Cave demos.  They work fine with Mesa 12.0.3.

There's no assert in Atlantis demo.

[1] https://wiki.unrealengine.com/Linux_Demos

Note: in Effects cave & Reflections Subway demos the compilation of CS shaders (using "Unsupported form of variable indexing") takes so much time (tens of minutes?) that I didn't have patience to wait for them to start, but used MESA_GL_VERSION_OVERRIDE=4.2 to disable CS use.
Comment 1 Eero Tamminen 2016-10-25 15:18:42 UTC
Demos start and work seemingly fine if one disables debug config option (but it doesn't significantly speed up CS compile).

Mesa 12.0.3 didn't have the failing assert, or the function in which it is, that came in:

commit 5ae8043fed264997e75b480dd30aa6ef44aae4e6
Author:     Jason Ekstrand <jason.ekstrand@intel.com>
AuthorDate: Tue Aug 30 13:13:43 2016 -0700
Commit:     Jason Ekstrand <jason.ekstrand@intel.com>
CommitDate: Mon Sep 12 19:42:57 2016 -0700

    intel/blorp: Add an entrypoint for doing bit-for-bit copies
Comment 2 Eero Tamminen 2016-10-26 16:53:18 UTC
Filed bug 98455 for CS compilation issue.
Comment 3 Jason Ekstrand 2016-10-27 21:49:03 UTC
Fixed by the following commit:

commit 4964a5149b7776ce27aaeab2be0c2ebf41ded740
Author: Jason Ekstrand <jason.ekstrand@intel.com>
Date:   Tue Oct 25 22:47:21 2016 -0700

    intel/blorp: Fix a couple asserts around image copy rectangles
    
    With dealing with rectangles in compressed images, you can have a width or
    height that isn't a multiple of the corresponding compression block
    dimension but only if that edge of your rectangle is on the edge of the
    image.  When we call convert_to_single_slice, it creates an 2-D image and a
    set of tile offsets into that image.  When detecting the right-edge and
    bottom-edge cases, we weren't including the tile offsets so the assert
    would misfire.  This caused crashes in a few UE4 demos
    
    Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
    Reported-by: "Eero Tamminen" <eero.t.tamminen@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98431
    Cc: "13.0" <mesa-stable@lists.freedesktop.org>
    Tested-by: "Eero Tamminen" <eero.t.tamminen@intel.com>
    Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.