sig
  type wrap = [ `Clamp_to_edge | `Mirrored_repeat | `Repeat ]
  val pp_wrap : Format.formatter -> Lit.Tex.wrap -> unit
  type mag_filter = [ `Linear | `Nearest ]
  val pp_mag_filter : Format.formatter -> Lit.Tex.mag_filter -> unit
  type min_filter =
      [ `Linear
      | `Linear_mipmap_linear
      | `Linear_mipmap_nearest
      | `Nearest
      | `Nearest_mipmap_linear
      | `Nearest_mipmap_nearest ]
  val pp_min_filter : Format.formatter -> Lit.Tex.min_filter -> unit
  type kind = [ `Buffer | `D1 | `D2 | `D2_ms | `D3 | `D3_ms ]
  val pp_kind : Format.formatter -> Lit.Tex.kind -> unit
  type sample_format =
      [ `D1 of Gg.Ba.scalar_type * bool
      | `D2 of Gg.Ba.scalar_type * bool
      | `D3 of Gg.Ba.scalar_type * bool
      | `D4 of Gg.Ba.scalar_type * bool
      | `Depth of [ `Float32 | `UInt16 | `UInt24 ]
      | `Depth_stencil of [ `Float32_UInt8 | `UInt24_UInt8 ]
      | `SRGB of [ `UInt8 ]
      | `SRGBA of [ `UInt8 ]
      | `Stencil of [ `UInt8 ] ]
  val pp_sample_format : Format.formatter -> Lit.Tex.sample_format -> unit
  type init =
      [ `Buffer of Lit.Tex.sample_format * Lit.Buf.t
      | `D1 of Lit.Tex.sample_format * float * Lit.Buf.t option
      | `D2 of Lit.Tex.sample_format * Gg.size2 * Lit.Buf.t option
      | `D2_ms of Lit.Tex.sample_format * Gg.size2 * int * bool
      | `D3 of Lit.Tex.sample_format * Gg.size3 * Lit.Buf.t option
      | `D3_ms of Lit.Tex.sample_format * Gg.size3 * int * bool ]
  val pp_init : Format.formatter -> Lit.Tex.init -> unit
  val init_of_raster :
    ?buf:bool ->
    ?cpu_autorelease:bool ->
    ?usage:Lit.Buf.usage ->
    ?kind:Lit.Tex.kind ->
    ?sample_format:Lit.Tex.sample_format ->
    ?norm:bool -> Gg.raster -> Lit.Tex.init
  type t = Lit.tex
  val nil : Lit.tex
  val create :
    ?wrap_s:Lit.Tex.wrap ->
    ?wrap_t:Lit.Tex.wrap ->
    ?wrap_r:Lit.Tex.wrap ->
    ?mipmaps:bool ->
    ?min_filter:Lit.Tex.min_filter ->
    ?mag_filter:Lit.Tex.mag_filter ->
    ?buf_autorelease:bool -> Lit.Tex.init -> Lit.tex
  val sample_format : Lit.tex -> Lit.Tex.sample_format
  val kind : Lit.tex -> Lit.Tex.kind
  val size2 : Lit.tex -> Gg.size2
  val size3 : Lit.tex -> Gg.size3
  val buf : Lit.tex -> Lit.Buf.t option
  val set_buf : Lit.tex -> Lit.Buf.t option -> unit
  val buf_autorelease : Lit.tex -> bool
  val set_buf_autorelease : Lit.tex -> bool -> unit
  val gpu_update : Lit.tex -> bool
  val set_gpu_update : Lit.tex -> bool -> unit
  val wrap_s : Lit.tex -> Lit.Tex.wrap
  val wrap_t : Lit.tex -> Lit.Tex.wrap
  val wrap_r : Lit.tex -> Lit.Tex.wrap
  val mipmaps : Lit.tex -> bool
  val min_filter : Lit.tex -> Lit.Tex.min_filter
  val mag_filter : Lit.tex -> Lit.Tex.mag_filter
  val multisample : Lit.tex -> int * bool
  val pp : Format.formatter -> Lit.tex -> unit
end