[Mesa-dev] [RFC PATCH 0/6] r600: speed up tesselation shaders
Dave Airlie
airlied at gmail.com
Tue Jan 9 07:32:36 UTC 2018
On 8 January 2018 at 17:12, Dave Airlie <airlied at gmail.com> wrote:
> On 6 January 2018 at 03:41, Gert Wollny <gw.fossdev at gmail.com> wrote:
>> Am Freitag, den 05.01.2018, 18:18 +0100 schrieb Gert Wollny:
>>>
>>> Well, I have tested some piglits now and the behaviour is quite
>>> wired:
>>>
>>> When I run nop as the very first piglit after booting the machine it
>>> works. After running other piglits (specifically tcs-input-read-
>>> array-interface and tcs-input-read-mat), nop starts to fail, also
>>> without sb.
>>>
>>> Restarting X is not enough to get nop to pass again.
>>>
>>> If I run piglit normally on the shader subset, I also get lockups and
>>> I even got kicked out of X, the last syslog message related to this
>>> was:
>>>
>>> [ 1403.211887] [drm:r600_ib_test [radeon]] *ERROR* radeon: fence wait
>>> timed out.
>>> [ 1403.211932] [drm:radeon_ib_ring_tests [radeon]] *ERROR* radeon:
>>> failed testing IB on GFX ring (-110).
>>>
>>
>> When I run Unigine_Heaven with your WIP code and all sb passes for
>> tesselation enabled, I get a crash because of a stack overflow, i.e.
>> the hash evaluation ends up in an infinite recursion doing a ping-pong
>> between two nodes:
>>
>> ...
>> #747 in r600_sb::node::hash (this=0x1e01228) at sb/sb_ir.cpp:277
>> #748 in r600_sb::value::hash (this=0x1e39cd0) at sb/sb_valtable.cpp:189
>> #749 in r600_sb::value::hash (this=< >) at sb/sb_valtable.cpp:184
>> #750 in r600_sb::node::hash_src (this=this at entry= ) at sb/sb_ir.cpp:265
>> #751 in r600_sb::node::hash (this=0x1e00bf0) at sb/sb_ir.cpp:277
>> #752 in r600_sb::value::hash (this=0x1e39e70) at sb/sb_valtable.cpp:189
>> #753 in r600_sb::value::hash (this=< >) at sb/sb_valtable.cpp:184
>> #754 in r600_sb::node::hash_src (this=this at entry= ) at sb/sb_ir.cpp:265
>> #755 in r600_sb::node::hash (this=0x1e01228) at sb/sb_ir.cpp:277
>
> Yeah I see the same. Not 100% sure why yet.
>
> For nop.shader_test I've noticed if you move the position line above the
> tess factor emission things start to work, which is confusing me no end,
> it's sounds like we doing something bad with LDS still.
I've pushed out another few hacks in progress.
I've got heaven running now, and seem to get about the same speedup
you were getting with this series.
On piglit -t tessellation I've got about 13 crashes in some variable
indexing tests. and they are all GCM related, I've torn out a fair bit
of hair this afternoon trying to keep the gcm scheduler happy but to
no avail.
tests/spec/arb_tessellation_shader/execution/variable-indexing/tcs-input-array-float-index-rd.shader_test
is one of the culprits, it looks like GCM schedules a bunch of basic
blocks, but then some instructions
are dont_move but get scheduled wrong.
Dave.
More information about the mesa-dev
mailing list