sig
  type wrap = [ `Clamp_to_edge | `Mirrored_repeat | `Repeat ]
  val pp_wrap : Format.formatter -> wrap -> unit
  type mag_filter = [ `Linear | `Nearest ]
  val pp_mag_filter : Format.formatter -> 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 -> min_filter -> unit
  type kind = [ `Buffer | `D1 | `D2 | `D2_ms | `D3 | `D3_ms ]
  val pp_kind : Format.formatter -> 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 -> sample_format -> unit
  type init =
      [ `Buffer of sample_format * Buf.t
      | `D1 of sample_format * float * Buf.t option
      | `D2 of sample_format * Gg.size2 * Buf.t option
      | `D2_ms of sample_format * Gg.size2 * int * bool
      | `D3 of sample_format * Gg.size3 * Buf.t option
      | `D3_ms of sample_format * Gg.size3 * int * bool ]
  val pp_init : Format.formatter -> init -> unit
  val init_of_raster :
    ?buf:bool ->
    ?cpu_autorelease:bool ->
    ?usage:Buf.usage ->
    ?kind:kind ->
    ?sample_format:sample_format -> ?norm:bool -> Gg.raster -> init
  type t = tex
  val nil : tex
  val create :
    ?wrap_s:wrap ->
    ?wrap_t:wrap ->
    ?wrap_r:wrap ->
    ?mipmaps:bool ->
    ?min_filter:min_filter ->
    ?mag_filter:mag_filter -> ?buf_autorelease:bool -> init -> tex
  val sample_format : tex -> sample_format
  val kind : tex -> kind
  val size2 : tex -> Gg.size2
  val size3 : tex -> Gg.size3
  val buf : tex -> Buf.t option
  val set_buf : tex -> Buf.t option -> unit
  val buf_autorelease : tex -> bool
  val set_buf_autorelease : tex -> bool -> unit
  val gpu_update : tex -> bool
  val set_gpu_update : tex -> bool -> unit
  val wrap_s : tex -> wrap
  val wrap_t : tex -> wrap
  val wrap_r : tex -> wrap
  val mipmaps : tex -> bool
  val min_filter : tex -> min_filter
  val mag_filter : tex -> mag_filter
  val multisample : tex -> int * bool
  val pp : Format.formatter -> tex -> unit
  val binfo : Lit.tex -> Lit.Renderer.Private.BInfo.t
  val set_binfo : Lit.tex -> Lit.Renderer.Private.BInfo.t -> unit
end