I screwed up my vulkan calling and ended up getting radv_shader_compile_to_nir to seg because it has:
251 entry_point = spirv_to_nir(spirv, module->size / 4,
252 nir = entry_point->shader;
assert(nir->info.stage == stage);
it's dereferencing 'entry_point' on 252, but if the caller screws up entry_point can be NULL from spirv_to_nir;
Could this failure be made cleaner?
(Nothing else printed anything first before the seg by default;
spirv_to_nir took a bit of an odd route; it checks b->entry_point = NULL then call vrn_fail that jumps back to it's setjmp handler and cleans up - so it's not obvious to me why it also has a ralloc_free(b), return NULL if the vtn_fail is going to take the setjmp).
My screwup incidentally was a cut-and-paste where I'd copied the code for my vertex shader for my fragment shader and so I was trying to find the fragment shader entrypoint in my vertex shader.
Should be fixed with
That's not the job of the driver. You should be running with validation layers enabled while developing applications.
Actually, I do agree with Jason's point of view. We are not going to fix anything inside the driver.