anchor.diff:              
               let desc self =
                   let handle = ctx.CreateRenderbuffer(size.GetValue(self), format.GetValue(self), samples.GetValue(self))
  -                { dependencies = [size :> IMod; format :> IMod; samples :> IMod]
  -                  updateCPU = fun () -> ()
  +                { trackChangedInputs = true
  +                  dependencies = [size :> IMod; format :> IMod; samples :> IMod]
  +                  updateCPU = fun _ -> ()
                     updateGPU = fun () -> ctx.Update(handle, size.GetValue(self), format.GetValue(self), samples.GetValue(self))
                     destroy = fun () -> ctx.Delete(handle)
                     resource = Mod.constant handle 
  
positive.code:                         handle := h
                          transact (fun () -> handleMod.Value <- h)
  
                      { dependencies = [data]
                        updateCPU = fun () -> data.GetValue(self) |> ignore
                        updateGPU = fun () -> 
                          match data.GetValue(self) with
                              | :? Texture as t -> updateTo t
  
negative.code:                         handle := h
                          transact (fun () -> handleMod.Value <- h)
  
                      { trackChangedInputs = false
                        dependencies = [data]
                        updateCPU = fun _ -> data.GetValue(self) |> ignore
                        updateGPU = fun () ->
                          match data.GetValue(self) with
                              | :? Buffer as t -> updateTo t
  