anchor.diff:                  )
               | None ->
                   failwithf "[FShade] cannot create compute shader using function: %A" f
  -//
  -//
  -//        let signature = FunctionSignature.ofFunction f
  -//
  -//        cache.GetOrAdd((signature, maxLocalSize), fun (signature, maxLocalSize) ->
  -//            let localSize = 
  -//                match FunctionSignature.tryGetAttribute<LocalSizeAttribute> signature with
  -//                    | Some size -> V3i(size.X, size.Y, size.Z)
  -//                    | _ -> V3i(0, 0, 0)
  -//
  -//            let localSize =
  -//                V3i(
  -//                    (if localSize.X = MaxLocalSize then maxLocalSize.X else localSize.X),
  -//                    (if localSize.Y = MaxLocalSize then maxLocalSize.Y else localSize.Y),
  -//                    (if localSize.Z = MaxLocalSize then maxLocalSize.Z else localSize.Z)
  -//                )
  -//
  -//            match tryExtractExpr f with
  -//                | Some body ->
  -//                    ofExpr localSize body
  -//                | _ ->
  -//                    failwithf "[FShade] cannot create compute shader using function: %A" f
  -//        )
   
       let toEntryPoint (s : ComputeShader) =
           let bufferArguments = 
  
positive.code:         csShared        : Map<string, Type * int>
          csBody          : Expr
      }
  
  [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
  module ComputeShader =
  
negative.code:     }
  
  
  type internal ComputeShaderData =
      {
          csBuffers       : Map<string, ComputeBuffer>
          csImages        : Map<string, ComputeImage>
          csSamplerStates : Map<string * int, SamplerState>
  