Do we need to explicitly verify these? It feels a little superfluous.
As long as these functions are private in libvkd3d we don't necessarily need them, but once this becomes public I want to catch parameters that would cause problems - e.g. a zero-length file name makes a cache memory only.
I can remove them for now and add them right before or in the same commit that moves this code to vkd3d_shader.
Do we need refcounts? I may be misremembering, but I think we were moving towards only opening caches once, and the caller then being responsible for managing their lifetime, at least on the vkd3d-shader level. In any case, this is unused code in this commit.
CreateShaderCacheSession returns different objects when reopening an existing cache. This is observable not only by comparing pointers, but also e.g. through SetPrivateData et al. I thought I already had tests for that in the test submitted in the previous MR, but I see they are missing there because they are mixed with the StoreValue/FindValue tests. I'll add some to this MR.