anv: renderdoc explosion on icl
I have absolutely no idea what's going on here:
0x00007fff8ae686ac in lookup_opcode_desc (index_ver=0x0, index_descs=0x8, index_size=84, key=&opcode_desc::ir, devinfo=0x7fff80047f30, k=53) at ../src/intel/compiler/brw_eu.cpp:720
720 if (*index_ver != gfx_ver_from_devinfo(devinfo)) {
(gdb) bt
#0 0x00007fff8ae686ac in lookup_opcode_desc (index_ver=0x0, index_descs=0x8, index_size=84, key=&opcode_desc::ir, devinfo=0x7fff80047f30, k=53) at ../src/intel/compiler/brw_eu.cpp:720
#1 0x00007fff8ae6885d in brw_opcode_desc (devinfo=0x7fff80047f30, opcode=BRW_OPCODE_ADD) at ../src/intel/compiler/brw_eu.cpp:750
#2 0x00007fff8af73c3d in is_3src (devinfo=0x7fff80047f30, opcode=BRW_OPCODE_ADD) at ../src/intel/compiler/brw_eu.h:1944
#3 0x00007fff8af75899 in backend_instruction::is_3src (this=0x7fff80997620, devinfo=0x7fff80047f30) at ../src/intel/compiler/brw_shader.cpp:892
#4 0x00007fff8ae9e117 in can_take_stride (inst=0x7fff80997620, dst_type=BRW_REGISTER_TYPE_D, arg=0, stride=1, devinfo=0x7fff80047f30) at ../src/intel/compiler/brw_fs_copy_propagation.cpp:398
#5 0x00007fff8ae9e6f3 in fs_visitor::try_copy_propagate (this=0x7fff8099e420, inst=0x7fff80997620, arg=0, entry=0x7fff809514a0) at ../src/intel/compiler/brw_fs_copy_propagation.cpp:546
#6 0x00007fff8ae9ffd1 in fs_visitor::opt_copy_propagation_local (this=0x7fff8099e420, copy_prop_ctx=0x7fff809653c0, block=0x7fff80940720, acp=0x7fff809b9540) at ../src/intel/compiler/brw_fs_copy_propagation.cpp:988
#7 0x00007fff8aea0860 in fs_visitor::opt_copy_propagation (this=0x7fff8099e420) at ../src/intel/compiler/brw_fs_copy_propagation.cpp:1076
#8 0x00007fff8aec80e6 in fs_visitor::optimize (this=0x7fff8099e420) at ../src/intel/compiler/brw_fs.cpp:8554
#9 0x00007fff8aecd732 in fs_visitor::run_cs (this=0x7fff8099e420, allow_spilling=true) at ../src/intel/compiler/brw_fs.cpp:9428
#10 0x00007fff8aed077b in brw_compile_cs (compiler=0x7fff80027800, mem_ctx=0x7fff80931b10, params=0x7fff8bff9fc0) at ../src/intel/compiler/brw_fs.cpp:10318
#11 0x00007fff8a19f308 in anv_pipeline_compile_cs (pipeline=0x7fff80931950, cache=0x7fff80914ed0, info=0x7fffbc0cd4b0, module=0x7fff80915f20, entrypoint=0x7ffff49e5424 "main", spec_info=0x0) at ../src/intel/vulkan/anv_pipeline.c:1993
#12 0x00007fff8a90c384 in compute_pipeline_create (_device=0x7fff8043e8a0, cache=0x7fff80914ed0, pCreateInfo=0x7fffbc0cd4b0, pAllocator=0x0, pPipeline=0x7fff809151b8) at ../src/intel/vulkan/genX_pipeline.c:2991
#13 0x00007fff8a90c5c2 in gfx11_CreateComputePipelines (_device=0x7fff8043e8a0, pipelineCache=0x7fff80914ed0, count=1, pCreateInfos=0x7fffbc0cd4b0, pAllocator=0x0, pPipelines=0x7fff809151b8) at ../src/intel/vulkan/genX_pipeline.c:3062
#14 0x00007ffff40a6518 in WrappedVulkan::vkCreateComputePipelines(VkDevice_T*, VkPipelineCache_T*, unsigned int, VkComputePipelineCreateInfo const*, VkAllocationCallbacks const*, VkPipeline_T**) () from /usr/local/lib64/librenderdoc.so
#15 0x00007ffff3bacc1d in create(WrappedVulkan*, char const*, int, VkPipeline_T**, VkPipelineLayout_T*, VkShaderModule_T*) () from /usr/local/lib64/librenderdoc.so
#16 0x00007ffff3bb9aeb in VulkanDebugManager::VulkanDebugManager(WrappedVulkan*) () from /usr/local/lib64/librenderdoc.so
#17 0x00007ffff3fec585 in bool WrappedVulkan::Serialise_vkCreateDevice<ReadSerialiser>(ReadSerialiser&, VkPhysicalDevice_T*, VkDeviceCreateInfo const*, VkAllocationCallbacks const*, VkDevice_T**) () from /usr/local/lib64/librenderdoc.so
#18 0x00007ffff3b730ec in WrappedVulkan::ProcessChunk(ReadSerialiser&, VulkanChunk) () from /usr/local/lib64/librenderdoc.so
#19 0x00007ffff3b7c275 in WrappedVulkan::ReadLogInitialisation(RDCFile*, bool) () from /usr/local/lib64/librenderdoc.so
#20 0x00007ffff3cb0134 in VulkanReplay::ReadLogInitialisation(RDCFile*, bool) () from /usr/local/lib64/librenderdoc.so
#21 0x00007ffff45c4ea0 in ReplayController::PostCreateInit(IReplayDriver*, RDCFile*) () from /usr/local/lib64/librenderdoc.so
#22 0x00007ffff45c628e in ReplayController::CreateDevice(RDCFile*, ReplayOptions const&) () from /usr/local/lib64/librenderdoc.so
#23 0x00007ffff4584f25 in CaptureFile::OpenCapture(ReplayOptions const&, std::function<void (float)>) () from /usr/local/lib64/librenderdoc.so
#24 0x0000000000e3e0c6 in ReplayManager::run(int, QString const&, ReplayOptions const&, std::function<void (float)>) (this=0x7fffffffc690, proxyRenderer=-1, capturefile=..., opts=..., progress=...) at ../../qrenderdoc/Code/ReplayManager.cpp:452
#25 0x0000000000e3b7af in operator() (__closure=0x7fff90004050) at ../../qrenderdoc/Code/ReplayManager.cpp:58
#26 0x0000000000e41578 in std::__invoke_impl<void, ReplayManager::OpenCapture(const QString&, const ReplayOptions&, RENDERDOC_ProgressCallback)::<lambda()>&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/11/bits/invoke.h:61
#27 0x0000000000e3ffe6 in std::__invoke_r<void, ReplayManager::OpenCapture(const QString&, const ReplayOptions&, RENDERDOC_ProgressCallback)::<lambda()>&>(struct {...} &) (__fn=...) at /usr/include/c++/11/bits/invoke.h:154
#28 0x0000000000e3f162 in std::_Function_handler<void(), ReplayManager::OpenCapture(const QString&, const ReplayOptions&, RENDERDOC_ProgressCallback)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/11/bits/std_function.h:290
#29 0x0000000000d3c1aa in std::function<void ()>::operator()() const (this=0x7fff90001dc0) at /usr/include/c++/11/bits/std_function.h:590
#30 0x0000000000e428bf in LambdaThread::process (this=0x7fff90001db0) at ../../qrenderdoc/Code/QRDUtils.h:505
#31 0x0000000000e43ebc in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (LambdaThread::*)()>::call(void (LambdaThread::*)(), LambdaThread*, void**) (f=(void (LambdaThread::*)(LambdaThread * const)) 0xe42880 <LambdaThread::process()>, o=0x7fff90001db0, arg=0x7fff8bffebf0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:152
#32 0x0000000000e43c18 in QtPrivate::FunctionPointer<void (LambdaThread::*)()>::call<QtPrivate::List<>, void>(void (LambdaThread::*)(), LambdaThread*, void**) (f=(void (LambdaThread::*)(LambdaThread * const)) 0xe42880 <LambdaThread::process()>, o=0x7fff90001db0, arg=0x7fff8bffebf0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:185
#33 0x0000000000e43827 in QtPrivate::QSlotObject<void (LambdaThread::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x7fff900096e0, r=0x7fff90001db0, a=0x7fff8bffebf0, ret=0x0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:418
#34 0x00007ffff28f63e9 in void doActivate<false>(QObject*, int, void**) () from /lib64/libQt5Core.so.5
#35 0x00007ffff270332e in QThread::started(QThread::QPrivateSignal) () from /lib64/libQt5Core.so.5
#36 0x00007ffff27054ae in QThreadPrivate::start(void*) () from /lib64/libQt5Core.so.5
#37 0x00007ffff20f9a87 in start_thread () from /lib64/libc.so.6
#38 0x00007ffff217e640 in clone3 () from /lib64/libc.so.6
To repro:
- build latest renderdoc
- capture frame from https://gitlab.freedesktop.org/gfx-ci/tracie/traces-db/-/blob/master/valve/portal-2-v2.trace
MESA_LOADER_DRIVER_OVERRIDE=zink LD_PRELOAD=/path/to/librenderdoc.so glretrace --loop portal2.trace
- open capture in qrenderdoc
- boom