shader: use actual fs_info data as shader key instead of a pointer
Using a pointer for fs_info in the shader key is not really that useful because the contents of the structure can change even though the pointer remains the same, and the pointer can be different when the contents are the same.
Fixes quite a number of flakes caused by 5f488ed0.