From mboxrd@z Thu Jan 1 00:00:00 1970
From: bugzilla-daemon@freedesktop.org
Subject: [Bug 56966] New: [r300g, bisected] multiple piglit tests crash in
r300_draw_arrays_immediate
Date: Sat, 10 Nov 2012 20:33:38 +0000
Message-ID:
Priority
medium
Bug ID
56966
Keywords
regression
CC
maraeo@gmail.com
Assignee
dri-devel@lists.freedesktop.org
Summary
[r300g, bisected] multiple piglit tests crash in r300_draw_ar=
rays_immediate
Severity
normal
Classification
Unclassified
OS
All
Reporter
pavel.ondracka@email.cz
Hardware
Other
Status
NEW
Version
git
Component
Drivers/Gallium/r300
Product
Mesa
Crashing tests are glsl-novertexdata, glsl-vs-point-size, vp-i=
gnore-input and
pos-array.
First bad commit
commit e73bf3b805de78299f1a652668ba4e6eab9bac94
Author: Marek Ol=C5=A1=C3=A1k <m=
araeo@gmail.com>
Date: Thu Mar 29 17:51:50 2012 +0200
gallium: add start_slot parameter to set_vertex_buffers
This allows updating only a subrange of buffer bindings.
set_vertex_buffers(pipe, start_slot, count, NULL) unbinds buffers in th=
at
range. Binding NULL resources unbinds buffers too (both buffer and
user_buff
must be NULL).
The meta ops are adapted to only save, change, and restore the single s=
lot
they use. The cso_context can save and restore only one vertex buffer s=
lot.
The clients can query which one it is using cso_get_aux_vertex_buffer_s=
lot.
It's currently set to 0. (the Draw module breaks if it's set to non-zer=
o)
It should decrease the CPU overhead when using a lot of meta ops, but
the drivers must be able to treat each vertex buffer slot as a separate
state (only r600g does so at the moment).
I can imagine this also being useful for optimizing some OpenGL use cas=
es.
Backtrace from pos-array -auto :
#0 r300_draw_arrays_immediate (r300=3Dr300@entry=3D0x8059c60,
info=3Dinfo@entry=3D0xbfffeac0) at r300_render.c:375
#1 0xb6bb0bbc in r300_draw_vbo (pipe=3D0x8059c60, dinfo=3D0xbfffed10) at
r300_render.c:838
#2 0xb6e0d538 in u_vbuf_draw_vbo (mgr=3D0x84cd7f0, info=3Dinfo@entry=
=3D0xbfffed10)
at util/u_vbuf.c:1056
#3 0xb6db16ea in cso_draw_vbo (cso=3D0x84cd048, info=3Dinfo@entry=3D0x=
bfffed10) at
cso_cache/cso_context.c:1331
#4 0xb6c91482 in st_draw_vbo (ctx=3D0x845e6b0, prims=3D0xbfffed90, nr_prim=
s=3D1,
ib=3D0x0, index_bounds_valid=3D1 '\001', min_index=3D0, max_index=3D0,=20
tfb_vertcount=3D0x0) at ../../src/mesa/state_tracker/st_draw.c:265
#5 0xb6d663f2 in vbo_draw_arrays (ctx=3Dctx@entry=3D0x845e6b0, mode=3D=
mode@entry=3D0,
start=3Dstart@entry=3D0, count=3Dcount@entry=3D1,=20
numInstances=3DnumInstances@entry=3D1, baseInstance=3DbaseInstance&=
#64;entry=3D0) at
../../src/mesa/vbo/vbo_exec_array.c:619
#6 0xb6d665e1 in vbo_exec_DrawArrays (mode=3D0, start=3D0, count=3D1) at
../../src/mesa/vbo/vbo_exec_array.c:649
#7 0x08049771 in test_glsl_no_arrays () at
/home/Paulie/piglit/tests/general/pos-array.c:321
#8 0x08049d68 in piglit_display () at
/home/Paulie/piglit/tests/general/pos-array.c:518
#9 0xb7eed014 in display () at
/home/Paulie/piglit/tests/util/piglit-framework-gl/piglit_glut_framework.c:=
60
#10 0xb7fbe754 in fghRedrawWindow (window=3D0x8057758) at freeglut_main.c:2=
07
#11 fghcbDisplayWindow (window=3D0x8057758, enumerator=3D0xbfffef74) at
freeglut_main.c:224
#12 0xb7fc2337 in fgEnumWindows (enumCallback=3DenumCallback@entry=3D0x=
b7fbe6c0
<fghcbDisplayWindow>, enumerator=3Denumerator@entry=3D0xbfffef74)
at freeglut_structure.c:396
#13 0xb7fbec78 in fghDisplayAll () at freeglut_main.c:247
#14 glutMainLoopEvent () at freeglut_main.c:1485
#15 0xb7fbf4f8 in glutMainLoop () at freeglut_main.c:1533
#16 0xb7eed20d in run_test (gl_fw=3D0xb7fa7ac0, argc=3D1, argv=3D0xbffff234)
at
/home/Paulie/piglit/tests/util/piglit-framework-gl/piglit_glut_framework.c:=
127
#17 0xb7eeb31c in piglit_gl_test_run (argc=3D1, argv=3D0xbffff234,
config=3D0xbffff16c)
at /home/Paulie/piglit/tests/util/piglit-framework-gl.c:127
#18 0x0804903f in main (argc=3D1, argv=3D0xbffff234) at
/home/Paulie/piglit/tests/general/pos-array.c:41
GPU:RV530
Mesa: 5581954c3aa0c2418440700b3763882e37728914
Kernel: 3.6.2-4.fc17.i686
Libdrm: 2.4.40