+static void
+zink_destroy_shader_module(struct zink_screen *screen, struct zink_shader_module *zm)
+{
+ vkDestroyShaderModule(screen->dev, zm->shader, NULL);
+ free(zm);
+}
+
+static inline void
+zink_shader_module_reference(struct zink_screen *screen,
+ struct zink_shader_module **dst,
+ struct zink_shader_module *src)
+{
+ struct zink_shader_module *old_dst = dst ? *dst : NULL;
+
+ if (pipe_reference_described(old_dst ? &old_dst->reference : NULL, &src->reference,
+ (debug_reference_descriptor)debug_describe_zink_shader_module))
+ zink_destroy_shader_module(screen, old_dst);
+ if (dst) *dst = src;
+}
+