Right now, the anv_pipeline_cache object owns the storage for the shaders and their metadata: bind maps, prog_data, etc. However, according to the Vulkan spec: > The following object types are consumed when they are passed into a Vulkan > command and not further accessed by the objects they are used to create. > They can be destroyed at any time they are not in use by an API command: > > * VkShaderModule > * VkPipelineCache Instead, we need to have global storage for shader binaries and related data, probably reference-count it per-shader, and make the cache a dumb map from SHA1s to shaders (and maybe own a reference to each of them?)
This affects the dEQP-VK.synchronization.op.* tests in version 1.0.1 of the Vulkan CTS. They create pipelines, destroy the caches, and then use them.
I just pushed a series that fixes this.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.