[Intel-gfx] pitch assertion with recent mesa/libdrm on 965

Kenneth Graunke kenneth at whitecape.org
Sat Mar 6 11:55:49 CET 2010


Hi Eric,

I've hit a regression with Mesa 179d2c0e (intel: Use drm_intel_bo_alloc_tiled 
for region allocs.) and libdrm master.  With your mesa change, PlaneShift 
reproducibly triggers the following assertion:

intel_regions.c:193: intel_region_alloc: Assertion `aligned_pitch == pitch * 
cpp' failed.

The call trace:
#3  0x00007fffe702f374 in intel_region_alloc () from 
/usr/lib/xorg/modules/dri/i965_dri.so
#4  0x00007fffe702d82e in intel_alloc_renderbuffer_storage () from 
/usr/lib/xorg/modules/dri/i965_dri.so
#5  0x00007fffe70b4394 in renderbuffer_storage () from 
/usr/lib/xorg/modules/dri/i965_dri.so

The values in question are:
aligned_pitch == 32
pitch * cpp   == 64
width         == 8
height        == 32
pitch         == 16
cpp           == 4
tiling        == I915_TILING_NONE

In particular, it looks like Mesa's intel_region_alloc does:
pitch = ((cpp * width + 63) & ~63) / cpp;   ...and comes up with 16
while libdrm's drm_intel_gem_bo_alloc_tiled does:
stride = x * cpp;  ...and comes up with 32

These definitely compute different values; I'm not sure what the right answer 
is though.  The old version of intel_alloc_regions seemed to use an alignment 
of 64, not 32.

Thanks for looking into it.  If you need anything else, just let me know!
--Kenneth



More information about the Intel-gfx mailing list