anchor.diff:                              prog.PipelineLayout.Handle,
                               renderPass.Handle,
                               0u,
  -                            VkPipeline.Null,
  +                            !!pipe,
                               0
                           )
   
                       VkRaw.vkCreateGraphicsPipelines(device.Handle, VkPipelineCache.Null, 1u, pDesc, NativePtr.zero, pHandle)
                           |> check "could not create pipeline"
   
  +                    NativePtr.write pipe !!pHandle
                       return Pipeline(device, !!pHandle, Unchecked.defaultof<_>)
                   }
   
  -            pipeline.Handle
  -    
  -        override x.Free(p : VkPipeline) =
  -            VkRaw.vkDestroyPipeline(renderPass.Device.Handle, p, NativePtr.zero)
  +            { handle = pipeline.Handle; version = 666 }
  +
  +        interface INativeResourceLocation<VkPipeline> with
  +            member x.Pointer = pipe
   
       type IndirectDrawCallResource(owner : IResourceCache, key : list<obj>, indexed : bool, calls : IResourceLocation<IndirectBuffer>) =
           inherit AbstractPointerResourceWithEquality<DrawCall>(owner, key)
  
positive.code:                           multisample : MultisampleState,
                            depthStencil : INativeResourceLocation<VkPipelineDepthStencilStateCreateInfo>
                           ) =
          inherit AbstractPointerResource<VkPipeline>(owner, key)
  
          static let check str err =
              if err <> VkResult.VkSuccess then failwithf "[Vulkan] %s" str
  
          override x.Create() =
              base.Create()
              program.Acquire()
              inputState.Acquire()
              inputAssembly.Acquire()
  
negative.code:             depthStencil.Acquire()
  
          override x.Destroy() =
              program.Release()
              inputState.Release()
              inputAssembly.Release()
  