Bug 43214

Summary: intel_blit.c:152: intelEmitCopyBlit: Assertion `src_pitch % 4 == 0' failed.
Product: Mesa Reporter: Vinson Lee <vlee>
Component: Drivers/DRI/i965Assignee: Eric Anholt <eric>
Status: RESOLVED FIXED QA Contact:
Severity: critical    
Priority: medium    
Version: git   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Vinson Lee 2011-11-23 23:36:24 UTC
-- chipset: GM45
-- system architecture: x86_64
-- xf86-video-intel: 2.15.901
-- xserver: 1.10.4
-- mesa: 24d25b55bf511493e70600cc7c49c0a0e6fc7a32 (master)
-- libdrm: 2.4.27
-- kernel version: 3.2.0-1-generic
-- Linux distribution: Ubuntu 12.04 x86_64

Run glean bufferObject test.

$ ./bin/glean -r results -t bufferObject --quick
Mesa: Initializing x86-64 optimizations
glean: intel_blit.c:152: intelEmitCopyBlit: Assertion `src_pitch % 4 == 0' failed.
Aborted (core dumped)


(gdb) bt
#0  0x00007fe8d22e43a5 in __GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007fe8d22e7b0b in __GI_abort () at abort.c:92
#2  0x00007fe8d22dcd4d in __GI___assert_fail (assertion=0x7fe8d022d1e7 "src_pitch % 4 == 0", file=<optimized out>, 
    line=152, function=<optimized out>) at assert.c:81
#3  0x00007fe8cff9e956 in intelEmitCopyBlit (intel=0x7fe8d3a26040, cpp=1, src_pitch=1965, src_buffer=0xfe4e30, 
    src_offset=2152, src_tiling=0, dst_pitch=1965, dst_buffer=0xfe4fb0, dst_offset=1602, dst_tiling=0, src_x=0, src_y=0, 
    dst_x=0, dst_y=0, w=1965, h=1, logic_op=5379) at intel_blit.c:152
#4  0x00007fe8cff9fa31 in intel_emit_linear_blit (intel=<optimized out>, dst_bo=0xfe4fb0, dst_offset=1602, 
    src_bo=0xfe4e30, src_offset=2152, size=1965) at intel_blit.c:496
#5  0x00007fe8cffa129c in intel_bufferobj_copy_subdata (size=1965, write_offset=1602, read_offset=2152, 
    dst=<optimized out>, src=0xfe4d80, ctx=0x7fe8d3a26040) at intel_buffer_objects.c:691
#6  intel_bufferobj_copy_subdata (ctx=0x7fe8d3a26040, src=0xfe4d80, dst=<optimized out>, read_offset=2152, 
    write_offset=1602, size=1965) at intel_buffer_objects.c:644
#7  0x00000000004ac6f4 in GLEAN::BufferObjectTest::testCopyBuffer() ()
#8  0x00000000004acd61 in GLEAN::BufferObjectTest::runOne(GLEAN::BufferObjectResult&, GLEAN::Window&) ()
#9  0x00000000004adbfb in GLEAN::BaseTest<GLEAN::BufferObjectResult>::run(GLEAN::Environment&) ()
#10 0x0000000000491fec in main ()
(gdb) frame 3
#3  0x00007fe8cff9e956 in intelEmitCopyBlit (intel=0x7fe8d3a26040, cpp=1, src_pitch=1965, src_buffer=0xfe4e30, 
    src_offset=2152, src_tiling=0, dst_pitch=1965, dst_buffer=0xfe4fb0, dst_offset=1602, dst_tiling=0, src_x=0, src_y=0, 
    dst_x=0, dst_y=0, w=1965, h=1, logic_op=5379) at intel_blit.c:152
152	   assert(src_pitch % 4 == 0);
Comment 1 Vinson Lee 2011-11-24 00:25:34 UTC
a1488eec38d5a76f4e04245a6ce8302444800805 is the first bad commit
commit a1488eec38d5a76f4e04245a6ce8302444800805
Author: Eric Anholt <eric@anholt.net>
Date:   Mon Oct 31 16:59:05 2011 -0700

    intel: Add safety asserts for the blit engine's pitch alignment requirements.
    
    Reviewed-by: Brian Paul <brianp@vmware.com>

:040000 040000 75b8d35f9b48e0feb5eb69d6f7e81e5b8a5779b5 b6d6f39457514953ba24b0aff9fe4e6e4ef12b9f M	src
bisect run success
Comment 2 Eric Anholt 2011-12-27 17:25:41 UTC
patch WIP.
Comment 3 Eric Anholt 2012-01-04 10:00:20 UTC
commit 8aa7fa770c4ae7660b37ea9d8f496bd6e62d3df8
Author: Eric Anholt <eric@anholt.net>
Date:   Tue Dec 27 17:22:30 2011 -0800

    intel: Fix pitch handling for linear blits.
    
    The new assert in intelEmitCopyBlit() gets angry if we don't align to
    dwords.  Rather than make the assert have a special case for height ==
    1 on the assumption that the hardware doesn't use it in that case,
    just supply a correct pitch.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=43214
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>

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.